操作系统-进程状态

进程的生命周期划分

  • 进程创建
  • 进程执行
  • 进程等待
  • 进程抢占
  • 进程唤醒
  • 进程结束

进程创建:

  • 系统初始化
  • 用户请求创建一个新的进程
  • 正在运行的进程执行了创建进程的系统调用

进程执行

  • 选择一个就绪的进程,让他占用处理机并开始执行

进程等待

  • 请求并等待系统服务,无法马上完成。
  • 启动某种操作,无法马上完成。
  • 需要的数据还没有到达。

进程抢占

  • 高优先级进程以及就绪
  • 当前执行的时间片用完

进程唤醒

  • 需要的资源被满足时
  • 等待的时间以及发生
    唤醒只能被别的进程或操作系统唤醒

进程结束

  • 正常结束,结果正确
  • 正常结束,结果不正确
  • 异常终止

操作系统的基本职责是控制进程的执行,包括确定交替执行的方式和给进程分配资源。在设计控制进程的程序时,第一步就是描述进程所表现处的行为。
在《操作系统精髓与设计原理》中,大致将进程分为两种状态:运行态与非运行态。
操作系统创建一个进程时,它将该进程以未运行态加入系统,操作系统知道这个进程的存在,并正在等待执行机会,不时地,当前正在运行的进程会被中断,此时操作系统中的分派器部分会将选择一个新的进程投入运行,前一个进程从运行态转换为非运行态,后一个进程从非运行态转换为运行态。
由此可以得出操作系统在设计时的一些设计元素。必须用某种方法来追踪进程,也就是说必须要保存某些与进程相关的信息,即就是进程控制块。
那些处于非运行态的进程就需要处于某种数据结构中,等待执行时机。这种数据结构就是队列,队列中的每项都指向某个特定进程的指针,或队列可以由数据块构成的链表组成,每个数据块表示一个进程。

五状态模型

必要性:队列时“先进先出”表,对于可运行的进程,操作系统采用一种轮转的方式操作。如果存在一些处于非运行态但已就绪等待执行的进程,同时还存在一些另外处于阻塞态等待i/o操作结束的进程。因此,若使用单个队列,分派器不能只考虑选择队列中最老的进程,而应扫描这个列表,查找那些未被阻塞且在队列中时间最长的进程。

解决该问题的一种较好方法是将非运行态分成两个状态:就绪态和阻塞态。五状态如下:

  • 运行态:进程正在执行。
  • 就绪态:进程做好了准备,只要有机会就执行。
  • 阻塞态:进程在某些事件发生前不能执行,如i/o操作完成。
  • 新建态:刚刚创建的进程。操作系统还未把它加入可执行进程组,它通常是进程控制块已被创建但还未被加载到内存中的新进程。
  • 退出态:操作系统从可执行进程组释放的进程,要么是自身停止,要么是因为某种原因被取消。

    进程之间状态转换如下:
    这里写图片描述

挂起状态模型

必要性:我们都知道每个要被执行的进程都要被加载至内存,因此阻塞队列的所有进程必须驻留在内存中。但是,处理机远快于i/o,当一个进程阻塞时,处理机可以移向另一个进程,但是处理机处理的速度远快于i/o,会出现内存中的进程都在等待i/o的现象。因此,处理机可能在大多数时间内都处于空闲状态。
解决方法之一是扩充内存来容纳更多的进程。显然不实际,就内存的价格来说就不是我们首先考虑的办法。
解决方法之二是交换。即把内存中某个进程的一部分或全部移到磁盘中。当内存中不存在就绪态的进程时,操作系统就把阻塞的进程换出到磁盘中的挂起队列。操作系统之后要么从挂起队列中取出另一个进程,要么接受一个新进程的请求,将他放入内存运行。
要使用这种交换模型,就要增加一个新的状态:挂起态。
但是所有已被挂起的进程都处于阻塞态,显然这时把阻塞的进程取回内存没有任何意义,因为它仍然为做好执行的准备。但是由于每个挂起的进程最初都阻塞于某个特定的事件上,因此发生该事件时,进程将不再阻塞而可以继续执行。
所以重新考虑设计方式,引入两个新挂起状态:

  • 阻塞/挂起态
  • 就绪/挂起态

这里写图片描述

挂起进程具有如下特点:

  • 该进程不能立即执行。
  • 该进程可能在也可能不在等待一个事件。若在等待一个事件,那么阻塞条件不依赖于挂起条件,阻塞事件的发生不会使进程立即执行。
  • 为阻止该进程执行,可通过代理使其置于挂起态,代理可以是进程本身,也可以是父进程或操作系统。
  • 除非代理显式的命令系统进行状态切换,否则该进程无法从这一状态转移。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包括操作系统各部分内容,适合考试及复习使用。搭配Xmind软件可打开 操作系统的概念、特征、功能和提供的服务   (二)操作系统的发展与分类   (三)操作系统的运行环境   1.内核态与用户态   2.中断、异常   3.系统调用   (四)操作系统体系结构   二、进程管理   (一)进程与线程   1.进程概念   2.进程态与转换   3.进程控制   4.进程组织   5.进程通信   共享存储系统,消息传递系统,管道通信。   6.线程概念与多线程模型   (二)处理机调度   1.调度的基本概念   2.调度时机、切换与过程   3.调度的基本准则   4.调度方式   5.典型调度算法   先来先服务调度算法,短作业(短进程、短线程)优先调度算法,时间片轮转   调度算法,优先级调度算法,高响应比优先调度算法,多级反馈队列调度算法。   (三)同步与互斥   1.进程同步的基本概念   2.实现临界区互斥的基本方法   软件实现方法,硬件实现方法。   3.信号量   4.管程   5.经典同步问题   生产者-消费者问题,读者-写者问题,哲学家进餐问题。   (四)死锁   1.死锁的概念   2.死锁处理策略   3.死锁预防   4.死锁避免   系统安全态,银行家算法。   5.死锁检测和解除   三、内存管理   (一)内存管理基础   1.内存管理概念   程序装入与链接,逻辑地址与物理地址空间,内存保护。   2.交换与覆盖   3.连续分配管理方式   4.非连续分配管理方式   分页管理方式,分段管理方式,段页式管理方式。   (二)虚拟内存管理   1.虚拟内存基本概念   2.请求分页管理方式   3.页面置换算法   最佳置换算法(OPT),先进先出置换算法(FIFO),最近最少使用置换算法(LRU),时钟置换算法(CLOCK)。   4.页面分配策略   5.工作集   6.抖动   四、文件管理   (一)文件系统基础   1.文件概念   2.文件的逻辑结构   顺序文件,索引文件,索引顺序文件。   3.目录结构   文件控制块和索引节点,单级目录结构和两级目录结构,树形目录结构,图形目录结构。   4.文件共享   5.文件保护   访问类型,访问控制。   (二)文件系统实现   1.文件系统层次结构   2.目录实现   3.文件实现   (三)磁盘组织与管理   1.磁盘的结构   2.磁盘调度算法   3.磁盘的管理   五、输入输出(I/O)管理   (一)I/O管理概述   1.I/O控制方式   2. I/O软件层次结构   (二)I/O核心子系统   1.I/O调度概念   2.高速缓存与缓冲区   3.设备分配与回收   4.假脱机技术(SPOOLing)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值