进程管理2-2

合集下载

第二章进程管理答案

第二章进程管理答案

第二章进程管理一、单项选择题1、顺序程序和并发程序的执行相比,()。

A.基本相同B. 有点不同C.并发程序执行总体上执行时间快D.顺序程序执行总体上执行时间快2、在单一处理机上,将执行时间有重叠的几个程序称为()。

A.顺序程序B. 多道程序C.并发程序D. 并行程序3、进程和程序的本质区别是()。

A.存储在内存和外存B.顺序和非顺序执行机器指令C.分时使用和独占使用计算机资源D.动态和静态特征4、在下列特性中,不是进程的特性的是()。

A. 异步性B. 并发性C. 静态性D. 动态性5A6A.7A.8A.9A.10A.11A.12。

A.13A.14A.15A.16、在操作系统中,对信号量S的P原语操作定义中,使进程进入相应阻塞队列等待的条件是()。

A. S>0B. S=0C. S<0D. S≠017、信号量S的初值为8,在S上执行了10次P操作,6次V操作后,S的值为()。

A.10 B.8 C.6 D.418、在进程通信中,使用信箱方式交换信息的是()。

A.低级通信B.高级通信C.共享存储器通信D.管道通信19.( )必定会引起进程切换。

A.一个进程被创建后进入就绪态B.一个进程从运行态变成等待态c.一个进程从运行态变成就绪态 D.一个进程从等待态变成就绪态20、操作系统使用( )机制使计算机系统能实现进程并发执行,保证系统正常工作。

A.中断B.查询c.同步D互斥21.对于一个单处理器系统来说,允许若干进程同时执行,轮流占用处理器.称它们为()的。

A.顺序执行B.同时执行c.并行执行D.并发执行22.操作系统根据( )控制和管理进程,它是进程存在的标志。

A.程序状态字B.进程控制块 c.中断寄存器 D.中断装置23.若干个等待占有cPU并运行的进程按一定次序链接起来的队列为( )。

A.运行队列 B.后备队列 c.等待队列D.就绪队列24.进程的( )和并发性是两个很重要的属性。

A.动态性 B.静态性 c.易用性 D.顺序性25引入多道程序设计技术后,处理器的利用率( )。

操作系统习题集---2---进程管理

操作系统习题集---2---进程管理

习题集 - 2 - 进程管理1. 在优先级调度中,__________类进程可能被“饿死〞,即长时间得不到调度。

A.短进程 B.长进程 C.低优先级进程 D.大内存进程解: C。

优先级调度算法〔PRI〕的根本思想是:内核为每个进程赋予一个优先级,进程按照优先级的大小顺序在就绪队列中排队,内核将CPU分配给就绪队列头部的第一个进程——优先级最大的进程。

因此,进程的优先级越低,在就绪队列中的排队位置就越靠近队列尾,获得运行之前的等待时间就越长。

低优先级的进程必须等待所有高优先级进程运行完毕后才会被调度运行。

如果不断有高优先级的进程参加就绪队列,那么低优先级进程就会一直等待下去。

这就是所谓的“饿死〞现象。

2. 在下面的系统调用中,__________不会导致进程阻塞。

A.读/写文件 B.获得进程PID C.申请内存 D.发送消息解: B。

当正在执行的进程需要使用某种资源或等待某个事件时,如果资源已被其他进程占用或事件尚未出现,该进程不能获得所需的资源而无法继续运行,于是,进程将被阻塞。

进程在阻塞状态中等待资源被释放,或等待事件的发生。

所以,进程在执行系统调用时,如果需要使用某种资源,就可能导致进程阻塞。

“读/写文件〞需要使用设备和文件缓冲区;“申请内存〞需要分配内存资源;“发送消息〞需要使用消息缓冲区。

3. 下面关于临界区的表达中,正确的选项是__________A.临界区可以允许规定数目的多个进程同时执行B.临界区只包含一个程序段C.临界区是必须互斥地执行的程序段D.临界区的执行不能被中断解: C。

临界段〔临界区〕的概念包括两个局部:①临界资源:必须互斥访问的资源。

例如,需要独占使用的硬件资源,多个进程共享的变量、构造、队列、栈、文件等软件资源。

②临界区:访问临界资源的、必须互斥地执行的程序段。

即,当一个进程在某个临界段中执行时,其他进程不能进入一样临界资源的任何临界段。

4. 资源顺序分配法破坏了死锁发生的__________必要条件。

操作系统实验二:进程管理

操作系统实验二:进程管理

操作系统实验二:进程管理操作系统实验二:进程管理篇一:操作系统实验报告实验一进程管理一、目的进程调度是处理机管理的核心内容。

