Featured image of post 进程

进程

概念

程序是静态的,是放在磁盘里的可执行文件,是一系列的指令集合。 进程是动态的,是程序的一次执行过程。 一个进程实体(进程映像)由PCB、程序段、数据段组成。进程是动态的,进程实体(进程映像)是静态的。 进程运行中,进程实体是不断变化的。 进程是操作系统资源分配和调度的独立单位。

进程的组成

PCB

当进程被创建的时候,操作系统会为该进程创建一个唯一的、不重复的PID(Process ID)。 进程分配的资源情况,运行情况都会被保存再一个数据结构PCB(Process Control Block)中,即进程控制块。操作系统需对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。 一个程序开始运行前,需要创建对应的进程,也就是说创建对应的PCB。

程序段

程序的代码(指令序列)

数据段

运行过程中产生的各种数据

进程的特征

  1. 动态性:进程最基本的特性。进程是程序一次执行的过程,是动态地产生、变化和消亡的
  2. 并发性:内存中有多个进程实体,各进程可并发执行
  3. 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
  4. 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
  5. 结构性:每个进程都会配置一个PCB。结构上看进程由程序段、数据段和PCB组成。

进程的状态

创建态

进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB

就绪态

当进程创建完成之后,就进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。

运行态

当进程在CPU上运行,那么这个进程就处于“运行态”。CPU会执行该进程对应的程序(执行指令序列)。

阻塞态

在进程运行的过程之中,可能会请求等待某个事件的发生。(如等待某种系统资源的分配,或者等待其他进程的响应)。 在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CP,并让他进入阻塞态。

终止态

一个进程可以执行exit的系统调用,请求操作系统终止该进程。此时该进程会进入“终止态“,操作系统会让该进程下的CPU,一并回收内存空间等资源,最后还要回收该进程的PCB。当终止进程的工作完成之后,这个进程就彻底消失了。

整体流程图

进程的组织

链式方式

大部分操作系统使用链式方式

索引方式

进程控制

进程控制的主要功能是对系统中的所有进程实施有效管理,他具有创建新进程、撤销已有进程、实现进程状态转换的功能。 进程控制就是要实现进程状态的转换。

如何实现进程控制

使用原语实现

原语是一种特殊的程序,他的执行具有哦原子性。也就是说,这段程序的运行必须一气呵成,不可中断。

使用开中断和关中断指令实现原子性。

进程控制相关原语

创建原语

撤销原语

切换原语

进程通信

共享存储

两种方法

  1. 基于数据结构(低级)
  2. 基于存储区的共享(高级)

消息传递

两种方式

  1. 直接通讯方式 消息世界挂到接受进程的消息队列里
  2. 间接通讯方式 消息先发到中间体,再从中间体中读取数据

管道通信

  • 管道实际上就是一个内存缓冲区
  • 一个管道只能实现半双工通讯
  • 各进程要互斥访问管道
  • 管道写满时,写进程阻塞。管道读空时,读进程阻塞。
使用 Hugo 构建
主题 StackJimmy 设计