北工大 操作系统 作业合集(2)

2018-11-26 21:50

P2 P3 P4 P5

(3)等待时间: P1 P2 P3 P4 P5 11 13 14 19 1 4 2 9 1 18 19 6 2 7 4 14 FCFS 0 10 11 13 14 SJF 9 0 2 1 4 非抢占优先级 6 0 16 18 1 RR 9 1 5 3 9 2.考虑下面一个系统在某一个时刻的状态。

Allocation Max Available A B C D A B C D A B C D P0 0 0 1 2 0 0 1 2 1 5 2 0 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 6 3 2 0 6 5 2 P4 0 0 1 4 0 6 5 6 使用银行家算法回答下面的问题: (1) Need矩阵的内容

(2) 系统是否处于安全状态

(3) 如果从进程P1发来一个请求(0,4,2,0),这个请求是否可以立即满足? 解:

(1)Need矩阵 P0 P1 P2 P3 P4 A 0 0 1 0 0 B 0 7 0 0 6 C 0 5 0 2 4 D 0 0 2 0 2 (2)处于安全状态,先是P0完成,之后P3,之后P2,之后P1,之后P4。 (3)可以立即满足,满足后仍处于安全状态。 补充作业 判断对错

在RR调度中,上下文切换的时间应该小于时间片的长度。 SJF调度算法是最适合分时系统的调度算法。 FCFS调度算法只能是非抢占式的。 如果资源分配图中有环,那么就一定有死锁。 死锁的时候系统一定处于非安全状态。

X X

X

第三次作业

一、基础作业

1.什么是忙等待?

持续地检测一个变量直到它具有某一个特定值称为忙等待。

2.吸烟者问题:有3个吸烟者和一个供应者。第一个吸烟者有自己的烟草;第二个吸 烟者有自己的纸;第三个吸烟者有自己的火柴。供应者每次随机放两样东西到桌子上 提供给3个吸烟者之中的一个以完成吸烟。请用信号量为吸烟者和供应者进程编写程 序。

Semaphore n[2]={0}; Semaphore s=1;

0代表烟草,1代表纸,2代表火柴. //供应者程序 Void procucer() {

While(1) {

随机生成一个在0~2之间的数i; Wait(s);

将除了i表示的另外两件东西放在桌子上; Signal(n[i]); }

//吸烟者程序 Void smoker(int i) {

While(1) {

Wait(n[i]); Somke(); Signal(s); }

二、 补充作业

1.假设有三个进程R、W1、W2共享缓冲区B。B中只能存放一个数。R每次从输入设备中读一个整数放入B中。如果这个整数是奇数,由W1取出打印。如果这个整数是偶数,则由W2取出打印。规定仅当B中没有数据或数据已经被打印才会启动R去读数。W1、W2对B中的数据不能重复打印,当B中没有数据时也不能打印。要求用信号量操作写出R、W1、W2三个进程的程序。(请详细描述所使用变量的含义)

Semaphore s=1;//进程R可以存入缓冲区B的数据个数信号量

Semaphore n[2]={0};//n[0]/n[1]表示进程W1/W2可以从缓冲区B中取出的数据个数; //进程R Void R()

{

While(1) {

读入一个正数m; Wait(s);

将m放入B中; if(m/2!=0) Signa([n[0]); Else

Signal(n[1]); } }

Void w1() {

While(1); {

Wait(n[0]);

从缓冲区B 取数据k; Signal(s); 打印K; } }

Void w1() {

While(1); {

Wait(n[1]);

从缓冲区B 取数据k; Signal(s); 打印K; } }

2.有一个铁笼子,猎手放入老虎,农民放入猪,动物园等待取走老虎,饭店等待取走猪。笼子中只能放入一个动物。请使用信号量方法为猎手、农民、动物园、饭店进程编写程序。

Semaphore cage=1;//可以放入笼子中的动物数量

Semaphore tiger=0;//动物园从笼子中取出老虎的数量 Semaphore pig=0;//饭店从笼子中取出猪的数量 ////////////////////猎手进程 Void hunter() {

While(1)

{

Wait(cage);

将老虎放入笼子; Signal(tiger); } }

Void farmer() {

While(1) {

Wait(cage); 将猪放入笼子; Signal(pig); } }

Void zoo() {

While(1) {

wait(tiger);

从笼子中取出老虎; signal(cage); } }

Void restaurant() {

While(1) {

waitl(pig);

从笼子中取出猪; signal(cage); } }

3.某寺庙,有小、老和尚若干。有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可容10桶水。水取自一个井中,水井窄,每次只能容一个水桶。水桶总数为3。水缸每次进出也仅1桶水,不可以同时进行。请设置合适的信号量描述小和尚、老和尚取水、入水的算法。

Semaphore bucket=3;//水桶的数量

Semaphore tank=1;//水缸每次能容水桶的数量; Semaphore s=10;//水缸容水桶水量;

Semaphore well=1;//井每次能容水桶的数量; Semaphore empty=0;//水缸中现有的水量; Void youngmonk() {

While(1) {

Wait(bucket); 获得水桶; Wait(well); 井中取水; signal(well); Wait(s); Wait(tank); 倒水入水缸; Signal(tank); Signal(bucket); Signal(empty); } }

Void oldmonk() {

While(1) {

Wait(empty); Wait(bucket); 获得水桶; Wait(tank);

从水缸中取水; Signal(tank); Signal(s);

Signal(bucket); } }

4. 判断对错

(1)一个系统中进程之间可能是独立的也可能是合作的。√ (2)如果用锁来保护临界区可以防止竞争条件。√ (3)一个计数信号量的值只能 取0或者1. X (4)在管程中本地变量只能由本地过程来访问。√ 5. 选择题

(1)关于竞争条件那句话是对的? B A. 几个线程要并发访问同样的数据

B. 几个线程要并发访问并修改同样的数据 C. 只有在执行结果与执行顺序无关的时候发生


北工大 操作系统 作业合集(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:部编人教版《道德与法治》二年级上册第3课《欢欢喜喜庆国庆》教

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: