操作系统原理---进程管理

处理机管理

  处理机是用来解释、执行指令的单元。程序是一段实现某个功能的指令序列,这些指令都是在处理机上解释、执行。处理机包括中央处理器,主存和输入输出接口。
  处理机是操作系统的核心资源,处理机管理时操作系统的核心功能,是为在多道程序系统中,提高处理机的使用效率。处理机管理好坏直接决定多道程序操作系统的性能。
  进程是处理机管理中最基本最核心的概念。在多道程序系统中,多道程序并发争夺处理机,为了方便处理,将进程作为独立运行的基本单位,进程是资源分配的基本单位。从进程的角度看,处理机管理就是对这些进程的管理,因此处理机管理也被称为进程管理。在单处理器系统中,同一时刻,处理机最多只能被一个进程占用。
  在多道程序系统中,程序的运行环境发生了变化一是资源共享,二是进程并发执行,两者又是相辅相成的,因为存在进程并发,所有才有了资源共享;只有资源共享,才产生了并发。

进程状态

  由于进程运行过得间断性,因此进程具有至少三种状态:

  1. 就绪状态:操作系统已经为程序分配好处cpu以外的所有资源,等待获取cup资源。在多道程序系统中,允许同一时刻有多个就绪进程,将这些进程放到一个队列中,并称这个队列为就绪队列。
  2. 运行态:进程获得cpu资源,执行指令序列,在单处理机系统中,同一时刻只有一个进程处于执行状态
  3. 阻塞状态:程序执行过程中遇到阻塞事件(如调用io操作或者请求系统分配内存等)而停止运行,进入阻塞状态。当等待事件到达后,程序不能立刻执行,而是进入就绪队列等待系统分配cup资源。

进程状态转换

  1. 就绪态—>运行态:处于就绪态的进程获得cup资源后进入运行态,开始执行指令序列。
  2. 运行态—>等待状态:运行的程序所需资源还未到达时就如等待状态(比如说获取外设传入的信息),程序异常需要人为处理时也会进入等待状态。
  3. 等待—>就绪:当处于等待状态的进程所需资源已经到达后进入就绪状态,等待操作系统调度。
  4. 运行—>就绪:当运行中的进程由于时间片耗尽或则优先级更高的进程到达,操作系统强制中断执行进入就绪态。
    进程状态转换图
      在部分操作系统中还引入了挂起状态。引入挂起状态的原因:
    1.对换需要:当内存紧张时,将一些阻塞态的进程换出到外存中,腾出内存空间,处于挂起状态的进程及时阻塞事件到达也不能立刻进入就绪状态。需要将挂起进程换入内存,进入阻塞态,然后才进入就绪态。

在这里插入图片描述

同步互斥

进程同步

  进程同步是为协调各进程的访问顺序。进程同步主要使用以下方式:

  1. 信号量:用于进程间传递信号的一个整数值。在信号量上只有三种操作可以进行:初始化,P操作和V操作,这三种操作都是原子操作。
  2. 管程:使用管程中的条件变量,可以使进程等待在条件s上,当条件发生变化时,由别的进程唤醒。

进程互斥

  多道程序访问同一个临界资源时,同一时刻只允许同一个进程处于临界区中。

PV操作

  对信号量的操作分为P操作和V操作,其中信号量为正时代表临界区可用资源的数量,信号量为负时代表等待在临界区之外的进程数量。
  P、V操作都是原语,在执行P或者V操作时不允许被中断。P操作时对信号量减一,V操作是对信号量加一。
  P操作过程如下:

	P(sem){
		sem = sem - 1;
		if(sem<0){
			进程进入等待状态
		}else{
			继续执行
		}
	}

  V操作:

	V(sem){
		sem = sem + 1;
		if(sem <= 0){
			唤醒一个等待的进程
		}else{
			继续执行
		}
	}

  为了控制对临界资源的互斥访问,可以使用P,V原语和信号量来实现互斥访问。开始时初始化信号量mutex的状态值为1,运行过程如下:

	P(mutex);
	执行临界区代码
	V(mutex);

死锁

  死锁是由于多个进程在竞争资源的过程中,获取资源的顺序非法。

产生死锁的四个必要条件:

  1. 互斥条件:进程对资源的访问是互斥的
  2. 请求保持:当进程因请求资源而阻塞时,不释放已经获得的资源
  3. 不剥夺条件:除非进程执行完临界区代码或者由于异常而释放资源外,别的进程不能够剥夺进程拥有的资源
  4. 环路等待条件:多个进程都拥有一个资源,又在等待别的进程已经占有的资源,从而形成了一条环路

预防死锁

  1. 资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
  2. 只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)
  3. 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
  4. 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)

进程调度

  进程调度分为抢占式和非抢占式两种,非抢占式调度算法要求进程在执行过程中除非时间片用完或者进程执行结束或者程序崩溃而释放CUP资源,操作系统不能去中断一个正在执行的算法。抢占式算法规定,当优先级更高的进程到来时应该立即终止当前进程的执行,转而去执行更高优先级的进程。
  调度算法:

  1. 先来先服务算法:按照进程先来先排队的规则进行排队执行
  2. 轮询算法:就绪队列按 FCFS 方式排队。每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片)若超过,则自行释放自己所占有的 CPU 而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程
  3. 优先级算法:就绪队列队列按照进程优先级进行排队
  4. 多级队列优先级算法:就绪队列分为多个队列,每个队列对应一个优先级,可以给每个队列设置不同的调度算法和时间片大小,操作系统首先调度优先级高的队列中的进程,然后再调度低优先级进程。过程中,进程的优先级不变。
  5. 多级队列优先级反馈算法:与多级队列优先级调度算法相似,只不过进程的优先级是开始是最高级,每次完一次时间片之后优先级递减

进程控制块(PCB)

  为了描述和控制进程,操作系统为每一个进程创建了一个数据结构——进程控制块(PCB)。它是进程实体的一部分,是操作系统最重要的记录型数据结构。

PCB中的信息

  1. 进程标识符:进程标志信息分为内部标识和外部标识,内部标识如进程Id,外部标识由进程的创建者提供,描述了进程的家族关系,如父进程标识和子进程标识。还有用户标识,标识进程属于哪个用户
  2. 处理机状态:保存程序运行时,各个寄存器中的值。程序被中断时,必须将寄存器中的值保存到PCB中,以便程序再次被调用时恢复到相应寄存器中去。寄存器包含通用寄存器,指令计数器,程序状态字,用户栈指针
  3. 进程调度信息:存放一些与进程调度,对换有关信息包括进程状态、进程优先级、进程调度所需其他信息、事件(指进程阻塞原因)
  4. 进程控制信息:
    1.程序和数据的地址,指进程的程序和数据所在的内存或外存地(首)址,以便再调度到该进程执行时,能从PCB中找到其程序和数据
    2.进程同步和通信机制,指实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB 中
    3.资源清单,即一张列出了除CPU 以外的、进程所需的全部资源及已经分配到该进程的资源的清单
    4.链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值