下载 >  安全技术 >  网络攻防 > 操作系统:设计与实现 (第二版)
5

操作系统:设计与实现 (第二版)

Operating Systems: Design and Implementation Second Edition 操作系统设计与实现 (第二版) 安德鲁.坦尼鲍姆(Andrew S. Tanenbaum) 阿尔伯特.伍德豪尔(Albert S. Woodhull) 作者简介 安德鲁.坦尼鲍姆分别在麻省理工学院和加州大学伯克利分校获得学士和博士学位。他 现任位于荷兰阿姆斯特丹市的Vrije大学计算机科学教授并领导着一个计算机系统研究小组。 同时他还任一个研究并行、 分布及图像系统的校际研究生院 - 计算机与图像高级学院的院 长。 坦尼鲍姆先前的研究领域包括编译器、 操作系统、 网络和局域分布式系统,他现在的研 究主要集中在可扩展到数百万用户的广域分布式系统。 对这些课题的研究使他在学报和会议 上发表了70余篇论文,并出版了五部专著。 坦尼鲍姆教授同时还主持开发了大量的软件。他是Amsterdam编译工具箱的总设计师, 该工具箱被广泛地用来开发可移植的编译器,同时还用于MINIX的开发。他和他的博士研究 生及程序员们一起设计了一个基于微内核的高性能分布式操作系统 - Amoeba。 现在,以教 学和研究为目的的用户可以从Internet上免费获得MI NIX 和Amoeba软件。 坦尼鲍姆的许多博士研究生在获得学位后都取得了非常丰硕的成果,这令坦尼鲍姆非 常自豪,因为这是他诲人不倦的结果。 坦尼鲍姆教授同时还是ACM的会士、 IEEE高级会员、 荷兰皇家艺术和科学院院士,他曾获 得1994年ACM Karl V. Karlstrom 杰出教育奖和1997年ACM/SIGCSE 计算机科学教育杰出贡 献奖。他被列入Internet上的 Who's Who in the World 名单,他在WWW上的主页地址为: http://www.cs.vu.nl/~ast/。 阿尔伯特.伍德豪尔分别在麻省理工学院和华盛顿大学获得学士和博士学位。他进麻省 理工学院本来是想成为一名电气工程师,可是后来却成了生物学家。 从1973年起他开始在位 于麻省Amherst的Hampshire自然科学学院工作。 当微型计算机慢慢多起来的时候,作为使用 电子检测仪器的生物学家,他开始使用微型计算机。 他给学生开设的检测仪器方面的课程逐 渐演变为计算机接口和实时程序设计。 伍德豪尔博士对教学和科学技术的发展有浓厚的兴趣,在进入研究生院之前他曾在尼 日利亚教过两年中学,近年来他曾几次利用自己的假期在尼加拉瓜教授计算机科学。 他对计算机作为电子系统,以及计算机与其他电子系统的相互配合很感兴趣。 他最喜欢 讲授的课程有计算机体系结构、 汇编语言程序设计、 操作系统和计算机通信。 他还为开发电子 器件及相关软件担当顾问。 在学术之外,伍德豪尔有不少兴趣,包括各种户外运动,业余无线电制作和读书。 他还 喜欢旅游和学习别国语言。 他的WWW主页就存在一台运行MINIX的机器上,地址是:http://m inix1.hampshire.edu/asw/。 前 言 多数操作系统教材都重理论而轻实践,本书希望在这二者之间求取较好的平衡。 本书详 细论述了操作系统的所有基本概念,包括进程、 进程间通信、 信号量、 管程、 消息传递、 调度算 法、 输入/输出、 死锁、 设备驱动程序、 存储器管理、 页面调度算法、 文件系统设计、 安全与保护 机制等。同时,本书也详细讨论了MINIX - 一个与UNIX兼容的操作系统,并提供了完整的 源代码供学习之用。 这样的安排使读者不仅学习到理论,而且能够理解它们如何应用在一个 实际的操作系统之中。 本书第一版在1987年出版时,曾引发了操作系统课程教学的一场小小的变革。 在此之前 多数课程都只讲理论。随着MINIX的出现,许多学校开始增加实验环节以使学生了解实际的 操作系统是如何运作的。 我们认为这种趋势是可取的,并希望通过本书第二版能进一步加强 这种趋势。 MINIX在其出现以来的十年间发生了许多变化,最初的代码是为基于8088芯片、256K内 存和两个软驱的IBM PC机型编写的,它基于UNIX 版本7。随着时间的推移,MINIX在许多方 面有所发展,比如当前版本可运行在众多机型上,从16位实模式的PC机到配有大容量硬盘 的奔腾机(32位保护模式),而且它不再基于UNIX版本7,而是基于国际上的POSIX标准(P OSIX 1003.1和ISO9945-1)。 与此同时,有许多新特征被添加到MINIX中,在我们看来,所 增加的特征可能已经太多了,但有些人则认为还不够,这最终导致了LINUX的诞生。 MINIX还 被移植到许多其他平台上,包括Macintosh、 Amiga、 Atari和SPARC。 本书只涉及MINIX2.0,到 目前为止,该版本只能运行于基于80X86的机器,或者可模拟此类CPU的机器,以及SPARC机 器。 与第一版相比,第二版有许多变化,原理性部分基本都被修改过,同时增加了大量新 内容。 最主要的变化是新的基于POSIX的MINIX,以及对其源代码的剖析。 另外,每本书都附 带一张CD-ROM,它包含了全部MINIX源代码,以及在PC上安装MINIX的说明(见CD-ROM主目 录下的README.TXT文件)。 在一台80X86 的PC机上安装MINIX很方便。 它需要一个至少30MB的硬盘分区,然后按照C D-ROM上README.TXT文件中的步骤进行即可。在打印README.TXT文件之前,先启动MS-DOS (若运行WINDOWS,则双击MS-DOS图标),然后键入 copy readme.txt prn 即可。 该文件也可以用edit、 wordpad、 notepad等任何可以处理ASCII正文的编辑器进行浏览。 对于没有PC机的学校和个人,有两种解决办法,即CD-ROM上提供的两个模拟程序。一 个由Paul Ashton 为SPARC机器编写,它作为用户程序在Solaris上运行,此时MINIX被编译 成SPARC上的可执行文件。 在这种模式下,MINIX不再是一个操作系统,而只是一个用户程序, 所以必须对其底层作一些修改。 另一个模拟程序由Bochs软件公司的Kevin.P.Lawton编写,它解释Intel 80386的指令 集以及足以使MINIX运行所需的I/O指令。 显然在解释器层次上运行使性能有所下降,但这使 得学生更容易进行调试。该模拟程序运行在所有支持M.I.T的X-Window的系统上,更详细的 信息请参看CD-ROM上的有关文件。 MINIX仍在继续发展,本书和CD-ROM中的内容仅仅反映了本书出版时的情况,有关MIN IX的最新动态请访问MINIX的主页:http://www.cs.vu.nl/~ast/minix.html。 MINIX也有USE NET中的新闻组:comp.os.minix,读者可以订阅该新闻组。对于仅有Email的读者可通过以 下步骤来加入MINIX的邮件用户通信组。 listserv@listserv.nodak.edu 发一封信,其中 给 只需一行字:“subscribe minix-1 <您的完整用户名>”,此后你便会通过E-mail获得 很多的信息。 讲授本课程的教师可以从Prentice Hall公司获得一份习题解答手册。 从WWW地址 http: //www.cs.vu.nl/~ast/沿着“Software and supplementary material"链接可以获得一些 有用的PostScript文件,其中包含本书中所有的图表,可供需要时使用。 在MINIX的开发项目中我们有幸得到了许多人的帮助。 首先要感谢Kees Bot在MINIX标准 化和软件发布中所作的大量工作,没有他的帮助,我们不可能完成这件工作。 他自己编写了 大量的代码(如POSIX终端I/O)并修正了一些数年来一直存在的错误,他还整理了其他的 代码。 这些年来Bruce Evans、Phlip Homburg、 Will Rose和Michael Temari为MINIX的开发做 了大量的工作。 有几百人通过新闻组对MINIX作出了贡献,他们人数众多,所作出的贡献也 各不相同,在此谨向他们一并表示感谢。 John Casey、 Dale Grit、 Frans Kashoek等人阅读了本书的部分手稿并提出了宝贵建 议,在此向他们表示谢意。 Vrije大学的许多学生测试了CD-ROM中MINIX的 β版本,他们是:Ahmed Batou, Gora n Dokic, Peter Gijzel, Thomer Gil, Dennis Grimbergen, Roderick Groesbeek, Woute r haring, Guido Kollerie, Mark Lassche, Raymond Ris, Frans ter Borg, Alex van B allegooy, Ries van der Velden, Alexander Wels以及Thomas Zeeman。 我们对他们细致的 工作和详尽的报告致以衷心的感谢。 阿尔伯特·S·伍德豪尔向他从前的几位学生表示感谢,特别是Hampshire学院的Peter W. Young ,Nacional Autonoma de Nicaragua大学的Maria Isabel Sanchez 和William Pud dy Vargas。 最后要向我们的家庭成员表示感谢。 Suzanne 已是第十次在我埋头写作时给我支持,对 Barbara是第九次,Marvin是第八次,甚至小Bram也是第四次了。他们的支持和爱心对我非 常重要。(坦尼鲍姆) 至于阿尔伯特的Barbara,这倒是第一次,假如没有她的支持,耐心和幽默,我们是不 可能完成这一工作的,对我的儿子Gordon而言,由于在编写本书时,他大部分时间都不在 家中,而是在大学学习,因此是非常幸运的。 但是他的理解和关心深深吸引着我从事本书的 编写工作,有这样一个儿子是令人非常愉快的。(伍德豪尔) 安德鲁.S.坦尼鲍姆 阿尔伯特.S.伍德豪尔 译 序 坦尼鲍姆教授是国际知名的计算机科学家和教育家。 他在操作系统、 分布式系统以及计 算机网络领域都有很深的造诣。 自八十年代以来,他已先后出版了一系列面向大学生和研究 生的教材性质的专著,并被世界各国的许多大学广泛采用。 这本书就是他的最新专著之一。 操作系统是计算机系统中最核心和最底层的软件,对操作系统的深入学习关系到对整 个系统运作机制的全面理解,因此一本好教材也显得愈发重要。 本书的英文版出版于1997年, 其中涵盖了操作系统课程的所有内容,即传统上的进程管理、 存储器管理、 文件管理和设备 管理。 同时其中又包含了许多新内容,如线程、 基于消息传递的系统构造模型、 日志结构文件 系统、 安全和保护机制、 RAM盘及CD-ROM设备等,而用作例子的CPU则为Interl Pentium。 这 使得读者一方面能够学习操作系统的经典内容,另一方面又能够了解和跟踪当前的最新技 术和研究成果。 本书的另一个特点是基本原理与具体实例,即MINIX紧密结合。第2到第5章的前半部分 讲述原理,后半部分则详细地解释这些原理在MINIX的设计和实现中的应用。通过阅读这些 部分能够把握MINIX源代码的组织方式,并理解那些很关键或者很难懂的代码。这部分内容 非常翔实,有时甚至逐行地解释附录中所列的源程序。 对操作系统课程多年的授课经验以及 相关的科研工作使我们认识到:详细地剖析一个象MINIX这样的操作系统对于掌握操作系统 设计与实现的精髓是大有裨益的。 正因为上述原因,我们真切地感受到将这本书翻译、 介绍给国内读者将是一件非常有意 义的事,衷心希望我们付出的劳动能对国内的操作系统教学和实践有所帮助和促进。 本书的第一章,第二章,第三章由王鹏翻译,刘福岩和陆宁也参加了部分工作;第四 章由朱鹏翻译;第五章由敖青云翻译。全书由尤晋元教授审校并统稿。 在整个翻译过程中,上海交通大学计算机系系统软件研究室的师生给予了许多帮助。 并 且在计算机系95级本科生的操作系统课程中进行了试用,许多学生提出了很好的建议,在 此向他们表示衷心的感谢。 特别要感谢本书的责任编辑邓又强先生,本书的顺利出版与他的辛勤劳动和热情支持 是分不开的。 虽然在翻译过程中我们尽力恪守“信,达,雅”的准则,但不当和疏漏之处在所难免, 敬请读者提出宝贵建议。 译 者 1998年4月于上海交通大学 目 录 Operating Systems: Design and Implementation Second Edition..................1 作者简介.................................................................2 前 言....................................................................3 译 序....................................................................5 目 录....................................................................6 第一章 引 论...............................................................12 1.1 什么是操作系统......................................................13 1.1.1 操作系统作为虚拟机............................................13 1.1.2 操作系统作为资源管理器........................................14 1.2 操作系统发展历史....................................................14 1.2.1 第一代计算机(1945-1955):真空管和插板......................15 1.2.2 第二代计算机(1955-1965):晶体管和批处理系统................15 1.2.3 第三代计算机(1965-1980):集成电路芯片和多道程序............17 1.2.4 第四代计算机(1980-现在):个人计算机........................19 1.2.5 MINIX 的历史...................................................20 1.3 操作系统基本概念....................................................21 1.3.1 进程..........................................................22 1.3.2 文件..........................................................23 1.3.3 外壳(shell).................................................26 1.4 系统调用............................................................26 1.4.1 进程管理系统调用..............................................28 1.4.2 信号管理系统调用..............................................30 1.4.3 文件管理系统调用..............................................32 1.4.4 目录管理系统调用..............................................35 1.4.5 权限管理系统调用..............................................37 1.4.6 时间管理系统调用..............................................37 1.5 操作系统结构........................................................38 1.5.1 整体式系统....................................................38 1.5.2 层次式系统....................................................39 1.5.3 虚拟机系统....................................................40 1.5.4 客户/服务器系统...............................................42 1.6 各章节内容简介......................................................43 1.7 小结................................................................43 习 题..................................................................44 第二章 进 程..............................................................45 2.1 进程介绍 ...........................................................45 2.1.1 进程模型......................................................45 2.1.2 进程的实现.....................................................48 2.1.3 线程...........................................................50 2.2 进程间通信...........................................................52 2.2.1 竞争条件 ......................................................52 2.2.2 临界区.........................................................53 2.2.3 忙等待的互斥...................................................54 2.2.4 睡眠和唤醒....................................................57 2.2.5 信号量.........................................................60 2.2.6 管程...........................................................62 2.2.7 消息传递 .....................................................65 2.3 经典 IPC 问题........................................................67 2.3.1 哲学家进餐问题................................................67 2.3.2 读者-写者问题................................................69 2.3.3 理发师睡觉问题................................................71 2.4 进程调度.............................................................72 2.4.1 时间片轮转调度................................................73 2.4.2 优先级调度....................................................74 2.4.3 多重队列......................................................75 2.4.4 最短作业优先..................................................76 2.4.5 保证调度算法..................................................77 2.4.6 彩票调度算法..................................................77 2.4.7 实时调度......................................................78 2.4.8 两级调度法....................................................79 2.4.9 策略与机制....................................................80 2.5 MINIX 进程概述 ......................................................80 2.5.1 MINIX 的内部结构...............................................80 2.5.2 MINIX 中的进程管理.............................................82 2.5.3 MINIX 中的进程间通信...........................................83 2.5.4 MINIX 中的进程调度.............................................83 2.6 MINIX 中进程的实现...................................................84 2.6.1 MINIX 源代码的组织.............................................84 2.6.2 公共头文件.....................................................87 2.6.3 MINIX 头文件...................................................90 2.6.4 进程数据结构和头文件...........................................93 2.6.5 引导 MINIX.....................................................98 2.6.6 系统初始化....................................................100 2.6.7 MINIX 的中断处理..............................................104 2.6.8 MINIX 的进程间通信............................................110 2.6.9 MINIX 的进程调度..............................................112 2.6.10 与硬件相关的核心支持........................................113 2.6.11 公用程序和核心库............................................115 2.7 小结...............................................................117 习 题.................................................................118 第三章 输入/输出系统......................................................121 3.1 I/O 硬件原理.......................................................121 3.1.1 I/O 设备.....................................................122 3.1.2 设备控制器..................................................122 3.1.3 存储器直接存取 DMA...........................................124 3.2 I/O 软件原理.......................................................126 3.2.1 I/O 软件的目标...............................................126 3.2.2 中断处理程序................................................127 3.2.3 设备驱动程序................................................127 3.2.4 与硬件无关的 I/O 软件........................................128 3.2.5 用户空间的 I/O 软件..........................................130 3.3 死锁...............................................................131 3.3.1 资源........................................................131 3.3.2 死锁原理....................................................132 3.3.3 鸵鸟算法....................................................135 3.3.4 死锁检测和恢复..............................................136 3.3.5 死锁预防....................................................136 3.3.6 死锁避免....................................................138 3.4 MINIX I/O 系统概述................................................141 3.4.1 MINIX 的中断处理程序.........................................141 3.4.2 MINIX 的设备驱动程序.........................................142 3.4.3 MINIX 中与设备无关的 I/O 软件.................................145 3.4.4 MINIX 中用户级 I/O 软件.......................................145 3.4.5 MINIX 的死锁处理.............................................145 3.5 MINIX 中的块设备...................................................146 3.5.1 MINIX 中块设备驱动程序概述...................................146 3.5.2 公用块设备驱动程序软件......................................148 3.5.3 驱动程序库..................................................150 3.6 RAM 盘.............................................................151 3.6.1 RAM 盘硬件和软件............................................152 3.6.2 MINIX 中的 RAM 盘驱动程序概述.................................153 3.6.3 MINIX 中的 RAM 盘驱动程序实现.................................154 3.7 磁盘................................................................155 3.7.1 磁盘硬件....................................................155 3.7.2 磁盘软件....................................................157 3.7.3 MINIX 中的硬盘驱动程序概述...................................161 3.7.4 MINIX 中的硬盘驱动程序实现...................................163 3.7.5 软盘处理....................................................168 3.8 时钟...............................................................170 3.8.1 时钟硬件....................................................170 3.8.2 时钟软件....................................................171 3.8.3 MINIX 时钟驱动程序概述.......................................173 3.8.4 MINIX 时钟驱动程序的实现.....................................176 3.9 终端................................................................179 3.9.1 终端硬件....................................................179 3.9.2 终端软件....................................................183 3.9.3 MINIX 中终端驱动程序概述.....................................189 3.9.4 设备无关终端驱动程序的实现..................................200 3.9.5 键盘驱动程序的实现..........................................211 3.9.6 显示驱动程序的实现..........................................215 3.10 MINIX 中的系统任务................................................220 3.11 小结.............................................................226 习 题.................................................................226 第四章 存储器管理..........................................................229 4.1 基本的内存管理......................................................230 4.1.1 没有交换和分页的单道程序......................................230 4.1.2 固定分区的多道程序............................................231 4.2 交换................................................................232 4.2.1 使用位图的内存管理............................................234 4.2.2 使用链表的内存管理............................................235 4.3 虚拟存储器.........................................................237 4.3.1 分页..........................................................237 4.3.2 页表..........................................................241 4.3.3 TLBs—翻译后援存储器(Translation Lookaside Buffers)..........244 4.3.4 逆向页表......................................................246 4.4 页面替换算法........................................................247 4.4.1 最优页面替换算法..............................................247 4.4.2 最近未使用页面替换算法........................................247 4.4.3 先进先出页面替换算法..........................................248 4.4.4 第二次机会页面替换算法........................................249 4.4.5 时钟页面替换算法..............................................249 4.4.6 最久未使用页面替换算法 .......................................250 4.4.7 用软件模拟 LRU................................................251 4.5 分页系统中的设计问题................................................252 4.5.1 工作集模型....................................................253 4.5.2 局部与全局分配策略............................................253 4.5.3 页面大小......................................................255 4.5.4 虚拟存储器界面................................................256 4.6 分段...............................................................257 4.6.1 纯分段系统的实现.............................................260 4.6.2 分段和分页结合:MULTICS......................................260 4.6.3 分段和分页结合:Intel 的 Pentium.............................263 4.7 MINIX 内存管理概览..................................................268 4.7.1 内存布局......................................................268 4.7.2 消息处理......................................................271 4.7.3 内存管理器数据结构和算法......................................272 4.7.4 FORK、EXIT、和 WAIT 系统调用..................................275 4.7.5 EXEC 系统调用.................................................276 4.7.6 BRK 系统调用..................................................279 4.7.7 信号处理......................................................279 4.7.8 其他系统调用..................................................284 4.8 MINIX 中内存管理的实现..............................................284 4.9 第五章 5.1 5.2 5.3 5.4 5.5 5.6 4.8.1 头文件和数据结构.............................................285 4.8.2 主程序.......................................................286 4.8.3 FORK、EXIT、和 WAIT 的实现....................................287 4.8.4 EXEC 的实现...................................................289 4.8.5 BRK 的实现....................................................290 4.8.6 信号处理的实现...............................................290 4.8.7 其他系统调用的实现...........................................295 4.8.8 内存管理器工具...............................................297 小结...............................................................298 习 题.............................................................299 文件系统...........................................................302 文件...............................................................302 5.1.1 文件命名.....................................................303 5.1.2 文件结构.....................................................304 5.1.3 文件类型.....................................................305 5.1.4 文件存取.....................................................307 5.1.5 文件属性.....................................................307 5.1.6 文件操作.....................................................309 目录...............................................................309 5.2.1 层次目录系统.................................................310 5.2.2 路径名.......................................................311 5.2.3 目录操作.....................................................313 文件系统的实现.....................................................313 5.3.1 实现文件.....................................................313 5.3.2 实现目录.....................................................316 5.3.3 磁盘空间管理.................................................319 5.3.4 文件系统的可靠性.............................................320 5.3.5 文件系统性能.................................................324 5.3.6 日志结构的文件系统...........................................326 安全性.............................................................327 5.4.1 安全环境.....................................................328 5.4.2 著名的安全缺陷...............................................329 5.4.3 一般的安全性攻击............................................331 5.4.4 安全性的设计原则.............................................332 5.4.5 用户验证.....................................................333 保护机制...........................................................336 5.5.1 保护域.......................................................336 5.5.2 存取控制表...................................................337 5.5.3 权限.........................................................338 5.5.4 隐藏通道......................................................339 MINIX 文件系统概述.................................................341 5.6.1 消息.........................................................341 5.6.2 文件系统布局.................................................342 5.6.3 位图.........................................................345 5.7 5.8 习 第六章 6.1 6.2 5.6.4 i-节点......................................................346 5.6.5 块高速缓存...................................................348 5.6.6 目录和路径...................................................349 5.6.7 文件描述符...................................................350 5.6.8 文件锁.......................................................352 5.6.9 管道和设备文件...............................................352 5.6.10 一个例子:READ 系统调用......................................353 MINIX 文件系统的实现...............................................354 5.7.1 头文件和全局变量.............................................354 5.7.2 表的管理.....................................................356 5.7.3 主程序.......................................................363 5.7.4 对单个文件的操作.............................................365 5.7.5 目录和路径...................................................371 5.7.6 其他系统调用.................................................374 5.7.7 I/O 设备界面..................................................376 5.7.8 一般的实用程序...............................................377 小结...............................................................378 题.................................................................378 阅读材料和参考文献.................................................381 推荐的进一步阅读材料...............................................381 6.1.1 介绍和概论...................................................381 6.1.2 进程.........................................................382 6.1.4 存储器管理...................................................383 按字母排序的参考文献...............................................384 第一章 引 论 计算机如果离开了软件将成为一堆废铜烂铁。 有了软件,计算机可以对信息进行存储、 处理和检索,可以显示多媒体文档、 搜索Internet并完成其他工作。 计算机软件大致分为两 类:系统软件和应用软件。 系统软件管理计算机本身及应用程序;应用软件执行用户最终所 需要的功能。 最基本的系统软件是操作系统(operating system),它控制计算机的所有资 源并提供开发应用程序的基础。 现代计算机系统包含一个或多个处理器、 若干内存(常称为RAM-随机存取存储器)、 磁 盘、 打印机、 网络接口及其他输入/输出设备。 编写一个程序来管理所有这些器件以正确地使 用它们,即使不考虑优化也是一件很困难的事情。 如果每个程序员都必须处理磁盘如何工作, 再加上每读一个磁盘块都有几十种因素可能导致操作出错,那么很多程序简直没法写。 许多年以前人们就认识到必须找到某种方法将硬件的复杂性同程序员分离开来。 经过不 断探索和改进,目前采用的方法是在裸机上加载一层软件来管理整个系统,同时给用户提 供一个更容易理解和进行程序设计的接口,这被称为虚拟机(virtual machine)。这样一 层软件就是操作系统。 这种处理方式如图1-1所示。 底层是硬件,它本身可能包括两层或多层。 最低一层是物 理器件,包括集成电路芯片、 连线、 电源、 监视器等,它们的构造和工作方式属于电气工程师 的范围。 图 1-1 计算机系统由硬件、系统程序和应用程序组成。 接着是微程序(microprogram),通常存放在只读存储器中,它是一层很原始的软件, 用来控制设备并向上一层提供一个更清晰的接口。 微程序实际上是一个解释器,它先取得机 器语言指令,如ADD, MOVE和JUMP等,然后通过一个动作序列来执行这些指令。 例如为了执 行一条ADD指令,微程序必须先确定运算数据的位置,然后取数,相加,最后存放得数。由 微程序解释执行的这一套指令称为机器语言。 机器语言并不是硬件的组成部分,但硬件制造 商通常在手册中给出机器语言的完整描述,所以许多人将它认作真正的“计算机”。 采用精简指令集计算机(RISC)技术的计算机没有微程序层,其机器指令通过硬件逻 辑直接执行。例如Motorola 680X0有微程序,而IBM PowerPC 则没有。 机器语言典型地有50到100条指令,大多数用来完成数据传送、算术运算和数值比较等 操作。 在这个层次上,通过向特殊的设备寄存器写特定的数值来控制输入/输出设备。 例如将 磁盘地址、 内存地址、 读字节数和操作类型(读/写)等值写入特定的寄存器便可完成硬盘读 操作。 实际操作往往需要更多的参数,而操作完成后的返回状态也非常复杂。 进一步而言, 对于许多I/O设备,时序在程序设计中的作用非常重要。 操作系统的主要功能之一就是将所有这些复杂性隐藏起来,同时为程序员提供一套更 加方便的指令,比如,“从文件中读一个数据块”在概念上比低层的“移动磁头臂,等待 旋转延迟”之类的细节来得简单、方便。 在操作系统之上是其他系统软件,包括命令解释器(shell)、 窗口系统、 编译器、 编辑 器及类似的独立于应用的程序。 要注意它们本身并不是操作系统的组成部分,尽管它们通常 由计算机厂商提供。 这一点很重要,操作系统专指在核心态(kernel mode),或称管态(s upervisor mode)下运行的软件,它受硬件保护而免遭用户的篡改。 编译器和编辑器运行在 用户态(user mode)。如果用户不喜欢某一个编译器,他可以自己重写一个,但他却不可 以写一个磁盘中断处理程序 - 因为这是操作系统的一部分,而且硬件阻止用户对它进行 修改。 系统软件之上是应用软件,这些软件可以是购买的或者是用户自行开发的,它们用来 解决特定的问题,如字处理、表格处理、工程计算或者电子游戏等。 1.1 什么是操作系统 多数计算机用户都使用过操作系统,但要精确地给出操作系统的定义却很困难,部分 原因是操作系统完成两项相对独立的任务,下面我们逐项进行讨论。 ...展开详情收缩
2010-09-06 上传大小:5.93MB
想读
分享
收藏 (8) 举报

