Kernel, hay nhân hệ điều hành, là phần cốt lõi của bất kỳ hệ điều hành nào, đóng vai trò quản lý tài nguyên hệ thống và giao tiếp giữa phần cứng và phần mềm. Hãy cùng VPSTTT khám phá chi tiết về Kernel và những chức năng quan trọng của nó qua bài viết sau.
Nội dung
Kernel là gì?
Kernel là gì? Khi một hệ thống nào đó khởi động, Kernel sẽ là chương trình đầu tiên được tải sau boot loader vì Kernel phải xử lý phần còn lại của hệ thống cho hệ điều hành. Ngoài ra, Kernel sẽ biến mất trong bộ nhớ khi tắt hệ điều hành.
Kernel có trách nhiệm thực hiện các tác vụ cấp thấp như quản lý đĩa, quản lý bộ nhớ và quản lý tác vụ. Nó chịu trách nhiệm cung cấp giao diện để kết nối người dùng với các thành phần phần cứng của hệ thống. Khi một tiến trình cần thực hiện một yêu cầu đối với Kernel, quá trình này được gọi là System Call.
Một Kernel Space được bảo vệ là một khu vực bộ nhớ độc lập, không thể truy cập bởi các chương trình ứng dụng khác. Do đó, mã nguồn của Kernel được nạp và thực thi trong không gian Kernel Space này. Ngược lại, bộ nhớ được sử dụng bởi các ứng dụng khác được gọi là User Space. Vì hai không gian này nằm trong bộ nhớ riêng biệt, nên quá trình giao tiếp giữa chúng.
Chức năng của Kernel là gì?
Sau khi tìm hiểu khái niệm về Kernel, tiếp đến dưới đây là chức năng chính của nó:
Đối với hệ điều hành
Nói cách khác, Kernel có thể được xem như một dịch giả, thực hiện việc chuyển đổi yêu cầu đầu vào và đầu ra của phần mềm thành các lệnh mà CPU và GPU có thể hiểu. Nó đóng vai trò như một tầng trung gian giữa phần mềm và phần cứng, đảm bảo rằng mọi thứ hoạt động một cách mượt mà. Kernel có nhiều nhiệm vụ quan trọng như:
Nói dễ hiểu, Kernel giống như một dịch giả (translator). Nó thực hiện chuyển đổi những yêu cầu đầu vào / đầu ra của phần mềm một tập lệnh dành cho CPU và GPU. Nó giống như một lớp nằm ở giữa phần mềm cùng phần cứng giúp mọi thứ vận hành trơn tru. Kernel quản lý:
- Truy cập tài nguyên máy tính: Kernel có thể truy cập các tài nguyên máy tính khác nhau. Như CPU, thiết bị I/O và các tài nguyên khác.
- Nó hoạt động như một cầu nối giữa người dùng và tài nguyên của hệ thống.
- Quản lý tài nguyên: Nhiệm vụ của Kernel là chia sẻ tài nguyên giữa các process khác nhau.
- Quản lý bộ nhớ: Mỗi process cần một số không gian bộ nhớ. Nói cách khác, bộ nhớ sẽ hoạt động khi nó được phân bổ và truy cập vào bên trong và được Kernel quản lý những tác vụ bộ nhớ đó.
- Quản lý thiết bị: Các thiết bị ngoại vi được kết nối trong hệ thống được sử dụng bởi các process. Ngoài ra Kernal sẽ quản lý việc phân bổ những thiết bị này.
Kernel thực hiện việc bảo vệ phần cứng và đảm bảo tính an toàn của hệ thống. Người dùng có thể truy cập không gian Kernel bằng cách sử dụng cuộc gọi hệ thống (system call). Tuy nhiên, việc một chương trình truy cập quá nhiều lần có thể dẫn đến lỗi hoặc sự cố.
Đối với bảo mật và Bảo vệ
Trong bối cảnh bảo mật và bảo vệ, Kernel có nhiệm vụ quan trọng trong việc đảm bảo tính toàn vẹn của phần cứng. Nếu không có sự bảo vệ từ Kernel, các chương trình có thể thực hiện các tác vụ một cách tùy ý và tiềm ẩn nguy cơ gây hỏng hóc cho máy tính và dữ liệu của bạn.
Trong các hệ thống máy tính hiện đại, việc bảo mật thường được thực hiện ở cấp độ phần cứng. Ví dụ, hệ điều hành Windows không cho phép tải driver từ các nguồn không đáng tin cậy và chỉ chấp nhận những driver có chữ ký kỹ thuật số. Secure Boot và Trusted Boot là một số ví dụ cụ thể về các công nghệ bảo mật này.
Secure Boot (Khởi động an toàn)
Khởi động an toàn là một tiêu chuẩn bảo mật được phát triển bởi các chuyên gia trong lĩnh vực máy tính PC. Tiêu chuẩn này sẽ giúp bảo vệ hệ thống khỏi các ứng dụng độc hại bằng cách cách ly và không cho phép bất kỳ ứng dụng không đáng tin cậy nào hoạt động trong quá trình khởi động hệ thống.
Nhờ tính năng khởi động an toàn này, máy tính của bạn chỉ sử dụng phần mềm có nguồn gốc đáng tin cậy khi khởi động. Khi máy tính được khởi động, firmware sẽ kiểm tra chữ ký số của các phần mềm khởi động như firmware driver (ROM tùy chọn) và hệ điều hành, đảm bảo rằng chúng đáng tin cậy và không bị thay đổi.
Sau khi hoàn tất việc xác minh chữ ký, máy tính của bạn sẽ khởi động và firmware làm nhiệm vụ kiểm soát hệ điều hành.
Trusted Boot (Khởi động đáng tin cậy)
Trusted Boot sử dụng Mô-đun nền tảng tin cậy ảo (VTPM) để kiểm tra chữ ký số của Kernel Windows 10 trước khi nó được tải xuống. Đồng thời, nó cũng xác minh tất cả các thành phần khác trong quy trình khởi động Windows, chẳng hạn như các driver khởi động, các tập tin khởi động và ELAM.
Nếu bất kỳ tập tin nào bị thay đổi (dù ở mức độ nào), bộ nạp khởi động sẽ ngay lập tức phát hiện và từ chối tải nó xuống, vì nó sẽ xác định rằng thành phần đó bị lỗi. Trusted Boot cung cấp một chuỗi tin cậy cho tất cả các thành phần được sử dụng trong quá trình khởi động.
Kernel Mode và User Mode
Bên cạnh đó, một số lệnh cần phải thực thi bởi Kernel. Chính vì vậy, cách lệnh này chỉ được CPU thực hiện trong Kernel Mode. Một ví dụ: chỉ nên quan lý bộ nhớ trong Kernel Mode. Khi ở User Mode, CPU sẽ thực hiện các tiến trình mà người dùng khởi chạy trong User space.
Các loại Kernel
Nói chung, có năm loại Kernel. Hãy cùng tìm hiểu xem các loại Kernel là gì và tính năng nổi bật của chúng.
Monolithic Kernels
Monolithic Kernels là những hạt nhân mà cả user service và kernel service được triển khai trong cùng một không gian bộ nhớ, có nghĩa là không có sự phân tách về không gian bộ nhớ giữa các user service và kernel service. Điều này dẫn đến việc Kernel có kích thước lớn hơn, và do đó làm tăng kích thước tổng của hệ điều hành. Vì không có phân chia rõ ràng giữa User space và Kernel space, nên quá trình thực thi các tiến trình trong Monolithic Kernels thường nhanh hơn.
Ưu điểm:
• Thông qua System Call, nó cung cấp CPU Scheduler, File Management, Memory Scheduler,
• Process được diễn ra nhanh trong nhờ sự không có không gian bộ nhớ riêng cho User và Kerel
Nhược điểm:
• Tất cả những dịch vụ thất bại đều bị dẫn tới hệ thống
• Toàn bộ hệ điều hành cần được sửa đổi khi thêm các dịch vụ mới vào
Microkernel
Một điểm khác biệt quan trọng giữa Microkernel và kernel Monolithic nằm ở việc trong Microkernel, các dịch vụ người dùng và dịch vụ kernel được triển khai trong các không gian bộ nhớ riêng biệt. Sử dụng User space và Kernel space độc lập giúp giảm kích thước của Kernel và làm cho hệ điều hành trở nên nhẹ nhàng hơn.
Bằng cách sử dụng các không gian riêng biệt cho user service và kernel service, việc giao tiếp giữa ứng dụng và dịch vụ dựa vào IPC, có thể làm giảm tốc độ thực thi một chút.
Ưu điểm:
• Có thể dễ dàng thêm vào các dịch vụ mới
Nhược điểm:
• Vì chúng ta đang sử dụng User space và Kernel space riêng biệt, do đó, giao tiếp giữa chúng có thể giảm thời gian thực hiện chung.
Hybrid Kernel
Hybrid Kernel là sự kết hợp của cả Microkernel và Monolithic Kernel. Nó sử dụng tốc độ của Monolithic Kernels và tính mô đun của Microkernel.
Ưu điểm
• Sự kết hợp từ Hybrid Kernel và Monolithic Kernel.
Nhược điểm
• Vẫn tương tự như Monolithic Kernel.
Nanokernel
Trong một Nanokrnel, như tên cho thấy, toàn bộ mã của kernel rất nhỏ, tức là mã thực thi trong chế độ đặc quyền của phần cứng là rất nhỏ.
Ưu điểm:
• Nó cung cấp lưu tượng phần cứng (hardware abstractions) mà không có dịch vụ hệ thống.
Nhược điểm:
• Tương đối giống Microkernel nên ít được sử dụng hơn.
Exokernel
Exokernel là một hệ điều hành kernel được phát triển bởi MIT Parallel và Distributed Operating Systems Group. Trong loại kernel này, việc bảo vệ tài nguyên được phân chia rời khỏi quản lý kernel, cho phép chúng ta thực hiện các tùy chỉnh riêng biệt cho từng ứng dụng.
Ưu điểm:
• Có ít trừu tượng phần cứng nhất (hardware abstractions).
Nhược điểm:
• Có nhiều việc hơn cho các lập trình viên.