计算机操作系统教程(第4版)习题解答与实验指导

计算机操作系统教程(第4版)习题解答与实验指导"

作者:张尧学
ISBN:9787302336754
定价:¥22
字数:千字
页数:
出版时间:2013.11.01
开本:
版次:4-6
装帧:
出版社:清华大学出版社
简介

本书是作者在清华大学计算机系多年教学经验和科研成果的基础上,配合清华大学计算机系列教材之一的《计算机操作系统教程》(第4版)而编写的相关习题解答和实验指导。全书分为两大部分: 第一部分是《计算机操作系统教程》(第4版)中各章习题的参考解答和部分硕士研究生入学考试用题及解答;第二部分为清华大学计算机系操作系统课程教学用实验指导及相应的程序设计与源代码分析。实验主要设计在Linux环境下用C语言编程完成,也可在UNIX系统Ⅴ或其他更高版本的UNIX环境下完成。

本书既可作为计算机专业和其他相关专业操作系统课程的补充教材,也可供有关人员自学,或供操作系统等系统设计人员阅读和参考。

前言

第4版

计算机技术的飞速发展正在引发新的一轮世界性技术革命。在经济发展越来越全球化、科技创新越来越国际化、知识经济已初见端倪的今天,任何一门技术或任何一个领域离开了计算机都是不可想象的。而计算机技术发展之迅速,计算机及其相关IT产品市场竞争之激烈,计算机产业让人致富速度之迅猛,也同样是人们始料不及的。在21世纪,任何想在技术领域有一番作为的人,都不得不面对计算机技术的挑战。

软件技术是计算机系统的灵魂与核心,而操作系统更是计算机系统的大脑。“想发财,学软件!”在一些国家已成为深入人心的广告词。在我国,科技创新、高科技产业化的浪潮也势必会以雷霆万钧之力推动软件技术的迅猛发展与普及。21世纪的哪一行哪一业能够离开软件呢?

学习计算机软件技术,特别是计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。这些原理与技巧可以说是计算机界的前辈们一代接一代不停顿的努力所留下的知识与智慧的结晶,学习和掌握它们对于激发自己的创造力和想象力是很有帮助的。

    如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法就是在实践中练习。例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作系统源代码等。当前非常流行的Linux操作系统的原始版事实上也是一位优秀的大学生的练习之作。除了上述练习方法之外,习题和实验也是很重要的实践之一。

本书是配合《计算机操作系统教程》(第4版)的习题解答与实验指导书。本书除给出《计算机操作系统教程》(第4版)各章所附习题的参考答案外,还给出一些有关的综合试题及其参考答案;另外,还设计了4个在Linux环境下或UNIX环境下的小实验,包括进程控制、进程通信、内存管理以及文件系统设计等,并给出了这4个实验的参考编程解答。

    本书的编写得到了清华大学计算机系网络系统组杨华杰的大力支持和帮助,她对本书中的部分习题进行了解答和完善,而且重新编写了实验程序。

    本书虽然给出了《计算机操作系统教程》(第4版)一书中习题的参考解答和相关实验指导,但由于作者的水平与知识所限,这些解答只是一种参考,里面完全可能存在错误和不妥之处,有待于有识之士的指教。此外,还希望读者不要局限于这些解答。

    衷心希望本书能对学习计算机操作系统和计算机软件的人们有所帮助!

作者

2013年6月于清华园

对于在校的学生和工程技术人员而言,能否有效地了解操作系统原理后面的具体设计实现呢?陆游说过: “纸上得来终觉浅,绝知此事要躬行”。我们在教学过程中,也深刻体会到这一点。我们认为,在了解基本的操作系统概念和原理的基础上,通过实际动手来一步一步分析、设计和实现一个微型化的操作系统,会深入了解操作系统的实现细节,并体会到概念原理和实际实现之间的紧密联系及巨大差异。

操作系统是一个复杂系统软件,涉及内容繁多,发展也很快,如Linux、Windows等,都是上百万行的源代码规模。开发人员开发这些操作系统软件的目的是用于实际计算机系统中,而不是用于教学,所以直接用这些操作系统来分析了解操作系统的实现和进行操作系统实验会比较复杂。而且目前部分操作系统教材的内容也越来越庞大和抽象,而面向操作系统设计实现的实验部分相对就少了很多。这两方面交织在一起,导致学生了解和掌握操作系统的实际细节很困难。

早期的UNIX操作系统实现和MIT教授Frans Kaashoek等基于UNIX v6设计的xv6操作系统给了我们启发:对一个计算机专业的本科生而言,在了解操作系统原理的基础上,设计实现一个操作系统有挑战,但是可行!我们对此进行了尝试与探索,以设计实现一个微型但全面的操作系统——ucore为基本目标,以增量式递进开发方式完成各种基于ucore操作系统的实验为实践过程,以在此过程中逐步介绍的操作系统的基本概念和原理为实践指导,做到有“理”可循和有“码”可查,最终让读者了解和掌握操作系统的原理、设计与实现。目前的实验内容包含如下8个。

(1) 启动操作系统的bootloader:了解操作系统启动前的状态和要做的准备工作。

(2) 物理内存管理子系统:理解硬件段/页模式和操作系统如何管理物理内存。

(3) 虚拟内存管理子系统:理解页表机制、缺页故障处理以及内存替换算法。

(4) 内核线程子系统:理解相对简单的内核态线程的动态管理过程。

(5) 用户进程管理子系统:理解用户态进程动态管理过程以及系统调用过程。

(6) 处理器调度子系统:理解操作系统的调度过程和调度算法。

(7) 同步互斥与进程间通信子系统:理解进程间如何同步互斥以及进行信息交换和共享。

(8) 文件系统:理解文件系统的具体实现,与进程管理和内存管理等的关系。

其中每个开发步骤都是建立在上一个步骤之上的,就像搭积木,从一个一个小木块,最终搭出来一个小房子。在搭房子的过程中,完成从理解操作系统原理到实践操作系统设计与实现的探索过程。最新的代码和文档放在http://www.github.com/chyyuu/ucore_lab上。如果有同学和OS爱好者觉得这些实验难度不够,大家可参加更有挑战和乐趣的ucore plus实验,这些实验位于 http://www.github.com/chyyuu/ucore_plus下。目前的代码和文档还有许多不完善和错误的地方需要改进,欢迎大家批评指正。

在实现基于ucore的操作系统实验过程中,我们参考和借鉴了xv6、OS161以及Linux的设计思路和实现代码,而且Frans Kaashoek 博士也亲自给予了帮助与指导。国内多所高校的老师,包括陈向群、王雷、陈鹏、陈莉君、原仓周、蒲晓蓉等都给予了指导和帮助。操作系统课程的助教王乃峥、袁昕颢、茅俊杰、陈宇恒、曹聪、杨杨等完成了大量工作,在此表示衷心的感谢!

陈渝向勇

2013年3月12日

目录

第一部分习题解答1

第1章绪论3

第2章操作系统用户界面5

第3章进程管理9

第4章处理机调度21

第5章存储管理27

第6章进程与存储管理示例33

第7章Windows的进程与内存管理37

第8章文件系统43

第9章设备管理49

第10章Linux文件系统53

第11章Windows的设备管理和文件系统56

第12章嵌入式操作系统简介59

综合试题61

操作系统综合练习试题161

操作系统综合练习试题1解答62

操作系统综合练习试题264

操作系统综合练习试题2解答65

操作系统综合练习试题368

操作系统综合练习试题3解答68

第二部分实验指导71

系统调用函数说明、参数值及定义73

实验1进程管理80

实验2进程间通信82

实验3存储管理83

实验4文件系统设计85

实验1指导86

实验2指导94

实验3指导98

实验4指导107

第1章实验0: 操作系统实验准备1

1.1实验目的1

1.2准备知识1

1.2.1了解OS实验1

