2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

三种流行操作系统的内核比较

  • 2009-08-21
  • 本文字数:2626 字

    阅读完需:约 9 分钟

本文的灵感来自于 Max Bruning 对 Solaris、BSD 和 Linux 的看法。准 Unix 系统之间优缺点的比较已经是老生常谈了。不过,本文探讨了三种最新发布的操作系统 ——OpenSolaris、Windows Vista 和 Linux kernel 2.6 的内核子系统。之所以选择它们是因为它们在商业环境和开发社区中使用最广泛、最受欢迎。

评价一种操作系统存在很多标准,但是毫无疑问,操作系统在计算机科学领域的角色始终不变。我们可以从以下三个目标来分析:

  • 效率:支持系统资源(特别是硬件)以有效的方式运转。
  • 演变:唯一不变的事物就是变化本身。操作系统应该恰当地构建以支持在不影响原先系统服务的情况下开发和引入新的系统函数。
  • 用户友好性:每天我们都需要面对操作系统。用户友好的界面是必须的,否则不论上面两个目标做的如何出色你都会被抛弃。

显然,操作系统需要各种功能,如进程 / 线程管理(以特定的调度机制分配和调用线程)、内存管理和文件管理。我们依次比较这些子系统。(用户友好性不在本文讨论之列,我们将关注于内核。)Linux 和 OpenSolaris 之间有些概念类似,但 Windows Vista 则差别很大。

进程和线程管理

OpenSolaris

OpenSolaris 实现了多层次的线程支持,以便灵活地利用处理器资源。下面四种概念来自于 OpenSolaris。

  • 进程:这是正常的 UNIX 进程,包括用户地址空间、栈和进程控制块。
  • 用户级线程:通过进程地址空间的线程库实现,这些线程对操作系统是透明的。用户级线程(ULT)是进程内部用户创建的执行单元。
  • 轻量级进程:轻量级进程(LWP)可以被看做是用户级线程和内核线程的一种映射。每一个轻量级进程支持用户级线程,并映射到一个内核线程上。轻量级线程由内核独立调度,能够在多处理器中并发执行。
  • 内核线程:这些线程是基本的实体,可以在系统处理器上调度和分发运行。

如图 0 所示,ps -Lec 命令显示了系统进程和线程。

图 0 Solaris 10 update 6 输出

图 1 显示了四种实体的关系

图 1 Opensolaris 线程模型 1

OpenSolaris 三种层次的线程结构(ULT、LWP、内核线程)有利于操作系统管理线程,并为应用程序提供了清晰的接口。

用户线程接口是一个标准线程库。ULT 映射到 LWP 上,LWP 由操作系统管理,定义了执行的状态。LWP 被绑定到内核线程上,在执行状态中一一对应。因此,并发和执行在内核线程层面上管理。

此外,应用程序可以通过应用程序接口(API,由系统调用构成)访问硬件。API 支持用户调用内核服务执行特权任务,例如读写文件、对设备发出控制指令、创建新进程或线程、为进程分配内存,等等。

线程模型的变化造成了进程数据结构的修改。OpenSolaris 保留了基本的结构,去掉了进程状态块,取而代之的是包含每一个 LWP 的数据块结构。

LWP 数据结构包含以下元素:

  • LWP 标识符
  • LWP 的优先级和支持它的内核线程
  • 信号掩码,告知内核能够接受哪些信号
  • 用户级寄存器的保存值(LWP 不处于运行状态时)
  • 针对 LWP 的内核栈,包括每一层调用的系统调用参数、结果和错误代码
  • 资源使用和配置数据
  • 对应内核线程的指针
  • 对应进程结构的指针

图 2 Solaris 进程结构和传统 Unix 进程结构的区别

Windows Vista

Vista 进程的设计目标是支持若干操作系统环境。相应的,由 Windows 内核提供的原生进程结构和服务相对简单和通用,支持各个操作系统子系统实现特定的进程结构和功能。以下是 Windows 进程的重要特征:

  • Windows 进程以对象的形式实现。
  • 一个可执行的进程包含一个或多个线程。
  • 进程和线程对象都具有内建的同步机制。

图 3 2 展示了一个进程如何与它控制或者使用的资源关联。每一个进程被赋予一个安全访问令牌,称为进程的主令牌。

图 3 Windows 进程和它的线程

当用户首次登陆时,Vista 创建一个访问令牌,包含用户的安全 ID。该用户创建或者运行的每一个进程都有该访问令牌的拷贝。Windows 使用该令牌验证用户访问安全对象或者在系统和安全对象上执行受限函数的合法性。该访问令牌控制着进程能否改变自己的属性。在本例中,进程没有指向访问令牌的句柄。如果进程尝试打开这样一个句柄,安全系统将决定这是否合法和进程是否可以改变自己的属性。

