目录
多道系统中的程序的活动规律:
推进=>暂停=>推进=>暂停=>…….
(获得资源=>失去资源=>获得资源=>失去资源=>……)
暂停:保存现场(PSW+PC=>寄存器)
推进:恢复现场(寄存器=>PSW+PC)
暂停原因:(1) 自身原因:等待资源,启动IO
(2) 剥夺CPU—给其它程序运行机会
1、进程的概念
定义: 可参与并发执行的程序称为进程。 进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。
定义强调两个方面:
- 动态:执行中的程序;
- 并发:可与其他进程同时执行。
2、进程状态及状态转换
(1)进程的状态
运行态(RUN): 占有CPU正在向前推进(在单处理器系统中任一时刻只能有一个进程处于运行态)
就绪态(READY): 可以运行,但未得到CPU
等待态(WAIT):也称为挂起态、阻塞态、睡眠态,进程本身不具备运行条件, 等待某一事件发生。
(2)状态的转换
就绪=>运行:获得处理机
运行=>就绪:剥夺处理机
运行=>等待:申请资源未得到,启动IO
等待=>就绪:得到资源,IO中断
3、进程控制块(PCB)
标志进程存在的数据结构,其中保存系统管理进程所需的全部信息
PCB内容:(不同系统不尽相同)
进程标识(pid) 家族联系
进程状态 地址信息
现场信息 打开文件
调度参数 消息指针
所属用户(uid) 队列指针
4、进程的组成和上下文
进程的组成:
进程的组成 | |||||
进程控制块(process control block) | 程序 | ||||
建立进程=>建立PCB | 撤销PCB=>撤销进程 | 代码(code) | 数据(data) | 堆栈(stack+heap) | |
栈:保存返回点、参数、返回值、局部变量 | 堆:动态变量 |
进程的表记:进程(程序)开始运行时,由Linux系统调用自己的系统函数,在内存中开辟task_struct结构体,又叫进程表。
进程上下文(process context) :进程的物理实体与支持进程运行的物理环境统称为进程上下文 PCB+程序
系统环境:地址空间,系统栈,打开文件表,…
上下文切换(context switch): 由一个进程的上下文转到另外一个进程的上下文
系统开销(system overhead) :运行操作系统程序完成系统管理工作所花费的时间和空间
5、进程的队列
PCB构成的队列:(不一定FIFO,单向或双向)
1. 就绪队列:系统一个或若干个(根据调度算法确定)
2. 等待队列:每个等待事件一个
3. 运行指示字:每个处理机一个
![](https://i-blog.csdnimg.cn/blog_migrate/a157b8d08d7016b2e18fff3849f6ffac.png)
6、进程的类型和特征
进程类型
- 系统进程:运行操作系统程序,完成系统管理(服务)功能. 例如:UNIX #0 -- sched, #1 -- init
- 用户进程:运行用户(应用)程序,为用户服务。 例如:UNIX vi, shell, cc
进程的特征
并发性:可以与其它进程一道向前推进;
动态性:动态产生、消亡,生存期内状态动态变化;
独立性:一个进程是可以调度的基本单位;
交往性:同时运行的进程可能发生相互作用;
异步性:进程以各自独立,不可预知的速度向前推进;
结构性:每个进程有一个PCB。
7、进程间相互联系与相互作用
相互联系
- 相关进程 :同一家族的进程 可以共享文件,需要相互通讯,协调推进速度… 父进程可以监视子进程,子进程完成父进程交给的任务。
- 无关进程 :没有逻辑关系、同时执行的进程。 有资源竞争关系,互斥、死锁、饿死。
相互作用
1. 直接相互作用:发生在相关进程之间
2. 间接相互作用:发生在任何进程之间
8、进程的创建与撤销
进程的创建
建立PCB,分配内存,加载程序,入就绪链
UNIX:pid=fork(),exec(prog,args)
进程的撤销
去配资源,撤销PCB,通知父进程
UNIX:exit() vs. kill 除初始进程外,其它进程由(父)进程创建,并形成进程家族。
9、进程与程序的联系与差别
进程与程序的联系
- 进程包括一个程序
- 进程存在的目的就是执行这个程序
进程与程序的差别
- 程序静态,进程动态
- 程序可长期保存,进程有生存期
- 一个程序可对应多个进程,一个进程只能执行一个程序