重读经典《操作系统:设计与实现》

这篇具有很好参考价值的文章主要介绍了重读经典《操作系统:设计与实现》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

距离第一次阅读《操作系统:设计与实现》,已经是 20 多年了。当时,差不多是 2002 年吧,我已经参加工作了。我大学不是学计算机的,因而也没有上过操作系统的课。第一次去上海,在上海图书馆看到这本书(中文版),就买了回来,读了很多遍。现在,书好像找不到了,只记得是两本,一本是理论,一本是源代码。

我庆幸买了这本书。Linus Torvalds 说,这本书改变了他的一生。虽然这本书没有改变我的一生,但对我影响也很大。

“那年夏天我做了两件事。第一件事是什么都没做。第二件事是读完了 719 页的《操作系统:设计与实现》。那本红色的简装本教科书差不多等于睡在了我的床上。”—— 摘自 Linus Torvalds 自传《Just For Fun》。

我喜欢 UNIX 和 Linux,对书中讲得 MINIX 也充满了兴趣。我在我的电脑上安装了 MINIX,实验了很多功能,也读了很多源代码,算是对操作系统有了一知半解,也对 Linux 有了更深的认识。

然而,MINIX 还是一个用于“教学”的系统,还不适合日常使用,当时的 MINIX 可能是 1.5 版。

“大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。” 这是那本书前言里的一句话,我也一直记得。我甚至也将这句话写进了我的书——《FreeSWITCH 权威指南》的前言里。

MINIX 参考自 UNIX。最开始,UNIX 的源码都是开放的,大家都可以学习研究,大学里也可以讲 UNIX 的源代码。然而,到了 UNIX 版本 7 以后,AT&T 公司意识到了它的商业价值,就不再公开源代码了。学校里也不再允许讲 UNIX 的源代码。然而,没有源代码的操作系统课就像失去了灵魂。因而,做操作系统研究和讲操作系统课的 Andrew S. Tanenbaum 教授就自己写了一个操作系统——MINIX,名字取自 Mini-UNIX。

Linus Torvalds 就是在读了 MINIX 的源代码后,决定自己写一个操作系统,这就是 Linux。Linux 的源代码最开始就是开放的,基于 GPLv2 开源协议发布。

MINIX 的源代码也是开放的,但是有一些限制,不能用于商业用途。虽然这个限制后来被取消了,但 MINIX 好像是错过了一个黄金时代。如今,Linux 已经风靡了世界。

不过,Andrew S. Tanenbaum 教授的志向却不在于此。MINIX 的源代码发布后,有无数人的都希望向 MINIX 贡献代码,以便让 MINIX 变得更好。但绝大部分都被拒绝了。因为 Tanenbaum 希望源代码足够简洁,让学生们都能读懂;也要足够轻量级,能运行在“学生们都能买得起”的电脑上。

当然,MINIX 还是取得了很多商业的成功。有很多嵌入式系统中都运行着 MINIX。你可能不敢相信,Intel 的 CPU 中就运行着一个隐藏的 MINIX 系统。

我时不时地也会关注一下 MINIX。现在,MINIX 的版本已经是 3.0 了,有了很大的重构。我总是希望有朝一日我也可以用 MINIX 完成一些日常的工作,不过,现在看来,离这个目标还有很远的路要走。其实我也希望能将 FreeSWITCH 移植到 MINIX 上,但这项工作还没有开始。

MINIX 支持 32 位的 x86 和 ARMv7 架构,尚不支持 64 位。MINIX 现在可能还主要应用于嵌入式领域。

MINIX 是微内核的操作系统,Linux 是宏内核的(单一内核)。为此,Tanenbaum 和 Linus Torvalds 曾经有过一场著名的辩论,这场辩论被称为“Tanenbaum-Torvalds debate”。当时是 1992 年,Tanenbaum 说 Linux 的设计是错误的,在 1991 年还使用宏内核,就像倒退到 70 年代一样。但是这么多年过去了,Linux 的发展有了翻天覆地的变化,其宏内核也一直运行得很好。

也许微内核确实是好,Windows NT 也是微内核的。Mach 也一个微内核,最初是卡耐基梅隆大学的一个研究项目,后来被用于包括 NeXT OS、Mac OS X、GNU Hurd 等系统。但是,微内核的系统性能一直是个问题。在 Mac OS X 中,微内核架构也因为性能原因被改写了:“However, in OS X, Mach is linked with other kernel components into a single kernel address space. This is primarily for performance”。

MINIX 3 比 MINIX 2 大约慢 10%,MINIX 3 也没有跟其他系统对比的数据。在 MINIX 3 的 FAQ 中,写道:“MINIX 只是花了几个人年的工作,而其他系统都花费了成千上万人年的工作量。对 MINIX 而言,我们更注重可靠性,而不是性能。” 参见:https://wiki.minix3.org/doku.php?id=faq 。

What is the performance of MINIX 3 like?

We made measurements of the performance of MINIX 3 (user-mode drivers) versus MINIX 2 (kernel-mode drivers) and MINIX 3 is 5-10% slower. We have not compared it to other systems because there are so many other differences. The biggest difference is that MINIX 3 represents about a handful man-year of work so far and other systems represent thousands of man-years of work and our priority has been reliability, not performance.

