Kernel là một thành phần quan trọng nhất của hệ điều hành máy tính đảm nhiệm nhiều vai trò khác nhau. Cụ thể các chức năng quan trọng đó là gì? Có những loại Kernel chính nào trong hệ điều hành? Bài viết sau đây BKHOST sẽ giúp bạn tìm hiểu chi tiết về Kernel.
Kernel là gì?
Kernel là một thành phần cốt lõi của hệ điều hành có khả năng kiểm soát các công việc trong hệ thống. Vì vậy, nếu như hệ thống khởi động thì Kernel sẽ là chương trình đầu tiên được tải để xử lý phần còn lại của hệ điều hành. Các công việc mà Kernel cần xử lý bao gồm các tác vụ đơn giản như quản lý đĩa, quản lý bộ nhớ và quản lý tác vụ. Đồng thời Kernel cung cấp giao diện giữa người dùng và các thành phần phần cứng của hệ thống. System Call là một tiến trình thực hiện yêu cầu tới Kernel.
Mã của Kernel được tải vào Kernel Space là một vùng riêng biệt của bộ nhớ không cho phép các chương trình ứng dụng khác truy cập vào. User Space là một không gian dành cho các ứng dụng khác trong bộ nhớ. Hai không gian này cùng nằm trong một bộ nhớ hệ thống khiến cho quá trình giao tiếp diễn ra chậm hơn.
Kernel có những chức năng quan trọng nào?
Kernel có các chức năng như:
- Hoạt động giống như một cầu nối cho phép truy cập vào nhiều tài nguyên máy tính khác nhau như CPU, I / O.
- Quản lý và chia sẻ tài nguyên giữa các tiến trình khác nhau.
- Kernel giúp quản lý bộ nhớ cho các tiến trình bằng cách cấp phát và phân bổ hợp lý.
- Quản lý thiết bị ngoại vi của các quy trình được kết nối trong hệ thống.
So sánh Kernel Mode với User Mode
Một số lệnh nhất định sẽ dựa vào Kernel, chẳng hạn như CPU thực thi các hướng dẫn hay tính năng quản lý bộ nhớ chỉ xảy ra trong Kernel Mode. Còn với User Mode thì CPU sẽ thực thi các quy trình do người dùng cung cấp trong User Space.
Các loại Kernel phổ biến
Có năm loại Kernel chính đó là:
Monolithic Kernels
Monolithic Kernels là dịch vụ người dùng và dịch vụ Kernel được triển khai trong cùng một không gian bộ nhớ. Vì thế nên kích thước của Kernel sẽ tăng dần lên, đồng thời kích thước của hệ điều hành cũng tăng. User Space và Kernel Space là hai không gian riêng biệt nên quá trình thực thi sẽ trở nên linh hoạt hơn trong Monolithic Kernels.
Ưu điểm:
- Cung cấp tính năng lập lịch CPU, lập lịch bộ nhớ và quản lý tệp chỉ thông qua các cuộc gọi hệ thống.
- Quá trình hoạt động linh hoạt do không có không gian bộ nhớ riêng cho người dùng và Kernel.
Nhược điểm:
- Một dịch vụ lỗi thì cả hệ thống sẽ lỗi theo.
- Một dịch vụ mới bất kỳ được bổ sung vào thì toàn bộ hệ điều hành cần được sửa đổi.
Microkernel
Không giống với Monolithic kernel, Microkernel là các dịch vụ người dùng và Kernel được triển khai vào các không gian khác nhau. Bằng cách sử dụng cả User Space và Kernel Space trong Microkernel để làm giảm kích thước của Kernel và Hệ điều hành. Do sử dụng hai không gian khác nhau nên quá trình giao tiếp giữa ứng dụng và dịch vụ sẽ dựa vào các phương pháp phân tích cú pháp tin nhắn khiến cho tốc độ thực thi bị giảm đáng kể.
Ưu điểm: Dễ dàng bổ sung thêm các dịch vụ mới.
Nhược điểm: Sử dụng hai không gian riêng làm giảm thời gian thực thi.
Hybrid Kernel
Hybrid Kernel là sự kết hợp của Monolithic Kernel và Microkernel. Thành phần chính của Hybrid Kernel gồm các microkernel có một số mã non-essential trong Kernel Space hỗ trợ cho mã chạy nhanh hơn so với User Space.
Một số dịch vụ như ngăn xếp mạng hay hệ thống tệp chạy trong Kernel Space giúp giảm chi phí hiệu suất và chạy mã Kernel như một máy chủ trong User Space.
Nanokernel
Nanokernel gồm các mã của Kernel nhỏ có khả năng thực thi trong chế độ đặc quyền của phần cứng nhỏ. Chức năng chính của Nanokernel là mô tả một Kernel hỗ trợ độ phân giải xung nhịp nano giây.
Exokernel
Exokernel là một Kernel của hệ điều hành được phát triển song song bởi MIT và nhóm hệ điều hành phân tán. Với mục đích chính là bảo vệ các tài nguyên đã chuyển ra khỏi phần quản lý cho phép người dùng thực hiện các tùy chỉnh ứng dụng mong muốn.
Exokernel là một Kernel đặc biệt bởi nó không mô phỏng sự trừu tượng hoá nhưng khá phức tạp trong việc thiết kế.
Tổng kết về Kernel
Với các thông tin mà chúng tôi chia sẻ trên đây đã giúp bạn tìm được câu trả lời cho các thắc mắc về Kernel của mình.
Nếu bạn có thắc mắc về Kernel, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.