Chế độ người dùng và chế độ hạt nhân trong Windows là gì


Bạn có thể đã nghe nói về các ứng dụng chạy ở chế độ “kernel” hoặc “user”. Tất cả phụ thuộc vào cách hệ điều hành hoạt động khi chúng thực hiện công việc của mình. Khi bạn hiểu điều đó, bạn sẽ dễ dàng nắm bắt được sự khác biệt giữa chế độ người dùng và chế độ kernel.

Tìm hiểu hệ điều hành làm gì

Một máy tính bao gồm phần cứng, các linh kiện điện tử và phần mềm, mã máy tính được thực thi bởi phần cứng đó. Nhưng điều có thể chưa rõ ràng hơn là cách họ làm việc cùng nhau.

Thành phần quan trọng nhất của máy tính là bit hay “chữ số nhị phân”. Mọi thứ máy tính thực hiện đều được biểu diễn dưới dạng số 1 và số 0. Các thành phần máy tính khác nhau biểu diễn bit theo những cách khác nhau. Trong CPU, các bóng bán dẫn cực nhỏ biểu thị số 1 và số 0 bằng cách bật hoặc tắt. Các bóng bán dẫn đó được sắp xếp thành các cấu trúc logic, gọi là cổng logic.

Trong bộ nhớ máy tính điện tử, các bit được biểu thị bằng các ô nhớ có điện tích trên hoặc dưới một ngưỡng nhất định. Trên ổ cứng cơ học, các bit được biểu diễn dưới dạng dao động từ tính được đo trên một đĩa quay. Trên các đĩa quang, hố và vùng có hoặc không phản chiếu ánh sáng laze cũng thực hiện công việc tương tự.

Cho dù biểu diễn vật lý của mã nhị phân bằng cách nào, cuối cùng bạn cũng có thể giảm tất cả các thành phần máy tính tiêu dùng thành mã máy thô này.

Vậy làm cách nào để bạn chuyển từ giao diện thân thiện với con người của máy tính sang các quy trình thô, cấp thấp trong chính máy tính? Đó là lúc hệ điều hành xuất hiện. Nó trực tiếp điều khiển phần cứng của máy tính.

Phần mềm này dịch mọi thứ mà ứng dụng (và do đó là người dùng) muốn thành các hướng dẫn mã máy mà CPU và các thành phần khác hiểu được. Phần mềm quan trọng nhất trong quá trình này là kernel.

Hạt nhân là gì?

Nhân, đúng như tên gọi, là cốt lõi của hệ điều hành. Hạt nhân là phần mềm nằm trong ĐẬP và điều khiển mọi hoạt động của máy tính. Khi một cái gì đó được ghi vào bộ nhớ, kernel sẽ chỉ đạo việc thực thi.

Nhân biết cách giao tiếp với phần cứng như GPU và card mạng, nhưng nó có thể không biết cách vận hành chúng hết tiềm năng, dựa vào các tiêu chuẩn chung trong ngành máy tính..

Trình điều khiển phần cứng có tác dụng ở đây. Trình điều khiển cho hệ điều hành của bạn biết cách hoạt động với các thành phần cụ thể. Đó là lý do tại sao bạn cần các trình điều khiển khác nhau cho GPU Nvidia và AMD chẳng hạn.

Được trang bị trình điều khiển phù hợp, hạt nhân là quyền lực tối cao trong máy tính, bao gồm cả việc thực hiện những việc có thể phá hủy dữ liệu một cách thảm khốc.

Vai trò của Giao diện lập trình ứng dụng (API)

Vào thời MS-DOS, các nhà phát triển phần mềm phải viết phần mềm của họ dành riêng cho phần cứng của người dùng. Ví dụ nổi tiếng nhất về điều này trên hệ thống MS-DOS là trình điều khiển card âm thanh.

Một trò chơi điện tử nhất định sẽ phải hỗ trợ các loại thẻ phổ biến nhất (Sound Blaster, Ad-lib, Gravis Ultrasound, v.v.) và hy vọng rằng hầu hết người chơi đều được hỗ trợ. Ngày nay, mọi thứ hoạt động rất khác nhờ API.

Microsoft DirectX là một ví dụ tuyệt vời. Nếu bạn muốn được giải thích sâu hơn, hãy xem DirectX là gì và tại sao nó quan trọng? Tuy nhiên, điều quan trọng nhất cần biết là API cung cấp một cách tiêu chuẩn để các nhà phát triển phần mềm yêu cầu tài nguyên phần cứng từ các thành phần như GPU. Ngoài ra, các nhà sản xuất phần cứng chỉ phải đảm bảo rằng sản phẩm của họ tuân thủ DirectX để đảm bảo khả năng tương thích hoàn toàn với mọi phần mềm tương thích tương tự.

