处理机管理

处理机管理

多道程序设计

  • 并行程序与并发程序
  • 并发程序执行的条件(Bernstein条件)

1、并行程序与并发程序
  被处理机交替执行的几道程序,称为并发程序。
  并发是指在逻辑上或宏观上的并行(或者说它们的执行在时间上有重叠,一个程序的执行尚未结束,另一个程序的执行已经开始);而并行操作才是真正的并行,或称为微观上的并行。

2、并发程序执行的条件(Bernstein条件)
  当两个程序的读集与写集的交集以及写集与写集的交集都为空时,它们可以并发执行,否则不行。
  ——那么,不满足条件的程序难道就不能并发执行了吗?
  只要系统采取措施,对并发程序的执行进行控制,就能使它们“安全的”并发执行,且保持结构的可再现性。(采取何种措施即如何利用同步机制实现进程的互斥与同步的问题)

进程的描述

1、进程的定义
  进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。(我国1978年在庐山召开的全国操作系统研讨会)

2、进程与线程的区别
  进程是系统进行资源分配的独立单位;线程是系统进行资源调度的独立单位。

3、进程的五个特性
  (1)动态性(2)并发性(3)独立性(4)异步性(5)结构特性
  结构特性:每个进程都是由程序段、数据段和一个PCB三部分组成。(这三部分构成了进程实体,我们平时在许多情况下所说的进程都指进程实体。)

4、一个经典例题
  若64个用户程序同时提交至服务器并请求编译
  问:服务器响应请求后,有多少个进程?有多少个程序?
  答:64个进程,1个程序。1个编译程序响应64个用户的请求,产生64个进程。根据进程的定义,用户程序的地位为数据集合。注:进程的三个组成部分中的程序段是指可执行的程序,而用户提交至服务器的程序还未经过编译,不能算作进程的程序段部分,应为数据集合部分,而64个进程的程序段部分应为同一个程序(编译程序)。

5、进程的三种基本状态
 (1)就绪(Ready)状态
 (2)执行(Running)状态
 (3)阻塞(Blocked)状态
 有的系统中,为了暂时缓和内存的紧张状态,或为了调节系统负荷,又引入了挂起状态。即暂时挂起一部分进程,把它们从内存临时换出到外存,使它们暂时和系统脱离联系。
 具体的挂起原因:为满足系统和用户两方面的需求,如:换入换出、调整负荷、解救死锁、父进程请求等。

6、进程控制块PCB
 (1)PCB是进程存在的唯一标志,也是操作系统中最重要的结构体类型的数据结构
 (2)作用:标志进程的存在;为系统提供可并发执行的独立单位(操作系统是根据PCB来对并发执行的进程进行控制和管理的);为系统控制和管理进程提供提供所需的一切信息
 (3)因为PCB是系统中最重要也是被频繁访问的数据结构,所以PCB常驻内存的系统区中,一般都是以数组形式连续存放,形成PCB表或进程表,显然这个PCB表是有最大长度的。
 (4)许多操作系统都在PCB中设立链接字,把具有同一状态的PCB,用其中的链接字链接成一个或多个队列
 (5)在单处理机系统中没有执行进程队列

7、进程的控制
 原语:是操作系统内核中有若干条机器指令构成用于完成特定功能的一个过程,该过程在执行时是不可分割的,即呈原子特征,它是机器指令的延伸。(常采用屏蔽中断的方法来保证原语在执行时的不可分割)
 
 各种进程原语的执行原因:
 (1)进程创建原语:用户登录; 作业调度; 提供服务; 应用请求
 (2)进程撤销原语:完成任务正常结束; 出现某些错误或故障而被迫结束时
 (3)进程阻塞原语:进程请求某事件尚未出现时
 (4)进程唤醒原语:执行的进程释放某资源后,调用进程唤醒原语将因等待该资源而阻塞的一个进程唤醒成就绪
 注:一个进程应由其父进程调用进程撤销原语来予以撤销; 进程撤销原语在撤销指定进程的同时,也应该撤销其所有的子孙进程。

