我是靠谱客的博主 怕孤独小伙,最近开发中收集的这篇文章主要介绍操作系统学习笔记——进程的描述和状态,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

进程的引入

  • 程序并发执行的特征:
    1. 间断性:因为程序间会互相制约
    2. 失去封闭性:资源共享
    3. 不可再现性:与程序失去封闭性
  • 因为这些特征,为了使程序能并发执行,并对这些程序加以描述和控制,人们引入了“进程”的概念。

进程的定义

  • 一个具有一定独立功能的程序在一个数据集合上单一次动态执行过程。

进程的组成

  1. 程序的代码;
  2. 程序处理的数据;
  3. 程序计数器中的值,指示下一条将运行的指令;
  4. 一组通用的寄存器的当前值,堆、栈;
  5. 一组系统资源(如打开的文件);
  • 总之,进程包含了正在运行的一个程序的所有状态信息。

进程与程序的联系

  1. 程序是产生进程的基础;
  2. 程序的每次运行构成不同的进程;
  3. 进程是程序功能的体现;
  4. 通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可包含多个程序。

进程与程序的区别

  1. 进程是动态的,程序是静态的;程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态。;
  2. 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存;
  3. 进程和程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息);

进程的特点

  1. 动态性:可动态地创建、结束进程;
  2. 并发性:进程可以被独立调度并占用处理机运行(并发并行);
  3. 独立性:不同进程的工作不相互影响;
  4. 制约性:因访问共享数据/资源或进程间同步而产生资源。
  • 思考:OS怎么样来实现其中的进程管理机制?
    • 描述进程的数据结构:进程控制块(Process Control Block, PCB)。
    • 操作系统为每个进程都维护了一个PCB,用来保存与该进程有关的各种状态信息。

进程控制结构

  1. 进程控制块:操作系统管理控制进程运行所用的信息集合。操作系统用PCB来描述进程的基本情况以及运行变化的过程,PCB是进程存在的唯一标志。
  2. 使用进程控制块:
    1. 进程的创建:为该进程生成一个PCB;
    2. 进程的终止:回收它的PCB;
    3. 进程的组织管理:通过对PCB的组织管理来实现。
  3. PCB含有以下三大类信息:
    1. 进程标识信息。如本进程的标识,本进程的产生者标识(父进程标识);用户标识。
    2. 处理机状态信息保存区。保存进程的运行现场信息:
      • 用户可见寄存器,用户程序可以使用的数据,地址等寄存器。
      • 控制和状态寄存器,如程序计数器(PC),程序状态字(PSW)。
      • 栈指针,过程调用/系统调用/中断处理和返回时需要用到它。
    3. 进程控制信息
      • 调度和状态信息;
      • 进程间通信信息;
      • 存储管理信息;
      • 进程所用资源;
      • 有关数据结构连接信息。
  4. PCB组织方式
    • 链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。
    • 索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表。
      在这里插入图片描述

进程状态

  1. 进程的生命期管理
    • 进程创建
    • 进程运行
    • 进程等待
    • 进程唤醒
    • 进程结束
    1. 进程创建:引起进程创建的3个主要事件:
      1. 系统初始化时;
      2. 系统请求创建一个新进程;
      3. 正在运行的进程执行了创建进程的系统调用;
    2. 进程运行:内核选择一个就绪的进程,让它占用处理机并执行。
    3. 进程等待:在以下情况下,进程等待(阻塞):
      1. 请求并等待系统服务,无法马上完成。
      2. 启动某种操作,无法马上完成。
      3. 需要的数据没有到达。
      • 进程只能自己阻塞自己,因为只有进程自身才能知道何时需要等待某种事件的发生。
    4. 进程唤醒:唤醒进程的原因:
      1. 被阻塞进程需要的资源可被满足。
      2. 被阻塞进程等待的事件到达。
      3. 将该进程的PCB插入到就绪队列。
      • 进程只能被别的进程或操作系统唤醒。
    5. 进程结束:在以下四种情形下,进程结束:
      1. 正常退出(自愿的)
      2. 错误退出(自愿的)
      3. 致命错误(强制性的)
      4. 被其他进程所杀(强制性的)
  2. 进程状态变化模型
    1. 进程的三种状态:进程在生命结束前处于且仅处于三种基本状态之一,不同系统设置的进程状态数目不同。
      1. 运行状态:当一个进程正在处理机上运行时。
      2. 就绪状态:一个进程获得了除处理剂之外的一切所需资源,一旦得到处理机即可运行。
      3. 等待(阻塞)状态:一个进程正在等待某一事件而暂停运行时。如等待某资源,等待输入/输出完成。
    2. 进程其他的基本状态:
      1. 创建状态:一个进程正在被创建,还没有被转到就绪状态之前的状态。
      2. 结束状态:一个进程正在从系统中消失时的状态,这是因为进程结束或由于其他原因所导致。
    3. 状态变化图: 在这里插入图片描述
  3. 进程挂起
    1. 进程在挂起状态时,意味着进程没有占用内存空间.
    2. 挂起状态:
      1. 阻塞挂起状态:进程在外存并等待某事件出现.
      2. 就绪挂起状态:进程在外存,但只要进入内存,即可运行.
    3. 与挂起状态相关的状态转换
      1. 挂起:把一个进程从内存转到外存;可能有以下几种情况:
        1. 阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程;
        2. 就绪到就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先就绪进程时,系统会选择挂起低优先就绪进程;
        3. 运行到就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入挂起时,系统可能会把进程转到就绪挂起状态.
      2. 在外存时的状态转换:
        1. 阻塞挂起到就就绪挂起:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程.
      3. 解挂/激活:把一个进程从外存转到内存;可能有一下几种情况:
        1. 就绪挂起到就绪:没有就绪进程或者挂起就绪进程优先级高于就绪进程时,会进行这种转换.
        2. 阻塞挂起到阻塞:当一个进程释放足够多内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等待的事件)进程转换为阻塞进程.
  4. 状态队列:
    1. 由OS来维护一组队列,用来表示系统中所有进程的当前状态;
    2. 不同状态分别用不同的队列来表示(就绪队列,各种类型的阻塞队列);
    3. 每个进程的PCB都根据它的状态加入到相应的队列中,当一个进程的状态发生变化时,它的PCb从一个状态队列中脱离出来,加入到另一个队列.

最后

以上就是怕孤独小伙为你收集整理的操作系统学习笔记——进程的描述和状态的全部内容,希望文章能够帮你解决操作系统学习笔记——进程的描述和状态所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部