评论 共35条

bingxuedoudou 图很多,实例的解释较易理解。可用以当主要学习书(如恐龙书)的参考资料。
2018-12-05
回复
mmuxin 很好的资料,楼主辛苦了!
2016-12-12
回复
xiaoyan19891227 书是出了名的,学习
2016-09-18
回复
操作系统设计实现(上下册第二版中文).pdf

包含上下册 ~ 塔嫩鲍姆 (作者), 等 (作者), 陈渝 (译者), 谌卫军 (译者) 作者简介 作者:(美)塔嫩鲍姆 等 译者:陈渝 谌卫军 Andrew S.Tanenbaum分别在麻省理工学院加州大学伯克利分校获得学士与博士学位。现任荷兰阿姆斯特丹Vrije大学计算机教授并领导着一个计算机系统研究小组。到2005年1月卸任为止,他担任计算与成像高级学院院长一职已有12年。 Tanenbaum过去的研究领域包括编译器、操作系统、网络和局域分布式系统,而现在的研究方向则主要为计算机安全,尤其是操作系统、网络以及分布式系统的安全。在所有这些研究领域,Tanenbaum发表了超过100篇论文,并出版了5本书籍。 Tanenbaum教授还编写了大量软件。他是Amsterdam Compiler Kit(一种广泛使用的、用于编写可移植编译器以及MINIX的工具集)的主要开发者,而该系统则是Linux诞生的灵感与基础。与他的博士生及程序员一起,他帮助设计了Amoeba分布式操作系统(一个基于微内核的、高性能局域分布式操作系统)。此后,他是Globe(一个可处理10亿用户的广域分布式操作系统)的设计者之一。所有这些软件现在均可在互联网上免费获得。 他的博士生在毕业后均取得了很大的成绩,他为此感到非常骄傲。 Tanenbaum教授是ACM会士、IEEE会士以及荷兰皇家科学艺术院院士。他还是1994年度ACM Karl V.Karlstrom杰出教育家奖的获得者,1997年度ACM/SIGCSE计算机科学教育杰出贡献奖的获得者,以及2002年度优秀教材奖的获得者。2004年,他被推选为荷兰皇家学会的五位新学会教授之一

