目录
第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
