操作系统学习笔记(2)——进程及实现、进程控制




 

1、进程的定义

  进程是为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念。

  进程是具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配、调度和保护的独立单位。

  进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

  进程是操作系统中最基本、最重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引入的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

2、进程的结构特征:程序、数据和进程控制块



 

3、进程分类:系统进程、用户进程



 

4、进程的属性:结构性、共享性、动态性、独立性、制约性、并发性。



 

5、程序和进程之间的区别:

  进程能真实地描述并发,而程序不能

  程序是由程序和数据和控制块组成

  程序是静态的,进程是动态的

  进程有生命周期,程序是相对长久的

  一个程序可对应多个进程,反之亦然

  进程具有创建其他进程的功能,程序没有



 

6、进程的状态和转换

  三种状态模型:运行态、就绪态、等待态。

    1) 运行态(running):占有处理器正在运行 

    2) 就绪态(ready):具备运行条件,等待系统分配处理器以便运行

    3) 等待态(blocked):不具备运行条件,正在等待某个事件的完成


  运行态—→等待态:等待使用资源;如等待外设传输;等待人工干预。

  等待态—→就绪态:资源得到满足;如外设传输结束;人工干预完成。

  运行态—→就绪态:运行时间片到;出现有更高优先权进程。

  就绪态—→运行态:CPU 空闲时选择一个就绪进程。

  


 

  五种状态模型:增加新建态和终止态


 

  新建态对应于进程刚刚被创建的状态。创建一个进程要通过两个步骤:

    1)为一个新进程创建必要的管理信息, 

    2)让该进程进入就绪态。此时进程将处于新建态,它并没有被提交执行,而是在等待操作系统完成创建进程的必要操作。需要注意的是,操作系统有时将根据系统性能或主存容量的限制推迟新建态进程的提交

  进程的终止也要通过两个步骤,首先是等待操作系统进行善后,然后退出主存。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止态。进入终止态的进程以后不再执行,但依然临时保留在操作系统中等待善后 。 一旦其他进程完成了对终止态进程的信息抽取之后,操作系统将删除该进程。


 

  NULL->新建态:创建子进程

  新建态->就绪态:系统完成进程创建操作,且当前系统的性能和内存的容量均允许

  运行态->终止态:进程到达自然结束点,或出现了无法克服的错误,或被操作系统终结,或被其他有中职权的进程所终结

  终止态->NULL:完成善后操作

  就绪态->终止态:父进程终结子进程

  等待态->终止态:父进程终结子进程


 

 

  七种状态模型:增加挂起状态

  到目前为止,我们总是假设所有的进程都在内存中。事实上,可能出现这样一些情况,例如由于进程的不断创建,系统的资源已经不能满足进程运行的要求,这个时候就必须把某些进程挂起(suspend)。 

  增加挂起状态的原因:进程的不断创建,系统资源已经不能满足进程运行的要求;某些进程挂起,对换到磁盘镜像区中,暂时不参与进程调度,平滑系统操作的负荷。


 

  挂起: 把进程从内存转向外存

    等待 -> 等待挂起

    就绪 -> 就绪挂起

    运行 -> 就绪挂起

   激活:从外存到内存

    就绪挂起 -> 就绪

    等待挂起 -> 等待


 

  挂起就绪态(ready,suspend) 挂起就绪态表明了进程具备运行条件但目前在二级存储器中,只有当它被对换到主存才能被调度执行

  挂起等待态(blocked,suspend)挂起等待态则表明了进程正在等待某一个事件且在二级存储器中。


 

 

 

  • 等待态—→挂起等待态:如果当前不存在就绪进程,那么至少有一个等待态进程将被对换出去成为挂起等待态;操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。
  • 挂起等待态—→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态。
  • 挂起就绪态—→就绪态:当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。
  • 就绪态—→挂起就绪态:操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。
  • 挂起等待态—→等待态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。
  • 运行态—→挂起就绪态:当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占 CPU,,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己。
  • 新建态—→挂起就绪态:考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。

 

  引起进程挂起的原因是多样的,主要有: 

    1. 系统中的进程均处于等待状态,处理器空闲,此时需要把一些阻塞进程对换出去,以腾出足够的内存装入就绪进程运行。 

    2. 进程竞争资源,导致系统资源不足,负荷过重,此时需要挂起部分进程以调整系统负荷 ,保证系统的实时性或让系统正常运行。 

    3. 把一些定期执行的进程(如审计程序、监控程序、记账程序)对换出去,以减轻系统负荷。 

    4. 用户要求挂起自己的进程,以便根据中间执行情况和中间结果进行某些调试、检查和改正。 

    5. 父进程要求挂起自己的后代进程,以进行某些检查和改正。 

    6. 操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏时,需要挂起某些进程以排除故障。


 

  可以把一个挂起进程等同于不在主存的进程,因此挂起的进程将不参与进程调度直到它 们被对换进主存。一个挂起进程具有如下特征: 

    1.  该进程不能立即被执行。 
    2.  挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 
    3. 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。 
    4. 结束进程挂起状态的命令只能通过操作系统或父进程发出。


 

7、进程控制块(Process Control Block,PCB)

  定义:进程控制块是系统为了管理进程设置的专门数据结构,用来记录进程的外部特征,描述进程的变化过程

  系统利用PCB来控制和管理进程,PCB是系统感知进程存在的唯一标志

  进程与PCB一一对应

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM