Kernel là thành phần cốt lõi của hệ điều hành, có nhiệm vụ quản lý việc giao tiếp giữa phần cứng và phần mềm.

Nếu xem kernel là thành phần cực kỳ quan trọng ở bên trong thì shell lại là thành phần cực kỳ quan trọng ở bên ngoài.

Functions of Kernel

Các tính năng của kernel:

  • Điều phối các tiến trình ở mức độ thấp (gần với phần cứng).
  • Quản lý giao tiếp giữa các tiến trình (Interprocess Communication).
  • Đồng bộ hóa tiến trình (Synchronization).
  • Chuyển đổi ngữ cảnh (Context Switch).
  • Quyết định xem khi nào và bao lâu mà một ứng dụng có thể sử dụng các phần cứng cụ thể.

Types of Kernel

Các loại kernel:

  1. Monolithic kernel: là một tập tin thực thi lớn gồm nhiều dòng code chứa tất cả các chức năng của hệ điều hành. Điều đó có nghĩa là tất cả các loại chức năng đều sẽ được triển khai ở không gian địa chỉ của kernel (kernel address space).
  2. Microkernel: cũng là một tập tin thực thi nhưng chỉ cung cấp một số chức năng cần thiết của hệ điều hành.
    • Các chức năng không ảnh hưởng đến việc vận hành hệ thống như drivers của các thiết bị hoặc hệ thống tập tin sẽ được triển khai trong không gian địa chỉ của người dùng (user address space).
    • Kiến trúc này giúp làm giảm kích thước của cả kernel và hệ điều hành.

Components of Microkernel

Các thành phần sẽ được triển khai ở trong kernel của kiến trúc microkernel là:

  • Giao tiếp giữa các tiến trình (Interprocess Communication)
  • Quản lý bộ nhớ (sử dụng bộ nhớ ảo - Virtual Memory)
  • Điều phối tiến trình (CPU Scheduling).

Difference between Microkernel and Monolithic Kernel

Tính chấtMonolithic kernelMicrokernel
DesignLà một tiến trình lớn, các chức năng dùng chung một không gian địa chỉ bộ nhớChỉ những thành phần quan trọng mới ở trong kernel. Các thành phần khác có thể được chia nhỏ thành nhiều tiến trình, còn được gọi là các servers.
ModularKhông có tính modularCó tính modular, vì vậy mà có thể chỉnh sửa các thành phần khác của hệ điều hành mà không làm ảnh hưởng đến kernel.
SecurityNếu một chức năng bị hỏng, toàn bộ kernel sẽ bị ảnh hưởng.Nếu một chức năng ở mức người dùng bị hỏng, nó sẽ không ảnh hưởng đến kernel.
PerformanceCó hiệu năng tốt do tất cả các chức năng đều dùng chung một không gian địa chỉ bộ nhớ và có thể giao tiếp trực tiếp với nhauCần phải có sự liên lạc giữa các kernel và user kernel nên hiệu năng không quá cao.
ExampleLinux, Windows, macOS, UnixQNX, MINIX, HURD.

Resources