操作系统概论:进程管理

PCB、进程实体与进程

PCB:进程控制块,通常包括了进程描述信息、进程控制和管理信息等内容,是进程存在的唯一标志。

进程实体:由程序段、相关数据段和PCB组成。

进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

进程实体是静态的,而进程是动态的,进程实体相当于进程在某一时刻的快照。

进程状态

运行态:进程正在处理机上运行。单处理机环境下,每个时刻最多只有一个进程处于运行态,多处理机环境下,可能同时有多个进程处于运行态。

就绪态:进程一旦获得处理机便可立即运行的状态。

阻塞态:进程因等待某一事件的发生而暂停运行。

创建态:进程正在被创建,尚未转到就绪态。

结束态:进程正在从系统中消失。

进程状态转换

在这里插入图片描述

进程控制与原语

进程控制的主要操作有:创建、终止、阻塞、唤醒、切换等。

把能进行进程控制的程序段称为原语,原语的特点是执行期间不允许中断,这是通过关中断指令和开中断指令等特权指令实现的。

进程间通信

低级通信方式:PV操作

高级通信方式:

  1. 共享存储:其下又分为基于数据结构的低级共享和基于存储区的高级共享。
  2. 消息传递:操作系统提供消息传递方法。直接通信方式指发送进程把消息发送到接收进程的消息缓冲队列上,接收进程从其中取出消息。间接通信方式将消息发送到一个中间实体处。
  3. 管道通信:管道可以理解为共享存储的优化形式,数据在其中单向流动(半双工)。

线程

由于进程是拥有资源的基本单位,所以进程间切换时,会导致大量的资源开销,为了提高资源利用率而引入了线程机制。

在引入线程的操作系统中,线程是进程中的一个实体,是被系统独立调度和分派的一个基本单位。线程本身并不拥有任何系统资源(除了极小部分运行时所需的资源),它与属于同一个进程的所有线程共享此进程拥有的全部资源和地址空间,因此,同一进程下的线程切换开销很小。

需要注意的是:此种情况下,进程是拥有除CPU以外的系统资源的基本单位,而线程才是基本的CPU执行单元。

进程可以创建进程和线程,线程也可以创建线程。

用户级线程和内核级线程

线程的3种实现方式–内核级线程, 用户级线程和混合型线程

处理机调度

在多道程序系统中,进程的数量往往多于处理机的个数,因此有必要按照某种原则选择一个进程,并将处理机分配给它使用,这就是处理机调度。

处理机调度的层次

  1. 作业调度(又称高级调度,执行频率低):从外存上处于后备状态的作业中选择一个或多个,将它们调入内存,并分配相应资源,使其获得竞争处理机的权利。
  2. 内存调度(又称中级调度,执行频率中等):将暂时不能运行的进程挂起,调至外存等待其变为就绪态,并从外存上处于就绪态的进程中选择一个或多个,调入内存,挂在就绪队列上等待分配处理机
  3. 进程调度(又称低级调度,执行频率高):按照某种算法从内存中的就绪队列中选择一个进程并将处理机分配给它。

进程调度的时机

理论上来说,运行进程调度程序、选择一个就绪进程分配处理机、进程切换,这三件事应该是顺序执行的,比如:

  1. 发生引起调度的事件且当前进程无法继续运行时。
  2. 中断处理或自陷处理结束后,返回被中断的用户态程序执行现场前。

但实际上有一些情况不一定能立即进行进程调度与切换,比如:

  1. 内核进行中断处理时。一是由于中断处理流程复杂,很难实现调度,二是因为此时处理机处于内核态,不属于某一进程,理论上来说不应进行调度。
  2. 进程位于内核程序的临界区中。加锁后需要一直持有锁,在解锁前不应切换到其他程序,否则开销很大且可能会影响到内核的其他管理工作。注意:若是位于普通用户程序的临界区时,可以进行调度,事实上,这正是适合调度的时机,如进程在访问慢速外设(如打印机)时就可以进行进程调度,以充分利用CPU资源。
  3. 其他需要完全屏蔽中断的原子操作过程:如加锁解锁、保存中断现场等。

进程调度的方式

  1. 非抢占式调度:当一个进程处于运行态时,即使有某个更为紧迫的进程进入就绪队列,也不进行调度,而是等待当前进程完成或阻塞时,才让出处理机。
  2. 抢占式调度:当一个进程处于运行态时,若有更为紧迫的进程进入就绪队列,则立即进行处理机剥夺。

调度算法的比较

