计算机操作系统 第二章 进程的描述与控制知识总结

2.1 前趋图和程序执行

2.11 前趋图

前趋图(Precedence Graph)是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序。
进程(或程序)之间的前趋关系可用“→”来表示。在前趋图中,把没有前趋的节点称为初始节点,把没有后继的节点称为终止节点。此外,每个节点还具有一个重量,用于表示该节点所含有的程序量或程序的执行时间。
前趋图中是不允许有循环的,否则必然会产生不可能实现的前趋关系

2.12 程序顺序执行

1.程序的顺序执行
在这里插入图片描述
2.程序顺序执行时的特征
(1)顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一个操作开始之前结束;
(2)封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;
(3)可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都可获得相同的结果。

2.13 程序并发执行

1.程序的并发执行

2.程序并发执行时的特征
(1)间断性。
(2)失去封闭性。
(3)不可再现性。

2.2 进程的描述

2.21 进程的定义和特征

1.进程的定义
**程序段、数据段、PCB(进程控制块)**三部分组成了进程实体(进程影像)。一般情况下,我们把进程实体简称为进程。所谓的创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程的PCB。
因此。PCB是进程存在的唯一标志!
进程是程序的一次执行。
进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统资源分配和调度的一个独立单位。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
2.进程的特征
(1)动态性,是进程最基本的特征。
(2)并发性。
(3)独立性。
(4)异步性。

2.22 进程的基本状态及转换

