操作系统(二)
1、前驱图

每个结点都具有重量,用于表示该结点所含有的程序量或程序的执行时间。
2、程序的顺序执行

一个接一个的运行。
特点:①顺序性:每一个操作必须在下一个操作开始前结束。
②封闭性:程序在封闭的环境下执行,运行时独占全机资源,只有本程序能改变资源状态,不受外界因素影响。
③可再现性:只要程序执行时的环境和初始条件相同,不管是不停顿执行还是”走走停停“,都会获得相同的结果。
3、程序的并发执行

只用在不存在前驱关系的程序之间才有可能并发执行
特征:①间断性:由于共享资源,需要等待,具有”执行——暂停——执行”的规律。
②失去封闭性:由于资源共享,资源状态会由这些程序来改变,致使其中任一程序运行时,其环境必然受到其他程序的影响。
③不可再现性:程序经过多次执行,虽然他们执行时的环境和初始条件相同,但得到的结果却各不相同。因为没有封闭性了。
4、进程的定义
进程实体=程序段+数据段+PCB
PCB:进程控制块,程序利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。
进程是程序的一次执行(1个进程由多个程序构成,1个程序也可以由多个进程构成)
进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
进程时具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。、
传统OS的进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
5、进程的特征。
①动态性:动态性是进程的最基本的特征,它由创建而产生,由调度而执行,由撤销而消亡。
②并发性:并发性是进程的另一重要特征,多个进程实体同存于内存中,且能在一段时间内同时运行。
③独立性:进程实体是一个能独立运行,独立获得资源和独立接受调度的基本单位,凡未建立PCB的程序都不能作为一个独立的单位参与运行。
④异步性:进程是按异步方式运行的,即按各自独立的、不可预知的速度向前推进。
6、进程的三种基本状态
①就绪状态:万事具备只欠CPU
进程已准备好运行的状态,即进程已分配到除CPU外所有必要资源后,只要获得CPU,便可立即执行。
很多的就绪状态,就按照优先级顺序组成就绪队列。
②执行状态:获得CPU,程序正在执行的状态。
③阻塞状态(等待状态、封锁状态):即使CPU空闲也无法执行
正在执行的进程由于发生某事件(如I/O请求,申请缓冲区失败)暂时无法执行的状态
阻塞队列
7、三种状态的转换

8、创建状态和终止状态
创建:首先由进程申请一个空白的PCB,并向PCB中填写用于控制和管理进程的信息。
然后为该进程分配运行时所必须的资源,最后把该进程转入就绪状态,并插入就绪队列之中。
对于创建状态的进行当其获得了所需的资源以及对其PCB的初始化工作完成后,便可由创建状态转入就绪状态。
终止:首先等待操作系统封进行善后处理,最后将其PCB清零,并将PCB空间反还系统。
9、五种状态转换图。

10、挂起操作和进程状态的转换
①挂起操作的引入:(1)终端用户的需要(2)父进程请求(3)负荷调节的需要(4)操作系统的需要
②引起挂起原语操作后三个进程状态的转换
(1)活动就绪——>静止就绪 suspend原语挂起
(2)活动阻塞——>静止阻塞 suspend原语挂起
(3)静止就绪——>活动就绪 active激活原语
(4)静止阻塞——>活动阻塞 active激活原语

