进程的基本概念
进程的顺序执行及特征
顺序性,封闭性,可再现性前趋图和前趋关系
有向无循环图程序的并发执行
并发执行特征:- 失去间断性:多个程序共享资源
- 不可再现性
- 间断性:停停走走
进程的定义
一个具有独立功能的程序在一个数据集合上的一次执行过程.
进程是并发程序的一次执行过程,是系统进行资源分配和调度打基本单位.
进程是可以和别的计算并发的计算.- 他是对虚拟处理机,虚拟存储设备的资源的分配和回收.
- 引入多进程,提高了对硬件资源的利用率,但又带来额外的空间和时间开销,增加了OS的复杂性。
进程和程序的区别
- 进程是动态的,程序是静态的,程序是有序代码的集合;进程是程序的执行.通常进程不可在计算机之间迁移.而程序通常对应着文件.
- 进程是暂时的而程序是永久的 .进程是一个状态的变化过程,而程序可以长久保存.
- 进程与程序的组成不同.进程是由PCB(进程控制块进程状态信息),程序和数据组成的.
-进程和程序对应关系通过多次执行, 一个程序可对应多个进程,通过调用关系,一个进程可对应多个程序.
- 进程的特征与状态
- 动态性
进程由创建而产生,由调用而执行,由撤销而消亡.进程具有动态的地址空间.地址空间包括:
- 代码:指令执行和CPU状态的改变
- 数据:变量的生成和赋值
- 系统信息:进程控制块PCB的创建和删除.
- 独立性
进程能够独立调度,独立运行,独立分配资源的基本单位.各进程的地址空间相互独立. - 异步性
进程按照各自独立的,不可预知的速度前进. - 结构性
进程由程序段,数据段和PCB段构成
- 并发性
引入进程的目的是为了各个程序并发执行.
- 动态性
- 进程的基本状态和转换
- 就绪状态
得到了除了CPU以外所需要的所有系统资源 - 执行状态
已获得CPU,程序正在执行 - 阻塞状态
因等待某事件发生而暂时无法继续执行,从而放弃处理机,使程序执行处于暂停状态。阻塞队列
引起阻塞的事件:请求I/O,申请缓存
进程的挂起状态(静止)
活动——–静止
内存——–外存
- 就绪状态
- 进程控制块
- PCB(Process Control Block)中记录了操作系统所需的,当前进程的运行情况和控制进程运行的全部信息.
- os通过pcb对并发执行的进程进行控制和管理,是进程存在的唯一标志.
- 进程可以被os的多个模块进行读或修改,如被调度程序,资源分配模块,中断处理程序,以及监督和分析程序进行读和写.
- 程序经常被系统访问,故应称常驻模块.
9.进程块结构
- 进程标识符
- os内部标识符:系统内制定的编号
- 外部标识符号:系统外制定的编号
- 进程处理机状态
- 通用寄存器
- 指令计数器
- 程序状态字
- 用户栈指针
- 进程调度信息
- 进程状态
- 进程优先级
- 与调度算法有关的信息
- 等待事件
- 进程控制信息
- 程序地址
- 同步通信机制
- 资源清单
- 链表指针
- 执行程序开始地址
- CPU现场保护区
- 进程通信
- 家族联系
- 占有资源清单
10 进程控制块的组织方式
- 链接方式:将统一状态的PCB,用其链接字链接成一个队列,就绪队列,阻塞队列
- 索引方式:系统根据所有进程的状态建立相应的索引表,就绪索引表,阻塞索引表
进程的控制
- 进程管理最关键的就是进程的控制,进程控制一般由操作系统的内核实现.
- OS内核:将系统中与硬件息息相关的模块,以及运行频率较高的常用的模块组合起来放到靠近硬件的一层,以提高系统的效率,称之为系统的内核.OS内核是内存常驻数据和程序.
- 内核是执行各种原语操作来实现进程的控制和管理功能.
- 由若干条指令构成的原子操作,作为一个整体而不可分割.要么全都完成,要么全都不做.许多系统调用就是原语.进程控制原语:进程撤销,进程创建,进程阻塞,进程唤醒,进程挂起与激活
1.进程的创建
- 引起创建进程的事件
用户登录、作业调度、提供服务、应用请求
- 原语Creat( )按下述步骤创建一个新进程
(1)申请空白PCB:若无空闲PCB, 则创建失败
(2)为新进程分配资源:内存大小——用户提供(作业说明书);应用进程提供;系统默认分配
(3)初始化PCB:ppid、uid; 程序计数器=程序入口地址;将进程状态设置为就绪状态或静止就绪状态;设置优先级
(4)插入就绪进程队列
2.进程撤销
- 引起进程终止的事件
正常结束:执行到最后的结束指令,产生中断
异常结束:出现错误或因故障而被迫终止(如等待超时)
外界干扰:进程应外界的请求而终止运行(父进程终止)
- 进程撤消的过程
(1)从PCB集合中检索该进程的PCB,从中读出该进程的状态。
(2)若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度。
(3)若有子孙进程,将所有子孙进程终止。
(4)将进程全部资源归还其父进程或系统。
(5)将其PCB从所在队列中移出。
3进程阻塞
-引起阻塞的事件
请求系统服务、启动某种操作、新数据尚未到达、无新工作可做(系统进程阻塞自己)
-进程的阻塞是进程自身的一种主动行为。
进程阻塞的过程(由阻塞原语BLOCK( )完成)
引起唤醒的事件—与引起阻塞的事件相对应:I/O完成,所期待的数据已经到达
进程唤醒的过程(由唤醒原语WAKEUP( )完成)
阻塞原语与唤醒原语要匹配使用,以免造成“永久阻塞”
进程挂起(由挂起原语SUSPEND( )完成)
引起挂起的事件:如用户进程请求将自己挂起,或父进程请求将自己的某个子进程挂起
过程:检查被挂进程的状态,改为相应的挂起状态;把进程的PCB复制到指定的区域;最后,转向调度程序重新调度。
进程激活(由激活原语ACTIVE( )完成)
发生激活的事件:如父进程或用户进程请求激活进程
过程:先将进程从外存调入内存;检查该进程的现行状态,改为相应的活动状态;根据优先级确定是否需要重新调度