1.进程的三种基本状态
(1)就绪状态。
(2)执行状态。
(3)阻塞状态。
2.三种基本状态的转换
(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
3.创建状态和终止状态
目的是为了满足进程控制块对数据及操作的完整性要求以及增强管理的灵活性。
(1)创建状态
目的是为了保证进程的调度必须在创建工作完成后进行,以确保对进程控制块操作的完整性。
(2)终止状态
两个步骤:等待操作系统进行善后处理;将其PCB清零,并将PCB空间返还系统。

2.23 挂起操作和进程状态的转换

当挂起操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如果进程正在执行,它将暂停执行。若原本处于就绪状态,则该进程此时暂不接受调度。与挂起操作对应的操作是激活操作。
1.挂起操作的引入
(1)终端用户的需要。
(2)父进程请求。
(3)负荷调节的需要。
(4)操作系统的需要。
2.引入挂起原语操作后三个进程状态的转换
(1)活动就绪→静止就绪。
(2)活动阻塞→静止阻塞。
(3)静止就绪→活动就绪。
(4)静止阻塞→活动阻塞。
3.引入挂起操作后五个进程状态的转换
(1)NULL→创建。
(2)创建→活动就绪。
(3)创建→静止就绪。
(4)执行→终止。

2.24 进程管理中的数据结构

1.操作系统中用于管理控制的数据结构
内存表、设备表、文件表和用于进程管理的进程表(进程控制块PCB)
2.进程控制块PCB的作用
(1)作为独立运行基本单位的标志。
(2)能实现间断性运行方式。
(3)提供进程管理所需要的信息。
(4)提供进程调度所需要的信息。
(5)实现与其它进程的同步与通信。
3.进程控制块中的信息
(1)进程标识符。
外部标识符:为了方便用户(进程)对进程的访问。
内部标识符:为了方便系统对进程的使用。
(2)处理机状态。
由处理机的各种寄存器中的内容组成,包括:通用寄存器、指令计数器、程序状态字PSW、用户栈指针。
(3)进程调度信息。
包括:进程状态、进程优先级、进程调度所需的其它信息、事件(指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因)。
(4)进程控制信息。
包括:程序和数据的地址、进程同步和通信机制、资源清单、链接指针。
4.进程控制块的组织方式。
线性方式
链接方式
索引方式

2.3 进程控制

进程控制是进程管理中最基本的功能。

2.31 操作系统内核

系统态:又称为管态,也称为内核态。它具有较高的特权,能执行一切指令,访问所有寄存器和存储器,传统的OS都在系统态运行。
用户态:又称为目态。它是具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区。一般情况下,应用程序只能在用户态运行,不能去执行OS指令及访问OS区域,这样可以防止应用程序对OS的破坏。
1.支撑功能
(1)中断处理,是内核最基本的功能。
(2)时钟管理。
(3)原语操作,所谓原语就是由若干条指令组成的,用于完成一定功能的一个过程。它与一般过程的区别在于:原语在执行过程中不允许被中断。
2.资源管理功能
(1)进程管理。
(2)存储器管理。
(3)设备管理。

2.32 进程的创建

1.进程的层次结构
一个进程可以创建另一个进程,通常把创建进程的进程称为父进程,而把被创建的进程称为子进程。子进程可以继承父进程所拥有的资源。子进程可以继续创建更多的孙进程,由此形成了一个进程的层次结构。
2.进程图
用于描述进程间关系的一颗有向树。
3.引起创建进程的事件
导致一个进程去创建另一个进程的典型事件有四类:
(1)用户登录。
(2)作业调度。
(3)提供服务。
(4)应用请求。
4.进程的创建
在系统中每当出现了创建新进程的请求后,OS便调用进程创建原语Creat按下述步骤创建一个新进程:
(1)申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
(2)为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等。
(3)初始化进程控制块(PCB)。PCB的初始化包括:初始化标识信息、初始化处理机状态信息、初始化处理机控制信息。
(4)如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

2.33 进程的终止

1.引起进程终止(Termination of Process)的事件
(1)正常结束。
(2)异常结束。常见的异常事件有:越界错、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障。
(3)外界干预。常见干预有:操作员或操作系统干预、父进程请求、因父进程终止。
2.进程的终止过程
(1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态;
(2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度;
(3)若该进程还有子孙进程,还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程;
(4)将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统;
(5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。

2.34 进程的阻塞与唤醒

1.引起进程阻塞和唤醒的事件
(1)向系统请求共享资源失败。
(2)等待某种操作的完成。
(3)新数据尚未到达。
(4)等待新任务的到达。
2.进程阻塞过程
正在执行的进程,如果发生了上述事件,进程便通过调用阻塞原语block将自己阻塞。可见,阻塞是进程自身的一种主动行为。
3.进程唤醒过程
当被阻塞进程所期待的事件发生时,则由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒。

2.35 进程的挂起与激活

1.进程的挂起
挂起原语suspend
2.进程的激活过程
激活原语active

2.4 进程同步

2.41 进程同步的基本概念

进程同步机制的主要任务是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。
1.两种形式的制约关系
简接相互制约关系
直接相互制约关系
2.临界资源(Critical Resouce)
3.临界区(critical section)
不论是硬件临界资源还是软件临界资源,多个进程必须互斥的对它们进行访问。人们把在每个进程中访问临界资源的那段代码称为临界区。
4.同步机制应遵循的规则
(1)空闲让进。
(2)忙则等待。
(3)有限等待。
(4)让权等待。

2.42 硬件同步机制

1.关中断
关中断是实现互斥的最简单的方法之一。
关中断方法的缺点有:
(1)滥用关中断权力可能导致严重后果。
(2)关中断时间过长,会影响系统效率,限制了处理器交叉执行程序的能力。
(3)关中断方法不适用于多CPU系统,因为在一个处理器上关中断并不能防止进程在其它处理器上执行相同的临界段代码。
2.利用Test-and-Set指令实现互斥
这是一种借助硬件指令——“测试并建立”指令TS(Test-and-Set)以实现互斥的方法。
3.利用Swap指令实现进程互斥
该指令称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。

2.43 信号量机制

1.整型信号量
2.记录型信号量
3.AND型信号量
4.信号量集

2.44 信号量的应用

1.利用信号量实现进程互斥
为临界资源设置一互斥信号量mutex,并设其初值为1,然后将各进程访问该资源的临界区CS置于wait(mutex)和signal(mutex)操作之间即可。
2.利用信号量实现前趋关系

2.45 管程机制

1.管程的定义
代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块,我们称之为管程。
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。
管程由四部分组成:管程的名称、局部于管程的共享数据结构说明、对该数据结构进行操作的一组过程、对局部于管程的共享数据设置初始值的语句。
2.条件变量
(1)x.wait:正在调用管程的进程因x条件需要被阻塞或挂起.
(2)x.signal:正在调用管程的进程发现x条件发生了变化。

2.5 经典进程的同步问题

2.51 生产者-消费者问题

1.利用记录型信号量解决生产者-消费者问题
2.利用AND信号量解决生产者-消费者问题
3.利用管程解决生产者-消费者问题

2.52 哲学家进餐问题

1.利用记录型信号量解决哲学家进餐问题
2.利用AND信号量机制解决哲学家进餐问题

2.53 读者-写者问题

1.利用记录型信号量解决读者-写者问题
2.利用信号量集机制解决读者-写者问题

2.6 进程通信

信号量机制(低级进程通信)低级的原因:效率低、通信对用户不透明。
OS提供的高级通信工具的特点:使用方便、高效地传送大量数据。

2.61 进程通信的类型

1.共享存储器系统(Shared-Memory System)
(1)基于共享数据结构的通信方式。适用于传递相对少量的数据,通信效率低下,属于低级通信。
(2)基于共享存储区的通信方式。适用于传输大量数据。
2.管道(pipe)通信系统
三方面的协调能力:互斥、同步、确定对方是否存在。
3.消息传递系统(Message passing system)
(1)直接通信方式。
(2)间接通信方式。
4.客户机-服务器系统(Client-Server system)
实现方法:
(1)套接字,包括:基于文件型、基于网络型。
(2)远程过程调用和远程方法调用。
负责处理远程过程调用的进程有两个,一个是本地客户进程,另一个是远程服务器进程,这两个进程通常也被称为网络守护进程,主要负责在网络间的消息传递,一般情况下,这两个进程都是处于阻塞状态,等待消息。

2.62 消息传递通信的实现方式

1.直接消息传递系统
在直接消息传递系统中采取直接通信方式,即发送进程利用OS所提供的发送命令(原语),直接把消息发送给目标进程。
(1)直接通信原语。
对称寻址方式
非对称寻址方式
(2)消息的格式。
(3)进程的同步方式。
三种情况:
发送进程阻塞,接收进程阻塞。主要应用于进程之间紧密同步,发送进程和接收进程之间无缓冲;
发送进程不阻塞,接收进程阻塞;
发送进程不阻塞,接收进程不阻塞。
(4)通信链路。
单向通信链路
双向通信链路
2.信箱通信
信箱通信属于间接通信方式。
(1)信箱的结构。
信箱头:用以存放有关信箱的描述信息;
信箱体:由若干个可以存放信息的信箱格组成,信箱格的数目以及每格的大小是在创建信箱时确定的。
(2)信箱通信原语。
邮箱的创建和撤销、消息的发送和接收。
(3)信箱的类型。
私用邮箱、公用邮箱、共享邮箱
邮箱通信在发送进程和接收进程之间存在四种关系:一对一关系、多对一关系、一对多关系、多对多关系。

2.63 直接消息传递系统实例

1.消息缓冲队列通信机制中的数据结构
2.发送原语
3.接收原语

2.7 线程(Threads)的基本概念

2.71 线程的引入

在操作系统中引入线程是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。
1.进程的两个基本属性
进程是一个可拥有资源的独立单位;
进程是一个可独立调度和分派的基本单位。
2.程序并发执行所需付出的时空开销
(1)创建进程;
(2)撤销进程;
(3)进程切换。
3.线程——作为调度和分派的基本单位

2.72 线程与进程的比较

1.调度的基本单位
传统的OS中进程是作为独立调度和分派的基本单位。
引入线程的OS中线程是作为独立调度和分派的基本单位。
在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,必然会引起进程的切换。
2.并发性
在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,甚至还允许在一个进程中的所有线程都能并发执行。
3.拥有资源
线程本身并不拥有系统资源,而是仅有一点必不可少的、能独立运行的资源。除此之外,还允许多个线程共享该进程所拥有的资源。
4.独立性
在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。
5.系统开销
线程的系统开销远低于进程。
6.支持多处理机系统
在多处理机系统中,对于多线程进程,可以将一个进程中的多个线程分配到多个处理机上,使它们并行执行,加速进程的完成。

2.73 线程的状态和线程控制块

1.线程运行的三个状态
(1)执行状态。
(2)就绪状态。
(3)阻塞状态。
2.线程控制块TCB
线程控制块通常有:线程标识符、一组寄存器、线程运行状态、优先级、线程专有存储区、信号屏蔽、堆栈指针。
3.多线程OS中的进程属性
(1)进程是一个可拥有资源的基本单位。
(2)多个线程可并发执行。
(3)进程已不是可执行的实体。

2.8 线程的实现

2.81 线程的实现方式

1.内核支持线程KST(Kernel Supported Threads)
主要优点:
(1)在多处理器系统中,内核能够同时调度同一进程中的多个线程并行执行;
(2)如果进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理器运行,也可以运行其它进程中的线程;
(3)内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销少;
(4)内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。
主要缺点:对于用户的线程切换而言,其模式切换的开销较大。
2.用户级线程ULT(User Level Threads)
用户级线程是在用户空间中实现的,用户级线程是与内核无关的。
设置了用户级线程的系统,其调度仍是以进程为单位进行的;
设置了内核支持线程的系统,其调度便是以线程为单位进行的。
用户级线程的优点:
(1)线程切换不需要转换到内核空间。
(2)调度算法可以是进程专用的。
(3)用户级线程的实现与OS平台无关。
缺点:
(1)系统调用的阻塞问题。
(2)在单纯的用户级线程实现方式中,多线程应用不能利用多处理机进行多重处理的优点。
3.组合方式
有些OS把用户级线程和内核支持线程两种方式进行组合,提供了组合方式ULT/KST线程。由于用户级线程和内核支持线程连接方式的不同从而形成了三种模型:
(1)多对一模型,即将用户线程映射到一个内核控制线程;
(2)一对一模型,即将每一个用户级线程映射到一个内核支持线程;
(3)多对多模型,即将许多用户线程映射到同样数量或更少数量的内核线程上。

2.82 线程的实现

1.内核支持线程的实现
内核支持线程的调度和切换与进程的调度和切换十分相似,也分抢占式方式和非抢占式方式。在线程的调度算法上,同样可采用时间片轮转法、优先权算法等。当然线程在调度和切换上所花费的开销要比进程小得多。
2.用户级线程的实现
用户级线程是在用户空间实现的。所有的用户级线程都具有相同的结构,它们都运行在一个中间系统上,当前有两种方式实现中间系统:
(1)运行时系统(Runtime System)。
(2)内核控制线程。

2.83 线程的创建和终止

如同进程一样,线程也具有生命周期,它由创建而产生,由调度而执行,由终止而消亡。
1.线程的创建
应用程序在启动时,通常仅有一个线程在执行,人们把线程称为“初始化线程”,它的主要功能是用于创建新线程。在创建新线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程的创建函数执行完后,将返回一个线程标识符供以后使用。
2.线程的终止
由终止线程通过调用相应的函数(或系统调用)对它执行终止操作。在大多数的OS中,线程被终止后并不立即释放它所占有的资源,只有当进程中的其它线程执行了分离函数后,被终止的线程才与资源分离,此时的资源才能被其他线程利用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值