1. 进程
1.1 进程定义
讯享网
具体上,进程是一个具有一定独立功能的程序在某个数据集合上的一次动态执行过程(运行活动),是系统进行资源分配和调度的独立单位。进程是正在运行程序的抽象。进程的执行功能是由程序代码决定的。进程也被称为任务(Task or Job)。
为什么要有进程?
早先的操作系统是单道批处理的,但是CPU是高效率的,而IO是低速的,就会出现CPU要等待IO的情况;从而降低了实际效率。后来就引入多道批处理;而程序在执行的过程中又会因为共享资源而导致程序在执行的过程中相互限制;所有后来引入进程用来给程序提供一个抽象的概念,他能申请道系统资源并且独立给程序提供资源,从而解决原来的程序之间因为资源共享而相互限制的问题。这样就可以提高系统资源的利用率以及系统的处理能力。
作者:hello world
链接:https://www.zhihu.com/question//answer/
1.2 进程的组成
- 程序代码:一个进程需要执行的代码。
- 程序处理的数据:一个进程运行时,需要有处理的数据,数据放在内存中。
- 程序计数器(Program Counter,PC)的值,指示CPU下一条将要执行的指令:CPU需要知道现在要执行哪一条指令。
- 一组通用寄存器的当前值:如 堆(Heap)、堆栈(Stack)。
- 一组系统资源:如 打开的文件。
总之,进程包含了正在运行的一个程序的所有状态信息。
1.3 进程与程序的区别和联系
区别
- 进程是动态的,进程是程序的执行。程序是静态的,程序是有序代码的集合。另外,进程有内核态/用户态的区分。
- 进程是暂时的,进程是一个状态变化的过程。程序是永久的,只要硬盘不遭到破坏,程序就可以长久保存。
- 进程的组成包括程序代码、数据和进程控制块(Process Control Block,PCB)(即进程的状态信息)。
联系
- 程序是产生进程的基础。进程执行的功能在程序中都有具体的描述,并且受限于程序的代码。
- 程序的每次运行构成不同的进程。运行的程序在内存中处理的数据是不一样的,获得的资源也是不一样的,得到的效率就不一样。
- 进程是程序功能的体现。
- 通过多次运次,一个程序对应多个进程;通过调用关系,一个进程包括多个程序。
1.4 进程的特点
- 动态性:可以动态地创建、结束进程。
- 并发性:进程可以被独立地调度并占用CPU运行。
- 独立性:不同进程的工作不相互影响。
不影响的理解:操作系统(Operating System,OS)会不停地调度不同的进程执行,所以进程的执行时间可能会受到其他进程的影响,但是进程执行的结果是正确的。
如何保证进程执行的结果正确?页表。操作系统(OS)通过页表可以使不同的进程访问不同的地址空间。如果超过地址空间会产生页异常、页错误。操作系统(OS)给每一个进程分配一个页表,让每个进程在独立的地址空间上运行。

- 制约性:由访问共享数据/资源或进程间同步而产生的。
1.5 进程的控制结构
1.5.1 进程控制块(Process Control Block,PCB)
进程控制块(PCB)是OS管理控制进程运行所用的信息集合,是OS用于管理控制进程的一个专门数据结构。PCB记录着进程的基本情况,描述进程动态运行变化的过程。PCB是进程存在的唯一标志。(一一对应)。OS为进程生成一个唯一的PCB,意味着该进程创建。OS通过管理PCB来管理进程。OS回收PCB,意味着进程结束。
1.5.2 进程控制块包含哪些信息
- 进程描述信息。一个PCB唯一表示了一个进程,是进程的一个唯一的标识。通过PCB,OS可以识别出该进程正在执行哪一个程序,这个程序了几次。
- 进程标识符(Process Identifier,PID):唯一,通常是一个整数。
- 进程名:通常基于可执行文件名,不唯一。
- 用户标识符(User Identifier,UID):记录创建该进程的用户信息。
- 进程组关系:记录子进程、父进程、兄弟姐妹进程的关系信息。
- 进程的控制信息
- 当前状态
- 进程优先级(Priority)
- 代码执行入口地址
- 可执行程序的硬盘地址
- 运行统计信息(执行时间、页面调度)
- 进程间同步和通信
- 进程的队列指针
- 进程的消息队列指针
- 进程所有的资源和使用情况
- 虚拟地址空间的情况
- 打开文件列表
- CPU现场信息
- 用户可见寄存器:计算数据的寄存器,地址寄存器等。
- 控制和状态寄存器:程序计数器(PC)、程序状态字(PSW)等。
- 栈指针:进程调用/系统调用/中断处理和返回时需要使用栈指针。
- 调度和状态信息:OS调度进程的状态(就绪、运行、阻塞)占用CPU资源的信息。
- 指向该进程页表的指针。
| Process management | Memory management | File management |
|---|---|---|
| Register | Pointer to text segment | Root directory |
| Program Counter(PC) | Pointer to data segment | Working directory |
| Program Status Word(PSW) | Pointer to stack segment | File description |
| Stack Pointer(SP) | User ID | |
| Process status | Group ID | |
| Priority | ||
| Process ID | ||
| Parents group | ||
| Signals | ||
| Time when process started | ||
| CPU time used | ||
| Children’s CPU time | ||
| Time of next alarm |
1.5.3 进程控制块(PCB)的组织方式
链表:动态过程。适合频繁创建结束进程。同一个状态的进程PCB组成一个链表。多个状态对应多种不同的链表,如就绪链表、运行链表和阻塞列表。
索引表:适合不频繁创建结束进程。
1.6 进程的生命期管理
进程的生命期:进程创建、进程运行、进程阻塞、进程唤醒、进程结束。
1.6.1 进程创建
- OS对初始化进程的数据、PCB、准备相关资源,就是进程的创建。
- 进程创建的时机:
- 系统初始时。
- 用户请求创建一个新进程时。
- 正在运行的进程执行了创建进程的系统调用。
1.6.2 进程运行
OS通过调度算法选择一个处于就绪状态的进程,让它占用CPU资源执行,此时该进程进入运行状态。
1.6.3 进程等待(阻塞)
进程从运行状态进入阻塞状态的时机:
- 请求并等待系统服务无法马上完成,如网络请求、IO。
- 启动某种操作,无法马上完成,如协调其他进程。
- 进程需要的数据没有到达。
进程只能自己阻塞自己,因为只有进程自己才能知道何时需要阻塞。
1.6.4 进程唤醒
进程唤醒的时机:
- 被阻塞的进程需要的资源被满足。
- 被阻塞的进程等待的事件到达。
- 将被阻塞的进程的PCB插入到就绪队列。
1.6.5 进程结束
正常退出(自愿)、异常退出(自愿)、致命错误退出(强制退出)、被其他进程所杀(强制退出)。
1.7 进程状态变化模型
- 创建态:创建了进程所必要工作(PID,PCB),尚未执行该进程。
- 运行态(Running Status):一个进程在CPU上运行的状态。
- 就绪态(Ready Status):一个进程获得了除CPU之外的一切所需资源,一旦得到CPU资源,即可进入运行状态。
- 等待态(Waiting Status):又称阻塞态,Blocked Status。一个进程正在等待某一事件而暂停执行的状态。
- 挂起态(Suspend Status):用于调节负载。进程不占用内存空间,该进程的映像交换到了磁盘上。
- 终止态(Terminated Status):终止执行后,进程进入该状态。进行数据统计工作,资源回收。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68970.html