内容简介
第一章 UNIX操作系统的历史与特征
1.1 UNIX系统的发展历史与现状
1.1.1 UNIX系统的产生
目录
1.1.2 UNIX系统的发展
1.1.3 UNIX系统的现状
1.2 UNIX系统的特征
1.2.1 UNIX系统的主要优点
1.2.2 对UNIX系统的批评
第二章 操作系统的基本知识
2.1 硬件与软件
2.2 操作系统的功能
2.3 核心程序与实用程序
2.4 操作系统的分类
习题
3.1 PDP-11系统结构
第三章 UNIX系统结构
3.2 中断系统
3.2.1 中断概念的引入与分类
3.2.2 中断与中断向量
3.2.3 捕俘与捕俘向量
3.2.4 中断保留区
3.2.5 中断捕俘总控程序
3.3 UNIX系统的程序结构
3.3.1 程序的调用与返回
3.3.2 再谈中断保留区
3.4 UNIX系统的整体结构
习题
第四章 进程管理
4.1 进程的概念
4.1.1 进程概念的引入
4.1.2 进程的状态
4.2.1 进程的程序与数据
4.2 进程映象
4.2.2 proc结构与ppda
4.3 进程调度
4.3.1 调度算法
4.3.2 进程现场的保留
4.3.3 低级调度程序
4.4 进程通信
4.4.1 概述
4.4.2 通信操作的实现
4.4.3 进程通信举例
4.5 进程的建立
4.5.1 建立进程映象
4.5.2 子进程的运行
4.5.3 系统调用fork
4.6.2 可执行文件的格式
4.6 执行一个文件
4.6.1 更换进程映象
4.6.3 自变量传递
4.6.4 exec的实现
4.6.5 fork-exec的应用
4.7 进程的终止与等待
4.7.1 进程终止
4.7.2 等待子进程
4.8 进程的资源
习题
第五章 存储管理
5.1 引言
5.1.1 逻辑地址与物理地址
5.1.2 连接编辑
5.1.3 地址重定位
5.1.4 内存的扩充
5.2.1 页表
5.2 PDP-11的地址转换机构
5.2.2 地址转换算法
5.2.3 用户栈的表示
5.3 逻辑空间的分配
5.3.1 用户逻辑空间
5.3.2 核心逻辑空间
5.3.3 样本页表
5.3.4 样本页表与硬件页表的装配
5.3.5 estabur与sureg的应用
5.4 物理空间的分配
5.4.1 分配算法
5.4.2 应用举例
5.5 程序对换
5.5.1 概述
5.5.2 对换驱动程序
5.5.3 映象换出程序
5.5.4 进程0
5.6 有关数据段的操作
5.6.1 改变数据段的大小
5.6.2 用户栈的扩大
5.6.3 系统调用brk
习题
第六章 时钟处理与捕俘处理
6.1 时钟处理
6.1.1 硬件时钟与软件计时
6.1.2 时钟处理程序
6.2 捕俘总控与系统调用
6.2.1 捕俘总控程序
6.2.2 系统调用的转入与参数复制
6.2.3 系统调用的分类
6.3 软中断
6.3.1 软中断的引入
6.3.2 软中断处理程序的设置
6.3.3 软中断的产生与发送
6.3.4 软中断的发现与处理
6.3.5 软中断处理举例
6.4 跟踪
6.4.1 跟踪机构的用法
6.4.2 跟踪机构的实现
6.4.3 跟踪过程
习题
第七章 外部设备管理
7.1 引言
7.1.1 块设备与字符设备
7.1.2 主设备号与次设备号
7.1.3 UNIX设备管理的特点
7.2 设备配置与开关表
7.2.1 设备的重新配置
7.2.2 开关表与驱动程序的联系
7.4.1 硬件背景
7.4 块设备的驱动
7.4.2 RK磁盘的驱动
7.2.3 特别文件的建立
7.3 块设备的缓冲区管理
7.3.2 缓冲区与缓冲首部
7.3.1 块设备系统的结构
7.3.3 块设备表与缓冲首部队列
7.3.4 缓冲区的申请与释放
7.4.3 块设备系统与文件系统的接口
7.5 字符设备的缓冲管理与tty结构
7.5.1 引言
7.5.2 缓冲管理
7.5.3 终端设备的tty结构与寄存器组
7.6 终端设备的驱动
7.6.1 终端的打开与关闭
7.6.2 终端输入过程
7.6.3 终端输出过程
8.1.2 文件的逻辑结构与物理结构
8.1.3 UNIX文件系统的特点
8.2 文件目录
7.7 原始磁盘的管理
7.7.2 原始磁盘的启动
7.7.1 原始磁盘的用法
习题
第八章 文件系统
8.1 引言
8.1.1 文件与文件系统
8.2.4 文件的联结
8.2.1 简单的文件目录
8.2.2 多级目录与UNIX树形目录结构
8.2.3 索引节点
8.2.5 目录的检索
8.3 文件卷的安装与拆卸
8.3.1 实现原理
8.3.2 实现过程
8.4 文件卷存储空间的管理
8.4.2 文件卷的专用块与空间块的管理
8.4.1 一些常用的方法
8.4.3 i节点的分配与释放
8.5 文件的访问与存取控制
8.5.1 文件的访问与共享
8.5.2 文件的存取控制
8.6 关于文件的系统调用
8.6.1 数据结构
8.6.2 文件的创建
8.6.3 文件的联结与删除
8.6.4 文件的打开与关闭
8.6.5 用户打开文件表、系统打开文件表与活动i节点表的关系
8.6.6 文件的读写
8.6.7 管道文件
习题
第九章 系统初启
9.1 初始引导
9.2.1 核心页表寄存器的初置
9.2 核心初始化
9.2.2 进程0和进程1的建立
9.2.3 核心初始化过程
9.3 系统初始化
9.3.1 单用户环境
9.3.2 若干文件
9.3.3 多用户环境与文件getty
9.3.4 进程1的生命周期
习题
第十章 shell命令语言及其程序设计
10.1 UNIX使用基础
10.1.1 注册(login)与注销(logout)
10.1.2 终端特性
10.2 编辑程序
10.2.1 ed的进入与退出
10.2.2 建立文件
10.2.3 行编辑
10.2.4 上下文编辑
10.2.5 模式匹配
10.2.6 全局编辑
10.2.7 其它用法
10.3 常用的shell命令
10.3.1 有关目录和文件的命令
10.3.2 文件打印命令
10.3.3 状态询问命令
10.3.4 用户通信
10.3.5 进程管理
10.4 shell的交互特征
10.4.1 后台执行与重新定向
10.4.2 管道与过滤器
10.4.3 文件名字生成
10.5.1 shell变量
10.4.4 引号的使用
10.5 shell程序设计
10.5.2 几个专用的shell变量
10.5.3 简单的条件
10.5.4 简单命令、管道线与命令表
10.5.5 if条件
10.5.6 shell程序的自变量
10.5.7 while和until条件循环
10.5.8 命令替换
10.5.9 for结构
10.5.10 case结构
10.5.11 break和continue语句
10.6 shell程序的执行
10.7 shell解释程序的实现
10.7.1 初始化
10.7.2 命令行的读入与分析
10.7.3 命令树的执行
第十一章 C语言
11.1 C语言的演变历史及其特点
11.1.1 C语言的演变历史
11.1.2 C语言的特点
11.2 C程序的编写及其运行
11.2.1 样本C程序
11.2.2 C程序的处理流程
11.3 C语言的基本成分
11.3.1 C程序的元素
11.3.2 基本数据类型
11.3.3 常量
11.3.4 运算符与表达式
11.4 语句与控制流
11.4.1 若干简单语句
11.4.2 条件语句与开关语句
11.4.3 循环语句
11.4.4 其它语句
11.5 函数与程序结构
11.5.1 函数的一般形式
11.5.2 函数的递归调用
11.5.3 程序结构与存储类
11.5.4 初始化
11.6 构造数据类型
11.6.1 数组
11.6.2 指针与数组
11.6.3 结构
11.6.4 联合
11.7 C预处理程序
第十二章 UNIX程序设计环境
12.2 输入输出程序库
12.2.1 输入输出标准函数
12.2.2 格式输入输出
12.1 自变量约定
12.2.3 文件的存取
12.2.4 错误处理与出口
12.2.5 成行的输入输出
12.3 其它函数
12.4 低级输入输出
12.4.1 文件的读写与打开关闭
12.4.2 文件的随机存取
12.4.3 fopen的实现
12.5 进程管理
12.5.1 低级进程执行——execlp和execvp
12.5.2 创建并等待子进程——fork和wait
12.5.3 进程终止——exit
12.6 信号处理
参考文献