Hạt nhân nguyên khối là một hạt nhân trong đó tất cả các dịch vụ (hệ thống tệp, VFS, trình điều khiển thiết bị, v.v.) cũng như chức năng cốt lõi (lập lịch, phân bổ bộ nhớ, v.v.) là một nhóm đan chặt chẽ chia sẻ cùng một không gian. Điều này trực tiếp phản đối một hạt nhân .
Một hạt nhân thích một cách tiếp cận trong đó chức năng cốt lõi được tách biệt khỏi các dịch vụ hệ thống và trình điều khiển thiết bị (về cơ bản chỉ là các dịch vụ hệ thống). Ví dụ, VFS (hệ thống tệp ảo) và hệ thống tệp thiết bị khối (tức là minixfs) là các quy trình riêng biệt chạy bên ngoài không gian của kernel, sử dụng IPC để giao tiếp với kernel, các dịch vụ khác và quy trình người dùng. Nói tóm lại, nếu đó là một mô-đun trong Linux, thì đó là một dịch vụ trong một hạt nhân, cho thấy một quy trình bị cô lập.
Đừng nhầm lẫn thuật ngữ mô-đun hạt nhân là bất cứ điều gì ngoại trừ nguyên khối. Một số hạt nhân nguyên khối có thể được biên dịch thành mô-đun (ví dụ Linux), điều quan trọng là mô-đun được chèn vào và chạy từ cùng một không gian xử lý chức năng cốt lõi (không gian nhân).
Ưu điểm của microkernel là bất kỳ dịch vụ thất bại nào cũng có thể dễ dàng khởi động lại, chẳng hạn, không có kernel bị dừng nếu hệ thống tập tin gốc ném bỏ lệnh hủy bỏ. Tuy nhiên, điều này cũng có thể được coi là một bất lợi, bởi vì nó có thể ẩn các lỗi khá nghiêm trọng (hoặc làm cho chúng có vẻ không quá nghiêm trọng, vì vấn đề dường như liên tục tự khắc phục). Đây được coi là một lợi thế lớn trong các tình huống mà bạn chỉ đơn giản là không thể sửa chữa một cách thuận tiện một khi nó đã được triển khai.
Nhược điểm của một hạt nhân là việc nhắn tin IPC không đồng bộ có thể trở nên rất khó gỡ lỗi, đặc biệt là nếu các fibrils được triển khai. Ngoài ra, chỉ cần theo dõi sự cố FS / ghi có nghĩa là kiểm tra quy trình không gian người dùng, dịch vụ thiết bị khối, dịch vụ VFS, dịch vụ hệ thống tệp và (có thể) dịch vụ PCI. Nếu bạn nhận được một khoảng trống trên đó, đã đến lúc xem dịch vụ IPC. Điều này thường dễ dàng hơn trong một hạt nhân nguyên khối. GNU Hurd bị các vấn đề gỡ lỗi này ( tham khảo ). Tôi thậm chí sẽ không đi vào kiểm tra khi xử lý hàng đợi tin nhắn phức tạp. Microkernels không dành cho người yếu tim.
Con đường ngắn nhất để một hạt nhân ổn định, hoạt động là cách tiếp cận nguyên khối. Một trong hai cách tiếp cận có thể cung cấp giao diện POSIX, trong đó thiết kế của kernel trở nên ít được quan tâm đối với ai đó chỉ đơn giản là muốn viết mã để chạy trên bất kỳ thiết kế nào.
Tôi sử dụng Linux (nguyên khối) trong sản xuất. Tuy nhiên, hầu hết việc học, hack hoặc mày mò phát triển nhân của tôi đều đi vào một hạt nhân, cụ thể là HelenOS .
Biên tập
Nếu bạn hiểu được điều này qua câu trả lời dài dòng của tôi, có lẽ bạn sẽ có một chút thú vị khi đọc ' Cuộc tranh luận về Torvalds-Tanenbaum vĩ đại về thiết kế hạt nhân '. Nó thậm chí còn vui hơn khi đọc vào năm 2013, hơn 20 năm sau khi nó xuất hiện. Phần vui nhất là chữ ký của Linus trong một trong những tin nhắn cuối cùng:
Linus "my first, and hopefully last flamefest" Torvalds
Rõ ràng, điều đó đã không trở thành sự thật ngoài dự đoán của Tanenbaum rằng x86 sẽ sớm bị lỗi thời.
Lưu ý:
Khi tôi nói "Minix", tôi không ám chỉ Minix 3. Ngoài ra, khi tôi đề cập đến HURD, tôi đang tham khảo (chủ yếu) hạt nhân Mach. Đó không phải là ý định của tôi để chê bai công việc gần đây của người khác.