11、进程管理中的数据结构
OS管理的这些数据结构一般分为以下四类:内存表、设备表、文件表、用于进程管理的进程表。
12、进程控制块PCB的作用。
PCB:进程存在的唯一标志。
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。
PCB的作用:使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位。
具体作用:
①作为独立运行基本单位的标志,PCB已经成为进程存在于系统中的唯一标志。
②能实现间断性运行方式 ,
③提供进程管理所需要的信息,操作系统总是根据PCB实施多进程的控制和管理
④提供进行调度所需要的信息
⑤实现与其他进程的同步与通信
13、进程控制块中的信息(PCB常驻内存)
①进程标识符(唯一地标识一个进程)包括:外部标识符和内部标识符
②处理机状态 处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。
③进程调度信息(进程状态、进程优先级、进程调度所需的其它信息、事件(进程由执行状态转变韦阻塞状态所等待发生的事件,即阻塞原因))
④进程控制信息(提供进程管理所需要的信息,即所有资源的列表,实现与其他进程的同步和通信)
(1)程序与数据的地址(2)进程同步和通信机制(3)资源清单 (4)链接指针
14、进程控制块的组织方式
(1)线性方式,(线性表)
(2)链接方式,把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。
(就绪队列、阻塞队列、空白队列)
15、进程控制
进程控制的作用:进程状态之间的转换
进程控制是进程管理中最基本的功能,主要包括创建新进程,终止已完成的进程,将因发生异常情况而无法继续运行的进程置于阻塞状态,负责进程运行中的状态转换的功能。
进程控制一般是由操作系统中的原语来实现的。
OS分为系统态和用户态。
①系统态:又称为管态,也称为内核态,能执行一切指令,访问所有寄存器,和存储区。
②用户态:仅能执行规定的指令,访问指定的寄存器和存储区。
16、原语
原语就是由若干条指令组成的,用于完成一定功能的一个过程。
原语是原子的语言,在内存中执行,原语是在系统的系统态下执行的常驻内存。
原语是原子操作:要么一次性执行完,要么滚回/全不做。
17、资源管理功能
①进程管理 ②存储器管理 ③设备管理
18、进程的创建
在OS中允许一个进程创建另一个进程,即父与子的关系,子继承父的所有资源,父消亡子消亡
在windows中不存在任何进程层次结构的概念,
引起进程创建的事件:① 用户登录 ②作业调度 ③ 提供服务 ④应用请求
进程的创建:①申请空白PCB②为新进程分配其运行所需要的资源:内存、文件、I/O设备、CPU时间等③初始化进程控制块PCB(初始化标识信息、初始化处理机状态信息、初始化处理及控制信息)
19、进程的终止
引起进程终止的事件:(1)正常结束:进程的任务已经完成(2)异常结束
进程的终止过程:①从PCB集合中检索出该进程的PCB,从中读出该进程的状态②若处于正在执行,则立即终止,并更改调度标志为真,表明该进程被终止后应重新调度。
③ 若有子进程,则所有子进程全部终止④将终止的进程的所有资源归还父进程或者系统⑤将被终止的进程(PCB)从所在队列(或链表)中移除。
引起进程的阻塞和唤醒的事件:①向系统请求共享资源失败②等待某种操作的额完成③新数据尚未到达,④等待新任务的到达
进程阻塞过程:①调用阻塞原语block将自己阻塞(阻塞时进程自身的一种主动行为)② 把进程控制块中的现行状态由“执行”改为阻塞③将PCB插入阻塞队列④转调度程序进行重新调度,将处理机分配给另一就绪进程。
进程唤醒过程(调用原语wakeup):①把被阻塞的进程从等待该事件的阻塞队列中移出②将其PCB中的现行状态由阻塞改为就绪,③将PCB插入到就绪队列中。
进程的挂起:原语suspend
进程的激活:原语active
20、进程的同步
| 同步 | 互斥 |
| 进程——进程 | 进程——资源——进程 |
| 事件次序上受到某种限制 | 未竞争到物理资源的进程处于阻塞状态 |
| 相互清楚对方的存在及作用,交换信息 | 不一定清楚其他进程的情况 |
| 往往指有几个进程共同完成一个任务 | 往往指多个任务多个进程间通讯制约 |
| 例子:生产与消费之间 | 例子:交通十字路口 |
两种形式的制约关系:(1)间接相互制约关系(源于资源共享)(2)直接相互制约关系(源于进程间的合作,进程同步)
21、临界资源(队列是在队尾入队,对头出队)
在一段时间内只允许一个进程访问,不代表只有一个资源。
进程间应采用互斥方式,实现对这种资源的额共享。
22、进程同步的目标
维持进程并发性——进程执行异步(断续)
以提高系统效率——资源的封闭性(共享)
23、l临界区
是一个代码段,访问临界资源的代码段
不管是硬件临界资源还是软件临界资源,多个进程必须互斥地对它进行访问。
把在每个进程中访问临界资源地那段代码称为临界区
24、同步机制应该遵循的规则
(1)空闲让进:无进程处于临界区时,允许一个进入
(2)忙则等待:已有进入就等待
(3)有限等待:在有限时间内能进入,避免“忙等”
(4)让权等待:进程不能进入自己的临界区的时候立即释放处理机,以免陷入“忙等”状态
25、硬件同步机制
利用这些特殊的硬件指令来解决临界区问题。
①关中断:滥用关中断权力可能导致严重后果、关中断时间过长,会影响系统效率,限制了处理机交叉执行程序的能力。③不适用多CPU
②利用Test-and-Set指令实现互斥(硬件指令TS是一条原语)
③ 利用Swap指令实现进程互斥
缺点:①处于“忙等“状态,不符合”让权等待”的原则②很难将它们用于解决复杂的进程同步问题。
26、信号量机制
信号量是对具体物理资源的抽象
整型信号量:Dijkstra把整型信号量定义为一个用于表示资源数目的整型量S,两个原子操作(wait(S)P操作,signal(S)V操作)
wait(S){ while(S<=0); S--; } signal(S) { S ++; }
只要S<=0,wait 操作就会不断测试,未能做到“让权等待”。
记录型信号量(不存在忙等)
引入进程阻塞机制,解决了“忙等”问题。
在信号量中增加对阻塞进程的记录。
value:可用资源的个数
list:进程链表指针
typedef struct{ int value; struct process_control_block *list; }semaphore wait (semaphore *S){ S->value--; if(S->value<0)block(S->list); } signal(semaphore *S){ S->value++; if(S->value<=0)wakeup(S->list); }
AND 型信号量
将进程在整个运行过程中所需要的所有资源,一次性全部地分配给进程。
信号量集
一次可申请一种资源多个
Swait(S1,t1,d1.......Sn,tn,dn)
Ssignal(S1.d1.......Sn,dn)
Si:各信量的值
ti:申请下限
di:进程对该资源的需求值,即每次执行所需要的d
要求:Si》ti
利用信号量可以实现进程互斥和前驱关系


