目录
结合了操作系统第四版和b站清华陈渝老师的视频
爆肝上传!清华大佬终于把困扰我大学四年的【计算机操作系统】讲的如此通俗易懂_哔哩哔哩_bilibili
程序的执行特征
程序的顺序执行及其特征
1). 顺序性
2). 封装性:程序是在封闭的环境下运行的。即程序在运行时,它独占全机资源。
3). 可再现性:只要程序执行时的环境和初始条件相同,当程序多次重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。
程序并发执行的特征
前趋图:
I1是C1的直接前趋
C1是I1的直接后继
I3,C2,P1可并发执行
Bernstein条件:
R(P1)∩W(P2)∪R(P2)∩W(P1)∪W(P1)∩W(P2)=空集
对于具有下述四条语句的程序段:
S1: a := x + 2
S2: b := y + 4
S3: c := a + b
S4: d := c + 6
可以并发执行的只有S1,S2,因为
R(S1)={x},R(S2)={y},R(S3)={a,b},R{S4}={c};
W(S1)={a},W(S2)={b},W(S3)={c},W{S4}={d};
进程的基本概念
进程:
-
完成某一特定功能的程序
-
是程序的一次执行过程
-
是动态有生命的,当它执行时存在,否则消亡
进程的含义与特征
(一) 进程的定义
进程无统一的定义,较能反映进程实质的定义有:
(1)进程是程序的一次执行;
(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
(3)进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
陈渝老师:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。(是一个过程,当操作系统将程序放入Cpu跑起来以后,才出现了进程)
(二)进程的结构
-
程序的代码;
-
程序处理的数据;
-
程序计数器中的值,指示下一条将运行的指令;
-
一组通用的寄存器的当前值,堆、栈;
-
一组系统资源(如打开的文件)
总之,进程包含了正在运行的一个程序的所有状态信息。
(三) 进程与程序的区别与联系
联系:
程序是产生进程的基础 程序的每次运行构成不同的进程
进程是程序功能的体现 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
区别:
进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态
进程是暂时的,程序的永久的:进程是一个状态变化的过程,程序可长久保存 进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)
(四) 进程的特征
(1)动态性:可动态的创建、结束进程
(2)并发性:可以被独立调度并占用处理机运行;并发运行
(3)独立性:不同进程的工作不相互影响(页表)
(4)异步性
(5)结构特征:程序=算法+数据结构,描述进程的数据结构:进程控制块(pcb),操作系统为每一个进程都维护了一个pcb,用来保护与该进程有关的各种状态信息。
(制约性:因访问共享数据/资源或进程间同步而产生制约)
(五) 进程的类型
系统进程:由系统程序的活动构成。整个OS的活动由一系列的系统进程的活动构成。
用户进程:由用户程序的活动构成。系统中有一大批系统进程和用户进程并发运行。
进程控制块PCB
进程控制块:操作系统管理控制进程运行所用的信息集合。操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志。
进程控制块的作用
PCB反映了进程的瞬间特征,是进程动态特征的集中反应。
PCB是进程存在的唯一标志,创建一个进程时,先创建其PCB,而后在进程运行过程中不断改变,进程完成其功能后,释放PCB,进程随之消亡。OS通过PCB而感知进程的存在。
进程控制块中的信息
(1)进程标识符信息
进程标识符用于唯一地标识一个进程。一个进程通常有以下两种标识符: 外部标识符 内部标识符
(2)处理机状态信息
处理机状态信息主要是由处理机各种寄存器中的内容所组成。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在被中断进程的PCB中,以便在该进程重新执行时,能从断点继续执行,包括: 通用寄存器 指令计数器 程序状态字PSW 用户栈指针
(3)进程调度信息
在PCB中还存放了一些与进程调度和进程对换有关的信息,包括: 进程状态 进程优先级 进程调度所需的其它信息 事件
(4)进程控制信息
进程控制信息包括: 程序和数据的地址 进程同步和通信机制 资源清单 链接指针
陈渝老师:
PCB的组织方式
在一个系统中,通常可拥有数十个,数百个乃至数千个PCB 。为能对它们进行有效的管理,应该用适当的方式将它们组织起来。目前常用的组织方式有以下两种:
(1)链表:同―状态的进程其PCB成一链表,多个状态对应多个不同的链表。各状态的进程形成不同的链表:就绪链表、阻塞链表。
(2)索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表 各状态的进行形成不同的索引表:就绪索引表、阻塞索引表
进程的基本状态与生命周期
3基本状态+创建状态+终止状态
(1)新(New)状态
这是一个进程刚刚建立,但还未将它送人就绪队列时的状态。
(2)就绪(Ready)状态
当进程已分配到除CPU以外的所有必要的资源后,只要能再获得处理机,便可立即执行。这时的进程状态称为就绪状态。通常把处于就绪状态的进程排成一个或多个队列,称其为就绪队列。
(3)执行状态
指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一个进程处于执行状态。在多处理机系统中,则可能有多个。
(4)阻塞(Block)状态/等待/睡眠
进程因等待某事件(如等待I/O操作结束、等待通信信息、等待申请缓存空间)而暂停执行时的状态。也称为“等待”状态,或“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。在有的系统中,按阻塞原因的不同而将处于阻塞状态的进程排成多个队列。
(5)唤醒状态
唤醒进程的原因:
-
被阻塞进程需要的资源可被满足
-
被阻塞进程等待的事件到达
-
将该进程的PCB插入到就绪队列
主动阻塞,被动唤醒
(6)终止(Terminated)状态
当一个进程已经正常结束或异常结束,OS已将它从就绪队列中移出,但尚未将它撤消时的状态。
在以下四种情形下,进程结束: 正常退出(自愿的) 错误退出(自愿的) 致命错误(强制性的) 被其他进程所杀(强制性的)
进程状态变化模型
进程的三种基本状态:
进程在生命结束前处于且仅处于三种基本状态之一不同系统设置的进程状态数目不同。
-
运行状态(Running):当一个进程正在处理机上运行时。
-
就绪状态(Ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行.
-
等待状态(又称阻塞状态Blocked):一个进程正在等待某一事件而暂停运行时。如等待某资源,等待输入/输出完成。
NULL→New :
一个新进程被产生出来执行一个程序。
New→Ready:
当进程被创建完成并初始化后,一切就绪准备运行时,就变为就绪状态
Ready→Running:
处于就绪状态的进程被进程调度程序选中后,就分配到处理机上来运行。
Running→Exit:
当进程表示它已经完成或者因出错,当前运行进程会由操作系统作结束处理。
Running→Ready:
处于运行状态的进程在其运行过程中,由于分配给它的处理机时间片用完而让出处理机。
Runing→Blocked:
当进程请求某样东西且必须等待时。例如:等待I/O
Blocked→Ready:
当进程要等待某事件到来时,它从阻塞状态变到就绪状态。例如:进行I/0
进程挂起状态
挂起(Suspend):把一个进程从内存转到外存。
有些系统定义一个挂起状态,引起挂起状态可能基于下述五个方面的需要:
(1)终端用户的需要
(2)父进程的需求
(3)负荷调节的需要
(4)操作系统的需要
与挂起相关的两种状态
静止阻塞状态(Blocked-suspend)
:进程在外存并等待某事件的出现; (原阻塞 》活动阻塞)
静止就绪状态(Ready-suspend)
:进程在外存,但只要进入内存,即可运行;(原就绪 》活动就绪)
与挂起相关的状态转换
①挂起(Suspend):把一个进程从内存转到外存。
活动阻塞=》静止阻塞:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;
活动就绪-》静止就绪:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先就绪进程时,系统会选择挂起低优先级就绪进程;
执行=》静止就绪:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到静止就绪状态
②在外存时的状态转换
静止阻塞-》静止就绪:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程。
③解挂激活(Activate):把一个进程从外存转到内存
静止就绪=》活动就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;
静止阻塞-》活动阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞拦起(系统认为会很快出现所等待的事件)进程转换为阻塞进程;
问题:OS怎么通过PCB和定义的进程状态来管理PCB,帮助完成进程的调度过程?
——状态队列
由操作系统来维护一组队列,用来表示系统当中所有进程的当前状态;不同的状态分别用不同的队列来表示(就绪队列、各种类型的阻塞队列) ; 每个进程的PCB都根据它的状态加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离出来,加入到另外一个队列。