Sự khác biệt giữa hạt nhân nguyên khối và hạt vi mô là gì?


114

Bất cứ ai có thể vui lòng giải thích với các ví dụ về sự khác biệt giữa hạt nhân nguyên khối và hạt vi mô? Ngoài ra các phân loại khác của hạt nhân?



2
Tôi cũng muốn giới thiệu các trang Wikipedia
David Heffernan

Câu trả lời:


113

Nhân nguyên khối là một quá trình lớn chạy hoàn toàn trong một không gian địa chỉ duy nhất. Nó là một tệp nhị phân tĩnh duy nhất. Tất cả các dịch vụ nhân tồn tại và thực thi trong không gian địa chỉ nhân. Kernel có thể gọi các hàm trực tiếp. Ví dụ về hệ điều hành dựa trên nhân nguyên khối: Unix, Linux.

Trong các kênh vi mô, hạt nhân được chia thành các quá trình riêng biệt, được gọi là máy chủ. Một số máy chủ chạy trong không gian nhân và một số chạy trong không gian người dùng. Tất cả các máy chủ được giữ riêng biệt và chạy trong các không gian địa chỉ khác nhau. Các máy chủ gọi "dịch vụ" từ nhau bằng cách gửi tin nhắn qua IPC (Interprocess Communication). Sự tách biệt này có ưu điểm là nếu một máy chủ bị lỗi thì các máy chủ khác vẫn có thể hoạt động hiệu quả. Ví dụ về hệ điều hành dựa trên kênh vi mô: Mac OS X và Windows NT.


35
cả Mac OS X và Windows đều là nhân lai vì có liên quan chặt chẽ hơn với nhân nguyên khối. ví dụ về hạt nhân vi sẽ là: Mach QNX AmigaOS Minix
zeitue

7
GNU Hurd là một ví dụ tuyệt vời về hệ điều hành chạy trên kênh vi mô. Nó vẫn đang được phát triển tích cực và một số bản phân phối Linux phổ biến có cổng Hurd (Debian / Hurd, Arch Hurd, v.v.).
beatgammit

77
  1. Thiết kế nhân nguyên khối lâu đời hơn nhiều so với ý tưởng microkernel, xuất hiện vào cuối những năm 1980.

  2. Nhân Unix và Linux là nguyên khối, trong khi QNX, L4 và Hurd là các kênh vi mô. Mach ban đầu là một kênh vi mô (không phải Mac OS X), nhưng sau đó được chuyển đổi thành một hạt nhân lai. Minix (trước phiên bản 3) không phải là một kênh nhỏ thuần túy vì trình điều khiển thiết bị được biên dịch như một phần của hạt nhân.

  3. Các hạt nhân nguyên khối thường nhanh hơn các hạt vi mô. Mach microkernel đầu tiên chậm hơn 50% so với hầu hết các nhân nguyên khối, trong khi các nhân sau này như L4 chỉ chậm hơn 2% hoặc 4% so với các thiết kế nguyên khối.

  4. Các nhân nguyên khối có kích thước lớn, trong khi các microkernel có kích thước nhỏ - chúng thường vừa với bộ nhớ đệm L1 của bộ xử lý (các microkernel thế hệ đầu tiên).

  5. Trong hạt nhân nguyên khối, trình điều khiển thiết bị nằm trong không gian hạt nhân trong khi trong kênh vi mô, trình điều khiển thiết bị là không gian người dùng.

  6. Vì trình điều khiển thiết bị của các hạt nhân nguyên khối nằm trong không gian hạt nhân, các hạt nhân nguyên khối kém an toàn hơn các kênh vi mô và các lỗi (ngoại lệ) trong trình điều khiển có thể dẫn đến sự cố (hiển thị dưới dạng BSOD trong Windows). Các microkernel an toàn hơn các nhân nguyên khối, do đó thường được sử dụng trong các thiết bị quân sự.

  7. Các hạt nhân nguyên khối sử dụng tín hiệu và ổ cắm để thực hiện giao tiếp giữa các quá trình (IPC), các kênh vi mô sử dụng hàng đợi tin nhắn. Các kênh vi mô thế hệ 1 không triển khai IPC tốt và chuyển mạch ngữ cảnh chậm - đó là nguyên nhân gây ra hiệu suất kém của chúng.

  8. Thêm một tính năng mới vào một hệ thống nguyên khối có nghĩa là biên dịch lại toàn bộ hạt nhân hoặc mô-đun hạt nhân tương ứng (đối với hạt nhân nguyên khối mô-đun), trong khi với microkernel, bạn có thể thêm các tính năng hoặc bản vá mới mà không cần biên dịch lại.


1
bằng cách nhắc đến MINIX , ý bạn là phiên bản nào? Phiên bản thứ 3 đã tách trình điều khiển thiết bị và hệ thống tệp khỏi hạt nhân .
orustammanapov Ngày

Khoảng 8. Điều đó có nghĩa là khi bạn cài đặt một chương trình trong Linux, toàn bộ tệp nhị phân hạt nhân được biên dịch lại? Ngoài ra đây là nhị phân hạt nhân? Cảm ơn.
Nikos

@ Nik-Lz: Không phải chương trình, mà là các tính năng. Các chương trình thường chạy trên không gian người dùng. Nếu bạn muốn thực thi mã trong không gian hạt nhân, bạn có hai tùy chọn: xây dựng nó vào hạt nhân, hoặc tải nó bằng một mô-đun hạt nhân. ref
bayuah

