图书目录

目录

第1章Linux基本使用1

1.1实验目的1

1.2实验内容及步骤1

1.2.1任务一: Linux初体验1

1.2.2任务二: Linux常用命令3

1.2.3任务三: 第一个C程序6

1.2.4任务四: Linux编译C程序7

思考题9

第2章Linux进程管理10

2.1实验目的10

2.2实验内容及步骤10

2.2.1任务一: 获取进程信息10

2.2.2任务二: 使用fork函数创建进程12

2.2.3任务三: 进程终止14

2.2.4任务四: 进程等待18

2.2.5任务五: 使用exec函数创建进程22

思考题25

第3章Linux线程管理与线程同步26

3.1实验目的26

3.2实验内容及步骤26

3.2.1任务一: 创建线程26

3.2.2任务二: 互斥锁29

3.2.3任务三: 条件变量33

3.2.4任务四: 信号量36

思考题41

第4章Pintos基础知识42

4.1Pintos系统的代码结构42

4.2Pintos内存空间划分43

4.380x86调用约定43

4.4系统的加载过程44

4.4.1加载器44

4.4.2低级内核初始化44

4.4.3物理内存布局45

4.4.4高级内核初始化45

4.5线程46

4.5.1线程结构体46

4.5.2线程函数48

4.5.3线程切换49

4.6同步50

4.6.1禁用中断50

4.6.2信号量51

4.6.3锁52

4.7中断处理52

4.7.1中断的基本处理53

4.7.2内部中断处理54

4.7.3外部中断处理55

思考题55

目录〖3〗第5章Pintos的编译和运行56

5.1实验环境56

5.1.1Pintos运行环境说明56

5.1.2实验环境说明56

5.2Pintos系统的编译与运行57

5.2.1编译57

5.2.2运行58

5.2.3测试59

5.3Pintos的调试61

5.3.1使用GDB调试61

5.3.2使用Eclipse调试63

5.3.3使用内核函数和专用命令调试67

5.4在线实验平台的使用68

5.4.1平台介绍68

5.4.2平台使用68

5.4.3评分规则69

思考题69

第6章Pintos中断的处理70

6.1实验目的70

6.2实验内容及步骤70

思考题 74

第7章Pintos多级页表的设置75

7.1实验目的75

7.2实验内容及步骤75

思考题79

第8章Pintos基础数据结构: 通用链表80

8.1实验目的80

8.2实验内容及步骤80

8.2.1任务一: 通用链表的基本使用80

8.2.2任务二: 通用链表的首地址计算83

8.2.3任务三: 基于函数指针的通用链表操作85

思考题87

第9章Pintos线程的切换过程88

9.1实验目的88

9.2实验内容及步骤88

思考题93

第10章Pintos线程的创建过程94

10.1实验目的94

10.2实验内容及步骤94

思考题100

第11章Pintos时钟原语的改进101

11.1实验目的101

11.2实验内容及步骤101

思考题106

第12章Pintos优先级调度的实现107

12.1实验目的107

12.2实验内容及步骤107

12.2.1任务一: 静态优先级调度107

12.2.2任务二: 优先级抢占110

12.2.3任务三: 优先级调整 112

12.2.4任务四: 信号量等待队列的优先级调整调度 113

12.2.5任务五: 条件变量等待队列的优先级调整调度 115

思考题117

第13章Pintos系统调用的实现118

13.1实验目的118

13.2实验内容及步骤118

13.2.1任务一: 用户程序的调试118

13.2.2任务二: 系统调用的实现123

思考题131

第14章Pintos用户文件的载入132

14.1实验目的132

14.2实验内容及步骤132

14.2.1任务一: ELF文件格式的分析132

14.2.2任务二: Pintos文件载入过程分析139

思考题144

第15章Pintos文件系统分析145

15.1实验目的145

15.2实验内容及步骤145

思考题154

参考文献155

后记156