第三节 1.程序的并发执行 程序用来描述计算机所完成的独立功能,并在时间上严格地按前后次序相继地进行计算机操作序列集合,是一个静态概念。 个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。 程序顺序执行的特点: 1.顺序性 处理机严格按照程序所规定的顺序执行,即每个操作必须在下一个操作开始之前结束。 2.封闭性 程序一旦开始执行,其计算结果不受外界的影响,当程序的初始条件给定之后,其后的状态只能由程序本身确定,即只有本程序才能改变它。 3.可再现性 程序执行的结果与初始条件有关,而与执行时间无关。即只要程序的初始条件相同,它的执行结果是相同的,不论它在什么时间执行,也不管计算机的运行速度。 多道程序系统中程序执行环境的变化 执行环境的特点: (1)独立性 在多道环境下执行的每道程序都是逻辑上独立的。 (2)随机性 程序和数据的输入和执行开始时间都是随机的。 (3)资源共享 软硬件资源的有限性导致资源共享。程序并发执行:若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的,也称这几个程序段是并发执行的。 2.进程: 进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。 进程和程序的区别与联系: ①程序是指令的集合,是静态的概念。 进程是程序在处理机上的一次执行的过程,是动态的概念。程序可以作为软件资料长期保存。进程是有生命周期的。②进程是一个独立的运行单位,能与其它进程并行(并发)活动。而程序则不是。 ③进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。 ④不同的进程可以包含同一程序,只要该程序所对应的数据集不同。 作业和进程的关系 作业是用户需要计算机完成某项任务时要求计算机所做工作的集合。而进程则是已提交完毕程序的执行过程的描述,是资源分配的基本单位。 其主要区别如下:作业是用户向计算机提交任务的任务实体。 一个作业可由多个进程组成。 作业的概念主要用于批处理系统中。 进程描述 在系统中一个进程存在:进程控制块PCB、有关程序段、数据结构集 ① 进程控制块 PCB (Process Control Block) 包含一个进程的描述信息、控制信息及资源信息,有些系统还有进程调度等待所使用的现场保护区。PCB集中反映一个进程的动态特征。在创建时,建立PCB,并伴随进程运行的全过程,当进程完成其功能后,系统释放PCB,进程也随之消亡(1)描述信息 1、进程名或进程标识号 name 每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字。UNIX系统中就是一个整型数。在进程创建时由系统赋予。 2、用户名或用户标识号 每个进程都隶属于某个用户,用户名或用户标识号有利于资源共享和保护 3、家族关系 process family 有的系统允许一个进程可创建自已的子进程,子进程还可以创建,一个进程往往处在一个家族之中,就需要记录进程在家族中位置的信息。 (2)控制信息 1、进程当前状态 status 说明进程当前所处的状态。为了管理的方便,系统设计时会将相同的状态的进程组成一个队列,如就绪进程队列,等待进程则要根据等待的事件组成多个等待队列,如等待打印机队列、等待磁盘I/O完成队列等等。 2、进程优先级 priority 进程的优先级反映进程的紧迫程度,通常由用户指定和系统设置。 3、执行程序开始地址 start-addr 4、各种计时信息 进程占用系统资源的情况,不同的系统的处理差别很大。 5、通信信息 communication information 是指某个进程在运行的过程中要与其它进程进行通信,该区记录有关进程通信方面的信息。 (3)资源管理信息 包括有关存储器的信息、使用输入、输出设备的信息、有关文件系统的信息: 1、占用内存大小及管理用数据结构指针。 2、在某些复杂系统中,还有对换或覆盖用的有关信息。 3、共享程序段大小及起始地址。 4、输入输出设备的设备号,所要传送的数据长度、缓冲区地址、缓冲区长度及使用设备的有关数据结构指针等。 5、指向文件系统的指针及有关标识等。 (4)、CPU现场保护区 cpustatus 当进程因某种原因不能继续占用CPU时(等待打印机),释放CPU,这时就要将CPU的各种状态信息保护起来,为将来再次得到处理机恢复CPU的各种状态,继续运行。 ②进程上下文实际上是进程执行活动全过程的静态描述。 进程上下文是一个抽象的概念,它包含了每个进程执行过的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈(存放个调用子程序的返回点和参数等),状态字寄存器等中的内容。 上文:已执行过的进程指令和数据在相关寄存器与堆栈中的内容。 正文:正在执行的指令和数据在相关寄存器与堆栈中的内容。 下文:待执行的指令和数据在相关寄存器与堆栈中的内容。 ③进程上下文切换 进程上下文切换发生在不同的进程之间而不是同一个进程内。包含3个部分, 第一部分为保存被切换进程的正文部分(或当前状态)至有关存储区。 第二部分操作系统进程中有关调度和资源分配程序执行,并选取新的进程。 第三部分则是将被选中进程的原来被保存的正文部分从有关存储区中选出,并送至有关寄存器或堆栈中,激活被选中进程执行。
④进程空间和大小 3.进程状态及其转换 执行状态、就绪状态、等待状态(又称阻塞、挂起、睡眠) 就绪状态(Ready) ★进程状态转换 进程控制:就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。 由系统程序模块统一创建;由父进程创建。 进程创建系统调用: create(name,priority,start-addr) UNIX系统:fork() 进程撤销: (1)该进程已完成所要求的功能而正常终止 (2)由于某种错误导致非正常终止 (3)祖先进程要求撤销某个子进程。 在一般操作系统中进程撤消的系统调用是:kill UNIX系统中是exit() 如果撤销进程有自己的子进程,则撤销原语先撤销其子进程的PCB结构并释放子进程所释放的资源后,再撤销当前进程的PCB结构和释放其资源。 进程的阻塞与唤醒 4.进程互斥 (2)并发进程中的某个进程不在临界区时,它不能阻止其他进程进入临界区; (3)并发进程中的若干个进程申请进入界区时,只能允许一个进程进入; (4)当有若干个进程欲进入临界区时,应在有限的时间内使其进入。 解决进程互斥的最简单的办法是加锁。 在系统中为每个临界资源设置一个锁位, 1、考察锁位的值; 3、若原来值是为“0”,(该资源已被别人占用),则转到1。 当进程使用完资源后,将锁位置为“1“,称为开锁操作。 5.信号量与P、V原语 ★P操作: (3)若结果小于0,则该进程挂起。 注:挂起该进程包括:保留调用进程CPU现场;置“等待”状态;入等待队列;转进程调度; ★ P、V原语实现互斥的原理 当一个进程想要进入临界区时,它必须先执行P原语操作以将信号量sem减1。在一个进程完成对临界资源的操作后,它必须执行V原语操作以释放它占用的临界资源。由于信号量初始值为1,所以,任一进程在执行P原语操作之后将sem的值变为0,表示该进程可以进入临界区。在该进程未执行V原语操作之前如有另一进程想进入临界区的话,它也应先执行P原语操作,从而使sem的值变为-1,因此,第二个进程将会被阻塞,直到第一个进程执行V原语操作之后,sem的值变为0,从而可唤醒第二个进程进入就绪队列,经调度后进入临界区。在第二个进程执行完V原语操作之后,如果没有其它进程申请进入临界区的话,则sem又恢复到初始值。 用信号量实现两并发进程Pa,Pb互斥的描述如下: (2) 描述 Pa: (2) 初始化Bufempty=true,Buffull=false.。 (3) 描述: Pc : 计算 Bufempty false signal(Buffull) Goto A Pp : B:wait(Bufful) 清除Buf中的数据 ★用P,V原语操作实现同步 8.进程通信 (1)主从式 (2)会话式 (4)共享存储区方式 会话方式的特点: (3)使用进程和服务进程在进行通信时有固定连接关系。 消息或邮箱机制的特点是: (3)发送进程和接受进程之间存在缓冲区或邮箱用来存放被传送消息。 9.死锁问题 ★死锁的起因: 根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。 ★产生死锁有四个必要条件: (4)环路等待条件。存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。 只要有一个条件不满足,死锁就可解除。 预防死锁 1.资源剥夺法 2.撤消进程法
(部分素材来源于网络 版权归原作者所有)
如果你对阿平老师的课程感兴趣,可关注收藏! 阿平老师(微信/qq:158912971)
长按,识别图中二维码,关注,学全套课程.
|
|