1、程序的顺序执行:一个具有独立功能的程序独占处理机直至得到最终结果的过程称为程序的顺序执行。如下图,图中程序1和程序2分别包括I1、I2,C1、C2和P1、P2模块。只有程序1执行完毕后程序2才得以执行。
程序顺序执行的特征
顺序性 :程序顺序执行时,其执行过程可看做一系列严格按程序规定的状态转移过程,也就是每执行一条指令,系统就从上一个执行状态转移到下一个执行状态,且上一条指令的执行结束是下一条指令执行开始的充分必要条件。
封闭性:程序是在封闭的环境下执行。即程序在运行时独占全部资源,资源的状况只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。
可再现性:顺序执行的最终结果可再现是说它与执行速度无关。只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。
2、程序的并发执行:程序的并发执行,本质上是以程序为基础,结合在该程序上处理的数据以及用于控制进程的数据结构PCB而创建起来的进程的并发执行。
如下程序并发执行的前趋图
程序并发执行的特征
间断性:程序在并发执行时,微观上是多个进程并发执行。由于它们共享系统资源,以及为完成同一任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。从而使得有些程序在执行中出现走走停停的情况。
失去封闭性:程序并发执行时,由多个程序(进程)共享资源,因而对资源的状态由多个程序来改变,从而失去了封闭性。
不可再现性:各进程推进的顺序不可再现。
3、程序并发执行要解决的问题
1)协调各程序的执行顺序。例如,当输入的数据还未全部输入内存时,计算必须等待。
2)多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果。
3)选择哪些、多少个程序进入内存运行:根据资源等情况决定。
4)内存中的执行程序哪个先执行:根据系统采用的调度算法。
5)内存如何有效分配:内存资源非常宝贵。
4、进程的定义
进程的特征:结构特征,动态性,并发性,独立性,异步性
引入进程后系统可能产生的问题:增加空间的开销;增加时间开销;更难控制;处理机的竞争尤为突出
5、进程的状态
进程的状态转换图
五种状态的进程状态转换图
双挂起状态的进程状态转换图
6、进程控制块PCB
进程控制块PCB的内容
进程描述信息:进程名、进程标识符、用户名
进程调度信息:进程状态、进程优先级、运行统计信息、进程阻塞原因
进程控制和资源占有量信息:程序入口地址、程序的外存地址、进程同步及通信机制、资源占有信息、链接指针
处理机状态信息:通用寄存器、指令计数器、程序状态字寄存器、栈指针
进程控制块PCB的组织
1、操作系统内核
核心态:具有较高的特权,能执行一切命令,访问所有寄存器和存储区。
用户态:具有较低特权,只能执行规定的命令,访问指定的寄存器和存储区。
内核与原语
内核:硬件的第一次延伸;系统将一些与硬件紧密相关的模块放在内核(中断处理、时钟管理);内核在执行某些基本操作时,往往是利用原语操作实现的。
原语:原语由若干条指令构成、用于完成一定功能的过程。原语是“原子操作”。即一个操作中的所有动作,要么全做,要么全不做。换言之,原子操作是一个不可分割的操作。
2、进程的创建
引起进程创建的事件:用户登录;新作业进入系统;提供服务;应用请求
创建原语要做的工作:申请空白PCB;为进程分配资源;初始化PCB(初始化进程描述信息、初始化处理机状态信息、初始化进程控制信息);将新进程插入就绪队列
3、进程的撤销
引起进程撤消的事件:进程正常结束;进程异常结束;外界干预
撤消原语要做的工作:查找撤消进程的PCB;若进程处于执行状态,终止之,并进行进程调度;若有子孙,予以终止;归还资源;从所在队列移出
4、进程的阻塞与唤醒
引起进程阻塞的事件:请求系统服务;启动某种操作;数据尚未到达;无新工作可做
阻塞原语要做的工作:停止进程的执行;将进程插入阻塞队列,改变进程在PCB中的状态;重新调度
唤醒原语要做的工作:将进程从阻塞队列解下;将进程插入就绪队列;改变进程在PCB中的状态
5、进程的挂起与激活
挂起原语要做的工作:检查被挂起进程的状态;如进程处于就绪状态,将进程从就绪状态变为就绪挂起状态;如进程处于阻塞状态,将进程从阻塞状态变为阻塞挂起状态;如进程正在运行,将进程变为就绪挂起状态,并重新调度
激活原语要做的工作:检查被激活进程的状态;如进程处于就绪挂起状态,将进程从就绪挂起状态变为就绪状态;如进程处于阻塞挂起状态,将进程从阻塞挂起状态变为阻塞状态;若系统为抢占式系统,则进行进程调度
1、临界资源:一次只能供一个进程使用的资源被称为临界资源
临界资源实例
2、临界区:访问临界资源的那段程序
3、互斥:多个进程访问公共变量时,当一个进程正在进行访问时,就不允许其他进程对该临界资源访问,它们必须互斥地使用这个临界资源,这种约束关系叫做互斥
互斥访问应遵循的准则:不能假设各并发进程的相对执行速度。即各并发进程享有平等的、独立的竞争共有资源的权利,且在不采取任何措施的条件下,在临界区内任一指令结束时,其他并发进程可以进入临界区;某一时间,只能有一个进程在临界区内执行;并发进程中的某个进程不在临界区时,它不阻止其他进程进入临界区;并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入;并发进程中的某个进程申请进入临界区时开始,应在有限时间内得以进入临界区。
互斥的加锁实现:当某个进程进入临界区之后锁上临界区,直到它退出临界区时再开锁;并发进程在申请进入临界区时,首先测试该临界区是否是上锁的;单CPU环境下,可能会陷入循环测试(忙等)。
4、同步:指多个进程中发生的事件存在着某种时序关系,它们必须按规定时序执行,以共同完成一项任务 。
同步机制应遵循的准则
空闲让进:当无进程处于临界区时,临界资源处于空闲状态。此时允许进程进入临界区。
忙则等待:当已有进程进入临界区时,临界资源正在被访问,其他想进入临界区的进程必须等待。
有限等待:对于要求访问临界资源的进程,应保证在有效的时间内进入,以免进入“死等”状态。
让权等待:当进程不能进入临界区时,应立即释放处理机,以免进程进入“忙等”。
5、信号量和P、V操作
1965年,荷兰学者Dijkstra提出了信号灯机制,卓有成效地解决了进程同步问题。
记录型信号灯的定义
信号灯的P、V操作
从资源的观点看信号灯的物理意义
1)s.value的初值表示系统中某种资源数目;2)wait(s)表示要申请一个资源;3)signal(s)表示要释放一个资源;4)s.value <0时,|s.value|表示等待队列的进程数
6、用信号量解决互斥问题
1、进程通信的类型
1、进程通信的类型
共享存储器系统;消息传递系统(直接通信方式、间接通信方式);管道通信
2、进程通信中的几个问题
通信链路的建立方式(显示建立链路、隐式建立链路);通信方向;通信链路连接方式 ; 通信链路的容量;数据格式;同步方式(阻塞方式、不阻塞方式)
3、消息缓冲队列
数据结构
发送原语
接收原语
1、线程的定义
线程是进程中的一个实体,是系统独立调度和分派的基本单位
2、进程模型
进程和线程的比较
进程是资源的拥有者;线程不拥有资源,只有TCB及堆栈;线程调度快,需要空间小;进程因拥有资源,调度时因负担过重而缓慢;在引入线程的操作系统中,不仅进程之间可以并发执行,一个进程中的多个线程之间亦可并发执行;进程是资源的拥有者;进程切换的开销远远大于线程切换的开销,线程的 切换省去了资源的回收
3、线程的实现
用户级线程:线程的创建、撤消和切换,都不利用系统调用来实现。线程与内核无关,内核也不知道线程的存在
内核级线程:依赖于内核,线程的创建、撤消和切换都由内核实现。在内核中有线程控制块(TCB),内核根据TCB感知线程的存在,并对线程进行控制
组合的方法:由内核支持的用户线程。一个进程可以有一个或多个轻量级线程,每个轻量级线程由一个单独的内核线程来支持
4、用户级线程与内核级线程