同时,与进程关联的还有一系列定义虚拟地址空间的数据块。进程不能直接修改这些结构,只能依赖于虚拟内存管理器,它提供了进程的内存分配服务。

最后,进程包含了一个对象表格,记录了进程所知的其他对象的句柄。每一个对象包含的每一个线程都有一个句柄。

此外,进程可以访问一个文件对象和定义共享内存的节对象。

Windows 面向对象的结构有利于通用进程函数的发展。Windows Vista 利用两种进程相关的对象:进程和线程。在 OpenSolaris 中,进程是对应用户任务或者应用的实体,拥有内存、文件等资源。线程是工作任务的一个可分发单元,可中断,因此处理器能够切换到另一线程。

Windows Vista 支持进程之间的并发,因为不同进程里的线程可以并发执行。而且,同一进程里的多线程可以被并发的分配给各个处理器执行。多线程进程无需使用多进程即可实现并发。同一进程内的线程可以通过它们的通用地址空间交换信息和访问进程的共享资源。不同进程内的线程可以通过两个进程搭建好的共享内存交换信息。

面向对象的多线程进程可以有效的实现服务器应用。例如,一个服务器进程可以伺候多个客户端请求。

Linux Kernel 2.6

在 Linux 中,进程或者说任务由 task_struct 数据结构表示。 task_struct 包含了一系列信息:

  1. Linux 的进程不像 Vista 和 Opensolaris,它们是容器和可调度的实体,进程可以分享地址空间和系统资源,使进程像线程那样有效使用。
  2. 同样不像 Vista 和 Opensolaris 的还有,大多数服务都是在内核中实现的,除了很多网络功能。因此 Linux 内核比之前的两种系统更大。

Linux 并不区分线程和进程,使用了类似 OpenSolaris 的轻量级进程的机制,用户级线程被映射到内核级进程上。单个用户级进程里的多个用户级线程被映射到共享组 ID 的内核进程上。这确保了这些进程可以共享资源,如文件、内存,避免了同一组内部进程之间调度切换时的环境切换。

结论

Solaris 和 Windows 都已经存在了几十年,Linux 却很年轻,还有很长的路要走。很明显,三种操作系统实现了流行的操作系统理论。对我们来说最大的障碍是访问内存实现和调试。由于知识的局限,我没有办法调试或者跟踪 Windows Vista 的线程和进程,不过 OpenSolaris 提供了足够的工具来查看内核线程。

在下一篇中,我们将探讨内存管理和文件系统。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-08-21 00:1315348
用户头像

发布了 501 篇内容, 共 270.8 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

week4 学习总结

任小龙

Week 04 总结

鱼_XueTr

互联网架构的演进

【第四周】架构师训练营总结

星星

第四周作业

秦宝齐

课程作业

第四周学习总结

架构师第四周作业

路人

极客大学架构师训练营

第四周作业

刘卓

架构师训练营第四周 - 作业

Eric

极客大学架构师训练营

架构师训练营第四周心得

路人

极客大学架构师训练营

第4周学习总结

嘻哈

记一次系统优化经历-php系统

而立

性能调优 swoole

网站架构进化史

dongge

第四周学习总结

CP

架构师课程第四周总结

dongge

第四周作业

重新来过

聊聊视频会议的昨天、今天和明天

拍乐云Pano

音视频 WebRTC 云服务 RTC

进击的Serverless

傅轶

Kubernetes Knative Faas

Spring源码梳理(一)之ClassPathXmlApplicationContext

彭阿三

Java spring

架构师培训 -04 系统架构

刘敏

大型互联网应用系统技术方案

leis

第四周学习总结

刘卓

架构师训练营作业 -- Week 4

吴炳华

极客大学架构师训练营

MySQL 实战 45 讲笔记(3)- 高可用

程序员老王

MySQL

Week04-总结

leis

经济学家朱嘉明:2020年是区块链与产业结合的重要年份

CECBC

CECBC 区块链技术 应用落地 产业结合

第四周作业

大雄

【第四周】架构师训练营作业

星星

雅典娜交易所打造财富共同体,掀起币圈追捧热潮

Geek_116789

week4作业二

任鑫

架构

互联网技术个人理解

嘻哈

第四周-作业&总结

qh12346

三种流行操作系统的内核比较_Linux_Dingze Zhu_InfoQ精选文章