立即下载
FreeBSD操作系统设计实现二版 英文原版

想要了解FreeBSD的设计和实现,本书绝对不容错过!

立即下载
操作系统设计实现-第二版_中文.pdf

非常好的操作系统文档资料,有参考价值,有需要可以下载,不要积分的

立即下载
操作系统教程 Minix 设计实现(第一版-中文) PDF

Minix3交流群:11923161,欢迎minix3爱好者加入共同交流学习 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 操作系统教程 Minix 设计与实现(第一版-中文) PDF,好不容易从超星上找到的,历尽千辛万苦转换成了pdf,相当的清析。 里面详细的介绍了minix 1.0的原理和如何的实现,还给出了重新编译minix的方法,并在书本的后面附加了完整的minix1.0的源码,是一本难得的学习操作系统的相当好的书。

立即下载
操作系统设计实现 第3版 上下两册全

本书是关于操作系统的权威教材。大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。本册详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入、输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等;此外,还详细讨论了一个特殊的操作系统MINIX 3(一个与UNIX兼容的操作系统),并提供了该系统的源代码(见本书下册),以便于读者仔细研究。这种安排不仅可让读者了解操作系统的基本原理,而且可让读者了解到这些基本原理是如何应用到真实的操作系统中去的。 本书适用于高校计算机专业的学生,也可供程序设计人员、工程技术人员、系统架构师等相关人员参考。

