第1章 概述 1
1.1操作系统环境实验 1
实验一Linux使用环境 2
实验二Linux下C编程环境 4
实验三Windows系统管理命令 7
实验四Windows文件操作命令 10
1.2详解系统调用实现机制 12
实验一 详解Linux系统添加系统调用方法 16
实验二向Linux内核增加一个系统调用 21
实验三Ubuntu 14.04 TLS内核升级和添加系统调用 24
第2章 进程管理 28
2.1进程 28
2.1.1进程创建与终止 29
实验一Linux下进程的控制 29
实验二Windows下进程的管理 33
2.1.2进程调度 37
实验一 设计PCB表结构 38
实验二 进程调度算法 41
2.1.3进程间通信 46
实验一 消息传递 47
实验二 共享内存(Windows程序) 49
实验三 共享内存(Linux程序) 52
实验四 管道 64
实验五Socket通信原理 71
2.2线程 76
2.2.1线程创建与终止 77
实验一Pthread API线程 77
实验二Win32线程 79
实验三Java线程 80
2.2.2单线程与多线程比较 81
实验一“累加”计算效率 82
实验二 检验素数效率 85
实验三 文件复制 89
实验四 矩阵乘法的实现 91
实验五 控制台绘画 95
2.2.3线程池 101
实验一Java线程池使用 101
实验二 多线程模拟购票系统 105
2.3线程同步 108
2.3.1信号量 109
实验一PV实现信号量机制 109
实验二 兔子吃草问题 111
2.3.2互斥量 115
实验一 双线程打印 115
实验二 银行取款 117
2.3.3生产者—消费者问题 118
实验一 生产者—消费者(C++实现) 121
实验二 生产者—消费者(Java实现) 124
实验三 应用管程思想解决生产者和消费者问题 126
2.3.4读者-写者问题 131
实验一 读者-写者(C++实现) 132
实验二 读者-写者(Java实现) 139
2.3.5哲学家就餐问题 151
实验一 哲学家就餐(C++实现) 151
实验二 哲学家就餐(Java实现) 155
2.3.6理发师问题 158
实验一 理发师问题(C++实现) 159
实验二 理发师问题(Java实现) 163
2.4死锁 169
实验一A-B竞争资源 170
实验二 银行家算法程序 172
实验三 人脸识别中的死锁问题 181
第3章 内存管理 190
3.1内存分配 190
实验一 内存分配与回收 190
3.2页面置换 197
实验一 页面置换算法模拟(C++实现) 198
实验二 页面置换算法模拟(Java实现) 202
实验三 页式地址重定位模拟 204
第4章 设备管理 210
实验一 设备管理 210
实验二 磁盘调度算法 214
实验三Spooling假脱机技术 223
第5章 文件管理与系统安全 232
实验一 文件管理 232
第6章 拓展实验 236
实验一GPU并行编程 236
实验二 智能车虚拟交换模块C+++实现方案 244
附录A Linux命令速查及疑难解答 251
附录B文件编辑器vi命令 260
附录C Windows控制台命令 263
参考文献 264