进程及其实现

129 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情


进程的定义

  • 从原理的角度:进程是支持程序执行的一种系统机制,它对处理器上运行程序的活动规律进行抽象。(说了也听不懂)

  • 实现的角度:进程就是一种数据结构,里面有描述该程序的所有信息(程序状态和系统状态),简单来讲:进程就是数据+代码+pcb(进程控制块)

进程是操作系统进行资源分配和保护的基本单位。进程是一个既能用来共享资源,又能描述程序并发执行过程的一个基本单位。

进程的属性

  • 共享性:多个不同的进程可以共享相同的程序。比如fork,如果子程序没有变量改变的话,那么父子进程的代码和数据都是共享的。
  • 动态性:进程的实质是进程实体的一次执行过程,它是动态的,有生命周期的;不像程序,它是静态的,是永生的。进程会从创建开始到生命结束。
  • 独立性:进程是独立的,进程之间必须相互独立才能保证安全,这是由它自己的虚拟空间、程序计数器、内部状态来控制的。
  • 制约性:进程间可能会因为资源共享或竞争而产生制约,造成进程运行的速度不可预知,所以必须控制进程的执行次序和速度。
  • 并发性:在一段时间内,可能会有多个程序执行,单处理器下就是并发的。通俗来讲,一个进程随时都有可能被中断,然后运行下一个程序,那么进程中必须可以保存被打断进程的信息。

进程的状态和转换

二态模型

二态模型就两种状态:运行态,非运行态。

  • 运行态就是使用cpu;那么非运行态就是不使用cpu。

三态模型

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

  • 运行态:进程占用处理器正在运行的状态。已获得cpu资源
  • 就绪态:进程具备运行条件,等待系统分配处理器以便运行的状态。
  • 等待态:又叫阻塞态,指进程不具备运行条件,正在等待某个事件完成的状态。

五态模型

在三态模型的基础下,又增加了两种状态:新建态、终止态。

  • 新建态就是刚创建的进程,还没有进入就绪队列。
  • 终止态就是进程结束了,不管他是正常结束还是异常结束。进程终止会经过两个步骤:等待操作系统处理,然后回收资源并被系统回收。

七态模型

七态模型在五态模型的基础上又增加了两种状态:挂起就绪态,挂起等待态。

进程为什么要有挂起状态呢?

内存资源不够用,要借助磁盘资源。减轻系统负担。

进程的描述和组成

描述进程最重要的一个数据结构————进程控制块(PCB),它是进程存在的唯一标识。

PCB包含以下3种信息:

  1. 标识信息

比如进程的id。

  1. 现场信息

因为进程不是一直在cpu上运行直到结束的,它会被其他进程挤下来的。所以在非运行态的时候,要保存它运行时的现场信息。

  1. 控制信息

控制信息有程序和数据的地址……等等。

PCB的作用:

  1. 独立运行的基本单位
  2. 操作系统根据PCB堆并发执行的进程控制和管理。
  3. PCB是进程存在的唯一标识

进程上下文

操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文。

进程上下文由三部分组成:

  1. 用户级上下文 由用户程序、用户数据和用户栈等组成。
  2. 寄存器上下文 由PSW寄存器等寄存器组成。
  3. 系统级上下文 包括进程控制块,内存管理信息、核心栈等