Microkernel
Lịch sử

Microkernel bắt nguồn từ nhà tiên phong máy tính Đan Mạch Per Brinch Hansen và nhiệm kỳ của ông tại công ty máy tính Đan Mạch Regnecentralen, nơi ông đã dẫn đầu các nỗ lực phát triển phần mềm cho máy tính RC 4000. Năm 1967, Regnecentralen đang lắp đặt một mẫu thử nghiệm RC 4000 tại một nhà máy phân bón Ba Lan ở Puławy. Máy tính sử dụng một hệ điều hành thời gian thực nhỏ được thiết kế riêng cho nhu cầu của nhà máy. Brinch Hansen và nhóm của ông trở nên lo lắng về sự thiếu tính tổng quát và khả năng tái sử dụng của hệ thống RC 4000. Họ sợ rằng mỗi lần cài đặt sẽ yêu cầu một hệ điều hành khác nhau nên họ bắt đầu nghiên cứu những cách mới và tổng quát hơn để tạo phần mềm cho RC 4000. Năm 1969, nỗ lực của họ đã dẫn đến việc hoàn thành Hệ thống đa chương trình RC 4000. Hạt nhân của nó cung cấp thông tin liên lạc giữa các quy trình dựa trên việc truyền thông điệp cho tối đa 23 quy trình không đặc quyền, trong đó 8 quy trình tại một thời điểm được bảo vệ khỏi nhau. Nó tiếp tục thực hiện việc lập lịch các lát thời gian của các chương trình được thực hiện song song, khởi tạo và kiểm soát việc thực thi chương trình theo yêu cầu của các chương trình đang chạy khác và bắt đầu truyền dữ liệu đến hoặc từ thiết bị ngoại vi. Bên cạnh những cơ chế cơ bản này, nó không có chiến lược tích hợp để thực hiện chương trình và phân bổ tài nguyên. Chiến lược này được thực hiện bởi một hệ thống phân cấp các chương trình đang chạy trong đó các quy trình mẹ có toàn quyền kiểm soát các quy trình con và hoạt động như hệ điều hành của chúng.
Sau công việc của Brinch Hansen, microkernels đã được phát triển vào những năm 1970 Bản thân thuật ngữ microkernel xuất hiện lần đầu tiên không muộn hơn năm 1981. Microkernels được coi là phản ứng với những thay đổi trong thế giới máy tính và đối với một số thách thức trong việc điều chỉnh các "đơn nhân" hiện có với những các hệ thống. Trình điều khiển thiết bị mới, ngăn xếp giao thức, hệ thống file và các hệ thống cấp thấp khác luôn được phát triển. Mã này thường được đặt trong hạt nhân nguyên khối, do đó cần phải làm việc đáng kể và quản lý mã cẩn thận để hoạt động. Microkernels được phát triển với ý tưởng rằng tất cả các dịch vụ này sẽ được triển khai dưới dạng các chương trình không gian người dùng, giống như bất kỳ chương trình nào khác, cho phép chúng hoạt động trên nguyên khối và bắt đầu và dừng như bất kỳ chương trình nào khác. Điều này không chỉ cho phép các dịch vụ này dễ dàng làm việc hơn, mà còn tách mã hạt nhân để cho phép nó được tinh chỉnh mà không phải lo lắng về các tác dụng phụ ngoài ý muốn. Hơn nữa, nó sẽ cho phép các hệ điều hành hoàn toàn mới được "xây dựng" trên một lõi chung, hỗ trợ nghiên cứu hệ điều hành.
Microkernels là một chủ đề rất nóng trong những năm 1980 khi các mạng cục bộ có thể sử dụng được đầu tiên được giới thiệu.  Kernel AmigaOS Exec là một ví dụ ban đầu, được giới thiệu vào năm 1986 và được sử dụng trong PC với thành công tương đối về mặt thương mại. Việc thiếu bảo vệ bộ nhớ, được coi là một lỗ hổng khác, cho phép hạt nhân này có hiệu suất truyền thông điệp rất cao vì nó không cần sao chép dữ liệu trong khi trao đổi thông điệp giữa các chương trình không gian người dùng.
Các cơ chế tương tự cho phép hạt nhân được phân phối vào không gian người dùng cũng cho phép hệ thống được phân phối trên các liên kết mạng. Những microkernel đầu tiên, đặc biệt là Mach, đã chứng tỏ có hiệu suất đáng thất vọng, nhưng những lợi thế vốn có xuất hiện rất lớn đến mức nó trở thành một dòng nghiên cứu chính vào cuối những năm 1990. Tuy nhiên, trong thời gian này, tốc độ của máy tính đã tăng lên rất nhiều liên quan đến hệ thống mạng, và những bất lợi trong hiệu suất lấn át những lợi thế trong điều kiện phát triển. bất kỳ nỗ lực nào đã được thực hiện để điều chỉnh các hệ thống hiện có để có hiệu suất tốt hơn, nhưng chi phí luôn là đáng kể và hầu hết các nỗ lực này yêu cầu các chương trình không gian người dùng phải được chuyển trở lại vào hạt nhân. Đến năm 2000, hầu hết các nỗ lực quy mô lớn (giống Mach) đã kết thúc, mặc dù macOS của Apple, được phát hành vào năm 2001, dùng một hybrid kernel có tên là XNU, kết hợp một nhân (hybrid) OSFMK 7.3 được sửa đổi nhiều với mã từ BSD UNIX, và kernel này cũng được sử dụng trong iOS, tvOS, và watchOS. Tính đến  năm 2012, GNU Hurd dựa trên Mach cũng có chức năng và được bao gồm trong các phiên bản thử nghiệm của Arch Linux và Debian.
Mặc dù công việc chính trên các microkernels đã kết thúc phần lớn, các nhà thử nghiệm vẫn tiếp tục phát triển.[cần dẫn nguồn] Từ đó đã chỉ ra rằng nhiều vấn đề về hiệu suất của các thiết kế trước đó không phải là hạn chế cơ bản của khái niệm mà thay vào đó là do nhà thiết kế mong muốn sử dụng các hệ thống đơn mục đích để triển khai càng nhiều dịch vụ này càng tốt.[cần dẫn nguồn] Sử dụng cách tiếp cận thực tế hơn cho vấn đề, bao gồm mã hợp ngữ và dựa vào bộ xử lý để thực thi các khái niệm thường được hỗ trợ trong phần mềm đã dẫn đến một loạt microkernels mới với hiệu suất được cải thiện.
Microkernels có liên quan chặt chẽ với các exokernels.
Chúng cũng có nhiều điểm chung với các hypervisors,
nhưng sau này không khẳng định tính tối thiểu và chuyên hỗ trợ các máy ảo; thực sự,  microkernel L4 thường được sử dụng trong khả năng siêu giám sát