(**为重点)
一、操作系统引论
什么是操作系统?**
是一组控制和管理计算机硬件和软件资源,合理地组织计算工作流程,以及方便用户使用的程序集合。
1.1操作系统目标和作用
1.1.1操作系统目标
在计算机系统上配置操作系统,主要目的是:方便性、有效性、可扩充性和开放性。
1.1.2操作系统的作用
- os作为用户和计算机硬件系统之间的接口
三种方式使用计算机:命令方式、系统调用方式、图形界面方式
- os作为计算机系统资源管理者
计算机系统资源分为四类:处理机、存储器、I/O设备以及文件
- os实现了对计算机资源的抽象(os用作扩充机器)
1.1.3 操作系统的基本特征
. 并发(concurrence)
. 共享(sharing)
. 虚拟(virtual)
. 异步性(asynchronism)
1.1.4 操作系统的功能**
- 处理机管理(进程控制、进程同步、进程通信、调度)
- 存储器管理(内存分配、内存保护、地址映射、内存扩充)
- 设备管理(缓冲管理、设备分配、设备处理、虚拟设备)
- 文件管理
- 用户接口(命令方式、(程序接口)系统调用方式、图形界面方式)
1.1.4 推动操作系统发展的动力**
- 不断提高计算机资源利用率的需要
- 方便用户
- 器件的不断更新换代
- 计算机体系结构的不断发展
1.1.5 操作系统分类**
三种基本的操作系统:
批处理操作系统、分时操作系统和实时操作系统
分类 | 详细 | 描述 | 其他 |
---|---|---|---|
无操作系统的计算机系统 | 人工操作方式 | 缺点:(1)用户独占全机(资源浪费) (2)CPU等待人工操作:装入时、取走时CPU及内存等资源是空闲。CPU即负责计算,又要负责传输。(即属于单控制方式) | 解决:通道技术、缓冲技术、 脱机输入输出方式 |
脱机输入输出 | 优点:(1)减少了CPU的空闲时间。 (2)提高了I/O速度(与高速的磁盘打交道) | ||
批处理系统 | 单道批处理系统 | 2、特征:(1)自动性 (2)顺序性 (3)单道性 3、优点:减少了人工操作的时间,提高机器的利用率和系统吞吐量。 4、缺点:对某些作业来说,当它发出输入/输出请求后,CPU必须等待I/O的完成,特别因为I/O设备的低速性,从而使机器的利用率很低。 | 优点: 作业流程自动化; 效率高 吞吐量高 缺点: 无交互手段 调试程序困难 |
多道批处理系统 | 特征:(1)调度性 (2)无序性 (3)多道性 优点:(1)资源的利用率高 (2)系统吞吐量大 缺点:(1)平均周转周期长 (2)无交互能力 | ||
分时系统 | 分时系统 | 特征:人机交互性好、共享主机(多路性、同时性)、用户独立性、 **及时性 | |
实时系统 | 实时系统 | 特征:实时性和可靠性; 多路性、独立性、交互性 | |
微机操作系统 | 微机操作系统 | 应用领域:事务处理、个人娱乐 系统要求:使用方便、支持多种硬件和外部设备(多媒体设备、网络、远程通信)、效率不必很高。 | |
多处理机操作系统 | 多处理机操作系统 | 单行文本输入框 | |
网络操作系统 | 网络操作系统 | 单行文本输入框 | |
分布式操作系统 | 分布式操作系统 | 单行文本输入框 | |
嵌入式操作系统 | 嵌入式操作系统 | 控件名称 | |
智能卡操作系统 | 智能卡操作系统 | 默认文本值 |
二、 进程
2.1 进程的基本概念与控制
前驱图***
2.1.1 进程的基本概念
进程,它是资源分配和独立运行的基本单位
2.2.1.1 程序顺序执行
2.2.1.2 程序并发执行**
程序并发执行时的特征:
- 间断性
- 失去封闭性
- 不可再现性
(补充)程序并发执行的条件(Bernstein):
2.1.1.3 进程与程序的主要区别**
1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。
2)程序的存在是永久的。而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。
3)程序仅是指令的有序集合。而进程则由程序段、相关数据段和进程控制块(PCB)组成。
4)进程与程序之间不是一一对应。
2.1.1.4 进程的特征**
- 结构特征
从结构上看,每个进程(进程实体)都是由程序段、相关数据段及进程控制块(PCB)组成
进程和进程实体的区别:进程是进程实体的运行过程, 是系统进行资源分配和调度的一个独立单位。
- 动态性
进程的实质是程序在处理机上的一次执行过程,因此是动态性的。所以动态性是进程的最基本的特征。 - 并发性
- 独立性
- 异步性
2.1.2 进程控制
2.1.2.1 进程三种基本状态**
2.1.2.2 进程状态转换原因**
2.1.2.2 控制原语**
原语是什么:
原语是由若干条机器指令构成的用于完成特定功能的一段程序,这段程序在执行期间是不可分割的
控制原语主要有:
- 创建原语create()
- 撤销原语destroy()
- 阻塞原语block()
- 唤醒原语wakeup()
2.1.3 进程同步与互斥**
2.1.3.1 进程同步**
**概念:进程同步是指对多个相关进程在执行次序上进行协调,它的目的是使系统中诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性;或系统中诸进程之间在逻辑上的相互制约的关系(直接的-同步;间接的—互斥)。
同步机制:用来实现同步的机制,如:信号量机制;管程机制
2.1.3.2 两种形式的制约关系
系统中诸进程之间在逻辑上存在着两种制约关系:
- 直接制约关系(进程同步):即为完成同一个任务的诸进程间,因需要协调它们的工作而相互等待、相互交换信息所产生的直接制约关系。
- 间接制约关系(进程互斥) :是进程共享独占型资源而必须互斥执行的间接制约关系。
2.1.3.3 临界资源、临界区
临界资源:一次只允许一个进程使用的资源称为临界资源,打印机,绘图机
2.1.3.4 信号量机制**
2.1.3.5 PV操作**
- “生产者—消费者”问题的解决
“生产者—消费者”问题的同步算法描述
semaphore full=0; /*表示满缓冲区的数目*/
semaphore empty=n; /*表示空缓冲区的数目*/
semaphore mutex=1; /*表示对缓冲区进程操作的互斥信号量*/
Main()
{
cobegin
producer();
consumer();
coend
}
Producer()
{
while(true)
{
生产一个产品;
p(empty);
P(mutex);
将一个产品送入缓冲区;
V(mutex);
V(full);
}
}
consumer()
{
while(true)
{
p(full);
P(mutex);
从缓冲区取走一个产品;
V(mutex);
V(empty);
消费一个产品;
}
}
2. 哲学家进餐问题的解决
semaphore stick[5]={1,1,1,1,1}; /*分别表示5支筷子*/
Main()
{
cobegin
philosopher(0);
philosopher(1);
philosopher(2);
philosopher(3);
philosopher(4);
coend
}
philosopher(int i)
{
while(true)
{
思考;
p(stick[i]);
P(stick[(i+1)%5]);
进餐;
V(stick[i]);
V(stick[(i+1)%5]);
}
}
- “读者—写者”问题的解决
semaphore rmutex=1;
semaphore wmutex=1;
int readcount=0;
Main()
{
cobegin
reader();
writer();
coend
}
reader()
{
while(true)
{
p(rmutex);
if(readcount= =0) p(wmutex);/*第一位读者阻止写者*/
readcount++;
V(rmutex);
读数据集;
p(rmutex);
readcount--;
if(readcount= =0) v(wmutex);/*第末位读者允许写者进*/
V(rmutex);
}
}
writer()
{
while(true)
{
p(wmutex); /**阻止其它进程(读、写)进**/
写数据集;
V(wmutex); /**允许其它进程(读、写)进**/
}
}
2.1.4 进程通信**
2.2 调度与死锁
2.2.1 调度算法
2.2.1.1 先来先服务(FCFS)**
2.2.1.1 短作业/进程优先调度算法SJF/SPF**
- 优点:
1)能有效降低作业的平均等待时间;
2)能有效缩短进程的周转时间; - 缺点:
1)对长作业不利;
2)不考虑作业的紧迫程度;
3)作业执行时间仅为估计*;
故SJ§F算法虽然是优化的,但在CPU调度中很难实现。
2.2.1 死锁(银行家算法)**
2.2.1.1 产生死锁的必要条件**
- 互斥条件(资源独占条件)
- 请求和保持条件(部分分配条件)
- 不剥夺条件
- 循环等待条件(环路条件
2.2.1.2处理死锁的基本方法(银行家算法)**
-
预防死锁:指通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或几个条件,来防止死锁的发生。
-
避免死锁:指在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
-
检测死锁:允许系统在运行过程中发生死锁,但可设置检测机构及时检测死锁的发生,并采取适当措施加以清除。
-
解除死锁:当检测出死锁后,便采取适当措施将进程从死锁状态中解脱出来。
三、存储器管理
3.1 存储管理应具有以下功能
实现内存的分配和回收
地址变换(相对地址←→绝对地址)
“扩充”内存容量
进行存储保护
3.2 程序的装入方式(三种
绝对装入方式(不需要地址转换,只适用于单道处理程序)
可重定位装入方式(静态重定位)
动态运行时装入方式(动态重定位)
可重定位装入方式是在装入时根据内存的实际情况把相对地址(逻辑地址)转换为绝对地址,装入到适当的位置。(在装入时进行地址转换)
动态重定位解决了可重定位装入方式不允许程序运行时在内存中移动位置。动态运行时装入方式并不立即把装入模块中相对地址转换为绝对地址,而是在程序运行时才进行。这种方式需一个重定位寄存器来支持。(在程序运行过程中进行地址转换)
3.3 链接(三种)
静态链接
装入时动态链接
运行时动态链接
静态链接是一种事先链接方式,即在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块(执行文件),以后不再拆开。
解决的问题:
(1)相对地址的修改
(2)变换外部调用符号
存在问题:
(1)不便于对目标模块的修改和更新
(2)无法实现对目标模块的共享
装入时动态链接指将一组目标模块在装入内存时,边装入边链接的方式。具有便于修改和更新、便于实现对目标模块的共享。
运行时动态链接在程序运行中需要某些目标模块时,才对它们进行链接的方式。具有高效且节省内存空是的优点。
3.4 连续/分区分配方式(适应算法)**
为一个用户程序分配一片连续的内存空间。
- 单一连续分配方式(系统区:低址;用户区:高址。只装入一道作业只支持单道程序)
- 固定分区分配方式(可分区大小相等或分区大小不等。要建立一张分区使用表)
主存利用率不高,有内部碎片。 - 动态分区分配方式(空闲分区表、空闲分区链)
首次适应算法
循环首次适应算法
最佳适应算法
最坏适应算法
!见例题
分配内存:
回收内存:
- 动态重定位分区分配方式(进程在内存中是可移动的、分区是可移动的、解决碎片问题:紧凑(拼接))
四、设备管理
4.1单缓存和双缓存时间问题**
4.2磁盘调度问题**
4.3 解决输入/输出四大方法**
项目 | Value | Value |
---|---|---|
单 缓 冲 | 设备和处理机之间设置一个缓冲 | 1个缓冲区;设备与处理机对缓冲区的操作是串行的。 |
双 缓 冲 | 在设备和处理机之间设置两个缓冲 | 缓冲区数有2个;设备与处理机对缓冲区的操作可并行,提高了设备与处理机并行操作的程度。 |
循环缓冲 | 设备和处理机之间设置多个大小相等的缓冲区,这些缓冲区构成环形,每一个缓冲区中含一指针指向下一个缓冲区,最后一个指向第一个缓冲区,同时还含有2个用于输入/输出的指针IN和OUT | 设备与处理机对缓冲区的操作可并行,进一步提高了设备与处理机并行操作的程度。 |
缓冲池 | 缓冲池通常由若干大小相同的缓冲区组成,是系统的公用资源,任何进程都可以申请使用缓冲池中的各个缓冲区缓冲池的组成(数据结构) | 作可并行,进一步提高了设备与处理机并行操作的程度。一个缓冲区一个时间段只能进行输入/输出。 |
- 输入进程输入数据:
空缓冲队列的队首取一空缓冲区用作收容输入缓冲区—》将数据输入收容输入缓冲区并装满—》收容输入缓冲区挂到输入数据队列队尾 - 计算进程需要输入数据时:
从装满输入数据队列队首取一满缓冲区用作提取输入缓冲区—》CPU从提取输入缓冲区中取出数据至用完—》将空缓冲区挂到空缓冲队列队尾。 - 计算进程需要输出数据时:
从空缓冲队列队首取一空缓冲区用作收容输出缓冲区—》CPU将数据输入其中并装满—》将收容输出缓冲区挂到装满输出数据队列队尾。 - 输出进程需要输出数据时:
从装满输出数据队列队首取一满缓冲区用作提取输出缓冲区 —》输出设备从中取出数据至用完—》将空缓冲区挂到空缓冲队列队尾
4.4 设备分配涉及的数据结构**
关系:
4.5 驱动程序功能,做什么**
4.7 引入缓存原因**
4.8 虚拟 spooling技术,结构,模型**
五、文件管理
5.1 什么是文件?文件系统?结构?**
- 文件系统的功能/需解决的问题:
从系统角度看:负责为用户建立、删除、读写、修改和复制文件。
从用户的角度看:实现了按名存取。 - 文件:是指记录在外存上的具有文件名的一组相关信息的集合。可分为有结构文件和无结构文件两种。有结构文件是由若干个相关记录组成,而无结构文件则被看成一个字符流。
5.2. 文件类型、特点**
文件的特点:
- 文件具有保存性
- 文件是按名存取
- 文件的内容是一组信息的集合
文件类型:
5.3 文件目录、目录文件、概念**
- 文件目录:把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合。
目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件
5.4 外部存储组织方式。管理外部存储**
(1)连续分配(顺序分配)
(2)链接分配
(3)索引分配
5.5 接口问题(三个接口)**
答:
(1)命令接口:OS向用户提供的“用户与操作系统的接口”,该接口以命令形式呈现在用户面前,直接提供给用户在键盘终端上使用。
系统功能调用(程序接口):OS向用户提供的“用户与操作系统的接口”,该接口以系统调用形式呈现在用户面前,是用户程序取得OS服务的唯一途径,供用户在编程时使用。
(2)图形用户接口:采用图形化的操作界面。