1.2.2设置实验环境2

1.2.3了解编程开发调试的基本工具14

1.2.4基于硬件模拟器实现源码级调试23

1.2.5了解处理器硬件31

1.2.6了解ucore编程方法和通用数据结构34

第2章实验1: 系统软件启动过程41

2.1实验目的41

2.2实验内容41

2.2.1练习41

2.2.2项目组成45

2.3从机器启动到操作系统运行的过程48

2.3.1BIOS启动过程48

2.3.2bootloader启动过程48

2.3.3操作系统启动过程57

2.4实验报告要求66

辅助材料A关于A20 Gate66

辅助材料B启动后第一条执行的指令68

第3章实验2: 物理内存管理70

3.1实验目的70

3.2实验内容70

3.2.1练习70

3.2.2项目组成71

3.3物理内存管理概述73

3.3.1实验执行流程概述73

3.3.2探测系统物理内存布局75

3.3.3以页为单位管理物理内存75

3.3.4物理内存页分配算法实现78

3.3.5实现分页机制81

3.3.6自映射机制88

3.4实验报告要求90

辅助材料A探测物理内存分布和大小的方法90

辅助材料B实现物理内存探测91

辅助材料C链接地址、虚拟地址、物理地址、加载地址

以及edata/end/text的含义92

第4章实验3: 虚拟内存管理96

4.1实验目的96

4.2实验内容96

4.2.1练习96

4.2.2项目组成97

4.3虚拟内存管理概述98

4.3.1基本原理概述98

4.3.2实验执行流程概述99

4.3.3关键数据结构和相关函数分析100

4.4Page Fault异常处理102

4.5页面置换机制的实现104

4.5.1页替换算法104

4.5.2页面置换机制105

4.6实验报告要求108

辅助材料A: 正确输出的参考109

第5章实验4: 内核线程管理111

5.1实验目的111

5.2实验内容111

5.2.1练习111

5.2.2项目组成112

5.3内核线程管理114

5.3.1实验执行流程概述114

5.3.2设计关键数据结构——进程控制块115

5.3.3创建并执行内核线程117

5.4实验报告要求122

辅助材料A实验4的参考输出123

辅助材料B“原理”进程的属性与特征解析124

第6章实验5: 用户进程管理127

6.1实验目的127

6.2实验内容127

6.2.1练习127

6.2.2项目组成128

6.3用户进程管理130

6.3.1实验执行流程概述130

6.3.2创建用户进程131

6.3.3进程退出和等待进程136

6.3.4系统调用实现137

6.4实验报告要求141

辅助材料A“原理” 用户进程的特征141

第7章实验6: 调度器145

7.1实验目的145

7.2实验内容145

7.2.1练习145

7.2.2项目组成146

7.3调度框架和调度算法设计与实现147

7.3.1实验执行流程概述147

7.3.2计时器的原理和实现147

7.3.3进程状态148

7.3.4进程调度实现149

7.3.5调度框架和调度算法150

7.3.6Stride Scheduling154

7.4实验报告要求158

辅助材料A执行priority大致的显示输出158

第8章实验7: 同步互斥160

8.1实验目的160

8.2实验内容160

8.2.1练习160

8.2.2项目组成161

8.3同步互斥的设计与实现162

8.3.1实验执行流程概述162

8.3.2同步互斥的底层支撑163

8.3.3信号量165

8.3.4管程和条件变量167

8.4实验报告要求171

辅助材料A执行make runmatrix大致的显示输出171

第9章实验8: 文件系统173

9.1实验目的173

9.2实验内容173

9.2.1练习173

9.2.2项目组成173

9.3文件系统的设计与实现176

9.3.1ucore文件系统总体介绍176

9.3.2通用文件系统访问接口179

9.3.3Simple FS文件系统179

9.3.4文件系统抽象层——VFS183

9.3.5设备层文件I/O层185

9.3.6实验执行流程概述189

9.3.7文件操作实现190

9.4实验报告要求193

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个