8、互斥
 操作系统实现进程的互斥、同步的工具有多种,如上锁与开锁原语、测试与设置指令、对换指令、信号量机制、管程机制等。
 临界资源:指一次仅允许一个进程使用的资源(共享的变量、表格、打印机)
 临界区(临界段):进程中访问临界资源的那段程序代码
 同类临界区(相关临界区):使用同一临界资源的不同进程中的临界区
 
 临界区的使用原则:空则让进,忙则等待,等则有限,等则让权
 
 互斥的软件实现方法:
 (1)最早的Dekker算法 (2)最著名的Peterson算法
 
 上锁和开锁
  在相关进程的程序里由上锁和开锁原语紧夹着临界区,就能保证这些进程互斥地进入各自的临界区。但处理机效率不高,因为上锁原语中的条件测试操作可能引起CPU“忙等”。

信号量机制

 发展过程:经典的整型信号量—>记录型信号量—>信号量集
 比较:经典信号量存在CPU“忙等”问题,信号量集机制不容易发生死锁,但可能导致资源利用率低,而记录型信号量避免了“忙等”现象,又有利于提高共享资源的效率,但使用不当可能造成死锁。
 信号量:也称信号灯,是表示某类资源实体与进程队列有关的整型变量,其值只能通过P、V操作来改变。信号量类型是复合类型,其中一个分量是整型分量S,另一个分量是进程的等待队列指针Q。
 S的物理含义:当S>=0时,表示某类可用资源的数目,或者说比哦啊是可以执行P操作而不会被阻塞的进程的数目;当S<0时,其绝对值表示信号量S的阻塞队列中的进程数,这些进程需要其他进程发出响应的信号灯来唤醒。
 P == Wait == Down == -1
 V ==Signal == Up == +1

IPC(进程间通信)问题

  以任何次序兵法执行都不会发生竞争(时间上的问题)

1、经典的消费者与生产者问题
 一种解释:
  消费者与生产者进程因产品放入与否,而形成一处同步制约,因此设置full,初值为0
  生产者与消费者进程因产品取出与否,而形成另一处同步制约,因此设置empty,初值为n

2、用信号量机制描述两人下象棋的过程

解法一:
(1)用信号量设置如下:
 a. 同步信号量hei,初值为1,表示黑方已走子,开始时可以使红方先行不受阻
 b. 同步信号量hong,初值为0,表示红方尚未走子,开始时可使黑方先行受阻
(2)用信号量机制描述的二人下象棋过程如下:

     红方                  黑方
P(hei);                P(hong);
若被黑方将死,则投子认输,结束;    若被红方将死,则投子认输,结束;
若同意与黑方作何,则结束;       若同意与红方作何,则结束;
否则,根据棋局思考后走一子;      否则,根据棋局思考后走一子;
V(hong);               V(hei);
————————————————————————————————————
解法二:(若将上述同步信号量hei的初值设为0~~~)
(1)用信号量设置如下:
 a. 同步信号量hei,初值为0,表示黑方尚未应对
 b. 同步信号量hong,初值为0,表示红方尚未走子,开始时可使黑方先行受阻
(2)用信号量机制描述的二人下象棋过程如下:

     红方                  黑方
                      P(hong);
若被黑方将死,则投子认输,结束;    若被红方将死,则投子认输,结束;
若同意与黑方作何,则结束;       若同意与红方作何,则结束;
否则,根据棋局思考后走一子;      否则,根据棋局思考后走一子;
V(hong);               V(hei);
P(hei);

进程的通信

进程之间的信息交换称为进程通信。
像信号量机制等进程同步工具这样只适与在进程间交换商量信息的通信机制称为低级通信机制。

三种基本的进程通信方式:
1、共享存储器系统
 (1)共享内存变量(如信号量机制)
 (2)共享内存区
2、消息传递系统
 (1)消息缓冲
 (2)信箱
3、管道通信系统

发送原语:send(接收者进程名,发送区首地址)
接收原语:receive(接收区地址)
用户直接使用这些通信原语一次就能发送成千上万字节的信息

死锁问题

