Bạn có thể đã nghe nói về các ứng dụng chạy ở chế độ “hạt nhân” hoặc “người dùng”. 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 hiểu được sự khác biệt giữa chế độ người dùng và chế độ hạt nhân.
Hiểu Hệ điều hành có chức năng gì
Máy tính bao gồm phần cứng, các thành phầ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ể ít rõ ràng hơn là cách chúng hoạt động cùng nhau.
Yếu tố thiết yếu nhất của máy tính là bit hoặc "chữ số nhị phân". Mọi thứ máy tính làm được biểu diễn dưới dạng số một và số không. Các thành phần máy tính khác nhau biểu diễn các bit theo những cách khác nhau. Trong một CPU, các bóng bán dẫn cực nhỏ biểu thị số 0 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, được gọi là cổng logic.
Trong bộ nhớ máy tính điện tử, các bit được biểu diễn bằng các ô nhớ hoặc 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 đĩa quay. Trên đĩa quang, các hố và vùng đất có hoặc không phản xạ ánh sáng laser cũng thực hiện công việc tương tự.
Bất kể cách biểu diễn vật lý của mã nhị phân được thực hiện như thế nào, cuối cùng bạn có thể giảm tất cả các thành phần máy tính tiêu dùng xuống mã máy thô này.
Vậy làm thế nào để bạn đi từ giao diện thân thiện với con người của máy tính đến các quy trình thô, cấp thấp trong chính máy tính? Đó là nơi xuất hiện của hệ điều hành. Hệ điều hành này trực tiếp kiểm soát 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 đó người dùng) muốn thành các lệnh mã máy mà CPU và các thành phần khác hiểu được. Phần quan trọng nhất của phần mềm trong quá trình này là hạt nhân.
Kernel là gì?
Kernel, như tên gọi cho thấy, là cốt lõi của hệ điều hành. Kernel là phần mềm nằm trong RAM và chỉ đạo mọi thứ mà máy tính thực hiện. Khi một thứ gì đó được ghi vào bộ nhớ, thì đó là hạt nhân chỉ đạo việc thực thi.
Hạt 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 phát huy hết tiềm năng của chúng, dựa trên các tiêu chuẩn chung trong ngành máy tính.
Các trình điều khiển phần cứng phát huy 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ị đúng trình điều khiển, hạt nhân là cơ quan quyền lực cuối cùng 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)
Trong thời kỳ của MS-DOS, các nhà phát triển phần mềm phải viết phần mềm của họ đặc biệt 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 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 chuyên sâu, hãy xem DirectX là gì và tại sao nó lại 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 bất kỳ phần mềm tương tự nào tương tự.
Các 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 các 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 hiệu suất nhẹ. 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ó đi kèm với nhiều ưu điểm, đó là nơi cuối cùng chúng ta đến với chế độ người dùng và chế độ hạt nhân.
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 các mức độ ưu tiên và yêu cầu năng lượng 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 quy trình và CPU có thể thực thi chúng ở chế độ người dùng hoặc chế độ hạt nhân.
Tiến 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 và bảng xử lý. 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à tùy thuộc vào hệ điều hành để ánh xạ những không gian ảo đó với phần cứng thực của máy tính.
Điều này là 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 bị giới hạn đối với các quy trình ở chế độ người dùng, chủ yếu là các 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ế độ hạt nhân, nó có toàn quyền truy cập vào các 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 đè dữ liệu quan trọng mà hệ điều hành cần để chạy đúng cách.
Bẫy và ngoại lệ
Điều quan trọng cần hiểu là hai chế độ này được thực thi ở cấp phần cứng bởi chính CPU. Nếu một ứng dụng đang 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 chế độ hạt nhân, nó 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ố để các nhà phát triển có thể xem điều gì đã xảy ra trong bộ nhớ khi mọi thứ đi sai hướng.
Mối nguy 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 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ể đó là lỗi của quá trình chế độ hạt nhân.
Khi một quy trình ở chế độ hạt nhân thực hiện một điều gì đó mà nó không phải như vậy, hệ điều hành sẽ không thể khôi phục từ đó và toàn bộ máy tính sẽ tạm dừng. Khi quy trình ở chế độ người dùng hoạt động tốt, chỉ ứng dụng bị treo và 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à các API đóng một vai trò thiết yếu vì nó là API yêu cầu các đặc quyền của chế độ hạt 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ó yêu cầu đặc quyền chế độ hạt nhân cho API.
Đây là lý do tại sao chế độ hạt nhân 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 quy trình vì nó cần nhiều hiệu suất hơn chế độ người dùng có thể cung cấp. Một số lệnh CPU chỉ hoạt động trong chế độ hạt nhân, vì vậy nếu một quy trình cần sử dụng các chức năng đó, nó phải được nâng cấp.
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 sự cố Màn hình xanh chết chóc dành cho Windows 10 của chúng tôi!