Có gì trong Hệ điều hành không phải là kernel


43

Theo tôi hiểu, kernel thực hiện tất cả các tương tác với phần cứng và quản lý bộ nhớ, các thiết bị I / O, v.v. Vì vậy, kernel đang làm mọi thứ, tuy nhiên nó chỉ là một phần của hệ điều hành. Vì vậy, có gì khác trong một hệ điều hành? Chỉ là các ứng dụng đi kèm với nó? Ví dụ, Ubuntu có gì khác ngoài kernel? Bàn làm việc Gnome và một vài ứng dụng khác?

Câu trả lời:


54

Vỏ, tất nhiên.

Ẩn dụ ban đầu đã cho chúng ta từ "hạt nhân" cho điều này ở nơi đầu tiên quá thường bị lãng quên. Ẩn dụ là một hệ điều hành là một hạt giống hoặc một hạt. "Hạt nhân" của hạt giống là cốt lõi của hệ điều hành, cung cấp các dịch vụ hệ điều hành cho các chương trình ứng dụng, được bao quanh bởi "vỏ" của hạt giống là những gì người dùng nhìn thấy từ bên ngoài.

Một số người muốn buộc "kernel" (và, thực sự, "shell") xuống cụ thể hơn thế. Nhưng trong thực tế, có rất nhiều biến thể trên các hệ điều hành. Không phải các biến thể ít nhất là những gì tạo thành một "vỏ" (có thể nằm trong khoảng từ Solaris ' shthông qua Trình thông dịch lệnh điều khiển của Netware đến Workplace Shell và Windows NT's Explorer), nhưng cũng có rất nhiều sự khác biệt giữa hệ điều hành này với hệ điều hành khác cái gì là và không phải là một phần của "kernel" (có thể bao gồm hoặc không bao gồm I / O đĩa chẳng hạn). Tốt nhất nên nhớ rằng những thuật ngữ này là ẩn dụ .

Có những thuật ngữ khác. Trong thuật ngữ máy tính lớn của IBM, "hạt nhân" trong ẩn dụ hạt giống / hạt được gọi là chương trình điều khiển . Các tên khác bao gồm người giám sát , người giám sát , cốt lõi và người điều hành . Core là một ẩn dụ sinh học khá rõ ràng. Thật thú vị khi một cái tên khác cũng vậy. Harvey M. Delist, trong Hệ điều hành của mình , gọi chương trình điều khiển là hạt nhân và nói

Hạt nhân thường chiếm một phần nhỏ trong mã của những gì thường được cho là toàn bộ hệ điều hành [...]

Từ "hạt nhân" xuất phát từ hạt nhân Latinh , và có nghĩa là hạt nhân của một hạt (cf nux Latin , có nghĩa là "hạt"). Vì vậy, ngay cả việc gọi chương trình điều khiển là "hạt nhân" trên thực tế cũng tạo ra sự tương tự hệ điều hành tương tự. Đó là một sự tương tự được sử dụng cho nhiều hơn là chỉ các hệ điều hành. Ví dụ, nếu bạn quen thuộc với hóa học, bạn sẽ biết rằng một hạt nhân nguyên tử được bao quanh bởi các electron trong vỏ .

Những gì người new123456giả viết dưới đây minh họa cho những sai lầm dẫn đến việc quên đi nguồn gốc của những ẩn dụ này đến mức người ta nhầm một phần cho toàn bộ và nhầm lẫn nhân cho toàn bộ hệ điều hành. Trở thành một chương trình "userland" không làm cho lớp vỏ bên ngoài hệ điều hành cũng như không làm cho nó trở nên ít hơn bao quanh kernel. Hơn nữa, không phải là một ý tưởng chỉ dành cho DOS mà không áp dụng cho Unix ngoài phiên bản 7, ý tưởng này còn phổ biến và hiện hành trong thế giới Unix.

(Thật là mỉa mai khi new123456nhầm nó với DOSism. Ẩn dụ kernel / shell khá xa lạ với DOS trong những năm đầu tiên, nó ưa thích bộ xử lý lệnh và tương tự, từ CP / M. Giống như CP / M trước đó, MS-DOS đã bị chia vào hệ điều hành đĩa cơ bản (BDOS), hệ thống đầu vào-đầu ra cơ bản (BIOS - không phải phần sụn hệ thống, ghi chú), bộ xử lý lệnh và các tiện ích vệ sinh . Mã này thực sự được đưa vào các tệp theo cách này. trên thực tế, về cách ẩn dụ kernel / shell không thực sự bao hàm hoặc khớp hoàn toàn với các phân chia thực tế trong nhiều hệ điều hành.)

new123456đang quên những gì Delist đã viết về hạt nhân là một phần của hệ điều hành tổng thể. Một hệ điều hành là cả kernel và shell. Rốt cuộc, đó là ẩn dụ. Delist cũng không đơn độc. Có rất nhiều cuốn sách Unix giải thích về phép ẩn dụ của Unix, từ những năm 1980 trở đi. Tôi khuyên bạn nên Urban và Tiemann của Teach Yourself FreeBSD trong 24 giờ (SAMS, ISBN 9780672324246), với lý do đơn giản mà trên trang 54 nó có một sơ đồ minh họa các hệ điều hành-as-a-hạt giống ẩn dụ, và - đáng ngạc nhiên - là một trong những vài cuốn sách để làm như vậy

Tên "hạt nhân" có lẽ là tên cũ hơn; chắc chắn có trước Unix, vốn ưa thích thuật ngữ kernel / shell mà ngày nay - có lẽ không phải là một phần nhỏ nhờ Unix - là phổ biến hơn. Đây là những gì trong cuốn sách năm 1974 của Alan C. Shaw Thiết kế logic của các hệ điều hành (Prentice-Hall, ISBN Ví35401125) chẳng hạn:

Đó là một phần của hệ thống thường trú trong kho lưu trữ chính trong lịch sử được gọi là hạt nhân . Hạt nhân thường sẽ bao gồm một tập hợp nguyên thủy và quy trình tối thiểu để quản lý các quy trình, tài nguyên và đầu vào-đầu ra.
Shaw cũng có một sơ đồ. ☺


7
Tôi nghĩ rằng đây là một câu trả lời tuyệt vời, đơn giản là vì nó mang đến cho tôi mối quan hệ giữa các ẩn dụ "vỏ" và "hạt nhân". Tôi biết cả hai, tôi không bao giờ kết nối chúng. Tôi biết câu trả lời cho câu hỏi nhưng vẫn cố gắng học được điều gì đó từ câu trả lời này. Do đó upvote. Cảm ơn!
Andrew J. Brehm

Tôi sẽ do dự khi nói điều này, bởi vì shell UNIX đã được trừu tượng hóa từ chính kernel kể từ phiên bản 7, và kể từ đó là một chương trình người dùng theo mọi nghĩa của từ này. Tuy nhiên, những gì bạn nói là đúng với DOS (vốn là một lựa chọn thiết kế đặc biệt khủng khiếp).
new123456

Chơi tốt, thưa ngài. Tuy nhiên, vui lòng để lại một @nơi nào đó khi đề cập đến tên người dùng của tôi để nó được đăng trong hàng phản hồi của tôi.
new123456

Được khuyến khích vì là một câu trả lời toàn diện với nhiều lịch sử thú vị (tôi không biết hạt nhân là một thuật ngữ máy tính - hay từ nguyên tiếng Latin của nó). Tuy nhiên, tôi nghĩ rằng nó sẽ đọc tốt hơn nhiều như một câu trả lời độc lập nếu nó không đề cập rõ ràng đến câu trả lời của người dùng khác (hiện đã bị xóa).
Anthony G - công lý cho Monica

45

Các phần khác của hệ điều hành bao gồm các trình điều khiển tương tác với kernel, có một số lớp chương trình trợ giúp xử lý giao diện người dùng, mạng và các phần cốt lõi khác của HĐH nằm giữa kernel và ứng dụng thực tế.

Để đưa ra một ví dụ, tôi đã trình bày cấu trúc của OS X , như bạn có thể thấy bên trên Kernel (màu xanh nhạt) có một số lớp chức năng "lõi", công cụ hệ thống, dịch vụ và API (Giao diện lập trình ứng dụng) trước bạn thậm chí có được GUI, đó là những gì bạn thường làm việc với chính các ứng dụng thực tế.

nhập mô tả hình ảnh ở đây

Hầu hết các hệ điều hành có cấu trúc tương tự nhau, nhưng có phạm vi khác nhau về sự khác biệt liên quan đến mức độ thực sự là một phần của hạt nhân. Xem bài viết Wikipedia trên Microkernels để so sánh.

EDIT - Để trả lời bình luận của bạn (bình luận của tôi hơi dài)

Bạn có thể khởi động chỉ một nhân linux, nhưng bạn sẽ không thể thực sự đạt được nhiều, đó là tất cả những ứng dụng trợ giúp cung cấp tất cả giao diện mà bạn nhìn thấy và sử dụng.

Khi kernel được khởi động (và khởi tạo phần cứng), nó sẽ cố gắng chuyển sang các phần khác của Hệ điều hành GNU / Linux, cung cấp chức năng cho các dịch vụ khởi động (như UDEV , /devcó giao diện thiết bị thô cho các chương trình sử dụng những thứ như ổ đĩa cứng và cổng nối tiếp, v.v.) và các chương trình để thiết lập mạng ( dhcpcd ) và API như X.org để các ứng dụng có thể hiển thị các cửa sổ và biểu tượng qua Trình quản lý cửa sổ như Gnome hoặc KDE .

Nhưng vâng, bạn chỉ có thể tự khởi động kernel, nó sẽ chỉ ngồi đó với một "Tôi đã khởi động, bây giờ thì sao?" lời nhắc.


Vì vậy, tôi có thể khởi động chỉ một kernel và không có nội dung bổ sung nào mà HĐH thường có không?
AnkurVj

Theo lý thuyết, tôi đoán, nhưng nó sẽ không làm gì nếu không có các chương trình khác trên đầu trang. Có những hệ điều hành nhỏ mà mọi người đã tạo ra để giải trí không gì khác ngoài kernel, shell và có thể là trình biên dịch hoặc trình biên dịch (tôi nghĩ rằng Linux thực sự đã bắt đầu theo cách này).
dùng55325

@AnkurVj Tôi đã thêm vào câu trả lời của mình.
Mokubai

3
Tôi không nghĩ bạn có thể khởi động chỉ nhân Linux. Hạt nhân đạt đến điểm mà nó gọi init, tại thời điểm đó hệ thống chuyển từ chế độ kernel sang chế độ người dùng. Nếu init không khả dụng (hoặc init giả, như bash), kernel hoảng loạn và gặp sự cố. Vì vậy, phải có một số tiến trình init đang chạy để tránh sự hoảng loạn, tại thời điểm đó nó thực sự không chỉ là kernel đang chạy.
Joe Internet

1
Bạn có thể khởi động một kernel trần, nhưng không có phần còn lại của HĐH, người dùng sẽ không có tương tác với nó.
Keltari
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.