立即下载
操作系统设计实现(第三版)下册

原书名:Operating Systems Design and Implementation (3rd Edition) 原出版社: Prentice Hall 作者: (美)Andrew S.Tanenbaum Albert S.Woodhull 译者: 陈渝 谌卫军 丛书名: 国外计算机科学教材系列 出版社:电子工业出版社 ISBN:9787121026485 上架时间:2007-4-5 出版日期:2007 年3月 开本:16开 页码:357 版次:3-1 所属分类:计算机 &gt; 操作系统 &gt; 操作系统理论 &gt; 综合 教材 &gt; 研究生/本科/专科教材 &gt; 工学 &gt; 计算机 教材 &gt; 计算机教材 &gt; 本科/研究生 &gt; 计算机专业教材 &gt; 计算机专业课程 &gt; 操作系统 内容简介 书籍 计算机书籍   本书是关于操作系统的权威教材,详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入/输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等。大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了较好的折中。本册给出了上册提到的minix3操作系统的安装方法以及详细的原代码,并附有光盘。    本书适用于高校计算机专业的学生,也可供程序设计人员、工程技术人员、系统架构师等相关人员参考。 作译者 andrew s.tanenbaum分别在麻省理工学院加州大学伯克利分校获得学士与博士学位。现任荷兰阿姆斯特丹vrije大学计算机教授并领导着一个计算机系统研究小组。到2005年1月卸任为止,他担任计算与成像高级学院院长一职已有12年。 tanenbaum过去的研究领域包括编译器、操作系统、网络和局域分布式系统,而现在的研究方向则主要为计算机安全,尤其是操作系统、网络以及分布式系统的安全。在所有这些研究领域,tanenbaum发表了超过100篇论文,并出版了5本书籍。 tanenbaum教授还编写了大量软件。他是amsterdam compiler kit(一种广泛使用的、用于编写可移植编译器以及minix的工具集)的主要开发者,而该系统则是linux诞生的灵感与基础。与他的博士生及程序员一起,他帮助设计了amoeba分布式操作系统(一个基于微内核的、高性能局域分布式操作系统)。此后,他是globe(一个可处理10亿用户的广域分布式操作系统)的设计者之一。所有这些软件现在均可在互联网上免费获得。 他的博士生在毕业后均取得了很大的成绩,他为此感到非常骄傲。 tanenbaum教授是acm会士、ieee会士以及荷兰皇家科学艺术院院士。他还是1994年度acm karl v.karlstrom杰出教育家奖的获得者,1997年度acm/sigcse计算机科学教育杰出贡献奖的获得者,以及2002年度优秀教材奖的获得者。2004年,他被推选为荷兰皇家学会的五位新学会教授之一。 目录 附录a 安装minix3 附录b minix源码 附录c 文件索引

