第三章进程、作业、线程管理
(1)
章节情况
3.1 进程管理概述
3.2 作业管理
3.3 并发进程
3.4 线程管理
课时安排,
12~16课时 +2课时习题讲解
主要内容,进程和线程的概念、调度和控制方法,进程的并发、互斥、
通信和死锁关系,以及处理器调度算法等,结合 windows 2000 系统的进程、线程和处理器调度管理分析,
使读者深入理解和掌握操作系统中最基本的管理技术的方法。
3.1 进程管理概述
一,进程的概念
二,进程的调度
三,处理器调度
四,进程的控制一,进程的概念
1、进程概念的引入
2、进程的概念
3、进程的状态
1、进程概念的引入
在早期的单道程序系统中,一个程序在执行时是按顺序依次执行各条语句,而不考虑其他的用户程序;有如下的程序段:
S1:scanf(“%d”,&x);
S2:y=x*2;
S3:printf(“y=%d”,y);
由上面程序段可以看出,顺序程序的执行的特点如下:
1)、顺序性,处理机的操作是严格的按照程序所规定的顺序执行的,即上一个操作必须在下一个操作开始之前结束。
2)、封闭性:程序的执行结果仅与初始条件和程序本身决定。
3)、可再现性:程序执行的最终结果与执行速度无关。
4)、资源独占性:程序执行时独占系统中的全部资源,即这些资源的状态由该程序本身确定。
多道程序系统的引入:
内存中同时驻留多道程序,从宠观上看是几道程序同时执行,但从微观上看则是几道程序交替执行,轮流占用资源。
宏观上执行时间有重迭的几个程序称为并发程序。
多道程序系统的实质就是把并发程序的执行引入到系统中。
程序并发执行所带来的新的问题
1)、失去了程序的封闭性
如果一程序变量是其他程序执行时不可接触的,那么这个程序执行后的输出结果一定是其输入的一个与时间无关的函数,即封闭性。
如果一个程序的执行可以改变另一程序的变量,那么其输出的就可能依赖各种程序执行的速度,也就失去了程序的封闭性
Main()
{ int n=0,j1=2,j2=2;
cobegin
while(j1--)/*任务 j1*/
{n++;}
while(j2--)/*任务 j2*/
{ printf(“n is%d.,,n); n=0;}
Coend
}
在本程序中,由于程序
J1和程序 J2的执行都可按各自独立的速度向前推进,故当推进顺序为
J1,J2,J1,J2和 J1、
J2,J2,J1的执行结果是不一样的。 这使得因为并发执行破坏了其封闭性和可再现性。
2)、并发程序之间的相互制约。
间接制约关系:因竞争同一资源而相互制约
直接制约关系:由于程序间需要相互协同而引起的如用户程序要
I/O时,它的输出就受到输入何时完成的间接制约
2.进程的概念
1)、一些关于进程的定义:
进程是一个正在执行的程序。
进程是可以分配给处理器并由处理器执行的一个实体。
进程是一个具有独立功能的程序关于某个资料集合的一次运行活动。
进程是由一个顺序线程、一个当前状态和一组相关的系统资源所刻画的活动单元。
2)、进程的组成
( 1)一段可执行的程序
( 2)程序所需要的相关资料(变量、工作空间、缓冲区等)
( 3)程序执行的上下文环境 (又称为进程状态)
在( 3)中,包括操作系统管理进程以及处理器执行进程所需要的所有信息。
如处理器寄存器的内容,进程的优先级,
进程是否等待特定的 I/O事件。
3)、进程的实现方法 (PCB)
给每个进程分配一块内存区域,并在由操作系统建立和维护的进程表中进行记录。
每个进程表项都包含进程的存储块地址指针和部分或全部进程状态信息。
任何时候整个进程状态都包含在它的进程状态信息当中。
进程的五大特征
动态性:是程序的一次执行过程。
并发性:多个进程可以同时在一个系统中运行,
轮流占用处理器和各类系统资源。
独立性:是一个能独立运行的基本单位,独立分配得到所要求的资源。
异步性:相互制约
结构特征,PCB
3、进程的状态
1),5状态模型
运行:获得处理器及其他一切所需资源,正在
处理器上运行。
就绪:获得了除处理器以外的切所需资源,
阻塞:进程在某些事件发生前不能执行
新建:刚刚创建的进程。
退出:从可执行进程中释放出的进程。
其状态转换图见书 80
2)、有挂起状态的状态模型
为了让处理器尽量忙起来,为了让更多的进程进入主存并发执行的解决方法:
( 1)硬件的扩充主存
( 2)交换:就是将主存中的某进程的一部分或全部移到磁盘中。
当主存中没有处于就绪状丰收的进程时,就将被阻塞的进程换出到磁盘的挂起队列中。操作系统再从挂起队列中取出另一个进程,或接受一个新进程的请求,将其纳入主存运行。
几种可能的状态:
就绪:进程在主存中并可以执行
阻塞:进程在主存中并等待一个事件
就绪 /挂起:进程在辅存中,但是只要被加载主存就可以执行。
阻塞 /挂起:进程在辅存中,并等待一个事件。
二,进程的调度
1、进程调度的功能
2、进程调度的方式
3、进程调度的算法
4、调度的性能准则
1、进程调度的功能
1)、进程调度的功能
记录:记录系统中各进程的执行情况
调度:根据一定的算法,对就绪队列进行排序,以便选择一个就绪进程使之在处理器上运行。
分派:执行处理的分配操作。
2、进程调度的方式
1)、不可剥夺方式:
2)、可剥夺方式:
剥夺原则有:
优先权高的可剥夺优先权低的处理器运行;
短进程可剥夺长进程的处理器运行;
时间片用完后交出处理器重新调度
3、进程调度的算法
1),FCFS算法
2),FPF算法
静态优先级:优先级在进程创建时即被确定,
并在生存期内不再改变。
动态优先级:在进程执行期间,按某种原则不断修改进程的优先级。
3)时间片轮换法在这种算法关键在于如何确定进程的优先级。
在轮换法中要注意时间片的取值是影响算法的关键三、进程的控制
1、进程创建
2、进程切换
3、进程撤消
4、进程阻塞
5、进程唤醒
6,windows 2000的进程管理进程控制的职责是对系统的全部进程实施有效的管理,从而使多个进程能并发执行、实现对系统资源共享,提高运行效率和资源的利用率。
原语:是由若干指令构成,用以完成特定功能在执行期间不响应中断或不能和其他程序并发执行的程序段。
1、进程创建
1)给新进程分配一个唯一的内部标识号( PID)
2)给进程分配空间
3)初始化进程控制块 PCB
4)设置正确的链接,
5)创建扩充其他数据结构
2、进程切换
进程切换就是在某一时刻,一个正在运行的进程被中断,操作系统被转换到另一个状态,则操作系统必须使其环境产生实质的变化,一个完整的
进程切换步骤如下,
保存处理器的上下文环境
更新当前处于运行状态的进程的进程控制块
把进程的 PCB移到相应的队列中
选择另一进程执行更新此进程的 PCB
根据地址管理的特点更新存储管理的数据结构
用被选中的进程的信息重载处理器的上下文环境信息
3、进程撤消
一个进程由进程创建原语创建,当它完成任务之后就希望终止自已。这时,应使用进程撤消原语,将当前运行进程所占的资源归还,再选一个进程去运行。其步骤为:
由运行指针得到当前进程的 PID。
释放本进程所占用的资源给父进程
释放此进程的 PCB。
转进程调度程序。
4、进程阻塞
当进程需要等待某一事件完成时,它可以调用等待原语把自已挂起。而一旦被挂起,它只能由另一进程唤醒。进程阻塞的步骤为:
停止调用进程的执行,将处器现志保留到该进程的 PCB现场区。
改变 PCB的状态为阻塞状态,并加入到相应的阻塞队列中。
转向进程调度,选择下一个进程。
5、进程唤醒
保护现行进程的处理现场到 PCB中,置该进程为“就绪”状态,并插入就绪队列。
找到该等待原因的进程队列指针。
将队列中所有进程状态由“等待”改为
“就绪”状态。
转向进程调度,选择下一个进程。
处于阻塞状态的进程是绝对不可能叫醒自已的,如某进程正等待 I/O操作完成或别的进程发送消息给它,则只有当该进程所期待的事件出现时,才由发现者进程用唤醒原语叫醒它。一般说来,发现者进程和被唤醒进程是合作的并发进程。
6,windows 2000的进程管理
Windows 2000的进程设计由给各种操作系统环境提供支持的需求所驱动,
其内核所提供的进程结构和服务是相当简单和通用的,同时允许每个操作系统子系统模拟某种特定的进程结构和功能.
Windows 2000进程的重要特点是:
1) Windows 2000进程是作为对象实现的
2)一个可执行的进程包含有一个或多个线程
3)进程对象具有内置的同步能力其对象的结构包括以下两点:对象体的属性和为对象的服务对象体属性,
进程的 ID(PID)
安全描述符
基本优先级
默认处理器集合
定额限制
执行时间
I/O计数器
VM操作计数器
异常 /调试端口
退出状态提供给对象服务:
创建进程打开进程查询进程信息设置进程信息当前进程、终止进程四,处理器调度
1、前言
2、处理器调度的类型
3、调度的性能准则
4、进程调度器
5、调度算法
1、前言
操作系统必须为多个进程可能有竞争的请求分配计算机资源。
对处理器而言,可分配的资源是在处理器上的执行时间,分配途径是调度。
调度功能必须设计成为可以满足多个目标,包括公平、任何进程都不会饿死、
有效地使用处理器时间和低开销。
2、处理器调度的类型
1)、单处理器系统中的调度
长程调度
中程调度
短程调度长程调度
长程调度决定哪一个程序可以进入到系统中,
因此,它控制多道程序的调度。
在批处理系统中,或者通用的操作系统中的批处理部分,新提交的作业被发送到磁盘,并保存在一个批处理队列中。长程调度程序在可以时,从队列中创建一个进程。这里涉及到两个决策:之一调度程序必须决定操作系统可以接纳一个进程还是多个进程;之二调度程序必须决定接受哪个作业或哪些作业,并转变成进程。
中程调度
中程序调度是交换功能的一部分,决定加入到部分或全部在主存的进程集合中。
典型的,换入决策基于管理多道程序调度的要求。对不使用虚存的系统,存储器管理也是一个问题。因此,换入决策将考虑换出进程的存储需求。
短程调度
短程调度真正决定下一次处理器执行哪一个就绪进程。
短程调程序,也称为分派程序,执行得最频繁,并且精确地决定下一次执行哪一个进程。当可能导致当前进程挂起或可能剥夺当前正在运行的进程的事件发生时,调用短程调度程序。这类事件有:时钟中断,I/O中断、操作系统调用和信号。
2)多处理器系统中的调度
在多处理器系统中,有 3种比较突出的方法进行处理器分配:
负载分配:
成组调度:
专用处理器分配:
负载分配:
线程不是分配到一个特定的处理器,而是维护一个就绪进程的全局队列,每个处理器只要空闲就从队列中选择一个线程。是可以从单处理器环境中直接移用的方法。常的负载分配方案:
先来先服务:
最少线程数优先:
有剥夺的最少线程数优先:
成组调度
方法的实现:一组相关的线程基于一对一的原则,同时调度到一组处理器上运行。这样做就可将紧密相关的进程并行执行,同步阻塞可能会减少,并且可能只需要很少的进程切换,性能会提高。
假设进程的一个线程正在执行,并且到达一点,必须与该进程的另一线在该处同步。如果这个线程没有运行,
但是在就绪队列中,第一个线程被挂起,直到在别的处理器上进行了进程切换并取进需要的线程。对于线程间需要紧密合作的应用程序,这种切换会严重的降低性能,
合作线程的同时调度还可节省资源分配的时间。
专用处理器分配:
这种方法与负载分配的方法相反,它通过把线程指定到处理器来定义隐式的调度。
3、调度的性能准则
周转时间:作业从提交到完成所经历的时间。
带权周转时间:是指周转时间除以进程执行时间。
响应时间:是指用户输入一个请求到系统给出首次响应的时间。
公平性:是指调度算法不会因作业或进程本身的特性而使上述指标过分恶化。
与系统利用率相关的处理器调度指标包括吞吐量和处理器利用率等。
吞吐量:是指单位时间内所完成的作业数
4、进程调度器
进程调度器:操作系统中与进程调度相关的代码
进程调度器的主要功能是进程状态维护和进程的上下文切换。
5、调度算法
FCFS算法
SJF算法,最短剩余时间优先
最高响应比优先
时间片时钟算法
多级队列算法
优先级算法
多级反馈队列算法 (是时间片时钟算法和优先级算法的综合和发展 )
时间片 /时钟中断
3.2作业管理
一、作业
二、批处理作业的管理一、作业
1、作业和作业步
2、作业控制方式
1、作业和作业步
作业:用户要求计算机系统处理的一个计算问题
把编制好的源程序和准备好的初始数据输入到计算机系统中,在操作系统控制下经过编译、连接装配、运行等步骤就能得到处理结果。
作业步:一个作业所经历的加工步骤
2、作业控制方式
用户根据操作系统提供的手段来说明作业加工步骤的方式。
批处理方式:(脱机控制方式)
交互方式:(联机控制方式)
二、批处理作业的管理
1、作业控制语言
作业控制说明书
2、批处理作业的输入
SPOOLING/作业流
3、批处理作业的调度
3、批处理作业的调度
1)、先来先服务算法
2)、计算时间短的作业优先算法
3)、响应比高者优先算法
4)、优先数调度算法
5)、均衡调度算法