API cung cấp một lớp dịch giữa các ứng dụng phần mềm và nhân cấp thấp với trình điều khiển phần cứng của nó. Có, điều này đi kèm với một hình phạt nhẹ về hiệu suất. Tuy nhiên, trên các máy tính hiện đại, điều này là không đáng kể và nó có nhiều lợi ích khác nhau, đó là nơi cuối cùng chúng ta đến với chế độ người dùng và chế độ kernel.

Chế độ người dùng so với Chế độ hạt nhân

Các hệ điều hành hiện đại chạy đồng thời hàng trăm hoặc hàng nghìn "quy trình", tự động cung cấp cho chúng thời gian CPU khi cần thiết dựa trên mức độ ưu tiên và yêu cầu về năng lực tính toán của chúng.

Khi bạn khởi chạy một ứng dụng, nó sẽ tạo ra các tiến trình và CPU có thể thực thi chúng ở chế độ người dùng hoặc chế độ kernel.

Một quy trình Windows chạy ở chế độ người dùng chỉ có quyền truy cập vào không gian địa chỉ bộ nhớ ảo riêng tư và bảng điều khiển. Phần mềm sử dụng các bảng này để lưu trữ dữ liệu trong RAM và yêu cầu tài nguyên. Không có quyền truy cập trực tiếp vào bộ nhớ hoặc phần cứng khác và hệ điều hành phải tùy thuộc vào việc ánh xạ các không gian ảo đó tới phần cứng thực của máy tính..

Điều này tốt vì nhiều lý do, nhưng lợi ích quan trọng nhất là ứng dụng không thể ghi đè hoặc thay đổi dữ liệu bên ngoài không gian địa chỉ bộ nhớ ảo của nó. Ngoài ra, một số chức năng nhất định không được phép áp dụng đối với các quy trình ở chế độ người dùng, chủ yếu là những chức năng có thể làm hỏng hệ thống hoặc phá hủy dữ liệu.

Khi một tiến trình khởi chạy hoặc được nâng lên chế độ kernel, nó có toàn quyền truy cập vào tài nguyên hệ thống, ngay cả những tài nguyên dành riêng cho hệ điều hành. Vì vậy, về lý thuyết, nó có thể ghi đè lên dữ liệu quan trọng mà hệ điều hành cần để chạy bình thường.

Bẫy và ngoại lệ

Điều quan trọng là phải hiểu rằng hai chế độ này được chính CPU thực thi ở cấp phần cứng. Nếu một ứng dụng chạy ở chế độ người dùng cố gắng thực hiện điều gì đó yêu cầu quyền truy cập vào chế độ kernel, thì ứng dụng đó sẽ tạo ra một “bẫy” hoặc “ngoại lệ”. Sau đó, hệ điều hành sẽ xử lý ứng dụng, thường bằng cách tắt ứng dụng và tạo nhật ký sự cố để nhà phát triển có thể biết điều gì đã xảy ra trong bộ nhớ khi mọi thứ không theo đúng kế hoạch.

Mối nguy hiểm của chế độ hạt nhân: Màn hình xanh chết chóc

Nếu bạn đã từng gặp phải lỗi Màn hình xanh chết chóc (ai chưa?) buộc máy tính của bạn phải tắt hoặc khởi động lại thì rất có thể nguyên nhân là do quy trình chế độ lõi.

Khi một tiến trình ở chế độ kernel thực hiện điều gì đó không được phép, hệ điều hành không thể khôi phục từ tiến trình đó và toàn bộ máy tính sẽ dừng lại. Khi quá trình ở chế độ người dùng gặp trục trặc, chỉ ứng dụng gặp sự cố còn phần còn lại của phần mềm và hệ điều hành có thể tiếp tục mà không gặp bất kỳ sự cố nào.

Đây là một lĩnh vực mà API đóng vai trò thiết yếu vì API yêu cầu các đặc quyền ở chế độ nhân. Các ứng dụng ở chế độ người dùng về cơ bản ủy quyền các yêu cầu cần có đặc quyền ở chế độ hạt nhân cho API.

Đây là lý do tại sao chế độ kernel thường chỉ được cấp cho các quy trình hệ thống cấp thấp cần truy cập trực tiếp vào phần cứng của máy tính. Thông thường, đặc quyền này được mở rộng cho một tiến trình vì nó cần hiệu năng cao hơn mức mà chế độ người dùng có thể cung cấp. Một số lệnh CPU chỉ hoạt động ở chế độ kernel, vì vậy nếu một tiến trình cần sử dụng các chức năng đó thì nó phải được nâng lên.

Nếu bạn gặp sự cố với Màn hình xanh chết chóc, hãy nhớ đọc Hướng dẫn khắc phục lỗi màn hình xanh chết chóc trên Windows 10 của chúng tôi!.

.

bài viết liên quan:


31.12.2021