立即下载
操作系统设计实现第三版pdf

操作系统设计与实现第三版的文字pdf版,带书签,绝对清晰

立即下载
FreeBSD操作系统设计实现2nd 完整书签英文版

The Design and Implementation of the FreeBSD Operating System 2nd akp

立即下载
数字逻辑电路与系统设计课后答案完全版

完全版数字逻辑电路与系统设计课后答案(蒋立平版),不在是单号答案,仅供参考学习

立即下载
《计算机操作系统教程》习题详解(第二版

1. 硬件将处理机划分为两种状态,即管态和目态,这样做给操作系统设计带来什么好处 ? 答:便于设计安全可靠的操作系统。管态和目态是计算机硬件为保护操作系统免受用户程序的干扰和破坏而引入的两种状态。通常操作系统在管态下运行,可以执行所有机器指令;而用户程序在目态下运行,只能执行非特权指令。如果用户程序企图在目态下执行特权指令,将会引起保护性中断,由操作系统终止该程序的执行,从而保护了操作系统。 2. 何为特权指令?举例说明之。如果允许用户执行特权指令,会带来什么后果? 答:只能在管态下才能执行的指令称为特权指令。如开关中断、置程序状态寄存器等。如果允许用户执行特权指令,它将不仅影响当前运行的程序,而且还有可能影响操作系统的正常运行,甚至整个系统。3. 中断向量在机器中的存储位置是由硬件确定的,还是由软件确定的 ? 答:中断向量在机器中的位置是由硬件确定的。例如,在 INTEL 80x86 CPU 中,内存空间0x00000——0x003ff为中断向量空间。4. 中断向量的内容是由操作系统程序确定的还是由用户程序确定的? 答:中断向量的内容是由操作系统程序确定的。向量的内容包括中断处理程序的入口地址和程序状态字(中断处理程序运行环境),中断处理程序是由操作系统装入内存的,操作系统将根据装入的实际地址和该中断处理程序的运行环境来填写中断向量。5. 中断向量内的处理机状态位应当标明是管态还是目态 ? 为什么? 答:应当标明是管态。 该状态由系统初试化程序设置,这样才能保证中断发生后进入操作系统规定的中断处理程序。 6. 中断和程序并发之间的关系是什么? 答:中断是程序并发的必要条件。如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处机进行重新分配,一个程序将一直运行到结束而不会被打断。7. 说明“栈”和“堆”的差别. 答:栈是一块按后进先出(FIFO)规则访问的存储区域,用来实现中断嵌套和子程序调用的参数和返回断点。而堆虽然是一块存储区域,但是对堆的访问是任意的,没有后进先出的要求,堆主要用来为动态变量分配存储空间。 8. 何为系统栈?何为用户栈?系统栈有何用途?用户栈有何用途? 答:系统栈是内存中操作系统空间的一个固定区域;用户栈是内存中用户空间的一个区域。系统栈的作用:(1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出;(2)保存操作系统子程序间相互调用的参数、返回值、返回点、以及子程序的局部变量。用户栈的作用:用于保存用户进程的子程序间相互调用的参数、返回值、返回点、以及子程序的局部变量。9. 用户堆栈段的长度为何无法确定 ? 答:用户堆栈段的长度主要取决于两个因素:(1)用户进程(线程)中子程序(函数)之间的嵌套调用深度;(2)子程序参数和局部变量的数量及类型;(3)动态变量的使用。这些在进程(线程)运行前无法确定,由此导致用户堆栈段的长度无法预先准确确定。 10堆栈段的动态扩充为何可能导致进程空间的搬迁? 答:堆栈段的扩充需要在原来进程空间大小的基础上增添新的存储区域,而且通常要求与原来存储区域连续。由于原存放位置处可扩展的区域可能已经被其它进程占用,故可能需要将整个进程空间搬迁到另外一个区域,以实现地址空间扩展要求。11. 何谓并行 ? 何谓并发? 在单处理机系统中,下述并行和并发现象哪些可能发生,哪些不会发生 ? (1) 进程与进程之间的并行; (2) 进程与进程之间的并发; (3) 处理机与设备之间的并行; (4) 处理机与通道之间的并行; (5) 通道与通道之间的并行; (6) 设备与设备之间的并行; 答:所谓并行是指同一时刻同时进行,进程并行需要多处理器的支持;所谓并发,是指在一段时间内,多个进程都在向前推进,而在同一时刻,可能只有一个进程在执行,多个进程轮流使用处理器。 在单处理器传统中,可能发生的并行和并发现象如下: (2) 进程与进程之间的并发。例如,在Windows操作系统中,mp3播放进程和Word字处理进程可以并发执行,这样用户就可以边听音乐边写文章了。 (3) 处理机与设备之间的并行。例如,当处理机进行科学运算时,打印机可以打印文档。 (4) 处理机与通道之间的并行。通道程序的执行可与处理机的操作并行。 (5) 通道与通道之间的并行。通常一个系统中有多个通道,这些通道可以并行地执行相应的通道程序。 (6) 设备与设备之间的并行。例如打印机打印文档时,磁带机在输入数据。 12. 何谓作业? 它包括哪几个部分? 各部分用途是什么?答:所谓作业是指用户要求计算机系统为其完成的计算任务的集合。一个作业通常包括程序、程序所处理的数据以及作业说明书。程序用来完成特定的功能,数据是程序处理的对象,作业说明书用来说明作业处理的步骤。13. 从透明性和资源共享两方面,说明网络操作系统与分布式操作系统之间的差别。 答:从透明性上看,分布式操作系统优于网络操作系统。网络用户能够感觉到所访问的资源是在本地还是在远地;而在分布式系统中,用户感觉不到所访问的资源是否在本地,分布式操作系统掩盖了资源在地理位置上的差异。 从资源共享上看 ,分布式操作系统比网络操作系统能共享更多的资源。在网络操作系统中,一个计算任务不能由一台主机任意迁移到另外一台主机上运行;而在分布式操作系统中,所有作业可以由一台主机任意迁移到另外一台主机上处理,即可实现处理机资源的共享,从而达到整个系统的负载平衡。 14. 为什么构成分布式系统的主机一般都是相同的或兼容的?答:这样更有利于进程的动态迁移。如果主机不兼容,则在一台主机上能运行的进程,因所用指令系统不同,在另一台主机上可能无法运行,导致进程难于在不同主机间迁移,使得分布式系统难于实现负载平衡。构成分布式系统的主机一般都是相同的或兼容的。15. 为什么嵌入式操作系统通常采用微内核结构?   答:嵌入式操作系统与一般操作系统相比具有比较明显的差别 : (1)嵌入式操作系统规模一般较小,因为一般硬件配置较低,而且对操作系统提供的功能要求也不高。(2)应用领域差别大,对于不同的应用领域其硬件环境和设备配置情况有明显差别。 所以,嵌入式操作系统一般采用微内核 ( micro kernel )结构,包括如下基本功能: (1)处理机调度;(2)基本内存管理;(3)通讯机制;(4)电源管理。在这些基本成分之上可进行扩展,以适应不同应用目标。

立即下载
嵌入式系统设计与应用(第2版) 习题答案 清华大学出版社

嵌入式系统与应用 第二版 清华大学出版社 张思民

立即下载
操作系统设计实现(第三版)电子书 源代码

操作系统设计与实现(第三版)电子书 源代码

立即下载
UNIX操作系统设计 Bach PDF

作者: Maurice J.Bach 出版社: 机械工业出版社 原作名: The Design of the UNIX Operating System 译者: 陈葆珏 书不是太厚,但是应该讲得基本上全部都讲到了。在看内核剖析时两本最主要的参考书之一。怎么说呢,这本书条理清晰,举例简单易懂,还有算法的实现伪码。总之一句话,深入浅出的好书。 对于学操作系统原理来说,必须要看的一本书。

立即下载
操作系统设计:Xinu方法 PDF

作者: (美)Douglas Comer 出版社: 机械工业出版社 原作名: Operating System Design: The Xinu Approach, Linksys Version 译者: 邹恒明 / 周亮 / 曹浩 / 刘正邦 等 本书以Xinu(一个小型简洁的操作系统)为例,全面介绍操作系统设计方面的知识。本书着重讨论用于嵌入式设备的微内核操作系统,采用的方法是在现有的操作系统课程中纳入更多的嵌入式处理内容,而非引入一门教读者如何在嵌入式系统上编程的新课程。 本书从底层机器开始,一步步地设计和实现一个小型但优雅的操作系统Xinu,指导读者通过实用、简单的原语来构造传统的基于进程的操作系统。本书回顾了主要的系统组件,并利用分层设计范式,以一种有序、易于理解的方式组织内容。 作者的网站www.xinu.cs.purdue.edu提供了便于学生搭建实验环境的软件和资料。 本书特点 解释每个操作系统抽象的产生,展示如何通过简洁高效的设计来组织这些抽象。 层层剥离系统的每一层,从原始硬件到可运行的操作系统。 涵盖系统的每一部分,这样读者看到的不是一两个部分如何交互,而是整个系统如何组合在一起。 提供文中描述的所有部分的源代码,方便读者检查、修改、工具化、测量、扩展或者将其移植到其他架构。 阐明操作系统的每一部分是如何满足设计的,以帮助读者理解可选的设计方案。

立即下载
数字集成电路系统与设计(第二版).pdf )

数字集成电路系统与设计(第二版).pdf )

