Hiệu suất của hạt nhân so với hạt nhân nguyên khối


14

Một hạt nhân thực hiện tất cả các trình điều khiển như các chương trình không gian người dùng và thực hiện các tính năng cốt lõi như IPC trong chính hạt nhân. Tuy nhiên, một hạt nhân nguyên khối thực hiện các trình điều khiển như là một phần của hạt nhân (ví dụ: chạy trong chế độ kernel).

Tôi đã đọc một số tuyên bố rằng microkernels chậm hơn hạt nhân nguyên khối, vì chúng cần xử lý thông điệp truyền giữa các trình điều khiển trong không gian người dùng. Điều này có đúng không?

Trong một thời gian dài, hầu hết các hạt nhân là nguyên khối vì phần cứng quá chậm để chạy các hạt nhân vi mô một cách nhanh chóng. Tuy nhiên, hiện nay có nhiều hạt nhân và hạt nhân lai, như GNU / Hurd, Mac OS X, dòng Windows NT, v.v.

Vì vậy, có gì thay đổi về hiệu suất của microkernels? Là sự chỉ trích của microkernels vẫn còn hiệu lực ngày hôm nay?

Câu trả lời:


11

Như luôn luôn là câu trả lời (hoặc ít nhất là lời nói đầu) cho các câu hỏi liên quan đến hiệu suất: biết miền vấn đề của bạn, chạy điểm chuẩn so sánh và nhớ tối ưu hóa sớm là gì .

Đầu tiên, không có thử nghiệm đo điểm chuẩn toàn diện nào đã so sánh các hạt nhân nguyên khối với các hệ thống vi hạt thế hệ hiện tại hoạt động theo cách tương đương. Vì vậy, trong khi có thể có các thử nghiệm so sánh các yếu tố cụ thể của các hạt nhân đó, chúng sẽ không đại diện cho "bức tranh lớn" mà câu hỏi của bạn đang muốn vẽ.

Với điều đó đã được nói, có những quan sát khác nhau về hiệu suất hạt nhân trên khắp các vi hạt; ví dụ, họ vi nhân L4 có thể nói là có hiệu suất IPC cao hơn so với nhân Mach. Nhưng mọi thiết bị của Apple trong thập kỷ này đều chạy Mach, và chúng dường như hoạt động rất nhanh, phải không?

Đạo đức của câu chuyện là bất kỳ ai quyết định sử dụng kiến ​​trúc hạt nhân nào trước tiên đều phải quyết định mục tiêu cuối cùng của họ là gì. Các hệ thống hạt nhân là (khi được thực hiện đúng, tất nhiên) an toàn hơn, có thể bảo trì và mô-đun. Tuy nhiên, họ có thể khó khăn để kiến ​​trúc sư đúng cách, và có thể có hiệu suất vượt trội so với việc triển khai nguyên khối. Một hạt nhân nguyên khối sẽ nhanh hơn, nhưng bảo mật sẽ khó thực hiện hơn và nó sẽ ít mô-đun hơn và ít dễ dàng tùy chỉnh hơn.

Kiến trúc kernel của bạn nên dựa trên mục tiêu cuối cùng của bạn là gì.

(Và khi tất cả những thứ khác đều thất bại, hãy thử cả hai cách và xem điều gì sẽ xảy ra.)


"Nhưng mọi thiết bị của Apple từ thập kỷ này đều chạy Mach, và chúng dường như hoạt động rất nhanh, phải không?" Điều đó chỉ đúng một phần. "Hạt nhân của Darwin là XNU, một hạt nhân lai sử dụng OSFMK 7.3 (Hạt nhân Mach phần mềm mở) từ OSF, các yếu tố khác nhau của BSD (bao gồm mô hình quy trình, ngăn xếp mạng và hệ thống tệp ảo) và hướng đối tượng API trình điều khiển thiết bị được gọi là I / O Kit. Thiết kế hạt nhân lai cung cấp tính linh hoạt của hạt nhân vi mô và hiệu suất của hạt nhân nguyên khối. "
Behrang Saeedzadeh

4

Tôi thích gọi Windows NT và kernel XNU của Apple thay vì lai. Tôi không tìm thấy sự phân loại của hybrid có nhiều ý nghĩa trong thực tế. Trong thực tế, một trong những kỹ sư ban đầu của XNU gọi nó là nguyên khối [1].

Về vấn đề hiệu suất, sự so sánh thực sự sâu sắc duy nhất giữa nguyên khối và vi mô tôi có thể tìm thấy là "Tính toán hiệu năng cực cao hoặc Tại sao Microkerenels Suck" [2] và một bài thuyết trình phản bác "Do Microkernels Suck?" [3].

Tính mô đun và tính tùy biến là nhiều vấn đề của thiết kế hơn những hạn chế vốn có trong hạt nhân nguyên khối. Ví dụ, nhân Linux có thể có kích thước từ vài megabyte đến khoảng một megabyte tùy thuộc vào các tùy chọn thời gian biên dịch và ứng dụng của các bản vá nhất định. Phần lớn trong số 15 triệu dòng mã của Linux là các mô-đun hạt nhân có thể tải. Chúng được biên dịch riêng từ kernel cơ sở và chỉ được tải khi cần. Các mô-đun này có thể thực hiện các trình điều khiển và các cuộc gọi hệ thống (thậm chí ghi đè các cuộc gọi hệ thống cơ sở).

Hai lĩnh vực mà microkernels có lợi thế không thể tranh cãi là bộ nhớ thấp (<= 512k ram) hoặc hệ điều hành thời gian thực "cứng", như hệ thống bay của hãng hàng không hoặc hệ thống điều khiển lò phản ứng hạt nhân.

Chỉnh sửa: Nói thêm về ưu điểm và nhược điểm của kiến ​​trúc hạt nhân, Gernot Heiser tự do thừa nhận vào cuối bài thuyết trình [3] rằng các hạt nhân nguyên khối vốn có hiệu suất cao hơn vì một hạt nhân siêu nhỏ luôn có một số chi phí phụ. Mặc dù, chi phí hoạt động thêm đó dẫn đến tăng độ tin cậy, do đó sự thống trị của microkernels của RTOS.

[1] Louis G. Gerbarg, "Đồng bộ hóa nâng cao trong Mac OS X: Mở rộng Unix sang SMP và thời gian thực", Kỷ yếu của Hội nghị BSDCon 2002, trang 2

[2] Chistoph Lameter, "Máy tính hiệu năng cực cao hoặc tại sao Microkernels mút", Hội nghị chuyên đề Linux 2007, Tập một

[3] Gernot Heiser, "Do Microkernels Suck?", Linux thứ 9.ut.au, tháng 1, 2008


Tôi đã phân loại XNU và Windows NT thành các hạt nhân "lai"
mmk

Cảm ơn @DW đã chào đón. Tôi đã dọn dẹp bài viết của mình một chút và thêm trích dẫn.
Ironlenny

@mmk Xin lỗi, bạn đã gọi chúng là con lai, tôi chỉ vội vàng đăng bài và đọc sai.
Ironlenny
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.