Mọi hệ điều hành - Windows, Mac, Linux, hay Android - đều có một chương trình cốt lõi gọi là Kernel đóng vai trò "người quản lý" cho toàn bộ hệ thống. Đây là trái tim của HĐH! Kernel không gì khác hơn một chương trình máy tính điều khiển mọi thứ khác. Bất cứ điều gì xảy ra trên máy tính đều phải qua nó. Bài viết này thảo luận Kernel trong HĐH là gì và các loại Kernel khác nhau.
Kernel trong HĐH là gì?
Biết nó là chương trình cốt lõi trong HĐH, ta cũng nên biết nó là chương trình đầu tiên tải sau bootloader. Sau đó nó làm trung gian giữa phần cứng và phần mềm/ứng dụng. Vì vậy nếu bạn chạy một chương trình, giao diện người dùng gửi yêu cầu đến Kernel. Kernel gửi yêu cầu đến CPU, Memory để cấp sức xử lý, bộ nhớ và các thứ khác để ứng dụng chạy mượt mà ở giao diện người dùng.

Bạn có thể hình dung Kernel như một người dịch. Nó chuyển đổi yêu cầu input/output từ phần mềm thành tập lệnh cho CPU và GPU. Nói đơn giản, nó là lớp trung gian giữa phần mềm và phần cứng khiến mọi thứ trở nên khả thi. Kernel quản lý:
- CPU/GPU
- Memory (Bộ nhớ)
- Input/Output hoặc thiết bị IO
- Quản lý tài nguyên
- Quản lý bộ nhớ
- Quản lý thiết bị
- System calls (Gọi hệ thống).
Tiến trình người dùng chỉ có thể truy cập kernel-space thông qua system calls. Nếu chương trình cố truy cập trực tiếp, sẽ gây lỗi (fault).
Đọc thêm: Khác biệt giữa Kernel Mode và User Mode.
Bảo vệ & An ninh Kernel
Kernel cũng bảo vệ phần cứng. Nếu không có bảo vệ, bất kỳ chương trình nào cũng có thể thực hiện bất kỳ tác vụ nào trên máy tính, bao gồm làm sập máy, làm hỏng dữ liệu, v.v.
Trong máy tính hiện đại, an ninh được triển khai ở cấp phần cứng. Ví dụ, Windows sẽ không tải driver không từ nguồn tin cậy và được chứng thực bằng chữ ký. Secure Boot và Trusted Boot là ví dụ điển hình.
Secure Boot: Tiêu chuẩn an ninh do các thành viên ngành PC phát triển. Nó giúp bảo vệ hệ thống khỏi chương trình độc hại bằng cách không cho phép ứng dụng trái phép chạy trong quá trình khởi động. Tính năng đảm bảo PC chỉ boot bằng phần mềm được tin cậy bởi nhà sản xuất PC. Vì vậy, mỗi khi PC khởi động, firmware kiểm tra chữ ký của từng phần mềm boot, bao gồm firmware driver (Option ROMs) và hệ điều hành. Nếu chữ ký được xác minh, PC boot và firmware chuyển quyền kiểm soát cho HĐH.
Trusted Boot: Sử dụng Virtual Trusted Platform Module (VTPM) để xác minh chữ ký số của Kernel Windows 10 trước khi tải. Tiếp theo, nó xác nhận mọi thành phần khác của quy trình khởi động Windows, bao gồm boot driver, file khởi động, và ELAM. Nếu file bị thay đổi hay chỉnh sửa bất kỳ mức độ nào, bootloader phát hiện và từ chối tải bằng cách nhận diện nó là thành phần bị hỏng. Tóm lại, nó cung cấp chuỗi tin cậy cho tất cả yếu tố trong quá trình boot.
Các loại Kernel
Kernel cũng có thể giao tiếp với phần cứng trên đường bảo mật. Vì vậy công ty có thể phát triển Kernel giao tiếp với phần cứng của họ qua một tập nút bấm. Ví dụ máy giặt. Tùy vào nút bạn vặn, thời gian bạn đặt – một Kernel cơ bản là đủ. Tuy nhiên, Kernel trở nên phức tạp theo thời gian, dẫn đến các loại Kernel.
- Monolithic Kernel (Kernel nguyên khối): OS và Kernel cùng chạy trong không gian bộ nhớ, phù hợp nơi an ninh không phải mối quan tâm lớn. Truy cập nhanh hơn, nhưng nếu có bug trong driver thiết bị, toàn bộ hệ thống sập.
- Microkernel (Vi nhân): Phiên bản rút gọn của Monolithic Kernel, Kernel tự làm hầu hết việc, không cần GUI thêm. Dùng nơi an ninh và sập hệ thống không xảy ra hoặc không được phép xảy ra.
- Hybrid Kernel (Kernel lai): Loại Kernel phổ biến nhất. Windows, macOS của Apple. Kết hợp Monolithic và Microkernel. Di chuyển driver ra ngoài nhưng giữ dịch vụ hệ thống trong Kernel – tương tự cách driver tải khi Windows khởi động boot.
- Nano Kernel: Nếu cần Kernel nhưng hầu hết chức năng thiết lập bên ngoài, loại này xuất hiện.
- Exo Kernel: Kernel này chỉ cung cấp bảo vệ tiến trình và xử lý tài nguyên. Chủ yếu dùng khi test dự án nội bộ, sau đó nâng cấp lên loại Kernel tốt hơn.
Kernel còn nhiều khía cạnh hơn những gì chúng ta đã nói. Khi đào sâu hơn, định nghĩa Kernel rộng và sâu hơn.
Hy vọng bài viết dễ hiểu và giúp bạn nắm cơ bản.
Đọc tiếp: Bản đồ tương tác của Linux Kernel.
