第二章综合习题
10
丁蕾蕾
开始于 2018-04-10 15:55
0 14 382
已截止

任务尚未发布或者你没有权限查看任务内容。

任务讨论

@蕾蕾老师‍  补交作业,以前忘记提交了

一、B B D D B FB D B C D B B B C C D D A D D

二、F F F F T F T F F T

三、

1.

操作系统:是直接控制和管理计算机硬件软件资源,合理地对各类作业进行调度,以方便用户使用的程序集合。 

操作系统的五大功能:处理机管理功能、存储器管理功能、设备管理功能、文件管理功能、向用户提供方便接口功能。

2.

进程:程序关于某个数据集合的一次执行。

临界资源:是一次仅允许一个进程使用的共享资源。

3.

4.

Semaphore S=1,So=0, Sa=0;   // S表示 盘子是否为空,初值为1;

//So --- 盘中是否有桔子,初值为0;

//Sa --- 盘中是否有苹果,初值为0;

Cobegin{

Father() {

While(1)  {

Wait(S);  

将水果放入盘中;

If  (放入的是桔子)  Signal(So);

Else   Signal(Sa);

}

}

Son() {

While(1)  {

Wait(So);  

从盘中取出桔子;

Signal(S);

吃桔子;

}

}

Daughter() {

While(1)  {

Wait(Sa);  

从盘中取出苹果;

Signal(S);

吃苹果;

}

}

}Coend

5.

Semaphore run=1,stop=0,open=0,close=0

stop()//停车

{

Wait(run);

停车;

Signal(stop);

}

Opendoor()//开门

{

Wait(stop);

售票员打开门,乘客上车;

Signal(open);

}

Closedoor()//关门

{

Wait(open);

关门,售票员开始售票;

Signal(close)

}

Running()//发车

{

Wait(close);

开车;

Signal(run);

}

Void main()

{

Cobegin

Runnning()

Stop();

Opendoor();

Closedoor();

Coend

}

6.

Semaphore: mutex1=1, mutex2=1,counter=0;// mutex1顾客互斥使用取号机取号

//mutex2柜员叫号时候互斥/访问

//counter表示等待队列中的顾客人数

Cobegin{

Customer()

{

wait(mutex1);

取号码,进入队列;

signal(mutex1);

signal(counter);

}

Server()

{

wait(counter);

wait(mutex2);

从队列中取下一个号码;

signal(mutex2);

为该号码持有者服务;

}

}Coend

7.

semaphore mutex=1, empty=10, full=0, service=0;  // mutex表示互斥使用取号机

// empty表示空座位的数量

// full表示已占座位的数量

// service表示柜员是否空闲

cobegin

{

        process顾客i

        {

                wait(empty);

                wait(mutex);

                从取号机获得一个号;

                signal(mutex);

                signal(full);

                wait(service);    //等待叫号

                获得服务;

        }

        process营业员

        {

                while(TRUE)

                {

                        wait(full);

                        signal(empty);

                        signal(service);    //叫号

                        为顾客服务;

                }

        }

}

coend

B

A

D

D

D

F B

D

B

C

A

B

A

C

C

D

D

A

D

D

 

No

No

Yes

No

Yes

No

Yes

No

No

Yes

 

 

 

1.

1)处理器管理。当多个程序同时运行时,解决处理器(CPU)时间的分配问题。     (2)作业管理。完成某个独立任务的程序及其所需的数据组成一个作业。作业管理的任务主要是为用户提供一个使用计算机的界面使其方便地运行自己的作业,并对所有进入系统的作业进行调度和控制,尽可能高效地利用整个系统的资源。     (3)存储器管理。为各个程序及其使用的数据分配存储空间,并保证它们互不干扰。     (4)设备管理。根据用户提出使用设备的请求进行设备分配,同时还能随时接收设备的请求(称为中断),如要求输入信息。     (5)文件管理。主要负责文件的存储、检索、共享和保护,为用户提供文件操作的方便。操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用

 

 

8. 多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源

进程是的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,

Semephere empty=1,apple=0,orange=0,desk=1//disk代表盘子的互斥使用

Father()  //父亲

{

Wait(empty);

Wait(disk);

If(父亲放进的水果是apple)

{

Signal(apple);

}

else{

Signal(orange);

}

Signal(disk);

}

Son()//儿子

{

Wait(apple);

Wait(disk);

Eating apple;

signal(empty);

Signal(disk);

}

daughter()//女儿

{

Wait(orange);

Wait(disk);

Eating orange;

signal(empty);

Signal(disk);

}

Void main()

{

While(1){

Father();

Son();

Daughter();

}

}

5.

Semaphore run=1,stop=0,open=0,close=0

stop()//停车

{

Wait(run);

停车;

Signal(stop);

}

Opendoor()//开门

{

Wait(stop);

售票员打开门,乘客上车;

Signal(open);

}

Closedoor()//关门

{

Wait(open);

关门,售票员开始售票;

Signal(close)

}

Running()//发车

{

Wait(close);

开车;

Signal(run);

}

Void main()

{

Cobegin

Runnning()

Stop();

Opendoor();

Closedoor();

Coend

}

6.

Void customer(){While(1){Wait(mutex);取号;Signal(mutex);等待Signal(full);}}Void bank(){While(1){Wait(full);Wait(mutex);叫号Signal(mutex);服务}}Semaphore mutex=1,full=无穷Void mian(){Cobegin;Customer();bank();Coend;}

7.  

Semaphore quhaoji=1,consumernumlimit=10,mutex=1;

Int num=0;

cobegin

{wait(quhaoji)

    process  顾客i

{

从取号机获得一个号;

Wait(mutex)

Num++;

Signal(mutex);

Signal(quhaoji);

Wait(consumernumlimit);

等待叫号

获得服务;

Signal(consumernumlimt);

}

    process  营业员

{

    while(TRUE)

{

Wait(mutex)

If(num>0)

       叫号

Num--;

Signal(mutex)

       为顾客服务;

}

}

}coend