Bộ xử lý thực thi các chương trình ở User Mode hoặc Kernel Mode. Khi bạn sử dụng PC, bộ xử lý thường xuyên chuyển đổi giữa hai loại chế độ này, tùy thuộc vào công việc của nó. Nhưng User Mode và Kernel Mode là gì? Sự khác biệt giữa hai chế độ này ra sao? Tại sao CPU cần chuyển đổi giữa các chế độ này.
User Mode trong Windows là gì?
Khi bạn khởi động một chương trình trên Windows, chương trình đó sẽ khởi chạy ở User Mode. Bất cứ khi nào một chương trình ở User Mode muốn chạy, Windows sẽ tạo ra một tiến trình cho nó. Tiến trình chỉ là một chương trình mà một bộ xử lý đang thực thi hoặc một chương trình mà Windows đã lên lịch để thực thi. Và bất cứ khi nào Windows tạo một tiến trình, nó cũng tạo ra một không gian địa chỉ ảo cho tiến trình đó.
Không gian địa chỉ ảo là tập hợp các địa chỉ logic (phi vật lý) mà Windows gán cho một tiến trình. Các tiến trình có thể sử dụng những địa chỉ này để lưu trữ dữ liệu trên bộ nhớ vật lý.
Ngoài ra, không gian địa chỉ ảo bị cô lập. Vì vậy, không gian địa chỉ ảo của một tiến trình không can thiệp vào không gian địa chỉ của tiến trình khác. Và bởi vì các chương trình ở User Mode có không gian địa chỉ riêng biệt, nếu một chương trình gặp sự cố, chương trình đó sẽ chỉ bị hỏng một mình và không làm ảnh hưởng các chương trình khác hoặc toàn bộ hệ điều hành với nó.
Một cách khác để mô tả các ứng dụng ở User Mode là sử dụng thuật ngữ “ít đặc quyền”. Windows hạn chế các ứng dụng ở User Mode truy cập trực tiếp vào các tài nguyên hệ thống quan trọng, do đó làm cho chúng có ít đặc quyền hơn. Ví dụ, nếu một ứng dụng muốn truy cập vào phần cứng, nó phải thông qua OS kernel bằng cách sử dụng các system call (cách lập trình trong đó một chương trình máy tính yêu cầu một dịch vụ từ nhân của hệ điều hành mà nó được thực thi).
Nói một cách đơn giản, các chương trình ứng dụng như video game chạy ở User Mode. Chúng có ít đặc quyền, vì vậy không có quyền truy cập không hạn chế vào tài nguyên hệ thống. Mỗi ứng dụng User Mode có không gian địa chỉ riêng. Một ứng dụng không thể thay đổi không gian địa chỉ của ứng dụng khác. Do đó, nếu một ứng dụng gặp sự cố, nó không ảnh hưởng đến các chương trình khác đang chạy trên máy tính.
Kernel Mode trong Windows là gì?
Trước khi thảo luận về Kernel Mode, trước tiên chúng ta phải biết "kernel" là gì và nó hoạt động như thế nào với Windows.
Kernel là bộ não của một hệ điều hành. Nó là thành phần phần mềm cốt lõi mà tất cả các thành phần khác bên trong hệ điều hành đều dựa vào. Kernel quản lý phần cứng máy tính, lập lịch trình chạy trên máy tính, cũng như xử lý các tương tác giữa phần cứng và phần mềm ứng dụng.
Tóm lại, kernel là đoạn code đặc quyền nhất chạy trên hệ thống, bởi vì nó là code tương tác trực tiếp với phần cứng. Mọi chương trình khác muốn sử dụng tài nguyên phần cứng phải yêu cầu quyền truy cập thông qua kernel.
Khi một chương trình ứng dụng đang chạy trong User Mode và muốn truy cập vào phần cứng như webcam, chương trình đó phải yêu cầu kernel bằng cách sử dụng system call. Để phục vụ các yêu cầu này, CPU, tại thời điểm thực thi chương trình, sẽ chuyển từ User Mode sang Kernel Mode.
Sau khi quá trình thực thi hoàn tất, CPU sẽ chuyển trở lại User Mode và bắt đầu thực hiện tiến trình đã lên lịch tiếp theo. Đây được gọi là “Context Switching” (Chuyển đổi ngữ cảnh).
Sự khác biệt giữa User Mode và Kernel Mode là gì?
Sự khác biệt chính giữa User Mode và Kernel Mode là mức độ đặc quyền mà mỗi chế độ cung cấp. Trong User Mode, các ứng dụng có ít đặc quyền hơn. Chúng không có quyền truy cập trực tiếp vào tài nguyên phần cứng và cũng không thể ghi vào vùng địa chỉ của những ứng dụng khác.
Code chạy trong Kernel Mode có các đặc quyền nâng cao. Nó không chỉ có quyền truy cập trực tiếp vào phần cứng máy tính mà tất cả các chương trình đang chạy ở Kernel Mode, bao gồm cả hệ điều hành, cũng chia sẻ một không gian địa chỉ. Vì vậy, nếu một chương trình ở Kernel Mode gặp sự cố, nó có thể khiến toàn bộ hệ điều hành bị hỏng. Để đảm bảo không xảy ra sự cố như vậy, Windows chỉ cho phép một số tiến trình chạy ở Kernel Mode.
Windows áp dụng phương pháp tiếp cận theo lớp để tách các chương trình người dùng khỏi tài nguyên hệ thống
Windows sử dụng mô hình phân lớp để xác định mức độ đặc quyền của các tiến trình. Những ứng dụng nằm ở lớp ngoài cùng là những ứng dụng có đặc quyền cho thuê. Cốt lõi của các lớp này là kernel. Do đó, kernel có quyền truy cập không giới hạn vào tài nguyên hệ điều hành.
Phương pháp phân lớp cũng bảo vệ chức năng quan trọng của hệ điều hành. Khi các chương trình ở lớp trên gặp sự cố ngẫu nhiên, điều đó không ảnh hưởng đến hệ điều hành. Mặt khác, khi kernel gặp sự cố, toàn bộ hệ điều hành sẽ bị ảnh hưởng.