操作系统A
基于教材《操作系统教程》屠立忠 徐金宝 主编
整理于2024-01-03至2024-01-09
目录
- 第1章 操作系统概论
- 1.1 操作系统的概念
- 1.2 操作系统的功能
- 1.3 操作系统的接口
- 1.4 操作系统的结构
- 1.5 流行操作系统简介
- 第2章 处理器管理及并发进程
- 2.1 多道程序设计
- 2.2 进程
- 2.3 进程的控制
- 2.4 进程调度
- 2.5 线程及其实现
- 2.6 并发进程的概念
- 2.7 进程的互斥和同步
- 2.8 管程
- 2.9 进程通信
- 2.10 死锁
- 第3章 存储管理
- 3.1 存储系统的基本概念
- 3.2 存储管理的基本概念
- 3.3 分区存储管理
- 3.4 简单分页存储管理
- 3.5 简单分段存储管理
- 3.6 虚拟存储管理
- 3.7 请求分页虚拟存储管理
- 3.8 请求分段虚拟存储管理
- 3.9 请求段页式虚拟存储管理
- 第4章 设备管理
- 4.1 设备管理概述
- 4.2 设备I/O控制方式
- 4.3 设备I/O软件原理
- 4.4 缓冲技术
- 4.5 外围的设备分配、回收与启动
- 4.6 磁盘驱动调度
- 4.7 虚拟设备
- 第5章 文件管理
- 5.1 文件系统
- 5.2 文件目录
- 5.3 文件结构与存取方法
- 5.4 文件的使用
- 5.5 安全性和保护
- 第6章 Windows和Linux操作系统
- 6.1 WINDOWS 2000/XP
- 6.2 LINUX操作系统
第1章 操作系统概论
- 操作系统是一种管理计算机系统资源(硬件和软件)并且方便用户使用的最重要的系统软件。
- 操作系统的形成和发展:
- 人工操作阶段。
- 批处理系统阶段。优点:吞吐量大;缺点:无法即时交互。
- 多道程序系统阶段。多道程序设计的出现是操作系统形成的标志。
- 基本操作系统:
*
操作系统的主要特性:(最重要的特性)并发性(不是并行性)、共享性、异步性、虚拟性。*
操作系统的接口(用户接口:命令、图形、批处理;程序员接口:系统调用。):
*
操作接口和操作命令:操作控制命令、图形操作界面、作业控制语言。*
应用程序接口(Application Programming Interface,API)与系统调用。
第2章 处理器管理及并发进程
- 多道程序设计。优点:充分发挥了计算机硬件的并行性,消除了处理器和外围设备的互相等待现象,大大提高了系统的效率;缺点:对于单个作业,执行时间可能会延长。
*
进程的状态转换图。- 进程控制块(Process Control Block,PCB)是为了描述和控制进程的运行而定义的一种数表结构,是进程存在的唯一标志,也是进程实体的一部分。操作系统对进程的管理和控制主要以PCB为依据。
*
特权指令:只能在核心态下运行的指令。例如:修改程序状态字(Program Status Word,PSW)、开关中断、启停设备。*
非特权指令:不是特权指令的其他指令。例如:访管指令、算术与逻辑运算指令。- 原语不能并发执行,在执行时不可能被中断。
- 系统调用在执行时可能被中断。
- 原语和系统调用都是使用访管指令实现的。
*
三级调度:
*
低级调度(进程调度/处理器调度):主存 -> 处理器。短程、微观。*
中级调度(挂起/激活):磁盘 <=> 主存。中程。*
高级调度(作业调度):磁盘 -> 主存。长程、宏观。
*
进程调度算法:
*
先来先服务调度算法。*
优先级调度算法。
*
不可抢占的优先级调度算法。*
可抢占的优先级调度算法(实时操作系统)。
*
时间片轮转调度算法。时间片的选择既不能太长,也不能太短,而应该是一种统计学上的折中。*
多级反馈队列轮转调度算法。主流,是前3种的结合。*
彩票调度算法。
*
线程的组成:线程控制块(Thread Control Block,TCB)、用户堆栈、系统堆栈、一组处理器状态寄存器、一个私用内存存储区。*
线程的基本状态:运行态、就绪态、等待态。(线程没有挂起)*
多线程的实现:内核级线程(Windows 2000/XP、OS/2等操作系统)、用户级线程(Java程序设计语言)、混合级线程(SUN公司的Solaris操作系统)。*
临界区(Critical Section)是并发进程中与共享变量有关的程序代码段。*
临界资源(Critical Resource)是共享变量所代表的共享资源。*
对临界区的管理必须满足4个要求:
*
不存在有关进程间相对推进速度、系统内有多个CPU的假定。*
一次最多只能有一个进程进入临界区,也即没有2个或2个以上的进程能够同时进入临界区,当有一个进程在临界区内,其他想进入临界区的进程必须等待,这一点充分说明了临界区的互斥访问特性。*
不能让一个进程在临界区内无限制地运行下去,在临界区中的进程必须在有限时间内运行结束而离开临界区。*
等待进入临界区的进程,在时间上不能被无限推迟。
*
信号量(Semaphore)是对进程而言的,代表可以使用的资源的个数。*
PV操作
*
P操作和V操作都是原语操作(在执行时不能被中断),内部过程如下:
typedef int Semaphore;
void P(Semaphore s) {
s -= 1;
if (s < 0) {
wait(s);
}
}
void V(Semaphore s) {
s += 1;
if (s <= 0) {
revoke(s);
}
}
typedef int Semaphore;
Semaphore baskets = 30, entry = 1, exit = 1;
process Customer(void) {
P(baskets);
{拿一个购物篮;}
P(entry);
{从入口进入超市;}
V(entry);
{购物;结账;}
P(exit);
{从出口离开超市;}
V(exit);
{归还购物篮;}
V(baskets);
}
int buffer;
typedef int Semaphore;
Semaphore sp = 1, sc = 0;
process Producer(void) {
while (1) {
{制造product;}
P(sp);
buffer = product;
V(sc);
}
}
process Consumer(void) {
while (1) {
P(sc);
product = buffer;
V(sp);
{处理product;}
}
}
int buffer[n], p1 = 0, p2 = 0;
typedef int Semaphore;
Semaphore sp = n, sc = 0;
process Producer(void) {
while (1) {
{制造product;}
P(sp);
buffer[p1] = product;
p1 = (p1 + 1) % n;
V(sc);
}
}
process Consumer(void) {
while (1) {
P(sc);
product = buffer[p2];
p2 = (p2 + 1) % n;
V(sp);
{处理product;}
}
}
int buffer[n], p1 = 0, p2 = 0;
typedef int Semaphore;
Semaphore sp = n, sc = 0, mutex = 1;
process Producer(void) {
while (1) {
{制造product;}
P(sp);
P(mutex);
buffer[p1] = product;
p1 = (p1 + 1) % n;
V(mutex);
V(sc);
}
}
process Consumer(void) {
while (1) {
P(sc);
P(mutex);
product = buffer[p2];
p2 = (p2 + 1) % n;
V(mutex);
V(sp);
{处理product;}
}
}
int readers = 0;
typedef int Semaphore;
Semaphore mutex = 1, writer = 1;
process Reader(void) {
while (1) {
P(mutex);
if (0 == readers) {
P(writer);
}
readers += 1;
V(mutex);
{对共享数据集进行读操作;}
P(mutex);
readers -= 1;
if (0 == readers) {
V(writer);
}
V(mutex);
}
}
process Writer(void) {
while (1) {
P(writer);
{对共享数据集进行写操作;}
V(writer);
}
}
*
管程(Monitor)是由汉森(Brinch Hansen)和霍尔(Hoare)首先提出的解决进程间同步和互斥问题的方法,比信号量机制更加安全,使用起来更方便,具有3个特性:互斥性、安全性、共享性。- 死锁(Dead Lock或Dead-Embrace)是指2个或2个以上的进程中的每一个进程都在等待其中的另一个进程释放其资源而被阻塞,导致这些进程都无法推进的状态。
- 产生死锁的根本原因是资源匮乏。
*
产生死锁的4个必要条件:
*
互斥使用资源。每一个资源任一时刻只能由一个进程使用,如果进程想申请被其他进程占用的资源,则该进程必须等待。*
占有且申请资源。一个进程占有了资源还需要申请新的资源。*
不可抢夺式分配。一个进程不能从其他进程抢夺资源,一个资源只能由拥有该资源的进程使用完后主动释放。*
循环等待。必然存在着一个进程循环等待链,链中的每一个进程都在等待它前一个进程所占用的资源。
*
银行家算法能避免死锁,但不能预防死锁。
*
安全状态。安全状态一定不是死锁状态。*
不安全状态。不安全状态不一定是死锁状态。*
死锁状态。死锁状态一定是不安全状态。
*
由于银行家算法每次执行的分配都要保证系统处于安全状态,安全状态肯定不是死锁状态,所以银行家算法可以避免死锁。*
假如当前3个进程分别需要a
、b
、c
个资源,系统需要最少(a-1)+(b-1)+(c-1)+1
才不会发生(不可能发生)死锁。
第3章 存储管理
*
存储管理的功能(任务):内存的分配与回收、地址转换(地址重定位)、内存的共享和存储保护、内存的扩充。*
存储管理方式:
*
简单(全部装入)方式。
*
空间连续方式。
*
单一连续分区式存储管理。*
固定分区式存储管理。*
可变分区式存储管理。
*
空间不连续方式。
*
简单分页式存储管理。*
简单分段式存储管理。*
简单段页式存储管理。
*
虚拟(部分装入)方式。
*
空间不连续方式。
*
请求分页式虚拟存储管理。*
请求分段式虚拟存储管理。*
请求段页式虚拟存储管理。
*
单一连续分区式存储管理和固定分区式存储管理的地址是静态重定位的。*
可变分区式存储管理的地址是动态重定位的。*
可变分区的分配算法(移动技术,即紧缩,可能使空闲区的数量:加一、不变、减一):
*
最先适应(First Fit,FF)分配算法。*
最佳适应(Best Fit,BF)分配算法。*
最坏适应(Worst Fit,WF)分配算法。*
下次适应(Next Fit,NF)分配算法。
*
位示图用于表示简单分页式存储管理中的主存分配表。优点:占用主存空间小、可常驻内存、有利于系统分配内存空间;缺点:操作中将位示图的每个位转换成所对应的主存块的块号需要花费一定时间。*
分段式存储管理的地址是二维的(因为作业被分成多个段)。*
虚拟存储管理中的虚拟存储大小由2个因素决定:
*
页面置换算法:
*
最佳(Optimal,OPT)置换算法。*
先进先出(First In First Out,FIFO)置换算法。*
最近最久未用(Least Recently Used,LRU)置换算法。- 二次机会(Second Chance,SC)置换算法。
*
时钟(Clock,CLOCK)置换算法。- 最近未用(Not Used Recently,NRU)置换算法。
第4章 设备管理
*
设备管理的功能(任务):对独占设备的分配和回收、对独占设备的启动和信息传输、对磁盘的驱动调度、对缓冲区的管理、对虚拟设备技术的实现。*
磁盘是容量大且可以断电后存储数据的外部存储设备,是:块设备、共享设备、用户设备(非标准设备)、直接存取设备(随机存取设备)、存储设备。*
外部设备的分类:
*
按设备信息交换的单位分类:
*
字符设备(慢速字符设备),如:鼠标、键盘、显示器、打印机。*
块设备,如:磁盘、磁带、光盘、U盘。
*
按设备资源特点分类:
*
独占设备(是一种临界资源,需互斥访问),使用静态分配,如:打印机、磁带机。*
共享设备,使用驱动调度,如:软盘、硬盘、光盘。*
虚拟设备,如:借助Spooling技术可以共享使用的独占设备。
*
按设备地位分类:
*
系统设备(标准设备),如:鼠标、键盘、显示器、打印机。*
用户设备(非标准设备),如:网卡、声卡、显卡、硬盘。
*
按设备访问方式分类:
*
顺序存取设备,如:磁带。*
直接存取设备(随机存取设备),如:磁盘。
*
按设备使用特性分类:
*
输入输出设备,如:鼠标、键盘、显示器、打印机。*
存储设备,如:磁带、磁盘。
*
设备I/O控制方式:
*
程序查询方式。*
中断方式。*
直接主存存取(Direct Memory Access,DMA)方式。会出现“周期窃取”现象,或称“周期挪用”现象。*
通道方式。分为3种类型:字节多路通道、数组选择通道、数组多路通道。
*
通道命令字(Chanel Command Word,CCW)。*
通道地址字(Chanel Address Word,CAW)。*
通道状态字(Chanel Status Word,CSW)。
*
设备I/O软件管理建立在硬件之上,分为4个层次(自顶向下):
*
用户级的I/O软件(I/O系统调用、Spooling技术)。*
与设备无关的I/O软件(接口、设备命名、保护、缓冲、分配、出错)。*
设备驱动程序(检查、转换、发出、响应、组织)。*
I/O中断处理程序(正常结束、异常处理、进程状态改变)。*
硬件(执行I/O传输)。
- 下层位上层提供服务;上层调用下层功能。
*
I/O中断请求自顶向下;I/O中断响应自底向上。*
缓冲技术:单缓冲技术、双缓冲技术、多缓冲技术、缓冲池技术。*
设备类绝对号是一种内部编号,不方便记忆,使用容易出错。*
设备类相对号的优点:方便、灵活、安全。*
设备独立性(设备无关性)指申请使用的设备与设备管理系统最后分配的设备无关。优点是:
*
用户不必知道设备的绝对号,只需提出想使用设备的相对号,系统就可以根据用户要求找出一台空闲的且非分配的设备给用户。*
如果用户通过设备类相对号申请到的设备在运行种出现故障,系统可以自动从同种设备中选择一台空闲且好的设备来替代。
*
块号从0开始编号,柱面号、磁头号、扇区号从1开始编号。*
设每个柱面上有n个磁道,每个磁道上有m个扇区,则:
*
柱面号 = ceil ( (块号 + 1) / (n * m) )*
磁头号 = ceil ( (块号 + 1) % (n * m) / (m) )*
扇区号 = ceil ( (块号 + 1) % (n * m) % (m) / (1) )*
块号 = (柱面号 - 1) * (n * m) + (磁头号 - 1) * (m) + (扇区号 - 1) * (1)
*
磁盘的最外层柱面为1号柱面;磁盘的最内层柱面为最大号柱面。*
磁盘调度(先移动移动臂,后旋转磁盘):
*
磁盘的移动臂调度算法:
*
先来先服务(First Come First Served)调度算法。*
最短寻找时间优先(Shortest Seek Time First)调度算法。- 单向扫描(Uni-Scan)调度算法,又称循环扫描(Circular Scan)调度算法。
- 双向扫描(Double Scan)调度算法。
*
电梯(Elevator)调度算法。
*
磁盘的旋转调度算法:
- 扇区号相同、磁头号不同时,其中一个要等到下一圈调度。
- 脱机工作方式。
*
Spooling技术由3部分组成:
*
输入井和输出井。输入井中的作业有4种状态:
*
欲输入进程和缓输出进程。*
井管理进程。
- 虚拟设备是借助Spooling技术可以共享使用的独占设备。
- 优点是:提高了I/O设备的存取效率、能够将独占设备虚拟成共享设备。
- 缺点是:Spooling技术增加了系统的复杂性、输入井和输出井会占用较大的磁盘空间、用到输入缓冲区和输出缓冲区会占用较大的主存空间。
第5章 文件管理
- 文件由2部分组成:文件体、文件说明。
- 文件的分类:
- 文件系统由3部分组成:与文件管理有关的软件、被管理的文件、实施文件管理所需的数据结构(如目录表、文件控制块、存储分配表等)。
- 文件系统的功能:
- 文件的操作和使用。
- 文件的结构及有关存取方法。
- 文件的目录结构和有关处理。
- 文件存储空间的管理。
- 文件的共享和存取控制。
- 文件系统的优点:
*
文件控制块(File Control Block,FCB)是为文件设置的一系列描述和控制信息。*
文件目录由文件控制块组成。*
目录结构:
*
单级目录(Single Level Directory,SLD)。*
二级目录(Master File Directory,MFD)。*
多级目录。
*
文件的逻辑结构:
*
无结构的字符流式文件。*
有结构的记录式文件。
- 连续结构,按照记录生成的先后顺序连续排列。
- 顺序结构,设定一种顺序规则,以记录的键为索引对象,按照设定的顺序结构将记录顺序排列起来。
*
文件的物理结构:
*
顺序结构文件。优点:管理简单、存取速度快;缺点:要求连续存储空间、必须事先知道文件的长度。*
链接结构文件(链表结构)。优点:不要求连续存储空间(提高了存储空间利用率)、增/删操作容易实现;缺点:查找速度慢(只适合顺序存取,不适合直接存取)、每个物理块的指针占用一定存储空间。*
索引结构文件。优点:链接结构的优点、具有直接读写任意一个记录的能力;缺点:增加了索引表的时间和空间开销、读取索引表降低了文件的访问速度。*
Hash文件。优点:不需要做索引使存取快速;缺点:需解决哈希冲突问题。
- 文件的共享:
- 文件的静态共享。
- 文件的动态共享。
- 文件的符号链接共享。
- 文件的存取控制:
- 存取控制矩阵。
- 存取控制表。
- 用户权限表。
- 口令及编码。
*
文件的安全包括2个方面:文件保护、文件保密。*
为了保证文件的完整性,需建立文件备份,有2种主要方法: