操作系统计算题总结(共17页).doc
《操作系统计算题总结(共17页).doc》由会员分享,可在线阅读,更多相关《操作系统计算题总结(共17页).doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上应用类型知识要点一:进程同步问题整形信号量:未遵循“让权等待原则”wait(S): while S<=0 do no-op; S:=S-1;signal(S): S:=S+1记录型信号量:执行wait操作时,信号量的值加1,信号量的值小于0时阻塞;执行signal操作时,信号量的值减1,信号量的值小于等于0时唤醒阻塞中的进程。type semaphore=record value:integer; L:list of process; endprocedure wait(S)var S:semaphore;beginS.value=S.value-1;if S.
2、value<0 then block(S.L);endprocedure signal(S)var S:semaphore;beginS.value:=S.value+1;if S.value<=0 then wakeup(S.L);endØ 生产者-消费者问题Ø 读者-写者问题Ø 哲学家进餐问题Ø 理发室问题进程同步问题求解要领Ø 认真审题、确立信号量及关键变量Ø 构建算法基本步骤及逻辑结构Ø 资源信号量申请先于互斥信号量申请Ø wait操作与signal操作配对出现利用信号量实现互斥主程序子程序Va
3、r mutex:semaphore:=1;beginparbeginprocess1;process2;parendendprocess1beginrepeatwait(mutex);临界区signal(mutex);until falseendprocess2beginrepeatwait(mutex);临界区signal(mutex)until falseend1. 互斥信号量初值为12. 互斥信号量wait和signal肯定出现在同一进程中,并出现在需要互斥访问数据(临界资源)前后利用信号量描述前趋关系Var a,b,c,d,e,f,g,h:semaphore:=0,0,0,0,0,0,
4、0,0;beginparbeginbegin S1;signal(a);signal(b);endbegin wait(a);S2;signal(c);signal(d);endbegin wait(b);S3;signal(e);endbegin wait(c);S4;signal(f);endbegin wait(d);S5;signal(g);endbegin wait(e);S6;signal(h);endbegin wait(f);wait(g);wait(f);S7;endparendendS1S2S3S4S5S6S7abcdefhg首先应找出所有的前趋关系。然后,对每一种前趋关系
5、,如Si->Sj,专门设置一初值为0的信号量,并在Si结束之后执行对该信号量的signal操作,而在Sj开始之前执行对该信号量的wait操作,这样便可保证程序段Si执行完后才执行程序段Sj。生产者-消费者问题主程序(n为常量)Var buffer:array0,n-1 of item;in, out: integer:=0,0;mutex,empty,full:semaphore:=1,n,0;beginparbeginproducer1;produceri;producerM;consumer1;consumerj;consumerN;parendend生产者子程序消费者子程序prod
6、uceriVar nextp:item;beginrepeatProduce an item in nextp;wait(empty);wait(mutex);bufferin:=nextp;in=(in+1)mod n;signal(mutex);signal(full);until falseendconsumerjVar nextc:item;beginrepeatwait(full);wait(mutex);nextc:=bufferout;out:=(out+1) mod n;signal(mutex);signal(empty);Consume the item in nextc;
7、until falseend生产者子程序(基于AND信号量)消费者子程序(基于AND信号量)produceribeginrepeatProduce an item in nextp;Swait(empty, mutex);bufferin=nextp;in:=(in+1) mod n;Signal(mutex, full);until falseendconsumerjbeginrepeatSwait(full,mutex);nextc:=bufferout;out:=(out+1) mod n;Ssignal(mutex, empty);Consume the item in nextc;u
8、ntil falseend读者-写者问题(读者优先)主程序Var readercount:integer:=0;rcmutex,wmutex:semaphore:=1,1;beginparbeginreader1;readeri;readerM;writer1;writerj;writerN;parendend读者readeribeginrepeatwait(rcmutex);if readercount=0 then wait(wmutex);readercount:=readercount+1;signal(rcmutex);Perform read operation;wait(rcmu
9、tex);readercount:=readercount-1;if readercount=0 then signal(wmutex);signal(rcmutex);until falseend写者writerjbeginrepeatwait(wmutex);Perform write operation;signal(wmutex);until false;endreadercount:读者数rcmutex:读者进程中用于readercount变量的互斥访问wmutex:用于读者与写者、写者与写者之间的互斥访问写者与第一个读者竞争wmutex。一旦读者获得wmutex,那么直到所有读者执
10、行结束由最后一个读者释放,而每个写者执行结束都释放,所以读者优先写者执行。读者-写者问题(写者优先)主程序Var readercount,writercount:integer:=0,0;rcmutex,wcmutex,wmutex,S:semaphore:=1,1,1,1;beginparbeginreader1;readeri;readerM;writer1;writerj;writerN;parendend读者readeribeginrepeatwait(S);wait(rcmutex);if readercount=0 then wait(wmutex);readercount:=re
11、adercount+1;signal(rcmutex);signal(S);Perform read operation;wait(rcmutex);readercount:=readercount-1;if readercount=0 then signal(wmutex);signal(rcmutex);until false;end写者writerjbeginrepeatwait(wcmutex);if writercount=0 then wait(S);writercount:=writercount+1;signal(wcmutex);wait(wmutex);Perform wr
12、ite operation;signal(wmutex);wait(wcmutex);writercount:=writercount-1;if writercount=0 then signal(S);signal(wcmutex);until falseendrcmutex:读者进程中用于readercount变量的互斥访问wcmutex:写者进程中用于writercount变量的互斥访问wmutex: 用于读者与写者、写者与写者之间的互斥访问读者与第一个写者竞争S信号量。一旦读者获得S信号量,那么直到所有读者执行结束由最后一个写者释放,而每个读者执行结束都释放,所以写者优先读者执行。读者
13、-写者问题(限定读者数)主程序Var RN:integer:=10;rmax,wmutex:semaphore:=RN,1;beginparbeginreader1;readeri;readerM;writer1;writerj;writerN;parendend读者readeribeginrepeat=Swait(rmax,1,1,wmutex,1,0);Swait(rmax,1,1);Swait(wmutex,1,0);Perform read operation;Ssignal(rmax,1);until false;end写者writerjbeginrepeatSwait(wmutex
14、,1,1, rmax,RN,0);Perform write operationSignal(wmutex);until falseendRN:限定最多同时读的读者数rmax:空位置的数目,即系统还允许执行读操作的读者数,超过这个数目后读者将等待wmutex: 用于读者与写者、写者与写者之间的互斥访问读者执行Swait(wmutex,1,0)保证无写者(wmutex值保持不改变)写者执行Swait(wmutex,1,1,rmax,RN,0)保证既无写者在写又无读者在读(rmax值保持不变)哲学家进餐问题主程序Var chopstick:array0,4 of semaphore:=1,1,1,
15、1,1;beginparbeginphilosopher0;philosopheri; philosopher4;parendend哲学家进餐问题子程序基于AND信号量机制philosopheribeginrepeatThink;Swait(chopstick(i+1) mod 5,chopsticki);Eat;Ssignal(chopstick(i+1)mod 5,chopsticki);until falseend哲学家进餐问题子程序限制哲学家同时进餐人数philosopherivar pmax:semaphore:=4;beginrepeatwait(pmax);wait(chopst
16、icki);wait(chopstick(i+1) mod 5);Eat;signal(chopstick(i+1) mod 5);signal(chopsticki);signal(pmax);Think;until falseend理发师问题描述如下:理发店包含一间接待室和一间工作室,接待室内有n(n>=1)把椅子,而工作室只有一把椅子。如果没有顾客,理发师就去睡觉,如果顾客来时所有的椅子都有人,那么顾客离去;如果理发师在忙且接待室有空闲的椅子,那么此顾客会坐在其中一把空闲的椅子上等待;如果理发师在睡觉,则顾客会唤醒他。请采用信号量机制解决该理发师问题(可采用伪代码描述)。解:要求描
17、述理发师和顾客的行为,因为需要两类进程Barber()和Customer()分别描述理发师和顾客的行为。理发师和顾客之间是同步的关系,理发师和椅子使临界资源,所以顾客之间是互斥的关系。引入3个信号量和一个控制变量:Ø 控制变量waiting也用于记录等候的顾客数,实际上是customers的一份拷贝。之所以使用waiting是因为无法读取信号量的当前值,初值均为0。Ø 信号量customers用来记录等候理发的顾客数(不包括正在理发的顾客),并用作阻塞理发师进程,初值为0。Ø 信号量barbers用来记录正在等候顾客的理发师数(为0或1),并用作阻塞顾客进程,初值
18、为0。Ø 信号量mutex用于对waiting的访问进行互斥,初值为1。进入理发店的顾客必须先看等候的顾客数,如果少于椅子数(n),他坐下来等,否则他就离开。PV操作代码如下: int waiting=0; / 等候理发的顾客数(还没理发的), 0nsemaphore customers=0, barbers=0, mutex=1; barber() while(TRUE) / 理完一人,还有顾客吗? P(customers); / 若无顾客,理发师睡眠P(mutex); / 进程互斥waiting := waiting -1; / 等候顾客数少一个V(barbers); / 理发师
19、去为一个顾客理发V(mutex); / 开放临界区 cut-hair( ); / 正在理发(非临界区操作) customer() /顾客进入理发店P(mutex); /进程互斥if (waiting < n) /还有空位 waiting := waiting+1; /等候顾客数加1V(customers); /有顾客了,如果理发师在睡则唤醒V(mutex);/开放临界区P(barbers); /无理发师, 顾客坐着养神get-haircut( ); /一个顾客坐下等待理发 else V(mutex);/顾客已满,离开应用类型知识要点二:分页存储地址结构及地址变换Ø 分页存储管理
20、地址结构(由硬件机制决定) 31 12 11 0页 号页内地址Ø 逻辑地址与页号及页内偏移地址之间的换算PageNo=INTAddr/PageLengthPageOffset=Addr mod PageLength举例:对于1KB页面,若给定逻辑地址2170B,则PageNo=2,PageOffset=122Ø 地址变换任务 关键在于页号到物理块号之间的转变Ø 地址映射某虚拟存储器的用户编程空间共32个页面,每页1K,主存为16K。假定某时刻用户页表中已调入主存的页面的虚页号和物理页号对照表如图所示,则当虚地址为十六进制0A5C时,对应的物理地址是多少?虚页号物理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 算题 总结 17
限制150内