Unix操作系统设计第一章学习

这一章主要对Unix系统的整个结构、进程间的关系以及内核进行了简要的描述。
系统结构
图1给出了Unix系统的体系结构。该图的中心部分是硬件,它向操作系统提供基本的服务。操作系统部分直接和硬件进行交互,并向程序提供公共服务,使它们同硬件特性隔离开来。这样一来的话,如果程序对硬件没有做什么假定的话,那么它就具有很高的可移植性。外层的程序,例如shell及编辑程序等等,是通过引用一组明确定义的系统调用而与内核交互的。

这里写图片描述
图1
系统高层特征
文件系统的特点
1. 层次结构,如图2。文件系统被组织成树状结构,树有个称为根(root)的节点(记作“/”)。其中每个非叶子节点都是文件的一个目录,而叶节点的问题既可以是目录也可以是正规文件还可以是特殊文件。
这里写图片描述
图2
2. 对文件数据的一致处理。在UNIX系统中,程序是不需要了解文件的内部存储格式,而是把数据统一看成无格式的字节流。所以程序可以按照自己的意愿来解释字节流。
3. 文件数据的保护。在Unix系统中,对一个文件的存取许可权是由与该文件相联系的访问控制权所控制的,存取许可权能够分别对文件所有者,同组用户以及其他人这三类用户独立地建立存取许可权,以控制读、写及执行的许可权。

处理环境
一个程序是可执行文件,而一个进程是一个执行中的程序的实例。在UNIX系统上可以同时执行多个进程。特别的是,一个程序是可以有着多个相对应的进程。进程可以通过各种系统调用来创建新进程、终止其他进程以及进行进程间的通信等等。

操作系统的服务

  1. 进程管理
  2. 存储管理
  3. 文件管理

内核
在UNIX系统上用户进程的执行分为两个级别:用户与内核。当发生系统调用时,进程的执行态从用户态变成内核态。用户态和内核态的区别主要在于:在用户态下的进程能存取它们自己的指令和数据,但是不能存取内核指令和数据,然而内核态下的进程是可以存取内核和用户地址的。但是内核并不是与用户进程平行运行的孤立的进程集合,而是每个用户进程的一部分。相应地,每一个进程的虚拟地址空间划分为仅在内核态下可存取及在内核态、用户态下都可存取的两部分。

