1 进程概念
OS的基本特性是并发与共享,即在系统中同时存在几个相互独立的程序,他们交叉地运行,并共享资源。
程序交叉运行,共享资源,会出现以下三个问题:1)资源的竞争2)程序间的合作协同3)程序间的通信。
要解决这些问题 , 用程序的概念已经不能描述程序在内存中运行的状态,必须引入新的概念 ——进程
(1)顺序执行与并发执行的特征
顺序执行
①顺序性:按照程序结构所指定的次序
②封闭性:独占系统资源
③可再现性:初始条件相同则结果相同。如:可通过空指令控制时间关系。
并发执行
①间断(异步)性:"走走停停",一个程序可能走到中途停下来,失去原有的时序关系;
②失去封闭性:共享资源,受其他程序的控制逻辑的影响。如:一个程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征。
③失去可再现性:失去封闭性 ->失去可再现性;外界环境在程序的两次执行期间发生变化,失去原有的可重复特征。
(2)多道程序设计对OS的要求
①如何描述并发程序的执行:引入进程及其状态
②如何实现并发程序运行:进程控制与调度
③如何处理资源的竞争与程序间的合作:并发控制与通信
④如何解决死锁:死锁策略
(3)进程概念
进程——在执行中的程序,一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
引入多进程,提高了对硬件资源的利用率,但又带来额外的空间和时间开销,增加了OS 的复杂性;
2 进程与程序区别
(1)一个进程包括
①程序代码
②当前状态
③相关数据:栈(一些零时数据,如函数参数,局部变量等)、堆(通常是程序运行时申请的动态内存)、数据段(通常是全局变量)
(2)进程与程序
1)进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序
通常对应着文件、静态和可以复制。
2)进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。
3)进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。
4)进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
(3)进程特征
①结构特征:进程实体=程序段+相关的数据段+PCB。
②动态性:进程的实质是进程实体的一次执行过程,因 此动态性是进程的最基本的特征。
③并发性: 多个进程实体同存在于内存中,且能在一段时间内同时运行。是最重要的特征。
④独立性:指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
⑤异步性: 进程按各自独立的、不可预知的速度向前推进。
(4)进程描述
进程存在意味着:
- 处于某种状态(运行、就绪、等待)
- 进程控制块PCB(数据结构)
- 进程的执行程序(一个可执行文件)
- 进程位于某个队列(就绪、等待某事件队列)
- 占用某些系统资(内存,打开某些文件、处理机、外设)
3 进程状态
(1)进程执行时,改变状态
- 新建:在创建进程
- 就绪:进程等待分配处理器
- 运行:指令在执行
- 等待:进程等待某些事件发生
- 终止:进程执行完毕
![](https://i-blog.csdnimg.cn/blog_migrate/293eecfc6457476ba2b1bed4c33d2cb8.png)
(2)进程状态变迁
创建状态:
- OS已完成为创建一进程所必要的工作 ①已构造了进程标识符;②已创建了管理进程所需的表格;
- 还未允许执行该进程(因为资源有限)
终止状态:
- 终止后进程移入该状态;
- 它不再有执行资格;
- 表格和其它信息暂时由辅助程序保留:例, 为处理用户帐单而累计资源使用情况的帐务程序;
- 当数据不再需要后,进程(和它的表格)被删除;
(3)进程的基本状态
进程的状态不是固定不变的,而是在不断变换
- 就绪状态:存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到CPU,就立即可以运行(有多个进程处于此状态)
- 运行状态:当进程由调度/分派程序分派后,得到CPU控制权,它的程序正在运行(在系统中,总只有一个进程处于此状态)
- 等待状态:进程正在等待某个事件的发生(如等待I/O的完成),而暂停执行即使给它CPU时间,它也无法执行
4 进程控制块
(1)PCB简介
- PCB (Process Control Block):一个专门的数据结构,系统用它来记录进程的外部特征,描述进程的运动变化过程
- PCB是进程管理和控制的最重要的数据结构,在创建进程时,建立PCB,并伴随进程运行的全过程,直到进程撤消而撤消。
- PCB是系统感知进程存在的唯一标志,进程与PCB是一一对应的
- PCB经常被系统访问,如,调度程序、资源分配程序、中断处理程序等,所以PCB应常驻内存。
(2)PCB结构
- 进程标识符 :name,唯一标识符,字符串或数字
- 进程当前状态:status,说明进程当前状态
- 程序计数器:指向执行程序的下个指令的地址
- CPU现场保护:当进程因某种原因不能继续占用CPU时(如:等待打印机),释放CPU,这时就要将CPU的各种状态信息保护起来,为将来再次得到处理机恢复CPU的各种状态,继续运行。
- CPU调度信息:包括CPU优先级,调度队列指针等
(3)PCB管理
5 进程调度
(1)进程调度队列
- 作业队列:在系统中的所有进程的集合
- 就绪队列:在主内存中的,就绪并等待执行的所有进程的集合
- 设备队列:等待某一I/O设备的进程队列
(2)调度
长程调度(或作业调度)- - 选择可以进入就绪队列的进程。特点是速度不快,长程调度控制了多道程序的“道”
短程调度(或 CPU 调度)- - 选择可被下一个执行并分配 CPU 的进程。特点是切换频率高。
中程调度:为了缓和内存紧张的情况 , 将内存中处于阻塞状态的进程换至外存上 ( 挂起 ), 降低多道程序的度 。 当这些程
重新具备运行条件时 , 再从外存上调入内存。
(3)调度中进程的描述
- I/O型进程:花费I/O时间多于计算,许多短CPU处理。
- CPU型进程:花费计算时间多于I/O,许多长CPU处理。
(4)上下文切换
![](https://i-blog.csdnimg.cn/blog_migrate/1a1e345c498f9f640bc1dd1fd756b997.png)
- 当CPU切换至另一个进程时,系统必须保存旧进程状态并为新进程调入所保留的状态
- 上下文切换的时间开销较重;在切换时,系统没有做有用的工作
- 时间取决于硬件的支持
6 进程操作
- 进程是有生命周期的:产生、运行、暂停、终止。对进程的这些操作叫进程控制。
- 进程控制的职责是对系统中进程实施有效的管理,它是CPU管理的一部分(还有进程同步、通信和调度)
- 当系统允许多进程并发执行时,为了实现共享、协调并发进程的关系,处理机管理必须对进程实行有效的管理。
(1)进程创建
进程何时创建
- 作业调度:批处理系统中,作业调度程序调度到某个作业以后,就把这个作业装入内存,并分配必要的资源,创建进程,插入就绪队列。
- 用户登录:在分时系统中,用户在终端键入登录命令后,若是合法用户,系统建立一个进程,并插入就绪队列。
- 提供服务:用户向系统提出请求后,系统专门建立一个进程为用户服务。(如打印请求)
- 应用请求:应用进程的需要,由它自己创建一个新进程,使新进程以并发运行方式完成特定任务。(输入数据并将处理结果输出到表格上)
(2)进程终止
进程执行最后一项并询问操作系统作出决定(退出),从子进程向父进程输出数据(通过等待),操作系统收回进程的资源。
父进程可终止子进程的执行(终止)
- 子进程超量分配资源
- 赋予子进程的任务不在需要
- 父进程终止:若父进程终止,不允许子进程继续
(3)进程阻塞
一 个处在运行状态的进程,因等待某个事件的发生(如等待打印机、同步事件等)而不能继续运行时,将调用阻塞原语,把进程置为阻塞状态,并转进程调度程序(等于让出处理机)。
调用进程阻塞操作是在进程处于运行状态下执行的 。 它的执行将引起等待某事件的队列的改变。
(4)进程唤醒
当进程所等待的事件发生时,该进程将被唤醒(由进程唤醒操作完成)。
唤醒一个进程有两种方法:
• 由系统进程唤醒。
• 由事件发生进程唤醒。