目录
一.多道程序设计
程序的顺序执行
程序在执行时,必须按照某种先后次序进行,仅当前操作执行完后,才能执行后续操作。
因此,在某一时刻,系统的各个部分只有一部分在工作。
例如:“I节点表示输入操作”、“C节点表示计算操作”、“P节点表示打印操作”
程序内部的操作不可颠倒,各程序之间的顺序也不可颠倒。
顺序执行的程序的主要特点是“封闭性”、“可再现性”
- 封闭性:程序运行过程中独占全部系统资源,只有程序本身才能干煸系统资源的状态。
- 可再现性:程序不受外部因素的影响,只要初始条件相同,运行结果就会相同
程序顺序执行不利于提高资源利用率
程序的并发执行
并发执行并不是说这些作业的程序同时被执行。
在每一瞬间至多只有一个作业的程序在处理机上执行,即它们是并发执行的,或者说它们执行的时间上有重叠,一个程序的执行尚未结束,另一个程序的执行已经开始。
即:“处理机不必等待一整个程序全部执行结束才能去执行下一个程序,在当前程序执行完某部分不再需要处理机某功能时,这部分功能会转去执行下一个程序”
被处理机交替执行的几道程序,称为并发程序
重要:
- 并发程序失去了“封闭性”和“可再现性”
- 这意味着,并发程序的计算结果不可再现
并发程序执行的条件
定义:
、
例子:
如果两个程序P1和P2能满足下述条件,它们便能并发执行,否则不能:
即:“两个程序的读集与写集的交集以及写集与写集的交集都为空集时”
尽管很多程序不能并发执行,但是现代操作系统“利用同步机制实现进程的互斥与同步”将程序有管理的进行并发执行。
二.进程的描述
进程的定义
关于进程的定义,有很多不同的解释,但我们只需要记住,我国的官方解释为:
“进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动”
进程的特性及与程序的区别
进程有五个特性:“动态性”、“并发性”、“独立性”、“异步性”、“结构特性”
动态性
进程的实质是程序的一次执行过程,所以动态性是进程最重要的特性
进程由系统“创建”而诞生,因被“调度”而执行,因得不到资源而暂停,最后因被“撤销”而消亡,进程的生命周期很短暂
并发性
指不同进程的动作在时间上可以重叠,即系统内的多个进程是可以并发执行的。
独立性
进程是一个拥有资源的独立单位,但不是一个可执行的实体,系统独立运行的基本单位是“线程”
异步性
进程由于共享资源和协同合作时产生了相互制约关系,造成进程执行的间断性,即进程以各自独立的、不可预知的速度向前推进
(即用户不再清楚进程何时会完成,这完全取决于计算机)
结构特性
为使线进程能够独立运行,对每个进程配置了一个“进程控制块(PCB)”
从结构上看,每个进程由“程序段”、“数据段”、“进程控制块PCB”组成
这三部分组成了进程的实体,我们平时所说的进程都是指这个进程实体
进程与程序的区别
- 进程是程序处理数据的过程,而程序是一组指令的有序集合
- 进程具有动态性、并发性、独立性和异步性等,而程序不具有这些特性
- 从进程结构特性上来看,它包含程序
- 进程和程序并非一一对应
进程的基本状态及其转换
进程的三种基本状态
操作系统给进程设置了“状态属性”,进城在不同的时刻可能处于不同的状态。
进程状态属性值的多少,可以因不同的系统而异,但大多数系统中的进程都具有以下三种基本状态:
- 就绪状态(Ready):当进程已分配到除CPU以外的所有必要的资源,只要获得处理机,便可立即执行,这使得进程状态称为就绪状态。在一个系统中,允许有多个进程同时处于就绪状态。
- 执行状态(Running):当进程已获得处理机,其程序正在处理机上执行,这使得进程状态称为执行状态。在多处理机系统中,允许有多个进程同时处于执行状态。
- 阻塞状态(Blocked):正在执行的进程,由于等待某事件的发生而无法执行时,便放弃处理机而处于暂停状态。在系统中,允许有多个进程同时处于阻塞状态。
进程三种基本状态间的转换
- 处于就绪状态的进程,在调度程序为它分配了处理机之后,该进程便可执行,其状态也变为执行
- 正在执行的进程,如果因为分配给它的时间片用完,则状态变为就绪
- 正在进行的进程,如果因为受阻无法继续执行下去,则装啊提变为阻塞,并释放处理机
- 处于阻塞状态的进程,若其等待的事件已经发生,则状态变为就绪
进程控制块PCB
PCB是为了描述和控制进程的运行而为进程定义的一种数据结构,它是进程实体的一部分,是进程存在的唯一标志。
PCB中存放着操作系统所需的用于描述进程的当前情况以及控制进程运行的相关信息
PCB的作用
- 标识进程的存在
- 为系统提供可并发执行的独立单位
- 为系统控制和管理进程提供所需的一切信息
PCB的信息
- 进程标识符:系统内部用于标识一个进程的唯一编号,称为进程的内部名
- 进程的现行状态:标识进程当前所处的状态,作为进程调度程序分配处理机时的依据
- 处理机的现场保留区:用于保存进程由执行状态转变为其他状态时的CPU现场信息,以便该进程再次被调度运行时恢复处理机现场信息用,以使该进程能够继续正常进行
- 进程相应的程序和数据地址
- 进程资源清单
- 进程优先级
- 进城同步与通信机制
- 进城所在PCB连接字
- 与进程有关的其他信息
进程的队列
把具有相同状态的进程按照某种原则链接在一起组成的队列,其实是PCB的一种组织形式,有时也称作“PCB链”
进程的控制
进程控制的主要任务是对进程生命周期进行控制,即要负责进程的创建、撤销以及实现进程之间的状态转换和进程通信等功能
操作系统的内核
将一些与硬件密切相关的模块,例如:中断处理程序、各种常用设备的驱动程序,以及运行频率较高的模块等安排在紧靠硬件的软件层中,并将它们常驻内存,以提高操作系统运行效率,并对他们加以特殊的保护
内核中与进程控制有关的机构
- 原语操作:操作系统内核中由若干条机器指令构成用于完成特定功能的一个过程,该过程是不可分割的
- 进程管理:进程管理一般都在内核中实现,这主要是因为这些功能模块的运行频率较高,例如,进程调度与分派、进程的创建、进程的撤销等
进程控制原语
进程控制原语是对进程生命周期控制和实现进程状态转换的原语,主要包括:“进程的创建与撤销”、“阻塞与唤醒”、“挂起与激活”
进程创建原语
一个进程可以调用“进程创建原语”来创建一个子进程,其步骤为:
- 申请空闲PCB,为新进程获得其内部标识
- 为新进程分配内存空间等资源
- 初始化PCB的内容
- 将新进程插入到PCB就绪队列
进程撤销原语
一个进程在完成任务正常结束或因出现某些错误和故障而被迫结束时,应由其父进程调用进程“撤销原语”来予以撤销,以便及时释放其所占有的各类资源,步骤为:
- 根据被撤销进程的标识符从PCB表中检索出该进程的PCB,从中读出该进程状态
- 若该进程正处于执行状态,则立即终止执行
- 若该进程不是执行状态,则把该进程的PCB从相应队列中移去
- 若该进程还有子孙进程,则递归撤销其所有子孙进程
- 撤销时,把属于父进程的资源归还给父进程,把属于自己申请的资源归还给系统,释放PCB
- 若重新调度标志为真,则转进程调度程序
进程阻塞原语
当进程请求某事件尚未出现时,该进程调用“进程阻塞原语”,放弃处理机,使自己从执行状态变为阻塞状态,主要步骤为:
- 终止进程自身的执行
- 设置进程自己的状态为阻塞状态
- 把进程的PCB插入到相应的阻塞队列
- 转进程调度程序
进程唤醒原语
执行的进程释放某资源后,调用“进程唤醒原语”将应该等待该资源而阻塞的一个进程唤醒变成就绪状态,步骤为:
- 找出唤醒进程的内部标识
- 把该进程从相应的阻塞队列中移出
- 重新设置该进程的状态为就绪
- 将该进程插入到PCB就绪队列