本书是“操作系统”课程的辅助教材,通过其中的实验可加深对本课程概念的理解。全书共分为10章,从设计一个简单的操作系统引导程序开始,指导学生初步理解操作系统的设计原理和过程,使学生能够掌握简单的Shell编程,掌握进程、线程、进程管理、进程调度和进程通信等基本概念和技术,掌握内存管理基本概念和技术,掌握文件操作和磁盘调度的基本原理。
本书的实验以Linux操作系统为主。因为Linux是开放源码的,因此,在本书附录中给出了Linux0.11的部分源码分析,可以让读者得以一窥操作系统的内部实现机制。
书中的实验题目具有独立性,并且对每个实验中用到的知识,在前面都给予描述和指导,这样有利于读者通过自学掌握实验教程中的技术和方法。
本书可作为高等院校计算机及相关专业“操作系统”课程实验的辅助教材,也可作为读者学习操作系统技术的实验指导教程。
操作系统是现代计算机系统中不可缺少的系统软件。如果让用户去使用一台没有配置操作系统的计算机,那是难以想象的。操作系统控制和管理整个计算机系统中的软硬件资源,并为用户使用计算机提供一个方便灵活、安全可靠的工作环境。本书遵循操作系统课程的教学大纲要求,针对应用型模式的专业定位和人才培养目标而编写。
操作系统课程的实验环节一直是操作系统教学的难点。本书通过Windows和Linux两个操作系统各自的编程接口,提供一些编程实例,以此加深学生对操作系统工作原理的领会和对操作系统实现方法的理解,并且使学生在程序设计方面得到基本训练。
全书共分为10章,从设计一个简单的操作系统引导程序开始,指导学生初步理解操作系统的设计原理和过程,使学生能够掌握简单的Shell编程,掌握进程、线程、进程管理、进程调度、进程通信等基本概念和技术,掌握内存管理基本概念和技术,掌握文件操作和磁盘调度的基本原理。
结合操作系统理论课程的学习,通过本书的全部实验,使学生能够理解操作系统的一般概念和方法,有能力去分析、设计和改变一个操作系统的某些组件。
本书的大部分程序在Linux下实现,可为后续的嵌入式Linux系统课程打下很好的基础。为了更好地让读者理解操作系统的原理和实现技术,其余程序是在Windows下实现的一些模拟算法。所有程序都经过测试和验证。
本书附有Linux0.11的部分源码分析,这主要是为了让读者能够更加深入地理解一个真实操作系统的内部原理。附录还精选了一些习题,供广大师生选用。
实验要求:
1. 明确实验目的,掌握相关背景知识。
2. 熟练掌握实验内容和方法。
3. 每个实验都要求学生写出实验报告,同时注意各实验中给出的“实验任务”。
4. 教师最后写出实验总结。
在本书的编写过程中,姜立秋编写了第4章、第9章和第10章,赵慧然编写了附录B、附录C、附录D和附录E,全书由张坤提出编写大纲并编写了其余章节。由于编者水平有限,错误和不妥之处敬请读者提出宝贵意见。
第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.1Linux的安装
2.2.2Linux 命令行(Shell环境)
2.2.3文件系统命令
2.2.4用户及系统管理常用命令
2.2.5网络操作常用命令
2.2.6Linux下软件安装
2.2.7使用编辑器vi 编辑文件
2.2.8GCC编译器
2.2.9Gdb调试器
2.2.10编写包含多文件的Makefile
2.3实验内容
2.3.1Linux基本操作练习
2.3.2Makefile的应用
第3章Shell编程
3.1实验目的
3.2预备知识
3.2.1Shell概述
3.2.2Shell的特点和命令行书写规则
3.2.3常用Shell类型
3.3实验内容
3.3.1简单Shell 程序设计
3.3.2Shell脚本的建立和执行
3.3.3Shell变量
3.3.4Shell中的特殊字符
3.3.5表达式的比较
3.3.6控制结构
3.3.7综合应用
第4章进程管理
4.1实验目的
4.2预备知识
4.2.1进程相关基本概念
4.2.2Linux下系统调用
4.2.3Windows下的系统调用
4.2.4进程调度算法
4.3实验内容
4.3.1进程的创建
4.3.2进程的控制
4.3.3文件的加锁、解锁
4.3.4Windows下的进程管理
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实验内容
附录A80386基础
附录B操作系统练习题与参考答案
附录C综合测试题及其参考答案
附录D操作系统自测题
附录ELinux0.11系统引导程序
附录FLinux0.11进程调度
附录GLinux0.11中信号的处理
附录HLinux0.11的内存管理
参考文献