²Ù×÷ϵͳ×ÛºÏÁ·Ï° µÚ 21 Ò³ ¹² 28 Ò³
20£®¼ÙÈçÄãÊÇÒ»¸öÈí¼þ¹¤³Ìʦ£¬Éè¼ÆÒ»¸öÎÄ×Ö´¦Àí³ÌÐò£¬¸Ã³ÌÐò¿Éͬʱ¶ÔÒ»¸öÎı¾½øÐб༡¢´òÓ¡¡¢Óï·¨¼ì²éµÈ¡£
£¨1£©¶Ô¸Ã³ÌÐò²ÉÓöàÏß³ÌÄ£ÐÍ»¹ÊÇ¶à½ø³ÌÄ£Ðͺ㿼òµ¥ËµÃ÷ÀíÓÉ¡£ £¨2£©ÓÐÈË˵¶Ô¸ÃÉè¼ÆÎÊÌâ¡£½ø£¨Ïߣ©³Ì¼äͨÐſɲÉÓù²ÏíÄڴ淽ʽ£¬ÆäÓŵãÊÇËٶȿ졣ÕâÖÖͨÐÅ·½Ê½µÄÉè¼ÆÄѵãÔÚÄö·½Ã棿 ´ð£º£¨1£©¸Ã³ÌÐòÒ˲ÉÓÃÏß³Ìģʽ£¬ÒòΪ´ËÉè¼ÆÎÊÌâ¡°×ÔÈ»µÄ¡±¾ßÓй²ÏíÊý¾ÝµÄÌØµã£¬ÓëÏ̵߳ÄÌØµã×ÔÈ»ÎǺϡ£ £¨2£©ÄѵãÔÚ½ø³Ì»¥³â¡¢Í¬²½¡¢ËÀËø´¦Àí¡£
ÕâÊÇÒ»µÀ¿ª·ÅÐ͵ÄÌâÄ¿£¬°´´ð°¸µÄºÏÀíÐÔ¸ø·Ö¡£
21ij²Ù×÷ϵͳÌṩÁËÁ¬Ðø½á¹¹¡¢Á´½Ó½á¹¹¡¢Ë÷Òý½á¹¹ÈýÖÖ´ÅÅÌÎļþ½á¹¹£¬ÏÖÓÐÒ»¼Ç¼ÐÍÂß¼Îļþ£¨±ÈÈçѧÉúѧ¼®Îļþ£©£¬¼Ù¶¨¸ÃÎļþÏÖÓÐÊýǧÌõ¼Ç¼£¬ÒÔºó½«ÓÐÊýÍòÌõ¼Ç¼¡£ ÎÊ£º£¨1£©¸ÃÂß¼Îļþ×îÊʺÏÉÏÊöÈýÖÖ´ÅÅÌÎļþ½á¹¹µÄÄÄÒ»ÖÖ£¿Çë¼òµ¥ËµÃ÷ÀíÓÉ¡£
£¨2£©¼Ù¶¨¸ÃÂß¼ÎļþÆðʼÂß¼¿é±àºÅΪ1£¬¸ÃÎļþÒÑ´ò¿ª£¬ÆäFCBµÈËùÓÐÎļþ¹ÜÀíÐÅÏ¢¶¼ÒÑÔÚÄڴ棬¶øÎļþÊý¾ÝÈ«²¿ÔÚ´ÅÅÌÉÏ, ¸ÃÎļþÏÖλÓÚµÚ1¸öÂß¼¿é£¬ÈçÒª·ÃÎʵÚN¸öÂß¼¿é£¨N>1£©£¬Ê¹ÓÃÄãËùÑ¡ÔñµÄ´ÅÅÌÎļþ½á¹¹£¬Ðè´Ó´ÅÅÌÉ϶Á¼¸¸öÎïÀí¿é£¿ ´ð£º£¨1£©Ë÷Òý½á¹¹¡£Îļþ¶¯Ì¬Ôö³¤ÐԺã¬Êý¾ÝËæ»ú·ÃÎÊËٶȿ졣 £¨2£©¶Á1¸öÎïÀí¿é£¬´ÓË÷Òý±í£¨°´ÌâÒ⣬Ë÷Òý±íΪÎļþ¹ÜÀíÐÅÏ¢£¬ÒÑÔÚÄڴ棩ÖвéÕÒNºÅÂß¼¿é¶ÔÓ¦µÄÎïÀí¿é£¬´Ó´ÅÅ̶Á³ö¶ÔÓ¦µÄ1¸öÎïÀí¿é¡£
22 WindowsÓÐÕâÑùÒ»¸ö¹¦ÄÜ£ºµ±ÄãʹÓÃij³ÌÐò´´½¨Ò»¸öÎļþ£¨±ÈÈçÓüÇʱ¾³ÌÐò´´½¨Ò»¸öÎı¾Îļþ£©£¬Ï´δò¿ª¸ÃÎļþʱ£¬»á×Ô¶¯µ÷Óô´½¨¸ÃÎļþµÄ³ÌÐò´ò¿ª¸ÃÎļþ£¨±ÈÈç´ò¿ªÒ»¸öÎı¾Îļþʱ»á×Ô¶¯ÓüÇʱ¾³ÌÐò´ò¿ª¸ÃÎļþ£©¡£Èç¹ûÈÃÄãÍê³É´Ë¹¦ÄܵÄÉè¼Æ£¬ÄãµÄ»ù±¾Ë¼Â·ÊÇʲô£¿
´ð£º¸øÎļþ¿ØÖÆ¿éFCB¼ÓÒ»¸ö´´½¨ÕßÊôÐÔ£¬¸ÃÊôÐÔ±êʾ´´½¨±¾ÎļþµÄ³ÌÐòÃû£¬´ò¿ªÎļþʱ´ÓFCBÕÒ´´½¨ÕßÊôÐÔÆô¶¯ÏàÓ¦³ÌÐò¡£
²Ù×÷ϵͳ×ÛºÏÁ·Ï° µÚ 22 Ò³ ¹² 28 Ò³
Èý¡¢×ÛºÏÌâ
1 ij¾ÍÐ÷¶ÓÁÐÖÐÒÑÓÐÒÔϽø³ÌµÈ´ýµ÷¶È£º
Process CPU Õó·¢ÆÚ ÓÅÏȼ¶£¨ÊýԽСÓÅÏȼ¶Ô½¸ß£© P1 24 3 P2 3 2 P3 3 1
£¨1£©ÔÚ²»¿¼ÂÇÕâЩ½ø³Ìµ½´ï¾ÍÐ÷¶ÓÁÐʱ¼äÏȺóµÄǰÌáÏ£¨¼Ù¶¨ËüÃÇͬʱµ½´ï£©£¬·Ö±ð»³ö¼°¼ÆËã
¶Ì×÷ÒµÓÅÏÈËã·¨¡¢Ñ»·ÂÖתËã·¨£¨Ê±¼äƬΪ4£©¡¢¾²Ì¬ÓÅÏÈÊýËã·¨µÄ¸ÊÌØÍ¼¼°Æ½¾ùµÈ´ýʱ¼ä¡£[×¢£ºµÈ´ýʱ¼ä=ÖÜתʱ¼ä-CPUÕ󷢯Ú] £¨2£©ÉÏÊöÈýÖÖËã·¨£¬ÄÄÖÖË㷨ʵÓÃÐÔ×î²î£¿¼òµ¥ËµÃ÷ÀíÓÉ¡£
£¨3£©ÉÏÊöÈýÖÖËã·¨£¬ÄÄЩËã·¨¿Ï¶¨ÊÇÇÀռʽµÄ£¿ÄÄЩËã·¨¼È¿ÉÒÔÊÇÇÀռʽµÄÒ²¿ÉÒÔÊÇ·ÇÇÀռʽµÄ£¿ ´ð£º £¨1£©
¶Ì×÷ÒµÓÅÏÈËã·¨ P2 P3 P1 0 3 6 30 Waiting time for P1 = 6; P2 = 0; P3 = 3 Average waiting time: (6 + 0 + 3)/3 = 3 Ñ»·ÂÖתËã·¨£¨Ê±¼äƬΪ4£© P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 The waiting time is :
P1=30-24=6; P2=7-3=4; P3=10-3=7 The average waiting time is (6+4+7)/3=5.66 ¾²Ì¬ÓÅÏÈÊýËã·¨ P3 P2 P1 0 3 6
Waiting time for P1 = 6; P2 = 3; P3 =0 Average waiting time: (6 + 3 + 0)/3 = 3
²Ù×÷ϵͳ×ÛºÏÁ·Ï° µÚ 23 Ò³ ¹² 28 Ò³
£¨2£©¶Ì×÷ÒµÓÅÏÈË㷨ʵÓÃÐÔ×î²î£¬ÒòΪʵ¼ÊÖкÜÄÑÖªµÀ½ø³ÌµÄCPUÕó·¢Ê±¼ä¡£
£¨3£©Ñ»·ÂÖתËã·¨¿Ï¶¨ÊÇÇÀռʽµÄ£¬ÆäËüÁ½ÖÖËã·¨¼È¿ÉÒÔÊÇÇÀռʽµÄÒ²¿ÉÒÔÊÇ·ÇÇÀռʽµÄ¡£
²Ù×÷ϵͳ×ÛºÏÁ·Ï° µÚ 24 Ò³ ¹² 28 Ò³
2£®¹ØÓÚÐéÄâÄÚ´æ¼¼ÊõµÄ¼¸ÖÖÒ³ÃæÌÔÌËã·¨¡£
ÎÊ£¨1£©×î¼ÑÌÔÌËã·¨ÔÚʵ¼Ê²Ù×÷ϵͳÖÐÓÐʹÓüÛÖµÂð£¿ÎªÊ²Ã´£¿¸ÃËã·¨ÓкÎÒâÒ壿
£¨2£©Êµ¼Ê²Ù×÷ϵͳÖг£ÓÃ×î½ü×îÉÙʹÓõÄÏÈÌÔÌ(Least Recently Used£¬LRU)Ëã·¨£¬¸ÃËã·¨Óë×î¼ÑÌÔÌËã·¨ÓкÎÁªÏµ£¿£¨ÎÞÐ軳öÒ³ÃæÖû»Í¼£©
£¨3£©³ýÁËÓÃÓÚÐéÄâÄÚ´æµÄÒ³ÃæÌÔÌ£¬LRUËã·¨»¹¿ÉÓÃÔÚÄÄЩ·½Ã棬ÊÔ¾ÙÒ»Àý¡£ ´ð£º
£¨1£©ÕâÖÖÌÔÌËã·¨µÄÒ³¹ÊÕÏÂÊ×îµÍ, ÊÇ×îÀíÏëµÄÌÔÌËã·¨¡£È»¶øËüÊDz»ÄÜʵÏÖµÄ, ÕâÊÇÒòΪÎÞ·¨×¼È·Ô¤ÆÚÄÚ´æÒ³Ãæ¡°½«À´¡°µÄ·ÃÎÊÇé¿ö¡£¾¡¹ÜÈç´Ë£¬¸ÃËã·¨ÈÔÈ»ÊÇÓÐÒâÒåµÄ,Ëü¿ÉÒÔ×÷ΪºâÁ¿ÆäËüËã·¨ÓÅÁÓµÄÒ»¸ö±ê×¼¡£
£¨2£©LRUË㷨ʹÓÃÒ³Ãæ×îºóÒ»´Î±»·ÃÎʵÄʱ¼ä,ÊÇÏòºó¿´µÄ£¬Õâ¾ÍÓÐÁËË㷨ʵÓõĿÉÐÐÐÔ¡£Èç¹ûÉèR(S)ÎªÒ³Ãæ·ÃÎÊÐòÁÐSµÄ·´Ðò, ¿ÉÒÔ˵Ã÷: OPTËã·¨ÓÃÓÚSÉϵÄpage fault trap£½LRUËã·¨ÓÃÓÚR(S)ÉϵÄpage fault trap¡£
£¨3£©CACHEºÍ¿ì±í£¨TLB£©
²Ù×÷ϵͳ×ÛºÏÁ·Ï° µÚ 25 Ò³ ¹² 28 Ò³
3. ÊÔÓÃÐźÅÁ¿¼°PV²Ù×÷д³öÓн绺³åÇøÉú²úÕß¡ªÏû·ÑÕßÎÊÌâµÄ½â ´ð£º Éú²úÕß½ø³Ì£º Ïû·ÑÕß½ø³Ì£º do { ¡ do { produce an item in nextp wait(full) ¡ wait(mutex); wait(empty); ¡ wait(mutex); remove an item from buffer to ¡ nextc add nextp to buffer ¡ ¡ signal(mutex); signal(mutex); signal(empty); signal(full); ¡ } while (1); consume the item in nextc } while (1);
4. ÊÔÓÃÐźÅÁ¿¼°PV²Ù×÷д³öÎ޽绺³åÇøÉú²úÕß¡ªÏû·ÑÕßÎÊÌâµÄ½â ´ð£º Éú²úÕß½ø³Ì£º Ïû·ÑÕß½ø³Ì£º do { ¡ do { produce an item in nextp wait(full) ¡ wait(mutex); wait(mutex); ¡ ¡ remove an item from buffer to add nextp to buffer nextc ¡ ¡ signal(mutex); signal(mutex); signal(full); ¡ } while (1); consume the item in nextc } while (1);