27.管程的定义
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。
管程由四部分组成:①管程的名称②局部于管程的共享数据结构说明③对该数据结构进行操作的一组过程(“过程"其实就是函数),④对局部于管程的共享数据设置初始值的语句,
局部于管程的数据只能被局部于管程的过程所访问
一个进程只有通过调用管程内的过程才能进入管程访问共享数据,
每次只允许一个进程在管程内执行某个内部过程。
管程的互斥特性由编译器完成,各外部进程/线程只能通过管程提供的特定”入口“才能访问共享数据。
管程的特性:①模块化:管程是一个基本程序单位,可以单独编译②抽象数据类型,管程不仅有数据还有对数据的操作
③信息隐藏
管程和进程的区别
管程定义的是公有数据结构,而进程定义的是私有数据结构。
二者都存在对各自数据结构上的操作,但进程是由顺序程序执行有关操作,管程主要进行同步操作和初始化操作
管程把共享变量上的操作集中起来,而临界区(访问共享变量的程序段)却分散在每个进程中。
管程为管理共享资源而建立的,进程主要是为占用系统资源和实现系统并发性而引入的。管程为被动工作方式,进程为主动工作方式。
管程是被欲使用共享资源的进程所调用的,管程和调用它的进程不能并行工作,而进程之间能并发工作,并发性是其固有特性。
管程是语言或操作系统成分,不必创建或撤销,而进程有生命周期/动态性,由创建而产生撤销便消亡。
经典进程同步问题
经典进程同步问题详解_w1nd*的博客-CSDN博客_经典进程同步问题
进程通信是指进程之间的信息交换。
进程通信的类型:1共享存储器系统2管道通信系统3消息传递系统4客户机-服务器系统
什么是线程?
比进程更小的基本单位。
引入线程的目的?
使多个程序能并发执行,以提高资源利用率和系统吞吐量
进程的两个基本属性?
①进程是一个可拥有资源的独立单位②进程是一个可独立调度和分派的基本单位
线程:作为调度和分派的基本单位。
线程和进程的比较(在一个进程中可以包含多个可以并发执行的线程)
进程和线程的区别(超详细)_ThinkWon的博客-CSDN博客_进程和线程的区别
1调度的基本单位:传统的OS进程作为独立调度和分派的基本单位,但是现在线程作为调度和分派的基本单位。
2并发性:进程之间可以并发执行,在一个进程中的多个线程之间亦可以并发执行,还允许在一个进程中所有线程都能并发执行。
3拥有资源:进程可以拥有资源,并作为系统中拥有资源的一个基本单位。线程本身并不拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。
线程除了拥有自己的少量资源外,还允许多个线程共享该进程所拥有的资源。
4独立性:在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。
5系统开销:进程开销大于线程
6支持多处理机系统
线程的状态和线程控制块
执行,就绪,阻塞
TCB:控制和管理线程信息。
多线程OS中的进程属性:
进程是一个可拥有资源的基本单位
多个线程可以并发执行
进程已不是可执行的实体
线程的实现方式
1内核支持线程KST
2用户级线程
在用户空间实现的,和内核无关
3组合方式
同一个进程内的多个线程可以同时在多处理器上并行执行,而且在阻塞一个线程时并不需要将整个进程阻塞。

浙公网安备 33010602011771号