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

当进程被创建的时候,操作系统会为该进程创建一个唯一的、不重复的PID(Process ID)。 进程分配的资源情况,运行情况都会被保存再一个数据结构PCB(Process Control Block)中,即进程控制块。操作系统需对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。 一个程序开始运行前,需要创建对应的进程,也就是说创建对应的PCB。
程序段
程序的代码(指令序列)
数据段
运行过程中产生的各种数据
进程的特征
- 动态性:进程最基本的特性。进程是程序一次执行的过程,是动态地产生、变化和消亡的
- 并发性:内存中有多个进程实体,各进程可并发执行
- 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
- 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
- 结构性:每个进程都会配置一个PCB。结构上看进程由程序段、数据段和PCB组成。
进程的状态
创建态
进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB
就绪态
当进程创建完成之后,就进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。
运行态
当进程在CPU上运行,那么这个进程就处于“运行态”。CPU会执行该进程对应的程序(执行指令序列)。
阻塞态
在进程运行的过程之中,可能会请求等待某个事件的发生。(如等待某种系统资源的分配,或者等待其他进程的响应)。 在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CP,并让他进入阻塞态。
终止态
一个进程可以执行exit的系统调用,请求操作系统终止该进程。此时该进程会进入“终止态“,操作系统会让该进程下的CPU,一并回收内存空间等资源,最后还要回收该进程的PCB。当终止进程的工作完成之后,这个进程就彻底消失了。
整体流程图


进程的组织
链式方式
大部分操作系统使用链式方式
索引方式
进程控制
进程控制的主要功能是对系统中的所有进程实施有效管理,他具有创建新进程、撤销已有进程、实现进程状态转换的功能。 进程控制就是要实现进程状态的转换。
如何实现进程控制
使用原语实现
原语是一种特殊的程序,他的执行具有哦原子性。也就是说,这段程序的运行必须一气呵成,不可中断。
使用开中断和关中断指令实现原子性。
进程控制相关原语
创建原语

撤销原语

切换原语

进程通信
共享存储
两种方法
- 基于数据结构(低级)
- 基于存储区的共享(高级)
消息传递
两种方式
- 直接通讯方式 消息世界挂到接受进程的消息队列里
- 间接通讯方式 消息先发到中间体,再从中间体中读取数据
管道通信
- 管道实际上就是一个内存缓冲区
- 一个管道只能实现半双工通讯
- 各进程要互斥访问管道
- 管道写满时,写进程阻塞。管道读空时,读进程阻塞。