-
多道程序设计
-
目标
-
提高效率:用吞吐量(作业数/总时间)衡量。资源利用率高,意味着吞吐量大。
-
-
单道程序设计的缺点
-
设备资源(I/O)利用率低
-
内存资源利用率低
-
处理器资源利用率低:处理器与外围设备的速度不匹配
-
系统中的资源数量多,资源使用者数量少
-
程序数量越多并不一定越好。(P30)
-
-
多道程序设计的问题
-
处理器资源管理问题
-
内存资源管理问题
-
设备资源管理问题
-
-
-
进程
-
执行中的程序(包括代码,数据,堆栈;进程的躯体;进程影像)。
-
运行期间不会修改自身。
-
不采用绝对地址。
-
数据一般私用,代码可以共享。
-
数据包括静态数据、动态堆(保存动态变量)和动态栈(保存用户程序调用的参数,局部变量,返回值等)。
-
-
进程控制块。(PCB;进程的灵魂)
-
是进程存在的标志,由一系列信息构成。
-
存在于系统空间。
-
保存断点现场信息区域,包含系统对进程进行管理所需要的全部信息(P33)。
-
建立进程→建立PCB
-
撤销PCB→撤销进程
-
-
进程上下文
-
与进程相关的运行环境。
-
当一个程序执行时,地址映射寄存器,CPU中通用寄存器的状态,SP,PSW,PC,进程状态以及堆栈中的内容等。
-
进程切换过程也就是进程上下文切换过程。
-
-
进程切换
-
处理器分派程序进行调度。
-
保存下降进程的核心现场。
-
系统初次启动时不执行,下降进程为终止进程时,直接转善后处理(收回资源,撤销PCB等)。
-
-
选择要运行的进程。
-
闲逛进程:永远进行不完,调度级别最低,时刻就绪。使得CPU不会总忙于做事,导致电脑死机。
-
-
恢复上升进程现场。
-
恢复地址映射寄存器,通用寄存器及SP,PSW,PC的内容(PCB处理);最后恢复PSW和PC(系统栈)。
-
-
-
-
具有动态特性
-
不同进程之间的切换点不固定,但中断是固定的
-
状态
-
运行态:正在运行。
-
就绪态:等待处理器资源。
-
等待态:不具备运行条件。
-
多次状态转换,体现了程序的动态性和并发性。
-
转换规则。(P32)
-
-
操作系统是若干个独立运行的程序,和管理他们的核心组成。
-
系统开销。
-
-
进程队列
-
进程控制块构成的队列。可能单向,可能双向。
-
作业队列
-
存于二级存储器。
-
被调度策略选中的进程进入就绪队列。
-
-
就绪队列
-
一般只有一个就绪队列。(由调度算法确定)
-
进程初创后进入就绪队列。
-
运行的进程时间片用完后进入就绪队列。
-
进程入队列和出队列的次序和处理器调度算法(有策略地)有关。
-
-
等待队列
-
运行的进程受阻后进入等待队列。
-
每个等待事件有一个等待队列,即一个事件可能有多个进程。
-
-
运行队列
-
单处理器只有一个运行队列,多处理器有多个运行队列。
-
每个队列中只有一个进程。
-
指向头部的指针称为运行指示字。
-
-
-
-
进程的类型和特性
-
unix系统
-
0号sched初始进程产生1号imit祖先进程。
-
-
系统进程(守护进程)
-
运行操作系统程序,完成操作系统的功能。
-
通常对应一个无限循环程序,没有中断,没用调用也可执行。
-
优先级高。
-
-
用户进程
-
运行用户程序,直接为用户服务。
-
在操作系统之上运行的所有应用程序。
-
-
特性
-
并发性
-
动态性
-
独立性:进程是调度的基本单位
-
交互性:直接或间接的相互作用
-
异步性:相对独立,运行速度不可预知
-
结构性:都具有进程控制块
-
-
-
相互联系和相互作用
-
相关进程
-
具有某种联系的进程。
-
如父进程和子进程,父进程监视子进程的运行。
-
-
可发生直接相互作用和间接相互作用。
-
-
无关进程
-
逻辑上没用任何联系。
-
可发生间接相互作用。
-
-
并发进程之间有相互制约关系,即相互作用
-
直接相互作用
-
进程之间不需要媒介而发生相互作用。
-
需要媒介而发生作用。
-
-
-
-
进程的创建,撤销与汇聚
-
用户进程由系统调用创建和撤销。
-
进程的创建
-
建立进程控制块
-
分配资源
-
初始化进程控制块
-
加载程序
-
送入就绪队列
-
-
进程的撤销
-
原因
-
正常结束
-
异常结束
-
外界干预
-
-
善后处理
-
收回资源
-
撤销进程控制块
-
通知父进程等
-
-
进程汇聚
-
P37,图2-8
-
-
-
进程和程序的联系与差别
-
程序是进程的组成部分之一,进程的目的是执行程序。
-
程序是静态的,进程是动态的。
-
进程有生命周期。
-
一个程序可对应多个进程,一个进程只能对应一个程序。
-
-
线程引入
-
早期的进程
-
是处理器调度的基本单位
-
系统开销大,耦合度差
-
-
早期进程特点
-
一些执行流有内在的逻辑关系,有相同的代码或数据
-
-
线程(轻进程,LWP)
-
一个进程至少有一个线程,可为单线程进程。
-
一个相对独立的执行流,线程可并发执行,是CPU的调度单位。
-
进程是资源的分配单位,进程的多个线程共享代码、数据段(静态变量和全局变量)和堆。
-
同一进程的多个线程可执行同一代码段,响应多个请求;
-
也能执行不同的代码段,逻辑上合作,合作线程利用共享的数据交往。
-
优点
-
上下文切换快:只需改变寄存器和栈。
-
实际上,每个线程拥有一个逻辑寄存器,实际上是共享同一个寄存器;
-
但每个线程实际拥有一个独立的栈(因为涉及函数的调用和返回,调用可以嵌套)来保存函数调用的信息。
-
-
系统开销小
-
通信容易:多个线程地址共享。
-
-
-
-
线程的结构
-
图2-10
-
线程控制块TCB
-
用于保存现场信息,控制线程堆栈和线程代码
-
是标志线程存在的数据结构,包含系统对线程进行管理的全部信息。
-
内容少;PSW,PC,进程ID,父进程ID,地址空间由PCB共享。
-
图2-11
-
-
用户级别线程(ULT)
-
TCB存在于目态空间,由运行系统维护。
-
通过用户手动切换,独立于操作系统。
-
优点
-
可选择和具体问题相关的调度策略,灵活性好。
-
线程切换不通过操作系统,效率高。
-
-
缺点
-
无法真正并行:若一个线程执行,则该进程中其他线程不能执行。
-
调度在进程级别,若其中一个线程进入操作系统受阻,其他线程不能运行。
-
-
和进程关联
-
在系统空间中,存在n个核心栈,和控制n个进程的进程表,来管理n个进程。
-
在用户空间中,一个进程的代码,数据,堆由线程共享,有k个线程就有k个用户栈,一个进程还包含一个控制k个线程的线程表。
-
-
-
核心级别线程(KLT)
-
线程状态转换由操作系统完成,线程是CPU调度的基本单位。
-
和进程关联
-
在系统空间中,存在n个核心栈,和控制n个线程的线程表,来管理n个线程。不存在对应进程的核心栈,但存在对应进程的进程表。
-
在用户空间中,一个进程的代码,数据,堆由线程共享,有k个线程就有k个用户栈。
-
-
优点
-
并发性好,多处理器可以并行执行。
-
-
缺点
-
系统开销大。
-
-
-
混合线程
-
用户级别线程:是用户程序并发或并行执行的基本单位。每个任务至少一个ULT。
-
核心级别线程:操作系统调度执行的基本单位。
-
轻进程(LWP):每个进程至少包含一个轻进程,与KLT是一一对应关系。
-
哪个ULT和轻进程绑定,哪个ULT可执行。LWP可并行执行。
-
-
-
-
作业
-
用户要求的计算机任务的集合,分时系统用户在一次登录后进行的交互序列。
-
作业>进程,作业的每一个处理步骤称为一个作业步,一个作业步通常由一个进程完成。
-
批处理作业
-
作业控制块(JCB)保存相关的作业信息。
-
标志作业存在的数据结构。
-
作业由假脱机输入程序(SPOOL)控制进入输入井,经操作系统的作业调度程序选择进入内存,并为其建立作业控制进程。
-
-
-
交互式作业
-
对分时系统来说,每一次登录为一个作业。
-
口令文件。P44
-
计算机操作系统教程:进程、线程、与作业-期末复习大纲
于 2024-04-29 15:06:39 首次发布