Tại sao CPU x86 chỉ sử dụng hai trong số bốn "vòng"?

Apr 22, 2025
Phần cứng
NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH

Khi tìm hiểu thêm về cách hệ điều hành và phần cứng chúng chạy hoạt động và tương tác với nhau, bạn có thể ngạc nhiên khi thấy những gì có vẻ kỳ quặc hoặc sử dụng kém "tài nguyên" đang xảy ra. Tại sao vậy? Bài đăng Hỏi và Đáp của SuperUser hôm nay có câu trả lời cho câu hỏi tò mò của một độc giả.

Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.

Ảnh lịch sự của Lemsipmatt (Flickr) .

Câu hỏi

Trình đọc SuperUser AdHominem muốn biết lý do tại sao CPU x86 chỉ sử dụng hai trong số bốn vòng:

Hệ thống x86 dựa trên Linux và Windows chỉ sử dụng Đổ chuông 0 cho chế độ hạt nhân và Vòng 3 cho chế độ người dùng. Tại sao các bộ xử lý thậm chí còn phân biệt được bốn vòng khác nhau nếu tất cả chúng đều chỉ sử dụng hai trong số chúng? Điều này có thay đổi với kiến ​​trúc AMD64 không?

Tại sao CPU x86 chỉ sử dụng hai trong số bốn vòng?

Câu trả lời

Cộng tác viên SuperUser Jamie Hanrahan có câu trả lời cho chúng tôi:

Có hai lý do chính.

Đầu tiên là, mặc dù các CPU x86 cung cấp bốn vòng bảo vệ bộ nhớ, nhưng mức độ chi tiết của bảo vệ được cung cấp do đó chỉ ở mức mỗi phân đoạn. Có nghĩa là, mỗi phân đoạn có thể được đặt thành một vòng cụ thể (mức đặc quyền) cùng với các biện pháp bảo vệ khác như ngăn ghi. Nhưng không có nhiều bộ mô tả phân đoạn có sẵn. Hầu hết các hệ điều hành đều muốn có mức độ bảo vệ bộ nhớ tốt hơn nhiều, chẳng hạn như… cho các trang riêng lẻ.

Vì vậy, hãy nhập bảo vệ dựa trên bảng trang. Hầu hết, nếu không phải là tất cả, các hệ điều hành x86 hiện đại ít nhiều bỏ qua cơ chế phân đoạn (càng nhiều càng tốt) và dựa vào sự bảo vệ có sẵn từ các bit bậc thấp trong các mục nhập bảng trang. Một trong số này được gọi là bit “đặc quyền”. Bit này kiểm soát việc bộ xử lý có phải ở một trong các mức “đặc quyền” để truy cập trang hay không. Các cấp độ "đặc quyền" là PL 0, 1 và 2 . Nhưng nó chỉ là một bit, vì vậy ở cấp độ bảo vệ từng trang, số lượng “chế độ” khả dụng liên quan đến bảo vệ bộ nhớ chỉ là hai: Có thể truy cập trang từ chế độ không đặc quyền hoặc không. Do đó, chỉ có hai chiếc nhẫn. Để có bốn vòng có thể có cho mỗi trang, chúng sẽ phải có hai bit bảo vệ trong mỗi mục nhập bảng trang để mã hóa một trong bốn số vòng có thể có (giống như các bộ mô tả phân đoạn). Tuy nhiên, họ không.

Lý do khác là mong muốn về tính di động của hệ điều hành. Nó không chỉ là về x86; Unix đã dạy chúng ta rằng một hệ điều hành có thể tương đối di động với nhiều kiến ​​trúc bộ xử lý và đó là một điều tốt. Và một số bộ xử lý chỉ hỗ trợ hai vòng. Bằng cách không phụ thuộc vào nhiều vòng trong kiến ​​trúc, những người triển khai hệ điều hành đã làm cho hệ điều hành trở nên linh hoạt hơn.

Có một lý do thứ ba dành riêng cho sự phát triển Windows NT. Các nhà thiết kế của NT (David Cutler và nhóm của anh ấy, những người được Microsoft thuê từ DEC Western Region Labs) đã có nhiều kinh nghiệm trước đây về VMS; trên thực tế, Cutler và một số người khác là những nhà thiết kế ban đầu của VMS. Và bộ xử lý VAX mà VMS được thiết kế có bốn vòng (VMS sử dụng bốn vòng).

Nhưng các thành phần chạy trong VMS’s Nhẫn 1 và 2 (Dịch vụ quản lý hồ sơ và CLI, tương ứng) đã bị loại khỏi thiết kế NT. Vòng 2 trong VMS không thực sự là về bảo mật hệ điều hành, mà là về việc duy trì môi trường CLI của người dùng từ chương trình này sang chương trình tiếp theo, và Windows không có khái niệm đó; CLI chạy như một quy trình bình thường. Đối với VMS’s Vòng 1 , mã RMS trong Vòng 1 đã phải gọi vào Đổ chuông 0 khá thường xuyên, và việc chuyển đổi vòng là tốn kém. Hóa ra sẽ hiệu quả hơn nhiều nếu chỉ đi đến Đổ chuông 0 và được thực hiện với nó hơn là có nhiều Đổ chuông 0 chuyển tiếp trong Vòng 1 mã (một lần nữa, không phải NT có bất cứ điều gì giống như RMS dù sao).

Về lý do tại sao x86 thực hiện bốn vòng trong khi hệ điều hành không sử dụng chúng, bạn đang nói về hệ điều hành có thiết kế gần đây hơn x86. Rất nhiều tính năng lập trình hệ thống của x86 đã được thiết kế từ rất lâu trước khi các hạt nhân NT hoặc Unix-ish thực sự được triển khai trên nó, và họ không thực sự biết hệ điều hành sẽ sử dụng những gì. Chỉ cho đến khi chúng tôi phân trang trên x86, chúng tôi mới có thể triển khai các hạt nhân giống Unix-ish hoặc VMS thực sự.

Các hệ điều hành x86 hiện đại không chỉ bỏ qua việc phân đoạn (chúng chỉ thiết lập các phân đoạn C, D và S với địa chỉ cơ sở là 0 và kích thước là 4 GB; các phân đoạn F và G đôi khi được sử dụng để trỏ đến các cấu trúc dữ liệu chính của hệ điều hành ), họ cũng phần lớn bỏ qua những thứ như "phân đoạn trạng thái nhiệm vụ". Cơ chế TSS rõ ràng được thiết kế để chuyển đổi ngữ cảnh luồng, nhưng hóa ra nó có quá nhiều tác dụng phụ, vì vậy các hệ điều hành x86 hiện đại làm điều đó “bằng tay”. Lần duy nhất x86 NT thay đổi các tác vụ phần cứng là đối với một số điều kiện thực sự đặc biệt, chẳng hạn như ngoại lệ lỗi kép.

Về kiến ​​trúc x64, rất nhiều tính năng không được sử dụng đã bị loại bỏ. Để ghi nhận công lao của họ, AMD đã thực sự nói chuyện với các nhóm nhân hệ điều hành và hỏi họ cần gì từ x86, họ không cần hoặc không muốn điều gì và họ muốn thêm gì. Các phân đoạn trên x64 chỉ tồn tại ở dạng có thể được gọi là dạng tiền nghiệm, chuyển đổi trạng thái tác vụ không tồn tại, v.v. và hệ điều hành tiếp tục chỉ sử dụng hai vòng.


Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chuỗi thảo luận tại đây .

Why Do X86 CPUs Only Use Two Out Of Four “Rings”?

Why Do X86 CPUs Only Use 2 Out Of 4 Rings?

Lord Of The X86 Rings: A Portable User Mode Privilege Separation Architecture On X86


Phần cứng - Các bài báo phổ biến nhất

Cách xem thông báo bạn đã loại bỏ trên Android

Phần cứng Feb 20, 2025

Hệ thống thông báo của Android được cho là một trong những tính năng mạnh nhất của nó, nhưng nó cũng có thể gây khó chịu nếu bạn vô tình lo..


Biểu tượng hình chữ D bên cạnh cổng USB-C của tôi có ý nghĩa gì?

Phần cứng Apr 18, 2025

Thông thường, khá đơn giản để tìm ra các cổng khác nhau và các ký hiệu được in bên cạnh chúng trên máy tính của chúng ta dùng để làm gì, nh..


“NP” có nghĩa gì đối với Màn hình Máy tính Kết nối DVI?

Phần cứng Dec 8, 2024

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Khi bạn có một màn hình mới sáng bóng cho máy tính của mình, bạn có thể sẽ xem nhanh các cài đặt, nhưng đôi ..


Cách bật HomeKit trên Ecobee Thermostat

Phần cứng Sep 2, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Khi bạn lần đầu tiên thiết lập bộ điều nhiệt thông minh Ecobee, Trang chủ của Apple không tự đ�..


HTG Đánh giá D-Link DIR-880L: Một con ngựa đơn giản với khả năng truy cập từ xa dễ dàng

Phần cứng Sep 15, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Nếu bạn đang tìm kiếm một bộ định tuyến đáng tin cậy với thiết lập, quản trị đơn giản và bộ nhớ g�..


Máy in có thể in màu trắng không?

Phần cứng Jan 9, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Phần lớn thời gian chúng ta đều in trên giấy trắng: giấy trắng, bìa cứng màu trắng và các bề mặt trắng tru..


Hướng dẫn cách mua HDTV

Phần cứng Feb 12, 2025

Thị trường HDTV chứa đầy giá cao, biệt ngữ và nhiều cạm bẫy đối với người tiêu dùng ít học. Tiết kiệm tiền của bạn, không phải đau �..


Sử dụng Mac Mini của bạn làm máy chủ đa phương tiện Phần 1

Phần cứng Jun 9, 2025

NỘI DUNG KHÔNG ĐƯỢC CHỨNG MINH Apple đã thúc đẩy việc sử dụng Macintosh như trái tim của trung tâm truyền thông của một người trong một thời gian dà..


Thể loại