名称用途可抢占性饥饿性优点缺点
先来先服务作业、进程算法简单、对长作业和CPU繁忙型作业有利效率低、对短作业和I/O繁忙型作业不利、没有实时性
短作业优先作业、进程抢占式、非抢占式平均等待、平均周转时间最少不能保证紧迫作业被及时处理
高响应比优先主要是作业调度综合考虑了等待时间和要求服务时间,响应比=(等+运)/运-
优先级调度作业、进程抢占式、非抢占式抢占式静态优先级会,动态优先级不会考虑了任务的紧迫性注意为了提高整体效率,需要先使I/O设备工作,因此I/O繁忙型进程优先级较高
时间片轮转进程公平、有利于人机交互时间片大小难确定,太大则退化为FCFS,太小则切换开销大
多级反馈队列进程通常不会满足了各类用户的需求算法复杂

进程同步与互斥

基本概念

临界资源:一次仅允许一个进程使用的资源。

临界区:对临界资源的访问必须互斥地进行,在每个进程中,访问临界资源的代码被称为临界区。

临界资源的访问过程:

  1. 进入区:检查能否进入临界区。
  2. 临界区:访问临界资源。
  3. 退出区:将正在访问临界区的标志清除。
  4. 剩余区:其他部分。

使用临界资源时的准则:

  1. 空闲让进:临界区一旦空闲,则可让一个请求进入临界区的进程立刻进入临界区。
  2. 忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
  3. 有限等待:对请求访问的进程应保证在有限时间内进入临界区。
  4. 让权等待:当进程不能进入临界区时,应让出处理器供其他进程使用。

同步与互斥

同步是一种直接制约关系,是指为完成某个任务而建立的多个进程需要协调其工作的次序而产生的制约关系。如只有生产者生产出来,消费者才能进行消费。

互斥是一种间接制约关系,当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区时,另一个进程才被允许进入临界区。

实现方法

互斥的实现:
软件实现方法:单标志法、双标志法先检查、双标志法后检查、Peterson算法
硬件实现方法:中断屏蔽法、硬件指令法
信号量机制

同步的实现:
信号量机制

管程

定义:代表共享资源的数据结构,以及对该共享数据结构实施操作的一组过程所组成的资源管理程序。

组成:管程名称、共享数据结构说明、操作共享数据结构的函数、初始化共享数据结构的函数。

示例:
在这里插入图片描述

特点:管程保证了进程互斥,因为每次仅允许一个进程进入管程,且各个进程只能串行执行管程内的过程。管程内的共享数据结构只能被管程内的过程访问,一个进程只有调用管程内的过程才能进入管程访问共享资源。

条件变量:由管程提供,类似于PV操作,但是没有值,只能实现排队等待的功能。
如有

condition product;

item remove(){
    if (count == 0)
        wait(product);
}

当数个消费者进程调用管程内的remove方法时,若count为0,则将这些进程挂到product条件变量的阻塞队列上。直到有生产者进程执行了signal(product),则依次唤醒此队列上的消费者进程。

死锁

死锁是指多个进程因竞争资源而造成的一种互相等待的僵局,若没有外力作用,则这些进程都无法继续向前推进。

产生原因

  1. 对不可剥夺资源的竞争,如磁带机、打印机等。
  2. 进程推进顺序非法,如并发的进程P1、P2分别持有资源R1、R2,若P1申请R2的同时,P2申请R1,则会导致死锁。

必要条件

  1. 互斥条件:进程要求对所分配的资源进行排他性的占有。
  2. 不可剥夺:进程所占有的资源,只能等待其使用完毕后主动归还,不能被剥夺。
  3. 请求保持:如果进程提出新的资源请求得不到满足时,其进入阻塞态,但当前持有的资源不会被归还。
  4. 循环等待:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求

死锁的处理

  1. 预防:破坏其4个必要条件中的数个。
    破坏互斥条件:使所有资源都能被共享访问,不太可行。
    破坏不可剥夺:若进程提出新的资源请求得不到满足时,必须归还当前所持有的资源。这种方法系统开销大,且有的资源不易保存。
    破坏请求保持:采用预先静态分配法,进程在运行前就一次申请完其需要的全部资源,在运行时不提出新的资源请求。这种方法的系统资源被严重浪费。
    破坏循环等待:采用顺序资源分配法,给系统中的各类资源编号,规定每个进程只能在持有小编号资源时等请求大编号资源。这种方法不利于增加新设备,且对开发者不友好。
  2. 避免:动态分配资源时,采取某种策略(如银行家算法)防止系统进入不安全状态。
  3. 检测及解除:允许进程发生死锁,但会采取手段(如利用资源分配图)进行死锁检测及解除(如资源剥夺法、撤销进程法、进程回退法)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值