Kernel trong hệ điều hành
Xem thửBạn sẽ học được gì?
- Phân biệt kernel mode và user mode
- Giải thích vai trò kernel trong quản lý tài nguyên
- Nêu ví dụ system call đi qua kernel
Kernel trong hệ điều hành
Kernel là phần lõi của OS, chạy ở kernel mode (privileged): quản lý ngắt, lập lịch, bộ nhớ ảo, trình điều khiển thiết bị, và thực thi system call. Mã ứng dụng chạy ở user mode — không được truy cập trực tiếp thanh ghi điều khiển, bảng trang, hay cổng I/O.
Dual mode — nền tảng bảo vệ
CPU có bit mode (hoặc ring trên x86): khi chương trình cần dịch vụ đặc quyền, nó phát sinh trap (software interrupt), CPU chuyển sang kernel mode, kernel kiểm tra tham số, thực hiện yêu cầu rồi trả về user mode. Không có dual mode thì một tiến trình lỗi có thể phá toàn bộ máy.
Kiến trúc kernel phổ biến
| Kiến trúc | Ý tưởng | Ưu / nhược |
|---|---|---|
| Monolithic | Hầu hết dịch vụ (FS, net, driver) trong một không gian địa chỉ kernel | Nhanh (gọi hàm trực tiếp); lỗi driver có thể panic cả hệ thống |
| Microkernel | Kernel tối giản (IPC, scheduling, memory tối thiểu); dịch vụ chạy user-space | Cách ly lỗi tốt hơn; IPC nhiều hơn nên tốn chi phí |
| Hybrid | Kết hợp thực dụng (Windows NT, macOS XNU) | Cân bằng hiệu năng và module hóa |
| Exokernel / Unikernel | Biến thể nghiên cứu / chuyên dụng | Ít gặp trên desktop phổ thông |
Linux về phân loại học thuật gần monolithic có module nạp động; Android/iOS dùng kernel (Linux/XNU) kèm userspace framework dày.
Kernel space vs User space
- Kernel space: mã và dữ liệu privileged; mọi tiến trình “nhìn” cùng kernel (trên hầu hết OS).
- User space: mỗi tiến trình có không gian địa chỉ ảo riêng — cô lập bộ nhớ.
Ví dụ thực tế
Khi trình duyệt đọc file, libc gọi read, lời gọi đi qua syscall, VFS, filesystem, block layer rồi tới driver. Phần lớn đường đi nằm trong kernel; ứng dụng chỉ thấy descriptor và buffer.
Tham khảo
- Tanenbaum — microkernel vs monolithic.
- Silberschatz — dual-mode operation, kernel data structures.
Trong thực tế
Trên Linux server, strace -e trace=open,read,write cho thấy mọi I/O file đều qua syscall — debug permission denied thường bắt đầu từ đây. Container chia sẻ kernel host: cùng một kernel phục vụ nhiều namespace cô lập — hiểu kernel giúp cấu hình cgroup/ulimit đúng.
Ghi nhớ nhanh
- Kernel = lõi OS: scheduler, memory, drivers, syscall.
- User app không truy cập phần cứng trực tiếp.
- Phân biệt monolithic vs microkernel ở mức khái niệm.
Đang tải sơ đồ…