虽然 MINIX 关于人年的比较有其道理,但是,从某种意义上说,相当于他们承认了微内核的性能确实有些问题。虽然性能不是唯一指标。

GNU Hurd 一直难产,可能跟微内核的复杂度也有关系。不过,为 Hurd 工作的人可能还不如为 MINIX 工作的人多。2008 年左右我在清华大学见过一次 Richard Stallman,当时就想问问他 Hurd 的进展,但由于当时英文太烂,没敢问。也许问了,但现在不记得了。

好了,扯远了。再回到《操作系统:设计与实现》这本书,为了写我的新书《大道至简,给所有人看的编程书》,我又有选择地读了一遍。这次读的是英文版第三版,图中的封面就来自于它。Tanenbaum 的英文写得很好,读起来真是上瘾。

重读经典《操作系统:设计与实现》

原书里的内容有很多都不记得了,但是对哲学家就餐问题却印象很深。

重读经典《操作系统:设计与实现》

第一版中还使用 Amsterdam Compiler Kit C 语言编译器,现在也换成 GCC 和 Clang 了。MINIX 1 兼容 UNIX V7,但现在 MINIX 3 现在也兼容了 POSIX 标准。当然,我也只是看了书。二十多年过去了,我再也没有使用过 MINIX。希望不久的将来,我能再用用它。

本文永久链接:https://www.dujinfang.com/2024/03/03/MINIX.html 。文章来源地址https://www.toymoban.com/news/detail-837717.html

到了这里,关于重读经典《操作系统:设计与实现》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux操作系统(二):操作系统结构与内核设计

     在(一)详解CPU中介绍了操作系统所基于的硬件CPU后,本部分学习操作系统的架构。在计算机系统中,操作系统的架构通常包括以下几个主要组件: 内核(Kernel) 进程管理(Process Management) 内存管理(Memory Management) 文件系统管理(File System Management) 设备管理(Device

    2024年02月13日
    浏览(44)
  • 系统架构设计师-第2章-操作系统

    计算机系统由硬件和软件两部分组成。操作系统是计算机系统中最基本的系统软件,它 既管理计算机系统的软、硬件资源,又控制程序的执行。操作系统随着计算机研究和应用的 发展逐步形成并日趋成熟,它为用户使用计算机提供了一个良好的环境,从而使用户能充分 利用

    2024年02月03日
    浏览(43)
  • 操作系统课程设计进程调度模拟

    程序下载链接:https://download.csdn.net/download/m0_56241309/86945709 进程调度模拟 摘要 :进程调度是操作系统中必不可少的一种调度,在3中OS中都无一例外地配置了进程调度。此外,它也是对系统性能影响最大的一种处理机调度,在操作系统中具有十分重要的地位。本次模拟,旨在全

    2024年02月08日
    浏览(41)
  • 操作系统课程设计----模拟文件管理系统(c语言)

    1.采用高级语言编写程序模拟文件系统,文件系统采用多级目录结构,实现对文件和目录的创建、删除、重命名、变更权限、显示文件内容、修改文件内容等操作。 2.撰写课程设计报告。 编写程序模拟一个简单的文件系统,具体实验内容如下: (1)实现多级目录结构,而

    2024年01月21日
    浏览(46)
  • 操作系统课程设计-Linux 进程控制

    目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务          本实验为课设内容,博客内容为

    2024年01月18日
    浏览(48)
  • 嵌入式实时操作系统的设计与开发

    在RTOS中,时钟具有非常重要的作用,通过时钟可实现延时任务、周期性触发任务执行、任务有限等待的计时。 大多数嵌入式系统有两种时钟源,分别为实时时钟RTC(Real-Time Clock)和定时器/计数器。 实时时钟一般是靠电池供电,即使系统断电,也可以维持日期和时间。由于实

    2024年02月11日
    浏览(38)
  • 嵌入式系统设计师考试笔记之操作系统基础复习笔记二

    目录 3、任务管理 (1)嵌入式操作系统的任务管理可以分为 (2)进程 (3)线程 (4)任务 (5)任务的创建与中止 (6)任务的状态任务有三中基本状态: (7)任务控制块 TCB (8)任务的切换 (9)任务的调度 (10)实时系统调度 (11)任务互斥 (12)信号量 (13)任务同

    2024年02月08日
    浏览(48)
  • 嵌入式实时操作系统的设计与开发(一)

    以一款简单、易学的嵌入式开发平台ARM Mini2440(CPU是三星ARM 9系列的ARM S3C2440)为例,通过具体代码实现,介绍如何从裸板入手设计简单的轮询系统、前后台系统,以及如何一步一步在ARM Mini2440上编写RTOS内核,到如何让RTOS内核支持多核嵌入式处理器。 aCoral是2009年创建的开源

    2024年02月12日
    浏览(38)
  • 嵌入式实时操作系统的设计与开发(十)

    RTOS的引导是指将操作系统装入内存并开始执行的过程。在嵌入式系统的实际应用中,针对不同应用环境,对时间效率和空间效率有不同的要求。因此,操作系统启动时应充分考虑这两种限制。 时间限制主要包括两种情况:系统要求快速启动和系统启动后要求程序能实时运行

    2024年02月07日
    浏览(68)
  • 软考:中级软件设计师:操作系统,进程管理,前趋图,进程同步互斥,PV操作,

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包