实践环境基于Windows和Linux操作系统。Windows操作系统已经很普及,但是对于Linux操作系统并不是每个用户都有了解,考虑到本科生毕业后的社会续期,本书对比介绍了Windows和Linux操作系统的异同,以及对于基本理论在两种操作系统中的具体实现进行了剖析。
此外,本书对与实践内容相关的环境搭建、程序调试等基本技能也进行了介绍,以弥补学生在程序设计学习初期对调试方法以及文件、接口等内容的不足。本书设计的所有实验均已经过调试通过,所提供的实验报告样例,有助于学生和教师对照分析对相关知识的掌握情况。
操作系统课程是计算机及相关专业一门重要的专业课程,强调理论与实践的结合,特别是要通过实践深入理解操作系统的核心内容以及经典算法。本书基于作者多年的操作系统课程教学实践,充分考虑教学对象的差异性和教学计划的多样性,精心安排实践内容,旨在提供独立于任何操作系统理论教材的系统化实践参考。
本书特色
理论基础翔实。本书虽为实践教材,但作者不仅在书中回顾了操作系统理论课程中重要的知识点,还对实践项目中用到的开发环境、编程语言、调试技术等内容进行了介绍,为实践活动的进行奠定了扎实的理论基础。
层次化的实践内容。本书先介绍实践所需要的理论知识,接下来通过8个最能代表操作系统核心功能及特性的实验项目,帮助读者巩固理论知识;最后通过剖析一个小型的教学用操作系统Nachos的源代码,使读者透彻理解操作系统的功能和实现机制。
完善的实践架构。针对每一个实践内容,本书作者搭建出可行且易扩展的框架,涵盖实践的目的、要求、准备工作、所需的基本理论、实践内容、实践总结、实践报告及小组任务,最后还给出参考代码和相关的模板,流程清晰,任务明确,能适应不同水平读者的实践需求。
本书提供丰富的教学参考资源,包括PPT、实验题目源代码和Nachos系统源码,授课教师可登录华章网站下载。
操作系统是计算机系统的重要组成部分,能为上层程序及软件提供运行的环境和基础,并负责管理计算机软硬件资源、合理控制计算机工作流程。操作系统的重要性使其成为计算机相关专业的核心课程,并被列为考研必考科目。
本书的编写目的是在操作系统理论学习的基础上,通过实践加深学生对操作系统理论,尤其是对操作系统核心内容及经典算法的理解。编者在多年操作系统实验课教学实践的基础上,充分考虑教学对象的差异性和教学计划的多样性,从实验内容的深度和广度上有层次地合理安排教学内容,旨在为教授操作系统课程教师提供系统化的实践教学参考,为学习该课程的学生提供一个锻炼自我、自主学习的平台。
本书特色
翔实的基础理论。回顾操作系统中重点知识与理论,并对实践项目中需要用到的开发环境、编程语言、调试技术等进行了介绍。
经典的实验范例。精心挑选最能代表操作系统核心功能及实现的8个题目,并提供系统的实验思路、规范的实验模板。同时,以操作系统Nachos为例,深入浅出地讲解可运行操作系统的实现方式。
系统的实践教学思路。基于普通高校学生的操作系统课程学习需求,基于常见的Windows系统和Linux操作系统,通过一系列的实践题目,使学生从熟悉操作系统、动手安装/设置操作系统到熟悉操作系统的核心功能,直至能独立分析一个开源操作系统,最终透彻理解操作系统的功能和实现机制。
本书结构
本书主要包括部分:准备知识、核心实验、综合实践。各部分之间难度系数逐渐加大,以满足不同层次学生的需求。本书内容框架如下:
第一部分,准备知识。这部分中,主要介绍虚拟机的安装、Linux与Windows的分析与比较、C语言相关知识、文件I/O、系统进程编程基础、C程序调试技术简介等内容,涵盖理论课程中一般不会介绍,但将在后续实践中用到的重要知识及关键技术,让学生准备并熟悉实验所需的编程环境、编程方法和工具等,为后面的实验工作做好铺垫。
第二部分,核心实验。这个部分充分结合计算机操作系统中涉及的核心理论及算法,选择了8个核心实验:Linux编程基础、作业调度、系统调用及进程控制、同步与互斥、银行家算法、内存管理、磁盘调度和文件系统。实验以程序填空、代码解释、错误源码修改、程序编写等形式对重要知识点进行了加深和巩固,并针对实验中的重点与难点做了引导与提示,激励学生在实践中学习、在思考中进步。
第三部分,Nachos源码分析。在前两部分学习的基础上,这一部分将通过分析操作系统Nachos的源代码,再次巩固系统调用的实现、同步与互斥机制的实现、线程机制,以及文件系统五个方面的内容。通过对这个真实系统的源码分析,可以使读者更加清楚地了解理论知识是如何在实际操作系统中使用的。
此外,本书还以附录形式提供了基础实验部分的实验报告,帮助读者在操作系统实践课程的学习中获得切实的指导与启迪。
读者对象
本书是为高等院校师生和计算机相关专业人员编写的。作为教材,本书适用于计算机及相关专业操作系统实践课程的教学。此外,本书还是一本适合操作系统爱好者参考的自学用书。
课程提供的参考资料
本书为授课教师和读者提供以下资源:
PPT课件:包括核心实验部分课件,可用于课堂教学。
源代码:包括常规部分教学实验源码和修改后的Nachos系统源码。
读者可以登录华章网站(http://www.hzbook.com)下载相关资料。
致谢
本书在编写过程中得到了四川大学计算机学院多名教师,以及机械工业出版社编辑们的大力支持,在此表示衷心的感谢。
在本书写作过程中,四川大学视觉计算实验室的学生做了富有成效的工作,其中本书第二部分内容得到了封泽希、杨寸月等同学的帮助。第一部分的内容和实验报告参与者还有赵丹丹、符敏、郑家超。赵辉老师在本书的编写策划方面也提出了许多宝贵意见。在本书出版之际,谨表示诚挚的谢意。
由于作者学识所限,书中难免有错漏之处,恳请读者及同行批评、指正。
作者
2014年11日
计算机\操作系统
操作系统课程是计算机及相关专业一门重要的专业课程,强调理论与实践的结合,特别是要通过实践深入理解操作系统的核心内容以及经典算法。本书基于作者多年的操作系统课程教学实践,充分考虑教学对象的差异性和教学计划的多样性,精心安排实践内容,旨在提供独立于任何操作系统理论教材的系统化实践参考。
本书特色:
理论基础翔实。本书虽为实践教材,但作者不仅在书中回顾了操作系统理论课程中重要的知识点,还对实践项目中用到的开发环境、编程语言、调试技术等内容进行了介绍,为实践活动的进行奠定了扎实的理论基础。
层次化的实践内容。本书先介绍实践所需要的理论知识,接下来通过8个最能代表操作系统核心功能及特性的实验项目,帮助读者巩固理论知识;最后通过剖析一个小型的教学用操作系统Nachos的源代码,使读者透彻理解操作系统的功能和实现机制。
完善的实践架构。针对每一个实践内容,本书作者搭建出可行且易扩展的框架,涵盖实践的目的、要求、准备工作、所需的基本理论、实践内容、实践总结、实践报告及小组任务,最后还给出参考代码和相关的模版,流程清晰,任务明确,能适应不同水平读者的实践需求。
本书提供丰富的教学参考资源,包括PPT、实验题目源代码和Nachos系统源码,授课教师可登录华章网站下载。
朱敏:暂无
序
前言
教学建议
第一部分 基 础 知 识
第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