25

Nhân nguyên khối

Tất cả các phần của hạt nhân như Bộ lập lịch, Hệ thống tệp, Quản lý bộ nhớ, Ngăn xếp mạng, Trình điều khiển thiết bị, v.v., được duy trì trong một đơn vị bên trong hạt nhân trong Hạt nhân nguyên khối

Ưu điểm

• Xử lý nhanh hơn

Nhược điểm

• Sự cố không an toàn • Cổng không linh hoạt • Kích thước hạt nhân nổ

Ví dụ • MS-DOS, Unix, Linux

Nhân vi mô

Chỉ những phần rất quan trọng như IPC (Giao tiếp giữa các tiến trình), bộ lập lịch cơ bản, xử lý bộ nhớ cơ bản, các nguyên thủy I / O cơ bản, v.v., mới được đưa vào hạt nhân. Giao tiếp xảy ra thông qua việc chuyển tin nhắn. Những người khác được duy trì dưới dạng quy trình máy chủ trong Không gian người dùng

Ưu điểm

• Chống va đập, di động, kích thước nhỏ hơn

Nhược điểm

• Xử lý chậm hơn do truyền tin nhắn bổ sung

Ví dụ • Windows NT


14

1. Nhân nguyên khối (Nguyên khối nguyên chất):all

  • Tất cả các dịch vụ nhân từ một thành phần duy nhất

    (-) không thể thêm / bớt, ít hơn / Không linh hoạt

    (+) Giao tiếp giữa các thành phần tốt hơn

ví dụ: - Unix truyền thống

2.Micro Kernel:few

  • một số dịch vụ (quản lý bộ nhớ, quản lý CPU, IPC, v.v.) từ nhân lõi, các dịch vụ khác (quản lý tệp, quản lý I / O, v.v.) từ các lớp / thành phần khác nhau

  • Phương pháp phân tách [Một số dịch vụ ở chế độ đặc quyền (nhân) và một số ở chế độ Bình thường (người dùng)]

    (+) linh hoạt để thay đổi / nâng cấp

    (-) chi phí giao tiếp

ví dụ: - QNX, v.v.

3.Modular kernel (Mô-đun nguyên khối):most

  • Sự kết hợp của nhân Micro và nhân nguyên khối

  • Bộ sưu tập các Mô-đun - mô-đun có thể là -> Tĩnh + Động

  • Trình điều khiển có dạng Mô-đun

ví dụ: - Hệ điều hành hiện đại Linux


1

Trong phổ thiết kế hạt nhân, hai điểm cực trị là hạt nhân nguyên khối và kênh vi mô.

Ví dụ, nhân Linux (cổ điển) là một nhân nguyên khối (và mọi hệ điều hành thương mại cho đến nay cũng vậy - mặc dù họ có thể tuyên bố khác);

Trong đó mã của nó là một tệp C duy nhất tạo ra một quy trình duy nhất thực hiện tất cả các dịch vụ trên.
Để làm ví dụ về tính đóng gói của nhân Linux, chúng tôi nhận xét rằng nhân Linux thậm chí không có quyền truy cập vào bất kỳ thư viện C chuẩn nào. Thật vậy, nhân Linux không thể sử dụng các hàm thư viện C thô sơ như printf. Thay vào đó, nó thực hiện chức năng in của riêng mình (được gọi là bản in). Tuy nhiên, đây là nhược điểm chính của nhân nguyên khối: việc giới thiệu bất kỳ phần cứng mới không được hỗ trợ nào đều yêu cầu viết lại nhân (trong các phần liên quan), biên dịch lại và cài đặt lại toàn bộ hệ điều hành.

Sự tách biệt của nhân Linux và sự tự chứa này cung cấp cho nhân Linux lợi thế chính của nó: nhân nằm trong một không gian địa chỉ duy nhất1 cho phép tất cả các tính năng giao tiếp theo cách nhanh nhất có thể mà không cần đến bất kỳ loại thông báo nào. Đặc biệt, một nhân nguyên khối thực hiện tất cả các trình điều khiển thiết bị của hệ thống.


Quan trọng hơn, nếu có bất kỳ trình điều khiển thiết bị nào bị lỗi thì toàn bộ hạt nhân sẽ bị ảnh hưởng. Cách tiếp cận không mô-đun này đối với việc bổ sung phần cứng và sự cố phần cứng là lý lẽ chính để hỗ trợ cách tiếp cận thiết kế cực đoan khác cho hạt nhân. Theo một nghĩa nào đó, microkernel là một hạt nhân tối giản chỉ chứa những dịch vụ cơ bản của hệ điều hành (như quản lý quy trình và quản lý hệ thống tệp). Trong một kênh vi mô, trình điều khiển thiết bị nằm bên ngoài hạt nhân cho phép bổ sung và xóa trình điều khiển thiết bị trong khi HĐH đang chạy và không yêu cầu thay thế hạt nhân.


-2

Nhân nguyên khối có tất cả các dịch vụ nhân cùng với phần nhân của nhân, do đó nặng và có tác động tiêu cực đến tốc độ và hiệu suất. Mặt khác, hạt nhân vi mô nhẹ nên tăng hiệu suất và tốc độ.
Tôi đã trả lời câu hỏi tương tự tại trang web wordpress. Để biết sự khác biệt giữa nguyên khối, microkernel và exokernel ở dạng bảng, bạn có thể truy cập tại đây

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.