Sự khác biệt giữa Kernel mode và User mode trong Windows 

Chia sẻ kiến thức 07/01/2022

Khi bạn sử dụng PC, bộ xử lý của bạn liên tục hoán đổi giữa hai chế độ này. Nhưng Kernel mode (chế độ hạt nhân) và User mode (chế độ người dùng) thực tế có nghĩa là gì trong Windows?

Khi bạn sử dụng PC, bộ xử lý của bạn liên tục hoán đổi giữa hai chế độ này. Nhưng Kernel mode (chế độ hạt nhân) và User mode (chế độ người dùng) thực tế có nghĩa là gì trong Windows?Bộ xử lý thực thi các chương trình ở User mode (chế độ người dùng) hoặc Kernel mode (chế độ hạt nhân). Khi bạn sử dụng PC, bộ xử lý của bạn thường xuyên chuyển đổi giữa hai chế độ tùy thuộc vào từng tác vụ. Nhưng User mode và Kernel mode là gì, và sự khác biệt giữa hai chế độ này nằm ở đâu?

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 quy trình (process) cho nó. Quy trình 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 quy trình, nó cũng tạo ra một không gian địa chỉ ảo (virtual address space) cho quy trình đó.

Một không gian địa chỉ ảo là một tập hợp các địa chỉ logic (phi vật chất) mà Windows dành cho một quá trình. Các quy 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 được tách riêng. Vì vậy, không gian địa chỉ ảo của một quy trình không can thiệp vào không gian của quy 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 bị lỗi, chỉ mình nó bị sập mà không làm hỏng các chương trình khác hoặc toàn bộ hệ điều hành.

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” (less privileged). 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 nhân (kernel) của hệ điều hành bằng cách sử dụng các lệnh gọi hệ thống (system calls).

Nói một cách đơn giản, các chương trình ứng dụng như trò chơi điện tử chạy ở user mode. Nó có ít đặc quyền hơn và 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. Ứng dụng này 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 bị treo, 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 node (chế độ hạt nhân), trước tiên chúng ta phải biết “kernel” (hạt nhân) là gì và nó hoạt động như thế nào trong 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 phải dựa vào. Kernel quản lý phần cứng máy tính, lập lịch cho các quy 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 mã đặc quyền nhất chạy trên hệ thống, bởi nó là mã 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 ứng dụng nào đó chạy trong Chế độ Người dùng và muốn truy cập vào một bộ phận phần cứng như webcam, chương trình đó phải yêu cầu kernel bằng cách sử dụng lệnh gọi hệ thố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 quy trình đã lên lịch tiếp theo. 

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 không gian địa chỉ của các ứng dụng khác.

Mã 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, đều 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ố quy 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 quy trình. Các ứng dụng nằm ở lớp ngoài cùng có ít đặc quyền nhất. Nằm ở vị trí trong cùng của các lớp này là kernel với 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, nó 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ị hỏng.

Link gốc: https://www.makeuseof.com/computer-drivers-what-are-they-why-should-you-update/

Vân Nguyễn (dịch từ makeuseof.com)

Bình luận (
0
)

Bài liên quan

Những kênh podcast hữu ích dành cho dân lập trình

Theo xu thế phát triển đa dạng của lĩnh vực giáo dục - truyền thông, nhiều podcast uy tín trong lĩnh vực khoa học – công nghệ ra đời. Đây được xem là một kênh thông tin hữu dụng mà...

Group hỗ trợ Facebook miễn phí của Hiếu PC đột ngột "bay màu", chính chủ lên tiếng giải thích

6 tháng kể từ ngày group hỗ trợ các vấn đề về Facebook miễn phí của Hiếu PC bị bay màu, chính chủ đã chính thức có những lời giải thích trên trang cá nhân.

xDebate 24: Nên đánh thuế rác cho người bán hàng trên sàn thương mại điện tử?

"Nên đánh thuế rác cho người bán hàng trên sàn thương mại điện tử?" là chủ đề được lựa chọn để tranh biện trong xDebate số 24.

Lập trình viên nên sử dụng low code trong trường hợp nào?

Trong bài này, chúng ta sẽ tìm hiểu về các trường hợp sử dụng low code phổ biến, từ phức tạp (chẳng hạn như phát triển ứng dụng toàn phần) đến tương đối đơn giản (chẳng hạn như thiết kế...

Low code là gì? Hướng dẫn toàn diện về low code

Low code chắc chắn đang biến đổi nền công nghiệp phần mềm Vậy low code là gì? Các cách sử dụng, lợi ích, nhược điểm của nó? Chuỗi bài viết này sẽ đưa ra thông tin toàn diện để bạn hiểu...

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

yêu cầu gọi lại