什么是操作系统内核?它与操作系统有何不同?

156

我无法理解内核和操作系统之间的区别。我没有看到它们之间的任何区别。内核是一个操作系统吗?

我不了解内核和操作系统的区别。它们之间似乎没有什么区别。内核是操作系统吗?

11个回答

80
操作系统的技术定义为“一个平台,由特定的库和基础设施组成,用于构建应用并相互交互”。在这种意义上,内核是操作系统。
而终端用户的定义通常是“提供桌面、应用程序快捷方式、网络浏览器和媒体播放器的软件包”。内核与该定义不匹配。
因此,对于终端用户来说,Linux发行版(比如Ubuntu)是操作系统,而对于程序员来说,Linux内核本身是一个完全有效的操作系统,这取决于你想要实现什么目标。例如,嵌入式系统大多只是内核,在它们之上运行着非常少量的专门进程。在这种情况下,内核本身就成为了操作系统本身。
我认为您可以根据正在运行的大多数应用程序所需的内容划分界限。如果大多数应用程序只需要内核,则内核就是操作系统;如果大多数应用程序需要运行X Window System,则您的操作系统将变成X + 内核。

6
最终用户的定义通常是指“一个软件包,提供桌面、应用程序快捷方式、网络浏览器和媒体播放器”。内核不符合这个定义。仅仅因为某人不知道操作系统是什么,并不意味着他们的定义是正确的。 - Byte Lab
1
@dimmsum 这不仅是口头定义。操作系统已被销售并营销给用户。 - Sedat Kapanoglu
1
@dimmsum,我理解你的观点,这就是为什么我提供了两个不同的定义。也许我应该称之为“理解”?我认为终端用户,特别是在操作系统以盒子销售的时代,对操作系统的理解与技术定义有所不同,这直接关系到操作系统如何被商品化。Windows XP盒子承诺的交易与技术定义完全不同,这就是我想指出的。 - Sedat Kapanoglu
2
@dimmsum 在计算机科学中有操作系统,而在技术商店的货架上还有另一个操作系统。两者都是来自不同角度的操作系统。我想强调这种区别。 - Sedat Kapanoglu
@DIMMSum 我认为同样的论点也可以用于智能手机上。“购买和使用智能手机的人根本不知道它是什么”,因为对于某个东西来说有一个单独的复杂技术定义并不意味着消费者对其作为商品的价值“一无所知”。当然他们知道。 - Sedat Kapanoglu
显示剩余5条评论

79

内核是操作系统的一部分,用于调解对系统资源的访问。它负责通过控制对CPU、内存、磁盘I/O和网络的访问,使多个应用程序能够有效地共享硬件。

操作系统是内核加上能够让用户完成某些任务的应用程序(例如编译器、文本编辑器、窗口管理器等)。


19
编译器和文本编辑器是否真的是操作系统的一部分?Word 是一个高级文本编辑器,它算作操作系统的一部分吗? - jon hanson
6
我不明白的是,“操作系统就是内核加上应用程序”,但如果我安装一个应用程序,比如Word Perfect,那应该不算作操作系统的一部分,对吗? - Celeritas
7
略晚了一点,但那个安装的应用程序不会被算作操作系统的一部分。这些“应用程序”实际上是随操作系统提供的系统实用工具。你安装的所有其他软件/应用程序都存在于此之上的层。 - hashcode55
你之前做得很好,直到你在第二段写了一个括号注释。操作系统处理应用程序发出的请求来控制硬件。因此,操作系统包括内核、设备驱动程序和任何其他专门控制硬件的软件/固件。 - Bob

48

似乎我们最初得到“kernel”一词的隐喻已被遗忘。这个隐喻是,操作系统就像种子,而“kernel”则是种子的核心,为应用程序提供操作系统服务,被种子的“shell”所包围,用户从外部看到的便是“shell”。

一些人希望将“kernel”(以及,“shell”)更具体化。但实际上,在不同的操作系统之间存在很多变化。其中最显著的是“shell”的组成(可以从Solaris的sh到Netware的Console Command Interpreter,再到OS/2的Workplace Shell和Windows NT的Explorer)。此外,在一个操作系统中,“kernel”的范围也因而有很大的差异,比如是否包括磁盘I/O等。

最好记住,这些术语都是隐喻

进一步阅读


1
不错。然而你的回答是直接从“进一步阅读”中复制粘贴的。现在我知道如何通过复制和粘贴获得很多赞了。哈哈。尽管如此,仍然很有帮助。 - lacostenycoder

19

嗯,内核和操作系统之间有所不同。如上所述,内核是操作系统的核心,负责管理操作系统的核心功能。而如果在内核之上添加了一些有用的应用程序和实用程序,则完整的组合成为操作系统。因此,可以轻松地说,操作系统由内核空间和用户空间组成。

因此,我们可以说Linux是一个内核,因为它不包括像文件系统实用程序、窗口系统和图形桌面、系统管理员命令、文本编辑器、编译器等应用程序。因此,各个公司在Linux内核上添加这些类型的应用程序,并提供他们自己的操作系统,如Ubuntu、SUSE、CentOS、RedHat等。


9

3
尝试翻译:Meh,请尝试翻译http://en.wikipedia.org/wiki/Operating_system的第一句话。操作系统正式任务是调解对有限资源的访问(几乎是计算机上的*所有*东西),而单片内核确实做到了这一点(微内核将其中的一些工作转嫁给了进程,但这些进程仍然随内核分发)。从程序员的角度来看,内核就是操作系统。用户可能依赖于Shell或其他接口,但那是*用户*。请记住,操作系统可以运行在从超级计算机到需要执行*两个*操作的任何嵌入式小部件上。 - dmckee --- ex-moderator kitten
那么你的观点是,一些操作系统本身就是内核,还是用户与之交互的操作系统部分不属于操作系统的一部分? - danben
此外,“en.wikipedia.org/wiki/Operating_system”的第一句话说:“操作系统(OS)是硬件和用户之间的接口……”,所以我不明白为什么你要区分用户交互部分和其他部分。 - danben

9

操作系统是一个通用的名称,用于指代构成整个系统的所有元素(用户界面、库、资源)。

内核是操作系统的“大脑”,它控制从访问硬盘到内存管理的所有事项。每当您想做任何事情时,都需要通过内核进行。


7

内核是操作系统的一部分,它是引导加载程序(对于大多数操作系统)加载到 CPU 上的第一件事,它是与硬件进行交互的部分,并且还管理着哪些程序可以使用硬件做什么,它真正是操作系统的中心部分,由驱动程序组成,驱动程序是与特定硬件进行交互的程序,例如:如果我为计算机制作了一个数字相机,我需要为其制作一个驱动程序,驱动程序是唯一可以控制计算机输入和输出的程序。


3

1
那么内核操作系统没有驱动程序吗? - Xinus
1
大多数内核将操作系统的各个部分(不仅仅是驱动程序)绑在一起。 - Justin Niessner

2

内核存在于操作系统中。实际上,它是一个专门用于处理操作系统功能的内存空间。有些人甚至说操作系统管理系统资源,而内核是操作系统的核心,负责维护、管理和跟踪操作系统。


2
在计算机领域中,“内核”是大多数操作系统的核心组件;它是应用程序和硬件级别实际数据处理之间的桥梁。内核的职责包括管理系统资源(硬件和软件组件之间的通信)。作为操作系统的基本组成部分,内核可以为应用程序必须控制以执行其功能的资源(特别是处理器和I/O设备)提供最低层次的抽象层。通常,它通过进程间通信机制和系统调用向应用程序进程提供这些功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接