diff --git a/notes/计算机æ“�作系统.md b/notes/计算机æ“�作系统.md index 9a3dddf0..c9bcf230 100644 --- a/notes/计算机æ“�作系统.md +++ b/notes/计算机æ“�作系统.md @@ -258,10 +258,10 @@ shortest remaining time next ### 3. ÐźÅÁ¿ -**ÐźÅÁ¿£¨Samaphore£©**ÊÇÒ»¸öÕûÐͱäÁ¿£¬¿ÉÒÔ¶ÔÆäÖ´ÐÐ down ºÍ up ²Ù×÷£¬Ò²¾ÍÊdz£¼ûµÄ P ºÍ V ²Ù×÷¡£ +**ÐźÅÁ¿£¨Samaphore£©** ÊÇÒ»¸öÕûÐͱäÁ¿£¬¿ÉÒÔ¶ÔÆäÖ´ÐÐ down ºÍ up ²Ù×÷£¬Ò²¾ÍÊdz£¼ûµÄ P ºÍ V ²Ù×÷¡£ -- **down** : Èç¹ûÐźÅÁ¿´óÓÚ 0 £¬Ö´ÐÐ - 1 ²Ù×÷£»Èç¹ûÐźÅÁ¿µÈÓÚ 0£¬½«½ø³Ì˯Ãߣ¬µÈ´ýÐźÅÁ¿´óÓÚ 0£» -- **up**£º¶ÔÐźÅÁ¿Ö´ÐÐ + 1 ²Ù×÷£¬²¢ÇÒ»½ÐÑ˯ÃߵĽø³Ì£¬Èýø³ÌÍê³É down ²Ù×÷¡£ +- **down** : Èç¹ûÐźÅÁ¿´óÓÚ 0 £¬Ö´ÐÐ -1 ²Ù×÷£»Èç¹ûÐźÅÁ¿µÈÓÚ 0£¬½«½ø³Ì˯Ãߣ¬µÈ´ýÐźÅÁ¿´óÓÚ 0£» +- **up**£º¶ÔÐźÅÁ¿Ö´ÐÐ +1 ²Ù×÷£¬²¢ÇÒ»½ÐÑ˯ÃߵĽø³Ì£¬Èýø³ÌÍê³É down ²Ù×÷¡£ down ºÍ up ²Ù×÷ÐèÒª±»Éè¼Æ³ÉÔ­Ó²»¿É·Ö¸î£¬Í¨³£µÄ×ö·¨ÊÇÔÚÖ´ÐÐÕâЩ²Ù×÷µÄʱºòÆÁ±ÎÖжϡ£ @@ -287,7 +287,7 @@ void P2() { ʹÓÃÒ»¸ö»¥³âÁ¿ mutex À´¶ÔÁÙ½ç×ÊÔ´½øÐзÃÎÊ£»empty ¼Ç¼¿Õ»º³åÇøµÄÊýÁ¿£¬full ¼Ç¼Âú»º³åÇøµÄÊýÁ¿¡£ -×¢Ò⣬±ØÐëÏÈÖ´ÐÐ down ²Ù×÷ÔÙÓû¥³âÁ¿¶ÔÁÙ½çÇø¼ÓËø£¬·ñÔò»á³öÏÖËÀËø¡£Èç¹û¶¼ÏȶÔÁÙ½çÇø¼ÓËø£¬È»ºóÔÙÖ´ÐÐ down ²Ù×÷£¬¿¼ÂÇÕâÖÖÇé¿ö£ºÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøºó£¬Ö´ÐÐ down(empty) ²Ù×÷£¬·¢ÏÖ empty = 0£¬´ËʱÉú³ÉÕß˯Ãß¡£Ïû·ÑÕß´Ëʱ²»ÄܽøÈëÁÙ½çÇø£¬ÒòΪÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøÁË£¬Ò²¾ÍÎÞ·¨¶ÔÖ´ÐÐ up(empty) ²Ù×÷£¬ÄÇôÉú²úÕߺÍÏû·ÑÕ߾ͻáÒ»Ö±µÈ´ýÏÂÈ¥¡£ +×¢Ò⣬±ØÐëÏÈÖ´ÐÐ down ²Ù×÷ÔÙÓû¥³âÁ¿¶ÔÁÙ½çÇø¼ÓËø£¬·ñÔò»á³öÏÖËÀËø¡£ÒòΪÈç¹û¶¼ÏȶÔÁÙ½çÇø¼ÓËø£¬È»ºóÔÙÖ´ÐÐ down ²Ù×÷£¬ÄÇô¿ÉÄÜ»á³öÏÖÕâÖÖÇé¿ö£ºÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøºó£¬Ö´ÐÐ down(empty) ²Ù×÷£¬·¢ÏÖ empty = 0£¬´ËʱÉú³ÉÕß˯Ãß¡£Ïû·ÑÕß´Ëʱ²»ÄܽøÈëÁÙ½çÇø£¬ÒòΪÉú²úÕß¶ÔÁÙ½çÇø¼ÓËøÁË£¬Ò²¾ÍÎÞ·¨Ö´ÐÐ up(empty) ²Ù×÷£¬ÄÇôÉú²úÕߺÍÏû·ÑÕ߾ͻáÒ»Ö±µÈ´ýÏÂÈ¥¡£ ```c #define N 100 @@ -325,7 +325,7 @@ void consumer() { c ÓïÑÔ²»Ö§³Ö¹Ü³Ì£¬ÏÂÃæµÄʾÀý´úÂëʹÓÃÁËÀà Pascal ÓïÑÔÀ´ÃèÊö¹Ü³Ì¡£Ê¾Àý´úÂëÖеĹܳÌÌṩÁË insert() ºÍ remove() ·½·¨£¬¿Í»§¶Ë´úÂëͨ¹ýµ÷ÓÃÕâÁ½¸ö·½·¨À´½â¾öÉú²úÕß-Ïû·ÑÕßÎÊÌâ¡£ -```html +```pascal monitor ProducerConsumer integer i; condition c; @@ -342,13 +342,13 @@ monitor ProducerConsumer end monitor; ``` -¹Ü³ÌÓÐÒ»¸öÖØÒªÌØÐÔ£ºÔÚÒ»¸öʱ¿ÌÖ»ÄÜÓÐÒ»¸ö½ø³ÌʹÓù̡ܳ£½ø³ÌÔÚÎÞ·¨¼ÌÐøÖ´ÐеÄʱºò²»ÄÜÒ»Ö±Õ¼Óụ̀ܳ¬±ØÐ뽫½ø³Ì×èÈû£¬·ñÕ߯äËü½ø³ÌÓÀÔ¶²»ÄÜʹÓù̡ܳ£ +¹Ü³ÌÓÐÒ»¸öÖØÒªÌØÐÔ£ºÔÚÒ»¸öʱ¿ÌÖ»ÄÜÓÐÒ»¸ö½ø³ÌʹÓù̡ܳ£½ø³ÌÔÚÎÞ·¨¼ÌÐøÖ´ÐеÄʱºò²»ÄÜÒ»Ö±Õ¼Óụ̀ܳ¬·ñÕ߯äËü½ø³ÌÓÀÔ¶²»ÄÜʹÓù̡ܳ£ ¹Ü³ÌÒýÈëÁË **Ìõ¼þ±äÁ¿** ÒÔ¼°Ïà¹ØµÄ²Ù×÷£º**wait()** ºÍ **signal()** À´ÊµÏÖͬ²½²Ù×÷¡£¶ÔÌõ¼þ±äÁ¿Ö´ÐÐ wait() ²Ù×÷»áµ¼Öµ÷Óýø³Ì×èÈû£¬°Ñ¹Ü³ÌÈóöÀ´ÈÃÁíÒ»¸ö½ø³Ì³ÖÓС£signal() ²Ù×÷ÓÃÓÚ»½Ðѱ»×èÈûµÄ½ø³Ì¡£ **ʹÓùܳÌʵÏÖÉú³ÉÕß-Ïû·ÑÕßÎÊÌâ** -```html +```pascal monitor ProducerConsumer condition full, empty; integer count := 0; @@ -729,11 +729,6 @@ CSCAN # ²Î¿¼×ÊÁÏ - Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014. - - ÌÀ×Óå­, ÕÜ·ïÆÁ, ÌÀСµ¤. ¼ÆËã»ú²Ù×÷ϵͳ[M]. Î÷°²µç×ӿƼ¼´óѧ³ö°æÉç, 2001. - - Bryant, R. E., & O¡¯Hallaron, D. R. (2004). ÉîÈëÀí½â¼ÆËã»úϵͳ. - -- [СÍÁµ¶µÄÃæÊÔË¢Ìâ±Ê¼Ç](http://wdxtub.com/interview/index.html) - - [½ø³Ì¼äµÄ¼¸ÖÖͨÐÅ·½Ê½](http://blog.csdn.net/yufaw/article/details/7409596)