标题：操作系统实验教程
图书信息1
出版信息书名：操作系统实验教程   
作者：陆松年  主编   訾小超  潘理  龚玲  编著  　　出版社：电子工业出版社
ISBN：978-7-121-10564-7
出版日期：2010年4月
定价：29.00元
开本：16开
页码：292页内容简介本实验教材除了具有传统的操作系统实验基本特色外，还具有通信工程、信息安全和电子工程等非计算机专业特色，并且实验覆盖面很广、实验内容特别丰富。
本书共分3部分：第1部分是实验相关原理；第2部分是实验指导书，共设计了涵盖操作系统绝大部分原理和应用的28个实验，可作为学生的上机实验或课程设计；第3部分是部分实验参考解答，给出了第2部分中的16个实验参考答案，其余的实验是希望学生全部独立完成，这些实验也可作为教师布置上机的实验题目。
本书可作为高等院校计算机科学与应用专业，以及通信与信息工程、电子工程、信息安全、自动控制和信息管理类等非计算机专业的实验教材和实验教学参考书，对于计算机软件开发人员也是一本很好的参考书。 
宣传语：立足实用·操作性强·覆盖面广前言操作系统不仅是理论性很强的课程，而且也是技术性和实践性很强的课程。过去在操作系统教学中，教师上课时在课堂上只是放空炮似地讲一些空洞的原理，学生感到学习内容很空洞，这形成了枯燥无味的“空对空”式的脱离实践的教学模式。学生在毕业设计时以及到了工作岗位上后，很多命令、工具不会用，系统程序设计能力很差，常常面对系统开发课题束手无策，很难较快地进入角色和完成研究开发任务。这种轻视实践和技术的思想都将导致学生在今后的工作中付出沉重的代价。
本教材的目的是通过操作系统实验或课程设计，加深学生对操作系统原理、系统与技术的理解和掌握，提高编制大型的系统和应用程序的能力，避免出现高分低能情况。
本实验教材在国内同类实验教材中，除了具有传统的操作系统实验基本特色外，还具有通信工程、信息安全和电子工程等非计算机专业特色，并且实验覆盖面很广、实验内容特别丰富、实用性也很强。
一般操作系统的实验教材较少涉及通信系统部分，而在另一门计算机通信课程中，一般也不结合有关操作系统内核的通信接口进行教学或实验，这使得学生即使学了这两门课程也不会编制与通信有关的系统程序。本实验教材在理论学习后接着安排有关的实验，要求学生编制进程控制、进程间数据通信，进程通信机制的实现，以及进行包括TCP和UDP的远程进程通信、远程过程调用实验，在此基础上完成远程计算机之间的文件传送FTP等功能。
信息安全是实践性很强的课程，同通信与信息工程相似，对掌握操作系统的开发与应用技术要求很高，为此，本教材设计了Linux内核模块和系统调用扩展等实验。本实验教材与当前信息安全需求相结合，设计了操作系统安全和安全访问控制实验，促进学生进行安全性增强方面的探索。
鉴于电子科学和自动控制专业与嵌入式系统联系越来越密切，本实验教材能使学生进一步掌握嵌入式操作系统的安装与引导技术。
本课程的实验设计安排分成难度级别不同的实验，供水平和要求不同的学生选择。本书可作为高等院校计算机科学与应用专业，以及通信与信息工程、信息安全、电子工程、自动控制和信息管理类等非计算机专业的实验教材及实验教学参考书，对于计算机软件开发人员也是一本很好的参考书。
全书共分3部分，第1部分是实验相关原理，讲述了与书中实验密切相关的操作系统，这一部分大多是从本书最后给出的参考文献[1]（《操作系统教程（第3版）》，陆松年主编，电子工业出版社出版）摘录整理而来的，这是考虑到使用本书的学生已经或正在学习操作系统，但不是使用参考文献[1]的教材，所以把与实验密切相关的内容整理在这里，其余部分可以使用其他通用的操作系统教材。当然，单单阅读这部分是远远不够的，学生还要掌握操作系统的基本原理才行。个别实验的原理部分可以直接阅读参考文献[1]的其他部分，并可以帮助进行实验设计与编程。
第2部分是实验指导书，共设计了涵盖操作系统绝大部分原理和应用的28个实验（包括分实验）。一些实验一般学生在做了适当准备后可以在2～4个学时之内完成，但有些实验比较大，设计、编程和调试都比较复杂，可以作为学生的课程设计，所需学时数约为18～54学时。
第3部分是部分实验参考解答，给出了第2部分中的16个实验参考解答，这些参考解答全部经过了测试。本书其余的实验是希望学生全部独立完成，这些实验也可作为教师布置上机的实验题目。
为了使学生通过实验后，进一步理解与实验相关的原理和理论，我们在每个实验的最后部分给出了若干个思考题，学生在实验前先尝试独立完成这些思考题，必要时可以参考部分实验参考解答中的思考题答案。
在本书的编写过程中，得到了学校和院、系领导的大力支持。由于作者水平有限，实验内容尚需要不断更新，书中难免存在一些错误，恳切希望各位专家、学者和读者批评指教，作者将不胜感谢。
作  者  
2010年3月   
于上海交通大学            
电子信息与电气工程学院 信息安全工程学院目录第1部分  实验相关原理
第1章  存储管理 2
1.1  可变分区存储管理 2
1.1.1  空闲存储区表 2
1.1.2  首次适应法 3
1.1.3  循环首次适应法 5
1.1.4  最佳适应算法 5
1.1.5  最差适应法 6
1.2  分页存储管理 6
1.2.1  分页存储管理的基本思想 6
1.2.2  地址变换 6
1.2.3  空闲内存页的管理 7
1.2.4  请求分页式基本原理 7
1.2.5  页面淘汰 8
第2章  进程管理 10
2.1  进程概述 10
2.1.1  进程的概念 10
2.1.2  进程的组成 10
2.1.3  进程的状态及其变化 11
2.2  进程控制块 12
2.3  调度 12
2.3.1  进程切换调度策略 12
2.3.2  进程调度算法 12
2.4  UNIX系统的进程调度 14
2.4.1  进程的切换调度算法 14
2.4.2  切换调度程序 14 
2.5  进程的控制 14
2.5.1  进程的阻塞 14
2.5.2  UNIX系统中的进程睡眠和唤醒 15
2.5.3  进程的终止和等待终止 15
2.6  进程的创建和映像改换 16
2.6.1  进程的创建 16
2.6.2  进程映像的改换 16
2.7  线程 18
2.7.1  进程和线程 18
2.7.2  多线程 18
2.7.3  线程的状态 19
2.7.4  线程应用示例 19
第3章  进程通信 21
3.1  进程间互斥控制方法 21
3.1.1  锁的表示和操作 21
3.1.2  锁的安全控制 21
3.2  信号量和semWait、semSignal操作 23
3.3  信号量的应用 24
3.3.1  利用信号量实现互斥 24
3.3.2  两个进程间的同步 24
3.3.3  生产者和消费者问题 25
3.4  进程间的数据通信 26
3.4.1  消息通信 26
3.4.2  共享存储区 27
3.4.3  Solaris门 27
3.5  软中断和信号机构 28
3.5.1  信号的产生与类型 28
3.5.2  信号的处理方式及设置 29
3.5.3  信号的传送 30
3.6  死锁 30
3.6.1  产生死锁的原因 31
3.6.2  产生死锁的条件 31
3.6.3  死锁的预防 31
3.6.4  死锁的避免 32
3.6.5  死锁的检测 33
第4章  文件系统 35
4.1  文件目录 35
4.1.1  目录的内容 35
4.1.2  目录的结构 35
4.2  文件存储资源分配 35
4.3  文件的系统调用 36
4.3.1  文件的创建、打开、关闭和取消 36
4.3.2  文件的读/写 37
4.4  文件的标准子例程 37
4.4.1  标准I/O的概念 37
4.4.2  流文件的打开和关闭 38
4.4.3  流文件的读/写 39
4.5  UNIX文件系统的内部结构 40
4.5.1  索引节点 40
4.5.2  文件索引结构 40
4.5.3  目录结构 42
4.5.4  打开文件结构 43
4.6  管道文件和管道通信 45
4.6.1  管道文件 45
4.6.2  管道的读/写和关闭 45
4.6.3  有名管道 46
第5章  UNIX系统和网络程序设计 48
5.1  高级进程间通信 48
5.1.1  消息通信 48
5.1.2  共享内存 49
5.1.3  信号灯 50
5.2  远程进程间通信Socket 51
5.2.1  Socket通信概述 51
5.2.2  Socket系统调用 52
5.3  UDP套接字编程 54
5.3.1  UDP套接字的基本概念 54
5.3.2  UDP套接字基本函数 54
5.4  Solaris门通信 55
5.5  RPC（远程过程调用） 57
5.5.1  RPC概述 57
5.5.2  RPC服务地址的获取 57
5.5.3  rpcgen编程指南 58
5.5.4  客户端身份验证 59
第6章  Linux的动态内核模块机制 60
6.1  操作系统的体系结构 60
6.1.1  单体式结构 60
6.1.2  微内核结构 60
6.2  Linux的动态内核模块机制概述 61
6.3  Linux内核模块的动态加载/卸载 62
6.3.1  内核模块的动态加载 62
6.3.2  内核模块的动态卸载 62
6.4  Linux动态模块的开发与实现 63
6.4.1  Linux模块的基本组成 63
6.4.2  Linux内核模块的符号引用 63
6.4.3  Linux内核模块的编译和运行模式 63
6.4.4  Linux内核模块的调试和信息输出 64
第2部分  实验指导书
操作系统实验指导 66
（一）实验的目的和要求 66
（二）实验步骤 66
（三）实验报告要求 68
实验1  Linux虚拟存储器的实现 69
实验2  可变分区存储管理 72
实验3  请求分页系统页面淘汰算法 75
实验4  进程调度算法 77
（一）多级反馈队列调度算法 77
（二）进程调度算法的实现 79
实验5  进程和进程控制 82
（一）进程控制和信号机制 82
（二）生产者和消费者问题 83
实验6  进程的数据通信 86
（一）消息通信 86
（二）共享内存和信号量 87
实验7  并发线程和线程通信 89
实验8  Linux消息队列的实现 90
实验9  死锁实验 93
（一）死锁的避免 93
（二）死锁的检测 94
实验10  文件系统的用户界面 96
（一）文件复制 96
（二）管道文件通信 97
实验11  文件系统设计 99
实验12  有名管道机制的实现 102
实验13  Linux的内核模块扩展 105
实验14  Linux的系统调用扩展 108
实验15  Solaris门函数进程通信 114
实验16  远程进程通信 118
（一）TCP通信实验 118
（二）UDP通信实验 120
实验17  远程过程调用 122
实验18  Shell程序设计 124
实验19  嵌入式Linux系统的安装与引导 126
实验20  操作系统安全 128
（一）操作系统登录的可信路径 128
（二）基于硬件标识的程序权限控制 129
实验21  Linux的安全访问控制 131
第3部分  部分实验参考解答
实验1  Linux虚拟存储器实现参考解答 134
实验3  请求分页系统页面淘汰算法
实验3  参考解答 139
实验4  进程调度算法参考解答 146
（一）多级反馈队列调度算法 146
（二）FCFS进程调度算法的实现 159
实验5  进程和进程控制参考解答 180
（二）生产者和消费者问题 180
实验8  Linux消息队列的实现参考解答 188
实验9  死锁实验参考解答 208
（一）死锁的避免 208
（二）死锁的检测 215
实验11  文件系统设计参考解答 222
实验13  Linux的内核模块扩展参考解答 242
实验14  Linux的系统调用扩展参考解答 248
实验19  嵌入式Linux系统的安装与引导参考解答 267
实验20  操作系统安全参考解答 270
（一）操作系统登录的可信路径 270
（二）基于硬件标识的程序权限
（二）控制 272
实验21  Linux的安全访问控制参考解答 275
参考文献 279
图书信息2
出版信息书名：操作系统实验教程  操作系统实验教程编著：张坤  姜立秋  赵慧然
出版发行：清华大学出版社
开本：185×260
ISBN：978-7-302-17734-0
定价：26.00元内容提要本书是“操作系统”课程的辅助教材，通过其中的实验可加深对本课程概念的理解。全书共分为10章，从设计一个简单的操作系统引导程序开始，指导学生初步理解操作系统的设计原理和过程，使学生能够掌握简单的Shell编程，掌握进程、线程、进程管理、进程调度和进程通信等基本概念和技术，掌握内存管理基本概念和技术，掌握文件操作和磁盘调度的基本原理。
本书的实验以Linux操作系统为主。因为Linux是开放源码的，因此，在本书附录中给出了Linux0.11的部分源码分析，可以让读者得以一窥操作系统的内部实现机制。
书中的实验题目具有独立性，并且对每个实验中用到的知识，在前面都给予描述和指导，这样有利于读者通过自学掌握实验教程中的技术和方法。
本书可作为高等院校计算机及相关专业“操作系统”课程实验的辅助教材，也可作为读者学习操作系统技术的实验指导教程。编辑推荐站在工程、开发和研究三个角度，进行实践性教学环节的设计。
从社会对计算机专业人才的能力需求的角度，系统地规划计算机实验和实践的方式和内容。
开发实训验证型、开发研究型等不同层次的教学内容，以满足从大专、本科以及某些研究生层次的教学需求。
以系统性、开放性、经典性和适用性等全新的面貌呈现在中国的计算机教学领域。
精心挖掘和遴选作者，把他们多年积累的教学经验编写成教材。
每本书都经过编委会委员的精心筛选和严格评审，严把质量关。目录第1章 引导操作系统的过程
1.1 实验目的
1.2 预备知识
1.3 实验内容
1.3.1 简单汇编程序设计
1.3.2 查看启动记录
1.3.3 修改启动记录
1.3.4 用NASMW编译一个自己的启动程序(.bin文件)
第2章 Linux基本环境
2.1 实验目的
2.2 预备知识
2.2.1 Linux的安装
2.2.2 Linux 命令行(Shell环境)
2.2.3 文件系统命令
2.2.4 用户及系统管理常用命令
2.2.5 网络操作常用命令
2.2.6 Linux下软件安装
2.2.7 使用编辑器vi 编辑文件
2.2.8 GCC编译器
2.2.9 Gdb调试器
2.2.10 编写包含多文件的Makefile
2.3 实验内容
2.3.1 Linux基本操作练习
2.3.2 Makefile的应用
第3章 Shell编程
3.1 实验目的
3.2 预备知识
3.2.1 Shell概述
3.2.2 Shell的特点和命令行书写规则
3.2.3 常用Shell类型
3.3 实验内容
3.3.1 简单Shell 程序设计
3.3.2 Shell脚本的建立和执行
3.3.3 Shell变量
3.3.4 Shell中的特殊字符
3.3.5 表达式的比较
3.3.6 控制结构
3.3.7 综合应用
第4章 进程管理
4.1 实验目的
4.2 预备知识
4.2.1 进程相关基本概念
4.2.2 Linux下系统调用
4.2.3 Windows下的系统调用
4.2.4 进程调度算法
4.3 实验内容
4.3.1 进程的创建
4.3.2 进程的控制
4.3.3 文件的加锁、解锁
4.3.4 Windows下的进程管理
4.3.5 进程调度模拟算法
第5章 进程间通信
5.1 实验目的
5.2 预备知识
5.2.1 管道
5.2.2 消息
5.2.3 共享内存
5.2.4 信号机制
5.3 实验内容
5.3.1 进程的管道通信
5.3.2 消息的创建、发送和接收
5.3.3 共享存储区的创建、附接和段接
5.3.4 消息队列和共享存储区性能比较
5.3.5 信号机制举例
第6章 进程(或线程)同步与多线程编程
6.1 实验目的
6.2 预备知识
6.2.1 进程(或线程)同步概述
6.2.2 线程概述
6.3 实验内容
6.3.1 生产者?消费者问题
6.3.2 进程、线程综合应用
第7章 死锁避免——银行家算法
7.1 实验目的
7.2 预备知识
7.2.1 死锁的概念
7.2.2 死锁预防
7.2.3 死锁避免
7.3 实验内容
7.3.1 实现银行家算法所用的数据结构
7.3.2 银行家算法
7.3.3 源程序清单
7.3.4 设计输入数据、验证银行家算法
第8章 存储管理
8.1 实验目的
8.2 预备知识
8.3 实验内容
8.3.1 可变分区主存分配和回收
8.3.2 请求页式存储管理
第9章 文件操作
9.1 实验目的
9.2 预备知识
9.3 实验内容
第10章 磁盘调度
10.1 实验目的
10.2 预备知识
10.3 实验内容
附录A 80386基础
附录B 操作系统练习题与参考答案
附录C 综合测试题及其参考答案
附录D 操作系统自测题
附录E Linux0.11系统引导程序
附录F Linux0.11进程调度
附录G Linux0.11中信号的处理
附录H Linux0.11的内存管理
参考文献