《操作系统课程设计》的实践环境基于Windows和Linux操作系统。Windows操作系统已经很普及,但是对于Linux操作系统并不是每个用户都有了解,本书对比介绍了Windows和Linux操作系统的异同,并对基本理论在两种操作系统中的具体实现进行了剖析。此外,本书对与实践内容相关的环境搭建、程序调试等基本技能也进行了介绍,以弥补读者在程序设计学习初期对调试方法、文件及接口等内容的不足。
本书的实践环境基于Windows和Linux操作系统。Windows操作系统已经很普及,但是对于Linux操作系统并不是每个用户都有了解,本书对比介绍了Windows和Linux操作系统的异同,并对基本理论在两种操作系统中的具体实现进行了剖析。此外,本书对与实践内容相关的环境搭建、程序调试等基本技能也进行了介绍,以弥补读者在程序设计学习初期对调试方法、文件及接口等内容的不足。
序
前言
教学建议
第一部分 基础知识
第1章 虚拟机及其使用概述
1.1 虚拟机软件vMware概述
1.2 搭建实践环境
1.3 在Windows下安装vMware
1.4 VMware下Ubuntu的安装配置
1.5 虚拟机下的Linux与宿主机Windows的文件访问
1.5.1 虚拟机下Ubuntu的网络配置及FTP使用
1.5.2 Ubuntu虚拟机下开启Telnet服务
1.5.3 Ubuntu虚拟机下开启Samba服务
本章小结
第2章 Linux与wlmdows的分析与比较
2.1 Linux系统特性
2.1.1 Linux内核
2.1.2 Linux系统软硬件资源的组织
2.1.3 I.inux文件系统
2.2 Windows下的cmd与Linux下的shell
2.2.1 终端和控制台的概念
2.2.2 Windows下cmd与Linux下shell的比较
2.3 Linux和Windows基本命令与格式
2.3.1 Windows与Linux基本命令
2.3.2 命令格式介绍和帮助查询
2.4 Linux和Windows下C语言编程环境及编译器
本章小结
第3章 C语言知识
3.1 C语言基本语法回顾
3.1.1 分析一个简单的C程序
3.1.2 数据类型
3.1.3 变量与常量
3.1.4 运算符
3.1.5 函数
3.2 指针
3.2.1 指针基础
3.2.2 指针变量的操作
3.2.3 指针与函数
3.2.4 数组与指针
3.3 C标准库
本章小结
第4章 文件I/O
4.1 系统调用与C语言标准库
4.2 Linux文件系统调用函数
4.3 C语言标准库中的文件I/O函数
本章小结
第5章 系统进程编程基础
5.1 main函数与命令行参数
5.2 进程终止
5.3 Linux中的进程控制函数
5.3.1 fork函数
5.3.2 wait和waitpid函数
5.3.3 exec函数
5.4 进程创建及终止函数
5.4.1 CreateProcess函数
5.4.2 ExitProcess函数
本章小结
第6章 C程序调试技术
6.1 Windows下基于VC6.0和VS2005的调试
6.2 GDB简介及Linux下的命令行调试
6.3 Linux下可视化界面调试范例
本章小结
第二部分 核心实验
第7章 IAnux编程基础实验
7.1 实验目的
7.2 实验准备
7.3 实验基本知识及原理
7.4 实验说明
7.5 实验内容
7.6 实验总结
7.7 实验报告及小组任务
7.8 参考代码
第8章 作业调度实验
8.1 实验目的
8.2 实验准备
8.3 实验基本知识及原理
8.4 实验说明
8.5 实验内容
8.6 实验总结
8.7 实验报告及小组任务
8.8 参考代码
第9章 系统调用及进程控制实验
9.1 实验目的
9.2 实验准备
9.3 实验基本知识及原理
9.4 实验说明
9.5 实验内容
9.6 实验总结
9.7 实验报告及小组任务
9.8 参考代码
第10章 同步与互斥实验
10.1 实验目的
10.2 实验准备
10.3 实验基本知识及原理
10.4 实验说明
10.5 实验内容
10.6 实验总结
10.7 实验报告及小组任务
10.8 参考代码
第11章 银行家算法实验
11.1 实验目的
11.2 实验准备
11.3 实验基本知识及原理
11.4 实验说明
11.5 实验内容
11.6 实验总结
11.7 实验报告及小组任务
11.8 参考代码
第12章 内存管理实验
12.1 实验目的
12.2 实验准备
12.3 实验知识及基本原理
12.4 实验说明
12.5 实验内容
12.6 实验总结
12.7 实验报告及小组任务
12.8 参考代码
第13章 磁盘调度实验
13.1 实验目的
13.2 实验准备
13.3 实验知识及基本原理
13.4 实验说明
13.5 实验内容
13.6 实验总结
13.7 实验报告及小组任务
13.8 参考代码
第14章 文件系统实验
14.1 实验目的
14.2 实验准备
14.3 实验原理
14.4 实验说明
14.5 实验内容
14.6 实验总结
14.7 实验报告及小组任务
14.8 参考代码
第三部分 Nachos源码分析
第15章 Nachos系统简介
15.1 Nachos简介
15.2 Nachos的运行原理
15.3 系统源码
15.4 系统的编译与测试
第16章 Nachos系统调用
16.1 以Add为例分析系统调用
16.2 系统调用流程及相关源文件分析
第17章 Nachos系统的同步与互斥
17.1 同步与互斥机制
17.2 信号量
17.3 锁
17.4 条件变量
17.5 案例分析:同步磁盘的实现
第18章 Nachos线程调度
18.1 线程结构分析
18.2 线程调度类分析
18.3 线程调度作业
18.4 测试结果
第19章 Nachos文件系统
19.1 Nachos文件系统相关源码说明
19.2 Nachos文件系统类分析
19.3 文件系统其他相关类
附录A 实验报告模板
参考文献
序
前言
教学建议
第一部分 基 础 知 识
第1章 虚拟机及其使用概述2
1.1 虚拟机软件VMware概述2
1.2 搭建实践环境2
1.3 在Windows下安装VMware2
1.4 VMware下Ubuntu的安装配置6
1.5 虚拟机下的Linux与宿主机Windows的文件访问14
1.5.1 虚拟机下Ubuntu的网络配置及FTP使用14
1.5.2 Ubuntu虚拟机下开启Telnet服务15
1.5.3 Ubuntu虚拟机下开启Samba服务16
本章小结17
第2章 Linux与Windows的分析与比较18
2.1 Linux系统特性18
2.1.1 Linux内核18
2.1.2 Linux系统软硬件资源的组织19
2.1.3 Linux文件系统19
2.2 Windows下的cmd与Linux下的shell20
2.2.1 终端和控制台的概念20
2.2.2 Windows下cmd与Linux下shell的比较20
2.3 Linux和Windows基本命令与格式20
2.3.1 Windows与Linux基本命令20
2.3.2 命令格式介绍和帮助查询21
2.4 Linux和Windows 下C语言编程环境及编译器22
本章小结22
第3章 C语言知识23
3.1 C语言基本语法回顾23
3.1.1 分析一个简单的C程序23
3.1.2 数据类型23
3.1.3 变量与常量25
3.1.4 运算符 26
3.1.5 函数27
3.2 指针29
3.2.1 指针基础29
3.2.2 指针变量的操作29
3.2.3 指针与函数30
3.2.4 数组与指针31
3.3 C标准库31
本章小结32
第4章 文件I/O33
4.1 系统调用与C语言标准库33
4.2 Linux文件系统调用函数34
4.3 C语言标准库中的文件I/O函数37
本章小结40
第5章 系统进程编程基础41
5.1 main函数与命令行参数41
5.2 进程终止41
5.3 Linux中的进程控制函数42
5.3.1 fork函数42
5.3.2 wait和waitpid函数42
5.3.3 exec函数43
5.4 进程创建及终止函数44
5.4.1 CreateProcess函数44
5.4.2 ExitProcess函数45
本章小结46
第6章 C程序调试技术47
6.1 Windows下基于VC 6.0和VS 2005的调试47
6.2 GDB简介及Linux下的命令行调试53
6.3 Linux下可视化界面调试范例55
本章小结58
第二部分 核 心 实 验
第7章 Linux编程基础实验60
7.1 实验目的60
7.2 实验准备60
7.3 实验基本知识及原理60
7.4 实验说明62
7.5 实验内容62
7.6 实验总结64
7.7 实验报告及小组任务64
7.8 参考代码65
第8章 作业调度实验66
8.1 实验目的66
8.2 实验准备66
8.3 实验基本知识及原理66
8.4 实验说明67
8.5 实验内容68
8.6 实验总结69
8.7 实验报告及小组任务69
8.8 参考代码70
第9章 系统调用及进程控制实验74
9.1 实验目的74
9.2 实验准备74
9.3 实验基本知识及原理74
9.4 实验说明77
9.5 实验内容80
9.6 实验总结80
9.7 实验报告及小组任务80
9.8 参考代码81
第10章 同步与互斥实验85
10.1 实验目的85
10.2 实验准备85
10.3 实验基本知识及原理85
10.4 实验说明86
10.5 实验内容88
10.6 实验总结89
10.7 实验报告及小组任务89
10.8 参考代码89
第11章 银行家算法实验101
11.1 实验目的101
11.2 实验准备101
11.3 实验基本知识及原理101
11.4 实验说明102
11.5 实验内容103
11.6 实验总结104
11.7 实验报告及小组任务104
11.8 参考代码105
第12章 内存管理实验111
12.1 实验目的111
12.2 实验准备111
12.3 实验知识及基本原理111
12.4 实验说明114
12.5 实验内容117
12.6 实验总结117
12.7 实验报告及小组任务117
12.8 参考代码117
第13章 磁盘调度实验124
13.1 实验目的124
13.2 实验准备124
13.3 实验知识及基本原理124
13.4 实验说明126
13.5 实验内容127
13.6 实验总结128
13.7 实验报告及小组任务128
13.8 参考代码128
第14章 文件系统实验132
14.1 实验目的132
14.2 实验准备132
14.3 实验原理132
14.4 实验说明135
14.5 实验内容137
14.6 实验总结137
14.7 实验报告及小组任务137
14.8 参考代码137
第三部分 Nachos源码分析
第15章 Nachos系统简介146
15.1 Nachos简介146
15.2 Nachos的运行原理146
15.3 系统源码146
15.4 系统的编译与测试147
第16章 Nachos系统调用149
16.1 以Add为例分析系统调用149
16.2 系统调用流程及相关源文件分析153
第17章 Nachos系统的同步与互斥156
17.1 同步与互斥机制156
17.2 信号量156
17.3 锁157
17.4 条件变量158
17.5 案例分析:同步磁盘的实现159
第18章 Nachos线程调度161
18.1 线程结构分析161
18.2 线程调度类分析164
18.3 线程调度作业166
18.4 测试结果167
第19章 Nachos文件系统168
19.1 Nachos文件系统相关源码说明168
19.2 Nachos文件系统类分析168
19.3 文件系统其他相关类172
附录A 实验报告模板175
参考文献193