本实验要求编写和调试一个简单的进程调度程序。

通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。

二、实验内容及要求1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。

可根据实验的不同,PCB结构的内容可以作适当的增删)。

为了便于处理,程序中的某进程运行时间以时间片为单位计算。

各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。

2、系统资源(r1…rw),共有w类,每类数目为r1…rw。

随机产生n进程Pi(id,s(j,k)t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。

3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。

建立进程就绪队列。

4、编制进程调度算法:时间片轮转调度算法本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。

在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。

三、实验环境操作系统环境:Windows系统。

编程语言:C#。

四、实验思路和设计1、程序流程图2、主要程序代码//PCB结构体struct pcb{public int id; //进程IDpublic int ra; //所需资源A的数量public int rb; //所需资源B的数量public int rc; //所需资源C的数量public int ntime; //所需的时间片个数public int rtime; //已经运行的时间片个数public char state; //进程状态,W(等待)、R(运行)、B(阻塞)//public int next;}ArrayList hready = new ArrayList();ArrayList hblock = new ArrayList();Random random = new Random();//ArrayList p = new ArrayList();int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数//r为可随机产生的进程数(r=m-n)//a,b,c分别为A,B,C三类资源的总量//i为进城计数,i=1…n//h为运行的时间片次数,time1Inteval为时间片大小(毫秒)//对进程进行初始化,建立就绪数组、阻塞数组。

计算机操作系统 第二章 进程管理(2)

计算机操作系统 第二章 进程管理(2)

缺点:
(1)进程在等待进入临界区时也要耗费处理器时间, 不能实现“让权等待” (2)可能出现进程“饥饿”
2.3.2 信号量机制
新的同步工具——信号量和P、V操作。
信号量:是一种数据结构,代表可用资源实 体的数目。
信号量只能通过初始化和两个标准的原语: P(wait(S))、V((signal(S))来访问。 P原语相当于进入区操作,V原语相当于退 出区操作。
AND同步机制
AND同步机制的基本思想是:进程运行时所 需要的所有资源,要么全部分配给它,使用完 毕后一起释放;要么一个都不分配给它。实现 时,采用原子操作:要么全部分配到所有资源, 要么一个也不分配到。 称AND型信号量P原语为:
Swait(Simultaneous wait)
V原语为Ssignal(Simultaneous signal)。
SP原语描述
Swait(S1,S2,„,Sn) /* SP原语描述 */ {while(1) {if(S1>=1&&S2>=1&&„&&Sn>=1) {for(i=1;i<=n;i++) Si--; /* 先确信可满足所有资源要求再减1操作 */ berak; } else /* 资源不够时 */ {将进程放入第一个信号量小于1的阻塞队列Si.sqeue; 将PC中的地址回退到SP开始处; 阻塞进程; } } }
第二章 进程管理(2)
2.3 进程同步
多进程并发执行时,由于资源共享或进程合 作,使进程间形成间接相互制约和直接相互制 约关系,这需要用进程互斥与同步机制来协调 两种制约关系。 进程同步的主要任务:协调进程执行次序, 使并发执行的诸进程间能有效地共享资源和相 互合作,使程序的执行具有可再现性。

操作系统进程管理

操作系统进程管理
第三章 进程管理
Process Management
处理机管理是操作系统的基本管理功能之一,它所关心的是处理机的 分配问题。也就是说把CPU(中央处理机)的使用权分给某个程序。
通常把正准备进入内存的程序称为作业,当这个作业进入内 存后我们把它称为进程。处理机管理分为作业管理和进程管 理两个阶段去实现处理机的分配,常常又把直接实行处理机 时间分配的进程调度工作作为处理机管理的主要内容。
3、系统进程在管态下活动,而用户进程则在用户态 (目态)下活动。
另一种分类:计算进程,I/O进程等 注意:在UNIX系统中没有这样对进程进行分类。
动。 (4)在进程调度中,系统进程的优先级高于用
户进程。
2.5 进程的类型与区别
系统进程与用户进程的区别:
1、系统进程被分配一个初始的资源集合,这些资源 可以为它独占,也能以最高优先权的资格使用。用 户进程通过系统服务请求的手段竞争使用系统资源;
2、用户进程不能直接做I/O操作,而系统进程可以 做显示的、直接的I/O操作。
2.3进程的特征
5)结构特征:为能正确的执行并发,为每一个进程配置
了一个数据结构,称为进程控制块(PCB)。则一个进 程实体就由数据段、程序段、PCB三部分构成。
• 进程实体 = 数据段+程序段+PCB
PCB
私有 数据块
程 序 段
进程的结构
• 程序和进程不一定具有一一对应的关系。
2.4 与程序的区别
2、进程是一个独立的运行单位,能与其它进程并行(并 发)活动。而程序则不是。
3、进程是竞争计算机系统有限资源的基本单位,也是进 行处理机调度的基本单位。
4、一个程序可以作为多个进程的运行程序,一个进程也 可以运行多个程序。

第2章 进程管理课后习题解答

第2章 进程管理课后习题解答

第题中,如果修改问题中的同步算法,要求 对写进程优先,即一旦写进程到达,后续的读者进程必须等待, 而无论是否有读者进程在读文件。写出相应进程的程序段。 semaphore fmutex=1, rmutex=1, wmutex=1;que=1;
int rcount=0, wcount=0; void main() { parbegin(reader, writer); }
12
void reader { while(1) { wait(que); wait(rmutex); if(0==readcount) wait(fmutex); readcount++; signal(rmutex); signal(que); …. begin to read wait(rmutex); readcount--; if(readcount==0) signal (fmutex); signal(rmutex); } }
读者—写者问题(读优先) 读者 写者问题(读优先) 写者问题 semaphore rmutex=1,wmutex=1; int readcount=0; = void main() { parbegin(reader,writer); }
读者进程: 读者进程: void reader() { while(1) { wait(rmutex); if (readcount==0) wait(wmutex); readcount++; signal(rmutex); … 读操作 wait(rmutex); readcount--; if (readcount==0) signal(wmutex); signal(rmutex); } }
18
chopstick[ ={1 semaphore chopstick[5]={1,1,1,1,1}; viod main() { parbegin(P0(),P1(),P2(),P3(),P4()); parbegin(P0(),P1(),P2(),P3(),P4()); } Pi() /*i=0,1,2,3,4*/ { while(1) { wait(chopstick[i]); [ ] wait(chopstick[(i+1)%5]); [ ] eating; … signal(chopstick[i]); [ ] signal(chopstick[(i+1) %5]); [ ] thinking; } }

操作系统原理第二章进程管理

操作系统原理第二章进程管理

2.1 前趋图和程序执行
例:有7个结点的前趋图。
P = { P1,P2,P3,P4,P5,P6,P7 } → = {(P1,P2),(P1,P3),(P1,P4), (P2,P5),
(P3,P5),(P4,P6),(P5,P7),(P6,P7)}
2
1 3
4
5
7 6
2.1 前趋图和程序执行
➢ 程序的顺序执行
打印三项操作。其程序段并发执行的前趋图:
I1 → I2 → I3 → I4 →
↘↘↘↘
C1 → C2 → C3 → C4 →
↘↘↘↘
P1 → P2 → P3 → P4 →
2.1 前趋图和程序执行
例2.Begin integer N:=0;
Cobegin
Program A : begin
Program B : begin
void popaddr (top) { top --; r=*top; return (r) }
void pushaddr(blk) { *top = blk; top++;
}
先执行 popaddr 的top--,接着执行pushaddr的*top=blk
2.1 前趋图和程序执行
➢ 程序并发执行过程及条件 (Bernstein条件)
果必相同。
2.1 前趋图和程序执行
➢ 程序的并发执行
➢ 程序执行环境
➢ 独立性,逻辑上是独立的。 ➢ 随机性:输入和执行开始时间都是随机的。 ➢ 资源共享:资源共享导致对进程执行速度
的制约。
2.1 前趋图和程序执行
➢ 程序的并发执行
并发执行是指两个程序执行时间上是重叠 的。凡是能由一组并发程序完成的任务,都 能由相应的单个程序完成。 例1:有一批程序,而每个程序需输入,计算,

2-进程管理

2-进程管理

CH2 进程管理CPU即处理机的一种,为方便见,以后我们不再区分。

进程是处理机内运行的一个实体,处理机管理核心是调哪个进程到处理机内运行,所以OS把处理机管理纳入进程管理范畴。

在OS 中, 进程管理与存储器管理是最重要的两部分, 也是最接近内核的两层. 在现代OS中, 进程是作为资源分配和独立运行的基本单位. 我们合并第二、三两章,主要内容有:§1 中断#1 中断概念#2 中断功能#3 中断处理§2 多道程序设计§3 进程引入#1 程序的顺序执行及其特征#2 程序的并行执行及其特征#3 进程定义及其特征#4 进程三态及其演变(就绪/执行/阻塞)#5 进程描述(PCB)及其组织(队列/索引)§4 进程控制#1 内核与原语#2 创建与撤消(Create/Destroy)#3 ★挂起与激活(Suspend/Active)#4 阻塞与唤醒(Blocked/Wakeup)§5 进程调度#1 概念(级别, 方式, 术语)#2 调度算法(FIFO/最短时间/最高优先级/轮转/多级反馈)#3 引起调度的原因和实现§6 进程同步#1 概念#2 信号量机制(概念/实现)#3 信号量应用(互斥/同步)#4 经典进程同步问题----例子#5 ★信号量集和管程§7 进程通信#1 类型(内存共享/消息机制/文件共享)#2 直接通信方式(一般模型/应答式/链路)#3 ★直接通信应用(消息缓冲)§8 死锁#1 原因及必要条件#2 预防#3 避免(教材称为预防不恰当)#4 检测#5 解除与书不同处: 处理机调度纳入进程调度;CH7的§1并发进程纳入进程引入一节;进程控制单独列一节§1 中断一、中断概念1、中断:CPU对系统中发生的异步事件的响应处理。

2、中断引入的目的是提高CPU的利用率和系统实时性能。

3、中断是多道程序设计实现的基点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

错误3: 在实现进程互斥时,如果在程序中遗漏了wait(mutex) 操作,将会使多个进程同时活跃在临界区; 而如果遗漏了signal(mutex)操作,则将会使其它进程 无法再进入临界区; 而如果已有进程因不能进入临界区而阻塞,则该进程将 永远不会被唤醒。
为很好的解决上述问题,引入了新的进程 同步工具——管程
利用信箱通信时在发送进程和接收进程之间, 存在以下4中关系: 1)一对一关系。为发送进程和接受进程建 立一条两者专用的通信链路; 2)多对一关系。允许提供服务的进程与多 个用户进程之间进行交互; 3)一对多关系。允许一个发送进程与多个 接受进程进行交互; 4)多对多关系。允许建立一个共用信箱, 多个进程都能向信箱中投递消息,也可从信箱 中取走属于自己的信息;
until false; end
2、间接通信方式
发送进程将消息发送到某种中间实体中(信箱), 接收进程从中取得消息。 也称信箱通信。在网络中称为电子邮件系统。系统 为信箱提供了若干条原语: (1)信箱的创建和撤消; (2)消息的发送和接收;
Send(mailbox,message); 将一个消息发送到指定信箱; Receive(mailbox,message源自;从指定信箱接收一个消息;
利用直接通讯原语解决生产者-消费者问题
生产者-消费者的通讯过程可描述为: producer: begin repeat 生产一个产品nextp Send(consumer,nextp); until false; end
consumer: begin repeat
Recevie(producer,nextc); 消费nextc产品;
PROCEDURE entry get(nextc: item); BEGIN
if count<=0 then notempty.wait(); nextcbuffer[out]; out (out+1) mod n; count count - 1; if notfull.queue then notfull.signal();
基于管程的消费者子程序设计
consumer: Var nextc: item; PC.get(nextc); begin repeat wait(full); wait(mutex); nextcbuffer[out]; out (out+1) mod n; signal(mutex); signal(empty); consume the item in nextc; until false; end
if count>=n then notfull.wait(); buffer[in] nextp; in (in+1) mod n; count count + 1; if notempty.queue then notempty.signal();
END;
生产者-消费者管程设计
如果有进程Q处于阻塞状态,当进程P执行 了X.signal操作后,怎样决定由哪个进程执 行,哪个等待?可采用以下两种方式之一: (1)P等待,直到Q离开管程或等待另一条 件。 (2)Q等待,直到P离开管程或等待另一条 件。
基于管程的生产者子程序设计
producer: Var nextp: item; begin PC.put(nextp); repeat produce an item in nextp; wait(empty); wait(mutex); buffer[in] nextp; in (in+1) mod n; signal(mutex); signal(full); until false; end
生产者-消费者管程设计要领

循环缓冲及操作机制

循环缓冲 buffer: array [0..n-1] of item; 生产/消费指针 in, out: integer 0, 0; 已有消息数目 count: integer 0;
notfull/notempty 设置进程等待队列 设置同步操作原语wait与signal


共享数据 条件变量及 x 紧急等待队列 y
入口等待队列

一组操作过程 初始化代码
管程的语法描述如下:
Type monitor-name=monitor Variable declarations Procedure entry P1(…); begin … end; Procedure entry P2(…); begin … end; … Procedure entry Pn (…); begin … end; Begin initialization code; end


条件变量设计

针对每个条件变量

生产者-消费者管程设计
TYPE producer-consumer = monitor; var in, out, count : integer; buffer: array [0..n-1] of item; notfull, notempty: condition; PROCEDURE entry put(nextp: item); BEGIN
注意: 局部于管程的数据结构,仅能被局部于管程的过 程所访问,任何管程的过程都不能访问; 局部于管程的过程也仅能访问管程内的数据结构。 由此可见,管程相当于围墙,它把共享变量和对 它进行操作的若干过程围了起来,所有进程要访问 临界资源时,都必须经过管程(相当于通过围墙的 门)才能进入,而管程每次只准许一个进程进入管 程,从而实现了进程互斥。
管程的引入
基于信号量的进程同步机制的弊端
各临界资源访问进程均须自备同步操作
大量同步操作分散不利于系统管理 同步操作使用不当可能导致系统死锁
对策
软硬件资源及操作抽象描述为管程
并发进程间的同步操作,分别集中于相应的
管程中,由管程专职负责同步方案
错误1:在利用互斥信号量mutex实现进程互斥时,如果将 wait(s)与signai(s)颠倒, 即: signal(mutex); critical section wait(mutex); 在这种情况下,可能会有几个进程同时进入临界区,因 而同时去访问临界资源。
对于这样的错误仅在几个进程同时活跃在临界区内时, 才可能发现,而这种情况又并非总是可以发现的。
错误2: 在实现进程互斥时,如果程序中的signal(mutex)被误 写为wait(mutex), 即: wait(mutex); critical section wait(mutex); 此时的mutex将被出错的进程连续两次地执行wait操 作,因而变成-1,这样将会使任何其它进程都不能进入 临界区; 从而也不会再有进程执行signal(mutex)操作,去唤 醒出错的进程。在这种情况下,将发生死锁。

(2)基于共享存储区的通信方式 高级通信,在存储器中划出一块共享存储区, 进程在通信前,向系统申请共享存储区中的一 个分区,并指定该分区的关键字,若系统已经 给其它进程分配了这样的分区,则将该分区的 描述符返回给申请者。接着,申请者把获得的 共享存储分区连接到本进程上,此后可读写该 分区。 以上两种方式的同步互斥都要由进程 自己负责。
发送进程
字符流方式写入读出; 先进先出顺序;
接收进程
提供3方面协调能力: 互斥、同步、确定对方 是否存在;
2.5.2 消息传递通讯的实现方法
消息传递系统可分为:直接通信方式和间接通信方式。 1、直接通信方式 发送进程直接把消息发送给接收者,并将它挂在接 收进程的消息缓冲队列上。接收进程从消息缓冲队列中 取得消息。 系统提供以下两条通讯命令(原语): Send(Receiver,message);发送一个消息给接收进程; Receive(Sender,message);接收Sender发来的消息;
2、条件变量
在利用管程实现进程同步时,必须设置两个同步操作 原语wait和signal。 当某进程通过管程请求获得临界资源而未能满足时, 管程便调用wait原语使该进程等待,并将它排在等待 队列上。
仅当另一进程访问完成并释放该资源后,管程才又调 用signal原语,唤醒等待队列中的队首进程。

2.5.1 进程通信类型
1、共享存储器系统
2、消息传递系统
3、管道通信
(共享文件方式)
1、共享存储器系统

分为两类: (1)基于共享数据结构的通信方式 诸进程公用某些数据结构,进程通过它们交换 信息。如生产者-消费者问题中的有界缓冲区。 这种通信方式中,公用数据结构的设置及对进程 同步的处理,都是程序员的职责,无疑增加了程序 员的负担---低效!
管程的基本概念

系统中的各种硬件资源和软件资源,均可用数据结 构加以描述。 一个管程定义了一个数据结构和能为并发进程所执 行(在该数据结构上)的一组操作,这组操作能同步进 程和改变管程中的数据。 管程有3部分组成: (1)局部于管程的共享变量; (2)对该数据结构操作的一组过程(局部于管程); (3)对局部于管程的数据设置初始值的语句;
等待原因可能有多个, 为区别多个等待原因,引入了条 件变量condition,管程中对每一个条件变量都予以说明,形 式为: Var x,y: condition 该变量应置于wait和signal之前。可表示为: X.wait 和 X.signal X.wait操作的作用,是一个进程由于X原因进入阻塞队列 , 而X.signal操作的作用,是重新启动一个由于X原因被阻塞 的进程; 如果没有被阻塞的进程, X.signal操作不产生任何后果 , 但信号量机制中的signal操作总要执行s:=s+1操作,这正 是两者的不同;
END;
BEGIN
in out count 0;
END
相关文档
最新文档