操作系统第2章习题课.ppt
《操作系统第2章习题课.ppt》由会员分享,可在线阅读,更多相关《操作系统第2章习题课.ppt(14页珍藏版)》请在冰豆网上搜索。
![操作系统第2章习题课.ppt](https://file1.bdocx.com/fileroot1/2022-10/7/f89301b1-37f5-4400-8ad6-bae8137e055e/f89301b1-37f5-4400-8ad6-bae8137e055e1.gif)
OperatingSystemConcepts,例1.试比较进程和程序的异同,
(1)每个进程实体中包含了程序段、数据段这两个部分,因此说进程和程序是紧密相关的。
但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即进程控制块PCB。
(2)进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建产生、由调度而执行、由撤销而消亡,即它具有一定的生命周期。
而程序则只是一组指令的有序集合,并可永久地存放在某种介质上,其本身不具有动态的含义,因此是静态的。
(3)多个进程实体可同时存放在内存中并发执行,其实这正是引入进程的目的。
而程序的并发执行具有不可再现性,因此程序不能正确地并发执行。
OperatingSystemConcepts,(4)进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。
而因程序不具有PCB,所以它是不可能在多道程序环境下独立运行的。
(5)进程和程序不一一对应。
同一个程序的多次运行,将形成多个不同的进程;同一个程序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序。
OperatingSystemConcepts,例2.试比较进程和线程的异同,
(1)线程是进程的一个组成部分。
一个进程可以有多个线程,而且至少有一个可执行线程。
(2)进程是资源分配的基本单位,它拥有自己的地址空间和各种资源。
线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而本身并不具有任何资源。
(3)进程的多个线程都在进程的地址空间内活动。
这样,在以线程为单位进行处理机调用和切换时,由于不发生资源变化特别是地址空间的变化,因此切换时间较短。
而以进程为单位进行处理机调用和切换时,由于涉及到资源转移及现场保护等问题,将导致切换时间变长和资源利用率降低。
OperatingSystemConcepts,(4)线程和进程一样,都有自己的状态和相应的同步机制。
但是,由于线程没有自己单独的程序和数据空间,因而不能像进程的程序和数据那样交换到外存去。
(5)进程的调度和控制大多由操作系统的内核完成,而线程的控制即可以由操作系统的内核完成,也可以由用户控制完成。
OperatingSystemConcepts,例3:
a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:
当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入,当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。
请用信号量为工具,对ab段实现正确管理以保证行驶安全。
OperatingSystemConcepts,解析:
读者写着问题的变形。
我们设置3个信号量S1、S2和Sab,分别用于从a点进入的车互斥访问共享变量ab(用于记录当前ab段上由a点进入的车辆的数量),从b点进入的车互斥访问共享变量ba(用于记录当前ab段上由b点进入的车辆的数量)和a、b点的车辆互斥进入ab段。
3个信号量的初值分别为1、1和1,两个共享变量ab和ba的初值分别为0、0。
OperatingSystemConcepts,SemaphoreS1=1,S2=1,Sab=1;intab=ba=0;voidPab()while
(1)wait(S1);if(ab=0)wait(Sab);ab=ab+1;signal(S1);车辆从a点驶向b点;wait(S1);ab=ab-1;if(ab=0)signal(Sab);signal(S1);,OperatingSystemConcepts,voidPba()while
(1)wait(S2);if(ba=0)wait(Sab);ba=ba+1;signal(S2);车辆从b点驶向a点;wait(S2);ba=ba-1;if(ba=0)signal(Sab);signal(S2);main()cobeginPab();Pba();,OperatingSystemConcepts,例4:
桌子上有一只盘子,每次只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用PV操作实现他们之间的同步机制。
OperatingSystemConcepts,SemaphoreS=1,S1=S2=0;voidfather()while
(1)准备苹果;wait(S);将苹果放在盘子内;signal(S1);,OperatingSystemConcepts,voidmother()while
(1)准备橘子;wait(S);将橘子放在盘子内;signal(S2);,OperatingSystemConcepts,voiddaughter()while
(1)wait(Sl);从盘子里拿走苹果;signal(S);吃苹果;,OperatingSystemConcepts,voidson()while
(1)wait(S2);从盘子里拿走橘子;signal(S);吃橘子;,OperatingSystemConcepts,main()cobeginfather();mother();daughter();son();,