立即下载
操作系统设计实现二版(中文+英文)

本书为操作系统经典教材,建议大家阅读英文原版,遇到难懂的地方可参考中文版。

立即下载
FreeBSD操作系统设计实现 第2版(英文完整版)

本书是FreeBSD内核完整的技术指南,在上一版的基础上进行了全面更新,以涵盖版本FreeBSD 5和版本11之间的所有重大改进。本书大约有1/3的内容是全新的,还有1/3的内容进行了完全重写。

立即下载
FREEBSD操作系统设计实现 清晰中文版 (附英文原版) (共2个分卷) 2

FREEBSD操作系统设计与实现 清晰中文版 (附英文原版) (共2个分卷) 2

立即下载
操作系统设计实现-第二版_中文(文字版)

世界著名的操作系统教学书籍 Operating Systems: Design and Implementation Second Editio n . . . . . . . . . . . . . . . . . . 1 作者简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 前 言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 译 序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 目 录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 第一章 引 论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1 什么是操作系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1.1 操作系统作为虚拟机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1.2 操作系统作为资源管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2 操作系统发展历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2.1 第一代计算机( 194 5 - 195 5 ):真空管和插板 . . . . . . . . . . . . . . . . . . . . . . 15 1.2.2 第二代计算机( 195 5 - 196 5 ):晶体管和批处理系统 . . . . . . . . . . . . . . . . 15 1.2.3 第三代计算机( 196 5 - 198 0 ):集成电路芯片和多道程序 . . . . . . . . . . . . 17 1.2.4 第四代计算机( 198 0 -现在):个人计算机 . . . . . . . . . . . . . . . . . . . . . . . . 19 1.2.5 MINI X 的历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.3 操作系统基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.3.1 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.3.2 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.3.3 外壳( shel l ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.1 进程管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.4.2 信号管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.4.3 文件管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.4.4 目录管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.4.5 权限管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.4.6 时间管理系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.5 操作系统结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.5.1 整体式系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.5.2 层次式系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 1.5.3 虚拟机系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.5.4 客户 / 服务器系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 1.6 各章节内容简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 1.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 习 题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 第二章 进 程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.1 进程介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.1.1 进程模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.1. 2 进程的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.1. 3 线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2. 2 进程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2. 1 竞争条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.2. 2 临界区 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.2. 3 忙等待的互斥 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.2.4 睡眠和唤醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.2. 5 信号量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.2. 6 管程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 2.2. 7 消息传递 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.3 经典 IP C 问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.3.1 哲学家进餐问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.3.2 读者-写者问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.3.3 理发师睡觉问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2. 4 进程调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 2.4.1 时间片轮转调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.4.2 优先级调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.4.3 多重队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.4.4 最短作业优先 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2.4.5 保证调度算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 2.4.6 彩票调度算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 2.4.7 实时调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 2.4.8 两级调度法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.4.9 策略与机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 2.5 MINI X 进程概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 2.5.1 MINI X 的内部结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 2.5.2 MINI X 中的进程管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 2.5.3 MINI X 中的进程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 2.5.4 MINI X 中的进程调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 2.6 MINI X 中进程的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 2.6.1 MINI X 源代码的组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 2.6. 2 公共头文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 2.6.3 MINI X 头文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.6. 4 进程数据结构和头文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.6. 5 引导 MINI X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 2.6. 6 系统初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 0 2.6.7 MINI X 的中断处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4 2.6.8 MINI X 的进程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 0 2.6.9 MINI X 的进程调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 2.6.10 与硬件相关的核心支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3 2.6.11 公用程序和核心库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 2.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 7 习 题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 8 第三章 输入 / 输出系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1 3.1 I/ O 硬件原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1 3.1.1 I/ O 设备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 3.1.2 设备控制器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 3.1.3 存储器直接存取 DM A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4 3.2 I/ O 软件原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6 3.2.1 I/ O 软件的目标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6 3.2.2 中断处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7 3.2.3 设备驱动程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7 3.2.4 与硬件无关的 I/ O 软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 8 3.2.5 用户空间的 I/ O 软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 0 3.3 死锁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1 3.3.1 资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1 3.3.2 死锁原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 3.3.3 鸵鸟算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5 3.3.4 死锁检测和恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 3.3.5 死锁预防 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 3.3.6 死锁避免 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 8 3.4 MINIX I/ O 系统概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1 3.4.1 MINI X 的中断处理程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1 3.4.2 MINI X 的设备驱动程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 3.4.3 MINI X 中与设备无关的 I/ O 软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 3.4.4 MINI X 中用户级 I/ O 软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 3.4.5 MINI X 的死锁处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 3.5 MINI X 中的块设备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 3.5.1 MINI X 中块设备驱动程序概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 3.5.2 公用块设备驱动程序软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8 3.5.3 驱动程序库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 0 3.6 RA M 盘 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1 3.6.1 RAM 盘硬件和软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2 3.6.2 MINI X 中的 RA M 盘驱动程序概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 3.6.3 MINI X 中的 RA M 盘驱动程序实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4 3. 7 磁盘 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5 3.7.1 磁盘硬件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5 3.7.2 磁盘软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 7 3.7.3 MINI X 中的硬盘驱动程序概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1 3.7.4 MINI X 中的硬盘驱动程序实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 3.7.5 软盘处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8 3.8 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 0 3.8.1 时钟硬件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 0 3.8.2 时钟软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1 3.8.3 MINI X 时钟驱动程序概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3 3.8.4 MINI X 时钟驱动程序的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6 3. 9 终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 9 3.9.1 终端硬件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 9 3.9.2 终端软件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 3.9.3 MINI X 中终端驱动程序概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 9 3.9.4 设备无关终端驱动程序的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 0 3.9.5 键盘驱动程序的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1 3.9.6 显示驱动程序的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5 3.10 MINI X 中的系统任务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 0 3.11 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6 习 题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6 第四章 存储器管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 9 4. 1 基本的内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 0 4.1. 1 没有交换和分页的单道程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 0 4.1. 2 固定分区的多道程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 4. 2 交换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2 4.2. 1 使用位图的内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4 4.2. 2 使用链表的内存管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5 4.3 虚拟存储器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7 4.3. 1 分页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7 4.3. 2 页表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1 4.3.3 TLBs— 翻译后援存储器 (Translation Lookaside Buffers ) . . . . . . . . . . 24 4 4.3. 4 逆向页表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6 4. 4 页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7 4.4. 1 最优页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7 4.4. 2 最近未使用页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 7 4.4. 3 先进先出页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 8 4.4. 4 第二次机会页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 9 4.4. 5 时钟页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 9 4.4. 6 最久未使用页面替换算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 0 4.4. 7 用软件模拟 LR U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1 4. 5 分页系统中的设计问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2 4.5. 1 工作集模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 4.5. 2 局部与全局分配策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3 4.5. 3 页面大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5 4.5. 4 虚拟存储器界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 6 4.6 分段 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 7 4.6.1 纯分段系统的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 0 4.6.2 分段和分页结合: MULTIC S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 0 4.6.3 分段和分页结合: Intel 的 Pentiu m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3 4.7 MINI X 内存管理概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8 4.7. 1 内存布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8 4.7. 2 消息处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1 4.7. 3 内存管理器数据结构和算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2 4.7.4 FOR K 、 EXI T 、和 WAI T 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5 4.7.5 EXE C 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6 4.7.6 BR K 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9 4.7. 7 信号处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9 4.7. 8 其他系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 4.8 MINI X 中内存管理的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 4.8.1 头文件和数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 4.8.2 主程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 4.8.3 FOR K 、 EXI T 、和 WAI T 的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7 4.8.4 EXE C 的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 9 4.8.5 BR K 的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 0 4.8.6 信号处理的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 0 4.8.7 其他系统调用的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5 4.8.8 内存管理器工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 7 4.9 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 8 习 题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 9 第五章 文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2 5.1 文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2 5.1.1 文件命名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3 5.1.2 文件结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 5.1.3 文件类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5 5.1.4 文件存取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7 5.1.5 文件属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 7 5.1.6 文件操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9 5.2 目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9 5.2.1 层次目录系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 0 5.2.2 路径名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1 5.2.3 目录操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3 5.3 文件系统的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3 5.3.1 实现文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3 5.3.2 实现目录 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6 5.3.3 磁盘空间管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9 5.3.4 文件系统的可靠性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 0 5.3.5 文件系统性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 5.3.6 日志结构的文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6 5.4 安全性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 7 5.4.1 安全环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 8 5.4.2 著名的安全缺陷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 9 5.4.3 一般的安全性攻击 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1 5.4.4 安全性的设计原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2 5.4.5 用户验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3 5.5 保护机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 5.5.1 保护域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 5.5.2 存取控制表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 5.5.3 权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 8 5.5. 4 隐藏通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 9 5.6 MINI X 文件系统概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1 5.6.1 消息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1 5.6.2 文件系统布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2 5.6.3 位图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5 5.6.4 i - 节点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6 5.6.5 块高速缓存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 8 5.6.6 目录和路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 9 5.6.7 文件描述符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 0 5.6.8 文件锁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2 5.6.9 管道和设备文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2 5.6.10 一个例子: READ 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3 5.7 MINI X 文件系统的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4 5.7.1 头文件和全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4 5.7.2 表的管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6 5.7.3 主程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3 5.7.4 对单个文件的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5 5.7.5 目录和路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1 5.7.6 其他系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4 5.7.7 I/ O 设备界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6 5.7.8 一般的实用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 7 5.8 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 习 题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 第六章 阅读材料和参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1 6.1 推荐的进一步阅读材料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1 6.1.1 介绍和概论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1 6.1.2 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2 6.1.4 存储器管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3 6.2 按字母排序的参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4

立即下载
操作系统设计实现

清华ucore操作系统实验指导用书,pdf,高清, 非扫描,图文并茂

立即下载
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

操作系统:设计与实现 (第二版)

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: