作者 |
朱敏 杨啸 左劼 庞潇 张铭洋 张馨艺 王心翌 陈富秋 参 |
丛书名 |
高等院校计算机课程设计指导丛书 |
出版社 |
机械工业出版社 |
ISBN |
9787111695721 |
简要 |
简介 |
内容简介书籍计算机书籍 本书基于作者多年的操作系统课程教学实践,在第1版读者反馈的基础上,充分考虑教学对象的差异性和教学计划的多样性,精心调整、优化实践内容,旨在提供独立于任何操作系统理论教材的系统化实践参考。本书按照由浅入深、循序渐进的原则安排内容,首先介绍实践相关的理论和技术知识,接下来通过8个操作系统核心功能及特性的实验项目,帮助读者理解操作系统关键原理,并通过剖析一个小型开源操作系统Nachos的源代码,使读者透彻理解操作系统的功能和实现机制。 |
目录 |
前言 第一部分 准备知识 第1章 操作系统概论 2 1.1 操作系统的概念 2 1.2 操作系统的功能 2 1.2.1 处理器管理 2 1.2.2 存储器管理 3 1.2.3 设备管理 4 1.2.4 文件管理 4 1.2.5 用户接口管理 5 1.3 常见的操作系统 5 1.3.1 UNIX操作系统 5 1.3.2 Linux操作系统 6 1.3.3 Windows操作系统 7 1.4 本章小结 7 第2章 虚拟机的安装与使用 8 2.1 虚拟机软件VMware Workstation概述 8 2.2 搭建实践环境 8 2.3 在Windows下安装VMware 9 2.4 VMware下Ubuntu的安装与配置 12 2.5 虚拟机Linux与宿主机Windows的文件访问 17 2.5.1 安装VMware Tools实现虚拟机与主机文件共享 17 2.5.2 在Ubuntu虚拟机下开启Samba服务 24 2.6 本章小结 25 第3章 C语言基础 26 3.1 C语言基本语法回顾 26 3.1.1 分析一个简单的C程序 26 3.1.2 数据类型 26 3.1.3 变量与常量 28 3.1.4 运算符 29 3.1.5 函数 30 3.2 结构体 32 3.2.1 结构体类型的定义 32 3.2.2 结构体变量的定义 34 3.2.3 结构体变量的初始化 35 3.2.4 结构体变量的引用 35 3.3 指针 37 3.3.1 指针基础 37 3.3.2 指针变量的操作 37 3.3.3 指针与函数 39 3.3.4 数组与指针 39 3.4 C标准库 40 3.5 本章小结 41 第4章 shell编程 42 4.1 vim程序编辑器 42 4.1.1 vim的基本概念 42 4.1.2 vim的工作模式 42 4.1.3 vim的使用实例 44 4.2 用shell进行编程 46 4.2.1 shell的基本概念 46 4.2.2 shell脚本文件 46 4.2.3 变量及传递参数 47 4.2.4 数据类型 48 4.2.5 基本运算符 50 4.2.6 echo和test命令 51 4.2.7 流程控制 52 4.3 Linux下shell的常见命令 53 4.4 本章小结 55 第5章 文件I/O 56 5.1 系统调用与C语言标准库 56 5.2 Linux文件系统调用函数 57 5.3 C语言标准库中的文件I/O函数 62 5.4 本章小结 66 第6章 系统进程编程基础 67 6.1 进程的基本概念 67 6.1.1 进程与进程控制块 67 6.1.2 进程状态 67 6.2 进程与线程 68 6.2.1 线程的基本概念 68 6.2.2 线程与进程的比较 69 6.2.3 线程分类与多线程模型 69 6.3 Linux进程的创建与管理 70 6.3.1 fork函数 70 6.3.2 wait和waitpid函数 71 6.3.3 exec函数 72 6.4 Windows进程创建与终止 72 6.4.1 CreateProcess函数 72 6.4.2 ExitProcess函数 73 6.5 本章小结 74 第7章 C语言调试技术 75 7.1 Linux与Windows下的C语言开发环境 75 7.2 Windows下基于Dev C++和VS 2015的调试 76 7.3 Linux下的GDB命令行调试 82 7.4 Linux下基于DDD的图形界面调试 86 7.5 本章小结 92 第二部分 核心实验 第8章 Linux编程实验 94 8.1 实验目的 94 8.2 实验准备 94 8.3 基本知识及原理 94 8.4 实验说明 96 8.5 实验内容 97 8.6 实验总结 97 8.7 参考代码 98 8.8 实验报告 99 第9章 进程控制实验 102 9.1 实验目的 102 9.2 实验准备 102 9.3 基本知识及原理 102 9.4 实验说明 103 9.5 实验内容 105 9.6 实验总结 105 9.7 参考代码 106 9.8 实验报告 110 第10章 系统调用实验 113 10.1 实验目的 113 10.2 实验准备 113 10.3 基本知识及原理 113 10.4 实验说明 116 10.5 实验内容 119 10.6 参考代码 119 10.7 实验报告 122 第11章 作业调度实验 126 11.1 实验目的 126 11.2 实验准备 126 11.3 基本知识及原理 126 11.4 实验说明 128 11.5 实验内容 129 11.6 实验总结 130 11.7 参考代码 130 11.8 实验报告 134 第12章 同步与互斥实验 137 12.1 实验目的 137 12.2 实验准备 137 12.3 基本知识及原理 137 12.4 实验说明 139 12.5 实验内容 143 12.6 实验总结 144 12.7 参考代码 144 12.8 实验报告 152 第13章 银行家算法实验 156 13.1 实验目的 156 13.2 实验准备 156 13.3 基本知识及原理 156 13.4 实验说明 158 13.5 实验内容 159 13.6 实验总结 159 13.7 参考代码 160 13.8 实验报告 167 第14章 内存管理实验 169 14.1 实验目的 169 14.2 实验准备 169 14.3 基本知识及原理 169 14.4 实验说明 173 14.5 实验内容 176 14.6 实验总结 176 14.7 参考代码 177 14.8 实验报告 181 第15章 文件系统实验 185 15.1 实验目的 185 15.2 实验准备 185 15.3 基本知识及原理 185 15.4 实验说明 188 15.5 实验内容 190 15.6 实验总结 190 15.7 参考代码 191 15.8?实验报告 200 第三部分 Nachos源码分析 第16章 Nachos系统简介 204 16.1 Nachos概述 204 16.2 Nachos是如何运行的 204 16.3 系统源码 204 16.4 系统开发环境 205 16.5 系统的编译与测试 205 第17章 Nachos系统调用 207 17.1 以Add为例分析系统调用 207 17.2 系统调用流程及相关源文件分析 211 第18章 Nachos的同步与互斥 214 18.1 同步与互斥机制 214 18.2 信号量 214 18.3 锁 215 18.4 条件变量 216 18.5 案例分析:同步磁盘的实现 217 第19章 Nachos的线程调度 219 19.1 线程的结构分析 219 19.2 线程调度类分析 223 19.3 线程调度作业 224 19.4 测试结果 225 第20章 Nachos文件系统 226 20.1 Nachos文件系统的相关源码 226 20.2 Nachos的文件系统类 226 20.3 其他的文件系统相关类 230 参考文献 233 |