注: 下面图片资源来源于 王道计算机考研 操作系统
1.进程概念
- 进程(process):是动态的,是程序的一次执行过程(同一程序多次执行,会产生多个进程)
- 程序:是静态的,放在磁盘里面的可执行文件,即一系列的指令集合
当进程被创建时,操作系统会给进程分配一个唯一的、不重复的id(PID)
2.进程控制块(PCB)
操作系统中的进程需要记录很多信息,比如pid、uid、给进程分配了哪些空间资源,正在使用哪些I/O设备、CPU使用时间和情况、磁盘使用情况、网络流量使用情况等。这些信息都被保存在一个数据结构(PCB),即进程控制块中。
即操系统需要对各个并发运行的进程进行管理,管理时所需要的信息都被存到PCB中。
注意:PCB是进程存在的唯一标志,当一个进程结束时操作系统会回收它的PCB
PCB包含了许多内容:
- 进程状态
- 程序计数器
- CPU寄存器
- CPU调度信息
- 内存管理信息
- 记账信息
- I/O状态信息
- 等等等
3进程的运行
注意:进程是动态的,而进程实体(进程运行时,某一时刻的照片)时静态的。进程实体由PCB、程序段、数据段组成。开始执行前,需要把PC(指令寄存器)的值指向相应内存。
4.进程的状态
进程可以分为以下五种状态:
- 新的(new):也叫创建态,进程正在创建
- 运行(running):也叫运行态,指令正在CPU上执行
- 等待(wating):也叫阻塞态,进程等待某个事件的发生(有资源没有准备好,直接放CPU上还不能运行)
- 就绪(ready):进程等待分配CPU(其他资源都准备好了,到CPU上就能运行)
- 终止(terminated):进程已经完成执行
runing->wating:
- 此时进程在CPU上请求其他资源(比如I/O设备),但是资源被占用。CPU不会让此进程继续在CPU上面等待,因此直接把它踢出CPU,将其PCB状态修改为wating。
- 进程等待某个事件的发生。比如自己代码种有if(a==2) ....。而此时a=1所以此进程也会被修改成wating
wating->ready:
- 申请的资源被分配
- 等待的事件已经发生(如a==2)
ready->running:
- 通过调度完成
running->ready:
- 中断(如分时操作系统,这一小段时间运行完了,正好等这下一小段时间
5.进程的组织
5.1链式组织
5.2索引组织
6.进程控制
6.1进程的CPU切换
由上图可以总结出:切换进程时,并不是切换的越快越好。越快的话,大量时间都消耗在寄存器内容的保存和恢复上;越慢的话,若进程不能继续在CPU执行,会浪费CPU时间。
6.2进程控制相关原语
原语:不可被再分割的指令(如关中断、开中断等)
6.2.1进程创建(new->ready)
6.2.2进程的终止
6.2.3进程的阻塞和唤醒
6.2.4进程的切换
7.进程通信
进程是分配系统资源的单位(包括内存地址),因此各内存拥有的内存地址空间相互独立。
为了保证安全,一个进程不能直接访问另一个进程的地址空间
7.1共享存储
为了避免两个进程在共享存储区写入有重复,应该满足各个进程对共享存储区的访问是互斥的。
共享:1基于数据结构的共享 2基于存储区的共享
7.2消息传递
7.2.1直接通信方式
先在进程p种给消息赋值:msg=....;
接着将msg传送到Q的PCB的消息队列
7.2.2间接通信方式
进程P首先在系统内核申请一个信箱,将msg发送到信箱,接着Q再接受A信箱的内容