死锁(Deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法向前推进。

产生死锁的原因:
 1、竞争临界资源
 2、进程推进顺序不当
竞争临界资源而产生的死锁是死锁产生的根本原因,在多道程序系统中是无法解决的。因为一旦解决就不能叫多道程序并发执行了。

产生死锁的必要条件:
1、互斥条件。每一资源或者被分配给一个进程,或者空闲。
2、占有并请求条件。已分配到了一些资源的进程可以申请新的资源。
3、不可剥夺条件。已分配给某进程的资源不可被剥夺,只能由占有它的进程使用完后主动释放。
4、循环等待条件。系统必然从在一条由两个或两个以上进程组成的循环链,链中的每一个进程都在等待相邻进程所占用的资源。

死锁的预防
通过破坏产生死锁的必要条件中的占有并请求条件和循环等待条件来实现
1、静态资源分配法
 系统规定每一个进程在开始运行前,都必须一次性地申请其在整个运行过程所需的全部资源。
2、有序资源使用法
 系统中的所有资源按类都被赋予一个唯一的编号,每个进程只能按编号的升序申请资源。

死锁的避免
 采取动态的资源分配策略,保证系统不进入可能导致系统陷入死锁状态的所谓不安全状态,从而避免死锁发生。
1、安全状态、安全序列
2、银行家算法

例:某系统有同类互斥资源m个,供n个进程共享使用。如果每个进程最多申请x个资源(1<=x<=m),试证明:当n(x-1)+1<=m时,系统不会发生死锁。

死锁避免的方法与死锁的预防办法相比,资源的利用率提高了,因为它采用了动态资源分配策略,对用户申请资源不再加以限制,但分配资源时仍有一定的保守性限制,而且它要求系统中的资源数目与用户数目尽可能保持不变,这在一定程度上限制了它的使用。

死锁的检测(大型机中常用)
 适用于那些对死锁的产生不采取任何预防或避免的对策,即允许死锁发生的系统中,其功能由两部分实现:一个定时触发执行的死锁检测程序,一个可能在死锁检测程序中被调用执行的死锁解除程序。
1、死锁的检测
 通常主要是检查系统的资源分配图中是否存在无法完全化简的有向封闭环路
2、死锁的解除
 (1)撤销进程法
  最小代价撤销法(运行时间越长,占用资源越多,撤销代价越大)
 (2)挂起进程法

鸵鸟算法(PC及采用)
  忽略死锁,同时系统给用户提供查看与杀死指定进程的命令或系统调用。

处理机调度

一、三级调度
1、高级调度(长程调度、作业调度)
2、中级调度(中程调度、内存调度)
3、低级调度(短程调度、进程调度)

二、调度算法
1、先来先服务(First Come First Served,FCFS)调度算法
2、短作业优先(Shortest Job First,SJF)调度算法
3、最高响应比优先(Highest Response Ratio First,HRRF)调度算法
4、优先级(Priority)调度算法
5、时间片轮转(Round Robin,RR)调度算法
6、多级反馈队列(Multilevel Feedback Queues,MFQ)调度算法

三、调度时机
1、在分时系统中,现行进程的时间片用完了
2、发生了外部中断
3、进程因等待某事件或资源而阻塞
4、现行进程运行结束或出现异常情况
后两种情况一定会引起进程切换,即重新调度后换其他进程运行。而前两种情况则不一定会引起进程的切换。 解释:(1)对于第一种情况,如果当前只有一个进程在运行,且就绪队列为空,则此进程本时间片用完后,下个时间片继续运行 (2)例如一个进程执行过程中调用了操作系统程序,通过中断由用户态进入了管态,但还是在运行同一进程。例:调用输入输出函数。

四、调度过程
1、保存“下降”进程现场
2、选择将要运行的进程——“上升”进程
3、恢复“上升”进程的现场

线程的概念

线程是进程中可独立执行的子任务,是系统独立调度和分派的基本单位。
一个进程中至少有一个线程。线程继承所属进程的一切资源,它自己只拥有运行所需的很少的一点资源,如几个寄存器和一个堆栈等。

线程与进程的比较
1、拥有资源
 进程是拥有资源的一个独立单位
 线程几乎不拥有系统资源,但它可以访问其隶属进程的资源
2、调度
 传统操作系统中:
 进程既是拥有资源的基本单位,有事能独立调度的基本单位
 引入线程的操作系统中:
 进程只是拥有资源的基本单位,而线程是调度与分派的基本单位
3、并发性
 不仅进程之间可以并发执行,而且线程之间也可以并发执行
4、系统开销
 操作系统为进程切换付出的开销远大于为同一进程内的线程切换付出的开销
 由于同一进程内的多个线程具有相同的地址空间,致使它们之间的同步互斥的实现也变得比较容易

线程、进程、作业、程序之间的关联
线程、进程、作业、程序之间的关联
1、作业是批处理系统中用户向计算机提交任务的任务实体。
2、进程是分时系统中用户向计算机提交任务的任务实体,进程的任务实质上相当于每个批处理作业的作业步的任务
3、作业、进程、线程都是动态的概念,唯独程序是静态的。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值