那一年不知怎样,此书忽在世间出现,天下学武之人自然个个都想得到,大家你抢我夺,一塌里胡涂。

一直以来,操作系统都是程序员心中的圣殿,每个程序员都想登堂入室,掌握其中的奥秘。但是,在上世纪六七十年代,对普通程序员来说,这只能是个梦想。因为在那时,操作系统不啻为一个蛮荒巨兽,它往往由数十万乃至数百万行的汇编语句组成,对普通程序员而言,根本无法对其进行分析和理解。

Unix的出现改变了这一切。肯·汤姆森和丹尼斯·里奇在1974年7月号上的《ACM通信》上的一篇论文“The UNIX Time Sharing System”正式将unix操作系统介绍给世人,立即引起了学术界的广泛兴趣。人们惊奇的发现,同传统的操作系统相比,unix有两个显著的特点:

(1)         代码量要少1~2个数量级,但却实现了在当时看来十分强大的功能;

(2)         其内核代码多由c语言写就,只有极少量的代码由汇编完成。

例如,作为莱昂模型的unix v6,其内核仅有9000多行代码,而汇编代码仅不到1000行。

更重要的是,unix采用源代码方式进行发行,只要购买了unix许可证就可以获得整个源代码。其后不久,一本神秘的小册子开始流行,并引发了大规模的违法复印活动。这本小册子就是《莱昂氏unix源代码分析》。毫不夸张的说,这本书的流行极大促进了unix的发展,并哺育了一代unix精英。因此,此书在unix界具有极高的声誉。

时过境迁,我们现在可以轻易的找到各种开源操作系统的源码和分析,此书的重要性已大大降低。但是,它仍具有巨大的价值,它以区区9000多行代码实现了一个操作系统的基本功能,其设计之巧妙、代码质量之高,令人叹为观止。从教育的角度看,它仍然是最好的学习操作系统的教材之一。

对我来说,阅读此书是个快乐的过程,同时也是个痛苦的过程。因此,我决定写下自己的一点心得,希望能够为大家的读码过程减轻一点痛苦吧。

(莱昂氏unix源代码分析导读-1) 引子相关推荐

  1. (莱昂氏unix源代码分析导读-46)权限、管道

                                    by cszhao1980  1.    文件与权限控制 进程u结构中,身份相关的信息有: 0420: char u_uid; /* e ...

  2. (莱昂氏unix源代码分析导读-19)再谈进程swtch

    我们已经涉及到了部分进程切换的概念,在本章中,我们会从更一般的意义上考察进程切换的行为. 首先,进程切换(也称作context switch)一定是在内核中完成的. 比如,以下为发生进程切换的最常见的 ...

  3. (莱昂氏unix源代码分析导读-47) exec

    by cszhao1980 现在,我们已经储备了足够的知识,该吹响向EXEC sys call冲锋的号角了. exec是系统中最重要也是最复杂的系统调用之一,它的作用是执行指定的"可执行文件 ...

  4. 读《莱昂氏UNIX源代码分析》

    在unix早期的代码中,schedule和swap两个核心任务都是由0号进程来负责的,这个朴实的设计就是unix系统最最原始的设计,因为unix在开始设计的时候十分清楚进程应该做什么不应该做什么,应该 ...

  5. Linux内核源代码分析——fork()原理多进程网络模型

    今晚和一位500强的leader喝喝小酒吃吃烤鱼,生活乐无边.这位兄弟伙才毕业2年,已经做到管理层了,机遇和能力不可谓不好.喝酒之余,聊到Linux内核的两个问题--fork().exec()的原理. ...

  6. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6664554 在上一文章Android系统匿名共 ...

  7. Linux内核源代码分析-目录

    第一部分 Linux 内核源代码 arch/i386/kernel/entry.S 2 arch/i386/kernel/init_task.c 8 arch/i386/kernel/irq.c 8 ...

  8. nux 平台的 libpcap 源代码分析

    nux 平台的 libpcap 源代码分析 施聪 (javer@163.com), 高级程序员.网络设计师 简介: libpcap 是 unix/linux 平台下的网络数据包捕获函数包,大多数网络监 ...

  9. Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...

    在把Linux内核源代码生成Image之前,需要把执行文件头结构信息剔除出来.这个过程对理解Linux内核具有很大的帮助.同时,由于是对可执行文件进行直接读写操作,想写DUL工具的童鞋可以在这里学习到 ...

最新文章

  1. opencv线性滤波(滤波与模糊的区别)
  2. jackson stax2-api
  3. python以什么方式处理文件-Python文件修改和常用方法
  4. 随想录(分布式系统)
  5. debian php mysql 包_debian php mysql
  6. C# 静态类初始化 结构体初始化
  7. 项目开发-文档-软件需求规格说明书模板文档命名规则及格式要求(免费下载链接)
  8. mib节点 snmp trap_(转)浅谈 Linux 系统中的 SNMP Trap
  9. STM32 WAVWM8978简介
  10. Resnet解决了什么问题
  11. android cts测试(编译源码获取cts测试包),如何通过Android CTS测试—testPackageSignatures...
  12. BZOJ 4399 魔法少女LJJ(线段树合并)
  13. 大学计算机音乐一起学,和学生一起学音乐
  14. eclips开发工具的使用
  15. 获得32位UUID字符串和指定数目的UUID
  16. 使用AFNetworking
  17. abp项目怎样发布到服务器,ABP 网站发布
  18. 金字塔打印(C语言)
  19. 自然语言处理:用paddle对人民日报语料进行分词,停用词,数据清洗和熵计算
  20. vue自定义百度地图弹窗

热门文章

  1. 通过Mac远程调试iPhone/iPad上的网页(转)
  2. 怎么在图片上面加颜色
  3. 会计实务:用友U8各种采购暂估处理会计分录案例
  4. ubuntu下的Redis操作命令
  5. 什么是LCD拼接屏?
  6. [Java] 抽象类、final类和接口
  7. Templete(springMVC Facelets)
  8. FastReport使用数据源
  9. eplan部件列表手动修改_EPLAN如何修改设备标示符规则,当插入元件时不显示设备标示符前的“-”号,每次删除很麻烦!...
  10. 中国miRNA工具和服务市场现状研究分析与发展前景预测报告(2022)