解密《一个操作系统的实现》这本书

5 月 18 日见到了《 Orange'S :一个操作系统的实现》的样书,多少有些激动。想一想前一版本《自己动手写操作系统》是那么畅销,这一本一定不能含糊。整个出版过程我能看到作者于渊为此付出的努力,还在自己排版的过程有深入体会,通过于渊的讲座也让博文视点的员工分享到他在排版过程中的很多心得。

应该有几万个朋友读过《自己动手写操作系统》了,本书的第 2 版《 Orange'S :一个操作系统的实现》出来肯定有非常多的朋友想问,这两本书到底有何区别呢?就此博文视点对本书作者于渊进行了简单的采访。

* 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》明显区别在哪些方面? *

于渊:作为《自己动手写操作系统》(以下简称《自》)的第二版,《 Orange'S :一个操作系统的实现》(以下简称“新版”)主要有以下变化:

1. 书中示例操作系统的名字改为 Orange'S

2. 书名改为《 Orange'S :一个操作系统的实现》

3. 增加了有关 IPC 、 FS 、 MM 等内容

4. 将默认开发平台改为 GNU/Linux ,同时兼顾 Windows

5. 更改了排版工具,并使用技术手段增加书的可读性,比如代码行号的运用

6. 建立专门网站以服务读者

7. 建立专门讨论区供读者交流

读过《自己动手写操作系统》的读者一定知道,其中默认使用 Windows 作为开发平台,同时使用虚拟机来编译及运行自己的 OS ,在新版中这一点发生了变化(如上述第 4 条所述),具体的变化原因在书中第二章有详细的叙述。虽然开发平台是第二位的事情,但书中的默认平台却不免影响到叙述细节,所以,如果读者基于自己的原因坚持在 Windows

上开发(可能的原因或许有对 Linux 不熟悉、需要边开发操作系统边登录某些网上银行等等),则可能对读到的内容进行一点点额外加工。当然,所需的额外加工是少量的,而且在第二章中也有专门的文字介绍如何在两种平台下搭建工作环境。此外,如果读者不介意花钱,还可以同时购买《自己动手写操作系统》和新版,相互参照阅读。

* 提问:《 Orange'S :一个操作系统的实现》与《自己动手写操作系统》相比是否有所增加吗?增加了多少内容量呢?

于渊:新版的内容是有增加的,新增文字约占整本书的三分之一,《 Orange'S :一个操作系统的实现》新增代码则是《自己动手写操作系统》中代码的数倍。这些新增的内容,读者只能从新版中获得。目前并未有将新增内容单独成书的打算,所以读者即便仅想阅读第八章以后的内容,也需要购买整本《 Orange'S :一个操作系统的实现》。已经购买了《自己动手写操作系统》的读者可能觉得有点浪费,但事实并不如此,因为《自己动手写操作系统》的内容经过了重新排版、修订和编辑(比如代码格式进行了重排,更方便与光盘中的文件对照阅读,以及其中所有的矢量图都用 pgf/TikZ

重新绘制等)笔者倾注的心血使得新版的感官已经大为不同,读者一看便知。

* 提问:在《自己动手写操作系统》大卖的时候,您是否想过会有第二版出版呢? *

于渊:坦白讲,我在写作《自》的时候,并没有想过今天会有一个第二版。原因在于,我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情。所谓填补空白,具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了。

* 提问:那么为什么又写作了第二版呢? *

于渊:原因有几个方面。第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委,但写得太简略,以至于读者看来未必清晰。第二,我自己想把这个圈画圆。第一版的书虽然完成了它的使命,但毕竟到书的结尾,读者看到的不是一个真正的操作系统,它没有文件系统,没有内存管理,什么也干不了。在第二版中,你将会看到,你已经可以通过交叉编译的方式为我们的实验性 OS 编写应用程序了,也就是说,它已经具备操作系统的基本功能,虽然仍然极其简陋,但第一个圈,毕竟是已经圆起来了。第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二版中,仍然试图把话说细一点,把自己的经验拿出来分享。而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的易懂的设计,还有尽量详细的文字。

* 提问:这本书为何不考虑用 WORD 排版? *

于渊:新版的排版是我用 LaTeX 自己完成的。在排版中我花了一些工夫,因为我希望读者购买的首先是一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法。另外,书中列出的代码均由我自己编写的程序自动嵌入 LaTeX 源文件,从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中代码的准确位置。

* 提问:第二版还有哪些区别呢? Orange'S 这个名字很特别,有什么寓意吗? *

于渊:新版中还有一些小的变化。首先是操作系统的名字改变了,原因在于虽然我们的试验性 OS 从前辈们那里借鉴了很多东西,但其各个部分的设计(比如文件系统和内存管理)往往有其独特之处,所以我将原先的 Tinix (本意为 TryMinix )改成了新名字 Orange'S (这个名字来自于我的妻子),以表示它们的不同。另外,书中的代码风格,有些地方也做了调整。

新版中,原先的叙述风格都尽量地得以贯彻,而在表现形式上,新版用了更多心思,我相信读者能在其中发现这些特点:关注动手细节,探寻代码背后的故事,结果与过程兼顾,内容与形式并重。加上专门为本书建立的网站和讨论区,我相信读者能更容易地阅读,更轻松地学习。

