目录
1、wait(semaphore *s) 和 signal(semaphore *s)
2、应当指出,信号量机制作为同步工具是卓有成效的,但作为通信工具,则不够理想
一、前趋图和程序执行
1、前趋图
有向无循环图,用于描述进程之间执行的前后关系
2、程序顺序执行
(1)程序的顺序执行:若干个程序/程序段之间必须严格按照某种先后次序来执行
(2)程序顺序执行时的特征
Δ1、顺序性:处理机的操作严格按照程序所规定的顺序执行
Δ2、封闭性:程序运行时独占全机资源,程序一旦开始执行,其执行结果不受外界因素影响
Δ3、可再现性:只要程序执行时的环境和初始条件相同,都将获得相同的结果
(不论它是从头到尾不停顿地执行,还是“停停走走”地执行)
3、程序并发执行
(1)程序的并发执行:多个程序/程序段可以在同一时间间隔内同时执行
(2)程序并发执行时的特征
Δ1、间断性:由于它们共享系统资源,以及为完成同一项任务而相互合作,
致使在这些并发执行的程序之间, 形成了相互制约的关系
相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律
Δ2、失去封闭性:是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,
致使程序的运行已失去了封闭性
Δ3、不可再现性:程序在并发执行时,由于失去了封闭性, 导致不可再现性
二、进程的描述
1、进程的定义与特征
(1)进程的定义
Δ1、进程是程序的一次执行
Δ2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动
Δ3、进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
(2)进程的特征
𝒜 结构特征
Δ1、为使程序(含数据)能独立运行,应为之配置一进程控制块,即PCB(Process Control Block);
Δ2、而由程序段、相关的数据段、PCB三部分便构成了进程实体
Δ3、所谓创建进程,实质上是创建进程实体中的PCB
Δ4、而撤消进程,实质上是撤消进程的PCB
ℬ 动态性
Δ1、进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征
Δ2、动态性表现:“它由创建而产生,由调度而执行,由撤消而消亡”
可见,进程实体有一定的生命期
Δ3、对比:程序是一组有序指令的集合,其本身并不具有运动的含义,因而是静态的
Δ4、程序为剧本,而进程是剧本的一次演绎
𝒞 并发性:这是指多个进程实体同存于内存中,且能在一段时间内同时运行
𝒟 独立性:指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位
ℰ 异步性:指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行
♥在引入了进程实体的概念后,我们可以把传统OS中的进程定义为:
“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”
2、进程的状态
(1)进程的三种基本状态
(2)进程五种状态及转换模型
Δ1、空 → 新状态 :新创建的进程首先处于新状态
Δ2、新状态 → 就绪状态 :当系统允许增加就绪进程时,操作系统接纳新建状态进程,
将它变为就绪状态,插入就绪队列中
Δ3、就绪状态 → 执行状态:当处理机空闲时,将从就绪队列中选择一个进程执行(进程调度),
或将处理机分派给一个进程,该进程状态从就绪转变为执行
Δ4、执行状态 → 终止状态:执行状态的进程执行完毕,or出现诸如访问地址越界、非法指令等错误,
而被异常结束,则进程从执行状态转换为终止状态
Δ5、执行状态 → 就绪状态:分时系统中,时间片用完,or优先级高的进程到来,将中断该进程的执行
进程从执行状态转变为就绪状态,等待下一次调度
Δ6、执行状态 → 阻塞状态:执行进程需要等待某事件发生
通常,会因为进程需要的系统调用不能立即完成,如读文件、共享虚拟内
存、等待I/O操作、等待另一进程与之通信等事件而阻塞
Δ7、阻塞状态 → 就绪状态:当阻塞进程等待的事件发生,就转换为就绪状态
进入就绪队列排队,等待被调度执行
♥ 多个进程竞争内存资源
𝒜内存资源紧张
ℬ无就绪进程,处理机空闲:I/O的速度比处理机的速度慢得多,可能出现全部进程阻塞等待I/O
𝒞解决方法:交换技术---------换出一部分进程到外存,以腾出内存空间
将内存中暂时不能运行的进程,或暂时不用的数据和程序,换出到外存,
以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序,
换入内存;进程被交换到外存,状态变为挂起状态
虚拟存储技术--每个进程只能装入一部分程序和数据 (存储管理部分)
(3)进程的挂起状态
𝒜 定义:挂起的本质是进程不能继续执行,即挂起后的进程处于就绪状态但不能参与CPU的竞争(静止就绪)
所以被挂起的进程处于静止状态;相反,没有被挂起的进程处于活动状态
处于静止状态的进程通过“激活”变为活动状态
ℬ处理机状态
处理机状态信息主要是由处理机的各种寄存器中的内容组成:
Δ1、通用寄存器,又称为用户可视寄存器,暂存信息
Δ2、指令计数器,其中存放了要访问的下一条指令 的地址
Δ3、程序状态字PSW,其中含有状态信息,如条件 码、执行方式、中断屏蔽标志等
Δ4、用户栈指针,用于存放系统调用参数及调用地 址。栈指针指向该栈的栈顶。
♥这些都是中断和进程切换时需要保护的内容
𝒞 被挂起进程的特征
Δ1、不能立即执行
Δ2、可能是等待某事件发生,若是,则阻塞条件独立于挂起条件,即使阻塞事件发生,该进程也不能执行
Δ3、使之挂起的进程为︰自身、其父进程、OS
Δ4、只有挂起它的进程才能使之由挂起状态转换为其他状态
𝒟 在引入挂起原语Suspend和激活原语Active后,在它们的作用下,进程将可能发生以下几种状态的转换:
3、进程管理中的数据结构
(1)进程控制块PCB的地位
𝒜进程存在的唯一标志
Δ1、进程创建:分配进程控制块
Δ2、进程调度:保存和读取进程控制块
Δ3、进程撤销:回收进程控制块
ℬ PCB常驻内存
(2)PCB的作用
Δ1、独立运行基本单位的标志
当一个程序(含数据)配置了PCB后,就表示它已经是一个能独立运行的基本单位,也就具有获得OS服务的权利,
如打开文件系统中的文件,请求获得系统中的I/O设备,以及与其它相关进程进行通信等
因此,当系统创建一个新进程时,就为它建立了一个PCB;进程结束时又回收其PCB,进程于是也随之消亡
系统是通过PCB感知进程的存在的;事实上,PCB已成为进程存在于系统中的唯一标志
Δ2、能实现间断性运行方式---保护CPU现场
在多道程序环境下,程序是采用停停走走间断性的运行方式运行的
当进程因阻塞而暂停运行时,必须保留自己运行时的CPU现场信息,再次被调度运行时,还需要恢复其CPU现场信息
在有了PCB后,系统就可将CPU现场信息保存在被中断进程的PCB中,供该进程再次被调度执行时恢复CPU现场时使用
由此,可再次明确,在多道程序环境下,作为传统意义上的静态程序,因其并不具有保护或保存自己运行现场的手段,
无法保证其运行结果的可再现性,从而失去运行的意义
Δ3、提供进程管理所需要的信息---OS通过PCB对进程实施控制和管理
Δ4、提供进程调度所需要的信息---提供进程状态、优先级等信息
Δ5、实现与其它进程的同步与通信---消息队列指针, 信号量等
(3)PCB中的信息
𝒜 进程标识符
进程标识符用于唯一的标识一个进程; 一个进程通常有两种标识符:
Δ1、内部标识符
为每一个进程赋予一个惟一的数字标识符; 设置内部标识符主要是为了方便系统使用
Δ2、外部标识符
它由创建者提供,通常是由字母、数字组成,往往是由用户(进程)在访问该进程时使用
ℬ 处理机状态
处理机状态信息主要是由处理机的各种寄存器中的内容组成:
Δ1、通用寄存器,又称为用户可视寄存器,暂存信息
Δ2、指令计数器,其中存放了要访问的下一条指令 的地址
Δ3、程序状态字PSW,其中含有状态信息,如条件 码、执行方式、中断屏蔽标志等
Δ4、用户栈指针,用于存放系统调用参数及调用地 址。栈指针指向该栈的栈顶。
♥这些都是中断和进程切换时需要保护的内容
𝒞 进程调度信息
PCB中还存放一些与进程调度和进程对换有关的信息,包括:
Δ1、进程状态 Δ2、进程优先级 Δ3、进程调度所需的其它信息 Δ4、事件,阻塞原因
𝒟进程控制信息: 程序和数据的地址; 进程同步和通信机制; 资源清单; 链接指针
(4)PCB的组织方式
Δ1、线性方式:将系统中的所有PCB组织在一张线性表中,将该表的首地址存放在一个专用区域中
Δ2、链接方式:把具有同一状态的PCB,用其中的链接字链接成一个队列,排成就绪队列,若干个阻塞队列以及空白队列
Δ3、索引方式:系统根据所有进程的状态建立几张索引表
三、进程控制
1、进程控制の简介
进程控制是进程管理中最基本的功能,主要包括创建进程、终止进程、负责进程运行过程中的状态转换
进程控制是操作系统的内核通过原语(Primitive)来实现的
原语是由若干条指令组成的,用于完成一定功能的一个过程
是“原子操作”,即一个操作中的所有动作要么全做,要么全不做,
换言之,是一个不可分割的基本单位,在执行过程中不允许被中断
原语常驻内存,且在系统态下运行
为了使操作系统内核代码和数据不会遭受到用户程序的破坏,通常将处理机的执行状态分为:
(1)系统态/管态/内核态:较高特权,能执行一切指令,访问所有的存储区和寄存器
(2)用户态/目态 :较低特权,只能执行规定的指令,访问规定的存储区和寄存器
2、操作系统内核(书P47)
(1)定义
我们把一些和硬件紧密相关的模块(eg中断处理程序)、各种常用设备的驱动程序、运行频率较高的
模块(eg进程调度)安排在仅靠硬件的软件层次中,将它们常驻内存,这部分被称为OS内核
(2)两大功能:
Δ1、支撑功能-------中断处理,时钟管理,原语操作