译者序 前言 第1章 系统概貌 1.1 历史 1.2 系统结构 1.3 用户看法 1.3.1 文件系统 1.3.2 处理环境 1.3.3 构件原语 1.4 操作系统服务 1.5 关于硬件的假设 1.5.1 中断与例外 1.5.2 处理机执行级 1.5.3 存储管理 1.6 本章小结 第2章 内核导言 2.1 UNIX操作系统的体系结构 2.2 系统概念介绍 2.2.1 文件子系统概貌 2.2.2 进程 2.3 内核数据结构 2.4 系统管理 2.5 本章小结 2.6 习题 第3章 数据缓冲区高速缓冲 3.1 缓冲头部 3.2 缓冲池的结构 3.3 缓冲区的检索 3.4 读磁盘块与写磁盘块 3.5 高速缓冲的优点与缺点 3.6 本章小结 3.7 习题 第4章 文件的内部表示 4.1 索引节点 4.1.1 定义 4.1.2 对索引节点的存取 4.1.3 释放索引节点 4.2 正规文件的结构 4.3 目录 4.4 路径名到索引节点的转换 4.5 超级块 4.6 为新文件分配索引节点 4.7 磁盘块的分配 4.8 其他文件类型 4.9 本章小结 4.10 习题 第5章 文件系统的系统调用 5.1 系统调用Open 5.2 系统调用read 5.3 系统调用write 5.4 文件和记录的上锁 5.5 文件的输入/输出位置的调整lseek 5.6 系统调用close 5.7 文件的建立 5.8 特殊文件的建立 5.9 改变目录及根 5.10 改变所有者及许可权方式 5.11 系统调用stat和fstat 5.12 管道 5.12.1 系统调用pipe 5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统调用unlink 5.16.1 文件系统的一致性 5.16.2 竟争条件 5.17 文件系统的抽象 5.18 文件系统维护 5.19 本章小结 5.20 习题 第6章 进程结构 6.1 进程的状态和状态的转换 6.2 系统存储方案 6.2.1 区 6.2.2 页和页表 6.2.3 内核的安排 6.2.4 u区 6.3 进程的上下文 6.4 进程上下文的保存 6.4.1 中断和例外 6.4.2 系统调用的接口 6.4.3 上下文切换 6.4.4 为废弃返回(abortive return)而保存上下文 6.4.5 在系统和用户地址空间之间拷贝数据 6.5 进程地址空间的管理 6.5.1 区的上锁和解锁 6.5.2 区的分配 6.5.3 区附接到进程 6.5.4 区大小的改变 6.5.5 区的装入 6.5.6 区的释放 6.5.7 区与进程的断接 6.5.8 区的复制 6.6 睡眠 6.6.1 睡眠事件及其地址 6.6.2 算法sleep和wakeup 6.7 本章小结 6.8 习题 第7章 进程控制 7.1 进程的创建 7.2 软中断信号 7.2.1 软中断信号的处理 7.2.2 进程组 7.2.3 从进程发送软中断信号 7.3 进程的终止 7.4 等待进程的终止 7.5 对其他程序的引用 7.6 进程的用户标识号 7.7 改变进程的大小 7.8 Shell程序 7.9 系统自举和进程init 7.10 本章小结 7.11 习题 第8章 进程调度和时间 8.1 进程调度 8.1.1 算法 8.1.2 调度参数 8.1.3 进程调度的例子 8.1.4 进程优先权的控制 8.1.5 公平共享调度 8.1.6 实时处理 8.2 有关时间的系统调用 8.3 时钟 8.3.1 重新启动时钟 8.3.2 系统的内部定时 8.3.3 直方图分析 8.3.4 记帐和统计 8.3.5 计时 8.4 本章小结 8.5 习题 第9章 存储管理策略 9.1 对换 9.1.1 对换空间的分配 9.1.2 进程的换出 9.1.3 进程的换入 9.2 请求调页 9.2.1 请求调页的数据结构 9.2.2 偷页进程 9.2.3 页面错 9.2.4 在简单硬件支持下的请求调页系统 9.3 对换和请求调页的混合系统 9.4 本章小结 9.5 习题 第10章 输入输出子系统 10.1 驱动程序接口 10.1.1 系统配置 10.1.2 系统调用与驱动程序接口 10.1.3 中断处理程序 10.2 磁盘驱动程序 10.3 终端驱动程序 10.3.1 字符表Clist 10.3.2 标准方式下的终端驱动程序 10.3.3 原始方式下的终端驱动程序 10.3.4 终端探询 10.3.5 建立控制终端 10.3.6 间接终端驱动程序 10.3.7 注册到系统 10.4 流 10.4.1 流的详细的示例 10.4.2 对流的分析 10.5 本章小结 10.6 习题 第11章 进程间通信 11.1 进程跟踪 11.2 系统V IPC 11.2.1 消息 11.2.2 共享存储区 11.2.3 信号量 11.2.4 总的评价 11.3 网络通信 11.4 套接字 11.5 本章小结 11.6 习题 第12章 多处理机系统 12.1 多处理机系统的问题 12.2 主从处理机解决方法 12.3 信号量解决方法 12.3.1 信号量定义 12.3.2 信号量实现 12.3.3 几个算法 12.4 Tunis系统 12.5 性能局限性 12.6 习题 第13章 分布式UNIX系统 13.1 卫星处理机系统 13.2 纽卡斯尔连接 13.3 透明型分布式文件系统 13.4 无存根进程的透明分布式模型 13.5 本章小结 13.6 习题 附录A 系统调用 参考文献 索引
第1章 系统概貌 1.1 历史 1.2 系统结构 1.3 用户看法 1.3.1 文件系统 1.3.2 处理环境 1.3.3 构件原语 1.4 操作系统服务 1.5 关于硬件的假设 1.5.1 中断与例外 1.5.2 处理机执行级 1.5.3 存储管理 1.6 本章小结 第2章 内核导言 2.1 UNIX操作系统的体系结构 2.2 系统概念介绍 2.2.1 文件子系统概貌 .2.2.2 进程 2.3 内核数据结构 2.4 系统管理 2.5 本章小结 2.6 习题 第3章 数据缓冲区高速缓冲 3.1 缓冲头部 3.2 缓冲池的结构 3.3 缓冲区的检索 3.4 读磁盘块与写磁盘块 3.5 高速缓冲的优点与缺点 3.6 本章小结 3.7 习题 第4章 文件的内部表示 4.1 索引节点 4.1.1 定义 4.1.2 对索引节点的存取 4.1.3 释放索引节点 4.2 正规文件的结构 4.3 目录 4.4 路径名到索引节点的转换 4.5 超级块 4.6 为新文件分配索引节点 4.7 磁盘块的分配 4.8 其他文件类型 4.9 本章小结 4.10 习题 第5章 文件系统的系统调用 5.1 系统调用open 5.2 系统调用read 5.3 系统调用write 5.4 文件和记录的上锁 5.5 文件的输入/输出位置的调整—lseek 5.6 系统调用close 5.7 文件的建立 5.8 特殊文件的建立 5.9 改变目录及根 5.10 改变所有者及许可权方式 5.11 系统调用stat和fstat 5.12 管道 5.12.1 系统调用pipe 5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的关闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统调用unlink 5.16.1 文件系统的一致性 5.16.2 竞争条件 5.17 文件系统的抽象 5.18 文件系统维护 5.19 本章小结 5.20 习题 第6章 进程结构 6.1 进程的状态和状态的转换 6.2 系统存储方案 6.2.1 区 6.2.2 页和页表 6.2.3 内核的安排 6.2.4 u区 6.3 进程的上下文 6.4 进程上下文的保存 6.4.1 中断和例外 6.4.2 系统调用的接口 6.4.3 上下文切换 6.4.4 为废弃返回(abortive return)而保存上下文 6.4.5 在系统和用户地址空间之间拷贝数据 6.5 进程地址空间的管理 6.5.1 区的上锁和解锁 6.5.2 区的分配 6.5.3 区附接到进程 6.5.4 区大小的改变 6.5.5 区的装入 6.5.6 区的释放 6.5.7 区与进程的断接 6.5.8 区的复制 6.6 睡眠 6.6.1 睡眠事件及地址 6.6.2 算法sleep和wakeup 6.7 本章小结 6.8 习题 第7章 进程控制 7.1 进程的创建 7.2 软中断信号 7.2.1 软中断信号的处理 7.2.2 进程组 7.2.3 从进程发送软中断信号 7.3 进程的终止 7.4 等待进程的终止 7.5 对其他程序的引用 7.6 进程的用户标识号 7.7 改变进程的大小 7.8 shell程序 7.9 系统自举和进程init 7.10 本章小结 7.11 习题 第8章 进程调度和时间 8.1 进程调度 8.1.1 算法 8.1.2 调度参数 8.1.3 进程调度的例子 8.1.4 进程优先权的控制 8.1.5 公平共享调度 8.1.6 实时处理 8.2 有关时间的系统调用 8.3 时钟 8.3.1 重新启动时钟 8.3.2 系统的内部定时 8.3.3 直方图分析 8.3.4 记帐和统计 8.3.5 计时 8.4 本章小结 第9章 存储管理策略 9.1 对换 9.1.1 对换空间的分配 9.1.2 进程的换出 9.1.3 进程的换入 9.2 请求调页 9.2.1 请求调页的数据结构 9.2.2 偷页进程 9.2.3 页面错 9.2.4 在简单硬件支持下的请示调页系统 9.3 对换和请示调页的混合系统 9.4 本章小结 9.5 习题 第10章 输入/输出子系统 10.1 驱动程序接口 10.1.1 系统配置 10.1.2 系统调用与驱动程序接口 10.1.3 中断处理程序
第1章 UNIX操作系统概述 7 1.1 UNIX操作系统简介 7 1.2 UNIX系统组成 7 1.3 UNIX启动过程 8 1.4 UNIX用户登录过程 8 1.5 与UNIX有关的几个名词 9 第2章 UNIX基本常识 11 2.1 启动终端 11 2.2 登录 11 2.3 初始化文件 11 2.4 注销(退出UNIX系统) 12 第3章 UNIX文件系统 13 3.1 文件系统分类 13 3.2 文件类型 13 3.2.1 正规文件 13 3.2.2 目录文件 14 3.2.3 字符和块设备文件 15 3.2.4 套接字文件 15 3.2.5 命名管道文件 16 3.2.6 链接文件 16 3.3 树型目录结构 16 3.4 文件和目录的命名 18 3.5 UNIX文件存取权限 18 3.6 重定向与管道 21 3.6.1 UNIX重定向 21 3.6.2 UNIX管道 22 3.7 常用配置文件 22 3.7.1 /etc/passwd文件 22 3.7.2 /etc/group文件 22 3.7.3 /etc/hosts 23 3.7.4 /etc/services 23 3.8 文件系统管理 23 3.8.1 mount 23 3.8.2 umount 24 3.8.3 加载配置文件 24 3.8.4 fsck 25 第4章 UNX系统常用命令 27 4.1 UNIX命令基础 27 4.1.1 UNIX命令的一般格式 27 4.1.2 特殊功能键和字符 28 4.1.3 查看帮助信息 30 4.1.4 在后台运行程序 31 4.1.5 在指定时间执行指定程序 31 4.2 vi编辑器的最基本用法 32 4.2.1 vi简介 32 4.2.2 vi的启动和退出 33 4.2.3 vi的两种模式 33 4.2.4 vi的基本操作 34 4.2.5 vi的高级操作 36 4.3 目录操作命令 38 4.3.1 pwd 38 4.3.2 mkdir 38 4.3.3 cd 38 4.3.4 rmdir 39 4.4 文件操作命令 39 4.4.1 ls 39 4.4.2 cat 40 4.4.3 head 41 4.4.4 tail 41 4.4.5 more 41 4.4.6 cp 43 4.4.7 mv 44 4.4.8 rm 44 4.4.9 chmod 44 4.4.10 chown 46 4.4.11 chgrp 46 4.4.12 cmp 46 4.4.13 diff 47 4.4.14 wc 47 4.4.15 split 47 4.4.16 touch 48 4.4.17 file 48 4.4.18 pack 48 4.4.19 pcat 49 4.4.20 unpack 49 4.4.21 find 49 4.4.22 grep 51 4.4.23 pg 52 4.4.24 ln 52 4.4.25 sort 53 4.4.26 compress 53 4.4.27 uncompress 54 4.4.28 gzip 54 4.4.29 gunzip 54 4.4.30 tar 54 4.4.31 cpio 55 4.4.32 tee 56 4.5 状态信息命令 57 4.5.1 w 57 4.5.2 who 57 4.5.3 whodo 57 4.5.4 logname 58 4.5.5 whoami 58 4.5.6 whereis 58 4.5.7 which 58 4.5.8 date 58 4.5.9 cal 59 4.5.10 time 59 4.5.11 id 59 4.5.12 hostid 60 4.5.13 hostname 60 4.5.14 df 60 4.5.15 du 60 4.5.16 stty 61 4.5.17 tty 61 4.5.18 history 61 4.5.19 alias 61 4.5.20 echo 62 4.5.21 uname 62 4.5.22 clear 62 4.6 网络命令 62 4.6.1 arp 62 4.6.2 finger 63 4.6.3 wall 63 4.6.4 mesg 63 4.6.5 write 63 4.6.6 ping 63 4.6.7 netstat 64 4.6.8 telnet 64 4.6.9 ftp 64 4.7 进程管理命令 65 4.7.1 kill 65 4.7.2 ps 66 4.7.3 sleep 68 4.7.4 nice 68 4.7.5 shutdown 68 4.7.6 halt 69 4.7.7 poweroff 69 4.7.8 reboot 69 4.8 用户管理命令 69 4.8.1 su 69 4.8.2 groupadd 69 4.8.3 groupdel 70 4.8.4 useradd 70 4.8.5 userdel 70 4.8.6 passwd 71 第5章 shell的基础知识 72 5.1 什么是shell 72 5.2 别名化 73 5.3 shell变量 74 5.3.1 shell变量的存储机制 74 5.3.2 变量替换 74 5.3.3 命令替换 76 5.4 用户环境 76 5.5 两个重要的环境变量 77 5.6 shell启动文件 78 5.7 监控进程 78 第6章 附录 79 6.1 ftp命令参考 79 6.2 vi命令参考 80 6.3 find命令详解 85 6.3.1 Find命令形式 85 6.3.2 Find命令参数 85 6.3.3 Find命令举例 87 6.4 grep命令详解 99
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值