更多详情请登录 http://osfromscratch.org/ 。

《 Orange'S :一个操作系统的实现》

出版单位:电子工业出版社    作者:于渊     ISBN : 978-7-121-08442-3

本书官方网站: http://osfromscratch.org/

网络购买地址: http://www.china-pub.com/195571

解密《一个操作系统的实现》这本书相关推荐

  1. 《一个操作系统的实现》读书笔记连载ing……

    从昨天起深陷<一个操作系统的实现>这个书不能自拔,这本书可以说再次燃起了我小时候想写操作系统的美好愿望,所以说愿望总是美好的,还进入了大学开始真正去学计算机才发现似乎写操作系统是和我没什么 ...

  2. 一个月读完6本书?这些烧脑神书,你能读完1本,就是学霸!

    导读:宅家有刷不完的剧.打不完的游戏?在线听课又走神了?一觉醒来假期又延长了?但假期虽漫长,终究有开学的那天.那么应该为迟来的开学做哪些准备? 停课不停学!近日,著名经济学者薛兆丰在得到app上发起& ...

  3. 一个操作系统的实现(1)

    一个操作系统的实现 说明:本文是一个简单的学习记录,不是全面给大家提供学习的文章,文章内容均代表作者的个人观点,难免会有错误.转载请保留作者信息. 2010/11/20                ...

  4. 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程

    在<<Orange's 一个操作系统的实现>>一书中有时使用了org 0100h,为何是0100h?因为书中的例子是为了突破引导扇区512字节的限制, 而将asm文件编译为.c ...

  5. 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-无特权级转换)...

    在上次的代码基础上,添加一个代码段作为通过调用门转移的目标段.了解一下调用的工作方法,代码分析如下: <<红色标识部分为新增代码>> ; =================== ...

  6. 一个操作系统的实现01

    老师说,写好操作系统,期末就没有大作业了 没有大作业=期末空闲时间更多=我可以看每到期末就看的停不下来的电视剧 欢迎大家来和我一起来学操作系统制作 参考书籍: 一个操作系统的实现 于渊 参考博客:ht ...

  7. orange's系统可以装mysql 吗?_bochs 2.4.2 ubuntu 安装运行问题《orange#39;s 一个操作系统的...

    用源码安装完后会遇到的问题: <1> 运行可能碰到如下问题: Event type: PANIC Device: [ ] Message: dlopen failed for module ...

  8. Orange's:一个操作系统的实现 Descriptor 3宏详解

    补充:关于GDT/LDT.段选择子和段描述符的解释       GDT/LDT:GDT/LDT是段描述符表,里面定义了每个段的段描述符的界限和属性,而段描述符的基址是在代码段中初始化的.        ...

  9. Orange‘s’ 一个操作系统的实现

    突然想要随时记录一下实验过程中的各种问题,因此有了此文档: 由于是中途开始的,所以就偷懒直接跳过了vm.ubuntu32位16.04.bochs2.6.8.nasm的安装,下面开始正文内容: 2022 ...

  10. <一个操作系统的实现>:sudo mount -o loop pm.img /mnt/floppy出错

    在<一个操作系统的实现>中使用命令sudo mount -o loop pm.img /mnt/floppy出现如下错误: mount: /mnt/floppy: wrong fs typ ...

最新文章

  1. caffe卷积层代码阅读笔记
  2. java多线程w3c_多线程
  3. 端口复用:隐藏 嗅探与攻击
  4. /dev/null 文件
  5. oracle导库需要删除原始库,导入dmp文件时,需要删除原有ORACLE数据库实例
  6. Oracle数据库时间修改
  7. 朋友们PR又快要更新了,我们该做准备了
  8. 亿万富翁Mark Cuban:比特币是像黄金一样的价值存储,更多是一种信仰
  9. 手写哈希(实现简单的加数、查询)
  10. WORD必学技巧:使用项目编号
  11. sigar 网络 java_java-Sigar网络速度
  12. 1、BimRevit 二次开发配置和环境搭建
  13. uc/os-II的内存改进与实现TLSF算法的详解,移植实现(四)
  14. Win10 安装MySQL(解压版)
  15. 串口485接法图_RS232转换为RS485的接线方法最好有图
  16. html文件恢复工具,文件误删恢复工具
  17. 2021年美容师(高级)考试及美容师(高级)考试题
  18. scum官方服务器维护时间,在等公测的这段时间里聊聊最近很火的scum吧
  19. 我的TOM邮箱收件速度真不慢——邮箱常见问题解答大全!
  20. 人类能够制造出宏观的亚原子材料、粒子材料吗?

热门文章

  1. 学习使用TestNG进行数据驱动测试
  2. JS获取浏览器滚动条的宽度
  3. 很吊炸天的Xcode插件,你想要的这都有
  4. 使用Flex4画图形
  5. 全双工音频播放器在c#中使用waveIn / waveOut api
  6. jquey 阻止表单提交
  7. 程序员真实写真:35岁前成功的12条黄金法则 (转)
  8. 熟悉Linux常用命令
  9. Unity Shader 噪声消融特效 - 剑灵死亡特效
  10. laravel5.2 增加Caffienate Modules,实现模块化开发