前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统学习笔记-3:进程

操作系统学习笔记-3:进程

作者头像
Chor
发布2020-03-19 10:37:20
4110
发布2020-03-19 10:37:20
举报
文章被收录于专栏:前端之旅前端之旅

1. 关于进程

1.1 进程:

为了方便操作系统管理,对并发执行的各个程序加以控制和描述,引入了进程的概念。

1.2 PCB:

定义:

之前的单道批处理系统,程序是串行执行的,内存中可能只需要记录单一程序的程度段和数据段即可;但是现在使用的是多道批处理系统,多个程序并发执行,内存中就可能存在多个程序自己的程序段和数据段,那么这时候就需要一个管理单元对这些东西加以区分、描述和管理,所以就额外多了一个进程控制块,也就是 PCB。

系统会为每一个运行的程序分配 PCB 这么一个数据结构,用以描述进程的各种信息。PCB 是进程存在的唯一标志,进程与 PCB 是一一对应的的。

PCB 记录了关于进程的信息,这些信息包括:

  • 进程状态:进程标识符、进程当前的状态
  • 程序计数器:指向执行程序的下个指令地址
  • CPU 寄存器:提供现场保护,记录 CPU 的各种状态信息,方便将来的恢复
  • CPU 调度信息:包括 CPU 优先级、调度队列指针等
  • 内存管理信息:基址寄存器、界限寄存器等
  • 记账信息:CPU 时间、使用时长、进程数量等
  • I/O 状态信息:分配给进程的 I/O 设备列表,打开文件列表等
  • 通信信息:记录进程与进程之间通信的通信
1.3 进程实体:

程序段(程序代码)、数据段(变量、常量等),PCB(相关的管理信息) 共同构成了进程实体(进程映像)。一般认为 进程实体 === 进程 === PCB

PS:下文提到的多个进程的组织方式,也可以说就是多个 PCB 的组织方式

1.4 进程与程序的对比:
  • 进程是动态的(程序的执行),程序是静态的(有序代码的集合)
  • 进程是暂时的,程序是永久的
  • 进程和程序的组成不同
  • 通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序

2. 进程的组成和组织

2.1 单个进程的组成
  • 进程描述信息:进程标识符PID(区分不同进程)用户标识符 UID(区分不同用户)
  • 进程控制和管理信息:进程当前状态、进程优先级
  • 资源分配清单:程序段指针、数据段指针、键鼠
  • 处理机相关信息:各种寄存器的值
2.2 多个进程的组织方式
  • 链接方式: 按照进程状态将 PCB 分为多个队列,OS 持有指向各个队列的指针(执行指针、就绪队列指针、阻塞队列指针)
  • 索引方式:按照进程状态建立几张索引表,OS 持有指向各个索引表的指针(执行指针、就绪表指针、阻塞表指针)

3. 进程的特征

  • 动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的
  • 并发性:内存中有多个进程实体,各个进程可以并发执行
  • 独立性:进程是系统进行资源分配和调度的一个独立单位
  • 异步性:各个进程以独立的、不可预知的速度推进
  • 结构性:每个进程都有一个自己的 PCB,进程由程度段、数据段、PCB 构成

4. 进程的状态/生命周期

4.1 五种基本状态:

创建态:为进程分配资源,初始化 PCB

运行态:占有 CPU 使用权,在 CPU 上运行(对于单核处理器,一个时刻只会有一个进程)

就绪态:万事俱备(运行需要的条件都有了),只欠东风(只等 CPU 空闲下来,好让自己在上面运行)

阻塞态(等待态):进程进行系统调用,或者等待事件发生时,进入阻塞态

终止态(结束态):回收为进程分配的资源,撤销 PCB

4.2 进程状态的转换:
4.3 引入挂起操作后

(1)挂起:

前面所说的状态转换,是建立在内存资源够用的情况下 —— 当系统资源尤其是内存资源不够时,就需要将一些进程挂起(suspend),对换到外存中。

(2)原因:

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

  • 系统中的进程均处于阻塞态,处理器空闲,此时需要把一些阻塞进程对换出去,以腾出足够的内存装入就绪进程运行。
  • 进程竞争资源,导致系统资源不足,负荷过重,此时需要挂起部分进程以调整系统负荷,保证系统的实时性或让系统正常运行。
  • 把一些定期执行的进程(如审计程序、监控程序、记账程序)对换出去,以减轻系统负荷
  • 用户要求挂起自己的进程,以便根据中间执行情况和中间结果进行某些调试、检查和改正。
  • 父进程要求挂起自己的后代进程,以进行某些检查和改正。
  • 操作系统需要挂起某些进程,检查运行中资源使用情况,以改善系统性能;或当系统出现故障或某些功能受到破坏时,需要挂起某些进程以排除故障。

(3)状态转换

引入挂起操作后,在原来五种状态的基础上多了两个状态:就绪态变成了活动就绪态,且多了一个“静止就绪态/挂起就绪态“;原来的阻塞态变成了活动阻塞态,且多了一个“静止阻塞态/挂起阻塞态“。

状态

解释

活动就绪态 → 静止就绪态

操作系统根据当前资源状况和性能要求,可能会把活动就绪态对换出去,成为静止就绪态。处于静止就绪态的进程不再被调度执行;

静止就绪态 → 活动就绪态

内存中没有进程处于活动就绪态,或者处于静止就绪态的进程具有更高的优先级,那么静止就绪态就会被对换回来,此时才可能被调度执行

活动阻塞态→ 静止阻塞态

操作系统根据当前资源状况和性能要求,可能会把活动阻塞态对换出去,成为静止阻塞态。

静止阻塞态→ 静止就绪态

常见的情况是,引起进程等待的事件发生之后,相应的静止阻塞态进程将转换为静止就绪态

静止阻塞态→ 活动阻塞态

但有时候,如果静止阻塞态进程的优先级高于静止就绪队列中的任何进程、并且系统有把握它等待的事件即将完成,那么就会激活为活动阻塞态

运行态→ 静止就绪态

优先级较高的静止阻塞态在等待的事件完成后,可能会抢占 CPU,若此时资源不够,则可能导致正在运行的进程挂起为静止就绪态

创建态→ 静止就绪态

操作系统根据当前资源状况和性能要求,可能会在进程创建完就把它对换到外存

PS:进程一旦被挂起,就意味着它被对换到了外存中,此时该进程无法再被 CPU 直接调度,除非它被对换回内存中,回到活动就绪态。比如静止就绪态、静止阻塞态,最后要得到 CPU 的调度,都必须经历回归到活动就绪态的过程。

参考:

进程的状态转换

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 关于进程
    • 1.1 进程:
      • 1.2 PCB:
        • 1.3 进程实体:
          • 1.4 进程与程序的对比:
          • 2. 进程的组成和组织
            • 2.1 单个进程的组成
              • 2.2 多个进程的组织方式
                • 4.1 五种基本状态:
                • 4.2 进程状态的转换:
                • 4.3 引入挂起操作后
            • 3. 进程的特征
            • 4. 进程的状态/生命周期
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档