Câu trả lời:
Chế độ hạt nhân
Một chương trình chạy trong chế độ này có toàn quyền truy cập vào phần cứng cơ bản. Nó có thể thực thi bất kỳ lệnh CPU nào, truy cập bất kỳ địa chỉ bộ nhớ nào và về cơ bản làm bất cứ điều gì nó muốn.
Mã chế độ người dùng thực thi trong chế độ này bị hạn chế sửa đổi phần cứng thông qua API của hệ điều hành. Nó không thể truy cập phần cứng trực tiếp cả .
Điều thú vị ở đây là trên các kiến trúc phổ biến, điều này được thi hành thông qua phần cứng - không chỉ hệ điều hành. Đặc biệt, kiến trúc x86 có vòng bảo vệ .
Ưu điểm lớn của loại phân tách này là khi một chương trình gặp sự cố khi chạy ở chế độ người dùng, nó không phải lúc nào cũng gây tử vong. Trong thực tế, trên các hệ thống hiện đại, nó thường không.
Hãy xem bài viết của Jeff . Đó là thứ tốt thường ngày của anh ấy.
Câu trả lời ngắn gọn là: nó chỉ cho bạn biết các chương trình đang dành thời gian ở đâu.
Để có câu trả lời dài hơn, tôi sẽ giải thích điều này theo hai bước. Đầu tiên:
1. Đang vào chế độ kernel
Mỗi mã thông thường bạn viết, chạy trong "chế độ người dùng".
Các chương trình có thể sử dụng các thư viện để thực hiện các nhiệm vụ chung cho chúng. Đây cũng là mã chế độ người dùng.
Tại một số điểm, chương trình có thể yêu cầu một chức năng cốt lõi từ hệ thống. Ví dụ:
Điều thiết yếu này - gần với phần cứng - chức năng là một phần của kernel. Đó là chương trình trung tâm đằng sau mọi thứ trên máy tính của bạn. Nó quản lý mọi thứ chương trình cần để hoạt động.
Để sử dụng một hàm trong kernel, đường dẫn thực thi chương trình thực hiện một bước nhảy từ chế độ Người dùng sang mã Kernel. Hạt nhân thực hiện công việc của nó và gấp đường dẫn thực hiện trở lại chế độ người dùng.
Khi một chương trình dành nhiều thời gian ở chế độ kernel, điều đó thường có nghĩa là nó thực hiện nhiều hoạt động liên quan đến phần cứng. Ví dụ, đĩa tìm kiếm hoặc truyền phát video. Phần cứng cũng có thể bị trục trặc; làm cho quá trình xử lý bị chậm và khiến chương trình tiêu tốn một lượng thời gian bất thường trong không gian kernel.
2 sự khác biệt
Mã trong không gian kernel là hiệu suất cao. Các phần khác của kernel có thể gọi nó trực tiếp và mã có quyền truy cập trực tiếp vào mọi tài nguyên của hệ thống mà không cần kiểm tra ranh giới. Việc chuyển đổi giữa chế độ kernel / user cũng là một thao tác đắt tiền, điều này hoàn toàn tránh được bằng cách chạy mọi thứ trong mã kernel.
Tuy nhiên, bên trong kernel, không có nhiều chỗ để kiểm tra bảo mật, bảo vệ chống sự cố hoặc ghi vào các phần sai của bộ nhớ. Đây là những dịch vụ mà kernel có thể cung cấp cho các chương trình khác. Nó lừa các chương trình để tin rằng thế giới trông khác biệt (các chương trình sống trong một môi trường ảo, bị chặn trong hộp cát / bị hạn chế) và do đó mọi thứ vào / ra khỏi chương trình đều có thể được dịch và bảo vệ.
Hạt nhân không thể có nhiều sự bảo vệ bởi vì không có gì đằng sau nó để bảo vệ nó. Đó là trái tim của hệ thống, và khi điều đó dừng lại, mọi thứ kết thúc. Bạn nhận được một kernel hoảng loạn, hoặc trên Windows, BSOD nổi tiếng.
Đó cũng là rủi ro của mã dựa trên kernel và lý do nhiều hệ thống con có yêu cầu hiệu năng thấp đang được chuyển sang không gian người dùng. Tuy nhiên, các bộ phận liên quan đến phần cứng thiết yếu thường là mã hạt nhân sẽ không sớm thay đổi.
Đó là điểm khác biệt của việc mã hiện đang thực thi có được phép tương tác trực tiếp với các phần cứng khác nhau hay không. Mã chế độ hạt nhân có thể ghi vào các bus thiết bị, thay đổi ánh xạ bộ nhớ, chuyển đổi các quy trình đang chạy, v.v. Chế độ người dùng có thể thực hiện tính toán và nó có thể thực hiện các cuộc gọi hệ thống vào kernel để tương tác với phần còn lại của thế giới.