第1章 引导操作系统的过程 1
1.1 实验目的 1
1.2 预备知识 1
1.3 实验内容 2
1.3.1 简单汇编程序设计 2
1.3.2 查看启动记录 3
1.3.3 修改启动记录 5
1.3.4 用NASMW编译一个自己的启动程序(.bin文件) 7
第2章 Linux基本环境 9
2.1 实验目的 9
2.2 预备知识 9
2.2.1 Linux的安装 11
2.2.2 Linux命令行(Shell环境) 15
2.2.3 文件系统命令 15
2.2.4 用户及系统管理常用命令 19
2.2.5 网络操作常用命令 23
2.2.6 Linux下软件安装 24
2.2.7 使用编辑器vi编辑文件 27
2.2.8 GCC编译器 29
2.2.9 Gdb调试器 35
2.2.10 编写包含多文件的Makefile 40
2.3 实验内容 41
2.3.1 Linux基本操作练习 41
2.3.2 Makefile的应用 41
第3章 Shell编程 44
3.1 实验目的 44
3.2 预备知识 44
3.2.1 Shell概述 44
3.2.2 Shell的特点和命令行书写规则 44
3.2.3 常用Shell类型 45
3.3 实验内容 45
3.3.1 简单Shell程序设计 45
3.3.2 Shell脚本的建立和执行 46
3.3.3 Shell变量 47
3.3.4 Shell中的特殊字符 50
3.3.5 表达式的比较 51
3.3.6 控制结构 53
3.3.7 综合应用 59
第4章 进程管理 61
4.1 实验目的 61
4.2 预备知识 61
4.2.1 进程相关基本概念 61
4.2.2 Linux下系统调用 62
4.2.3 Windows下的系统调用 65
4.2.4 进程调度算法 68
4.3 实验内容 68
4.3.1 进程的创建 68
4.3.2 进程的控制 69
4.3.3 文件的加锁、解锁 70
4.3.4 Windows下的进程管理 71
4.3.5 进程调度模拟算法 79
第5章 进程间通信 84
5.1 实验目的 84
5.2 预备知识 84
5.2.1 管道 84
5.2.2 消息 84
5.2.3 共享内存 88
5.2.4 信号机制 91
5.3 实验内容 94
5.3.1 进程的管道通信 94
5.3.2 消息的创建、发送和接收 95
5.3.3 共享存储区的创建、附接和段接 96
5.3.4 消息队列和共享存储区性能比较 98
5.3.5 信号机制举例 98
第6章 进程(或线程)同步与多线程编程 100
6.1 实验目的 100
6.2 预备知识 100
6.2.1 进程(或线程)同步概述 100
6.2.2 线程概述 102
6.3 实验内容 105
6.3.1 生产者-消费者问题 105
6.3.2 进程、线程综合应用 108
第7章 死锁避免——银行家算法 109
7.1 实验目的 109
7.2 预备知识 109
7.2.1 死锁的概念 109
7.2.2 死锁预防 109
7.2.3 死锁避免 110
7.3 实验内容 110
7.3.1 实现银行家算法所用的数据结构 110
7.3.2 银行家算法 110
7.3.3 源程序清单 111
7.3.4 设计输入数据、验证银行家算法 115
第8章 存储管理 116
8.1 实验目的 116
8.2 预备知识 116
8.3 实验内容 119
8.3.1 可变分区主存分配和回收 119
8.3.2 请求页式存储管理 123
第9章 文件操作 129
9.1 实验目的 129
9.2 预备知识 129
9.3 实验内容 131
第10章 磁盘调度 140
10.1 实验目的 140
10.2 预备知识 140
10.3 实验内容 141
附录A 80386基础 149
附录B 操作系统练习题与参考答案 160
附录C 综合测试题及其参考答案 184
附录D 操作系统自测题 189
附录E Linux0.11系统引导程序 215
附录F Linux0.11进程调度 227
附录G Linux0.11中信号的处理 240
附录H Linux0.11的内存管理 247
参考文献 260