Linux 与 UNIX 内核的主要差异

举报
Tiamo_T 发表于 2022/05/26 08:44:24 2022/05/26
【摘要】 UNIX 被认为是大多数操作系统之母。Linux 是这个家族中相对较新的成员。Linux 最初是由 Linus Torvalds 于 1991 年为 IBM 兼容的个人计算机编写的。作为一种操作系统,GNU Linux 在过去的 20 年中取得了巨大的成功和普及,现在大多数商业服务器都使用 GNU Linux。为了增加知名度,这些天最终用户也开始使用 Linux,大多数流行的笔记本电脑和 P...

UNIX 被认为是大多数操作系统之母。Linux 是这个家族中相对较新的成员。Linux 最初是由 Linus Torvalds 于 1991 年为 IBM 兼容的个人计算机编写的。作为一种操作系统,GNU Linux 在过去的 20 年中取得了巨大的成功和普及,现在大多数商业服务器都使用 GNU Linux。为了增加知名度,这些天最终用户也开始使用 Linux,大多数流行的笔记本电脑和 PC 制造商都将 GNU Linux 作为每个安装的操作系统。

对于那些仍然对 Linux 是操作系统还是内核感到困惑的人,Linus 编写的真正意义上的 Linux 是参考 Unix 内部原理书编写的内核(尽管 Linux 内核采用了许多其他类 Unix 内核的良好特性)也),而在 Linux 内核之上包含图形桌面、文本编辑器、编译器等实用程序的商用发行版是完整的操作系统。

尽管 Linux Kernel 从 Unix/类 Unix 内核中借用了它的大部分特性,但是这两种类型的内核在很多方面仍然存在显着差异。在本文中,主要关注这些差异。该列表并不详尽,但包含主要区别。

1. 单体与微内核方法

单片内核是所有内核代码作为单个进程运行的内核,而微内核内核是内核的核心(控制不同的操作系统)在一个进程中运行而其他服务(如设备驱动程序等)运行不同的内核过程。Linux 遵循单体方法,而在遵循微内核方法的类 Unix 内核中有几个例外。

2. 向内核添加/删除功能

虽然传统的 Unix/类 Unix 系统需要添加新模块的静态链接,但 Linux 支持一个强大的功能,其中可以动态加载和卸载设备驱动程序等内核组件。此功能称为可加载内核模块 (LKM)。任何新组件都可以作为 LKM 添加/删除到内核中。这意味着无需再次编译整个内核。此外,如果不需要某个组件,也可以轻松卸载它。这个特性使 Linux 内核非常灵活。

3.内核线程

许多类 Unix 内核被组织为一组内核线程。内核线程可以被认为是一个独立的执行流程。内核线程可以运行用户进程或一些内核代码。基本思想是在内核线程之间进行上下文切换,这比进程之间的上下文切换成本更低,因为线程在相同的地址空间中运行。虽然许多类 Unix 操作系统使用内核线程进行进程上下文切换,但 Linux 使用内核线程仅用于定期执行一些内核代码。


4.多线程应用支持

几乎所有现代操作系统,无论是类 Unix 还是 Linux 发行版,都支持多线程。多线程应用程序是一种创建多个执行流的应用程序。这些独立的执行流程称为线程。线程是轻量级进程。在大多数类 Unix 系统中,轻量级进程基于内核线程,而在 Linux 中,这些 LWP 是通过调用函数 clone() 创建的,它允许应用程序像 fork() 那样创建一个单独的进程,但区别在于使用 clone() 新生成的进程可以共享其物理内存、打开的文件、地址空间等。由于这些新创建的进程在共享环境中工作,因此它们被赋予不同的名称“线程”。因此,我们看到 Linux 和 Unix/类 Unix 在内部处理多线程环境的方式上有所不同。

5. STREAMS

Streams I/O 子系统包含在大多数 Unix 内核中,并已成为编写设备驱动程序、终端驱动程序等的首选接口。而另一方面,Linux 中没有 Streams 之类的东西。

6. 抢占式与非抢占式内核

抢占式内核是可以抢占当前正在执行的进程的内核。这意味着如果具有更高优先级的进程准备好执行,则可以强制中断当前正在执行的进程。另一方面,非抢占式内核是那些正在运行的进程不能被强制中断的内核,即使更高优先级的进程已准备好执行。通常,Linux 操作系统是非抢占式的,而 Solaris 2.x 等一些 Unix 系统是完全抢占式的。通常实时操作系统具有完全抢占式内核。如今,我们拥有具有完全抢占式内核的 Linux 实时操作系统。

所以我们看到,尽管 Linux 是从 Unix 的基本思想中诞生的,但它在许多方面仍然与 Unix/类 Unix 内核不同。尽管存在这些差异,Linux 仍然从 Unix 继承了很多东西,并且仍然被认为是 Unix 内核家族的成员。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200