´ð£º UNIX Äں˽ṹ·ÖËIJ㣺×îµ×²ãÊÇÓ²¼þ£¬´Îµ×²ãÊÇ ¿Ú
OS ºËÐÄ£¬µÚ¶þ²ãÊÇ OS ÓëÓû§½Ó
shell ¼° ±à Òë ³Ì Ðò µÈ £¬ ×î ¸ß ²ã ÊÇ Ó¦ Óà ³Ì Ðò ¡£3£® UNIX ϵͳÖеÄPCB º¬Ä¿·Ö£¿ÓÃͼ˵Ã÷¸÷²¿·ÖÖ®¼äµÄ¹ØÏµ¡£´ð£º UNIX
ϵͳÖÐµÄ PCB º¬½ø³Ì±íÏî¡¢ U Çø¡¢ÏµÍ³Çø±í¡¢½ø³ÌÇø±í¡£
4£®½ø³ÌÓ³Ïñº¬Ä¿·Ö£¿ÆäÖÐϵͳ¼¶ÉÏ¡¢ÏÂÎĶ¯Ì¬²¿·ÖµÄ×÷ÓÃÊÇʲô£¿ ´ð£º½ø³ÌÓ³Ïñº¬Óû§ÉÏÏÂÎÄ¡¢¼Ä´æÆ÷ÉÏÏÂÎÄ¡¢ÏµÍ³¼¶ÉÏÏÂÎÄ¡£
ϵͳ¼¶ÉÏÏÂÎĶ¯Ì¬²¿·ÖµÄ×÷ÓÃÊǵ±ÒòÖжϻòϵͳµ÷ÓýøÈëºËÐÄ״̬ʱ£¬ºËÐİÑÒ»¸ö¼Ä´æ Æ÷ÉÏÏÂÎÄѹÈëºËÐÄÕ»£¬Í˳öϵͳµ÷ÓÃʱ£¬
ºËÐÄÓÖµ¯³ö¼Ä´æÆ÷ÉÏÏÂÎÄ£¬ÔÚÉÏÏÂÎÄÇл»Ê±£¬
ºËÐÄ
½«Ñ¹ÈëÀϽø³ÌµÄÉÏÏÂÎÄ£¬µ¯³öнø³ÌµÄÉÏÏÂÎÄ¡£
5£®ÔÚ UNIX ϵͳÖÐÓÃÓÚ½ø³Ì¿ØÖƵÄÖ÷Ҫϵͳµ÷ÓÃÓÐÄÄЩ£¿ËüÃǸ÷×ÔµÄÖ÷Òª¹¦ÄÜÊÇʲô£¿ ´ð£ºÓÃÓÚ½ø³Ì¿ØÖƵÄÖ÷Ҫϵͳµ÷ÓÃÓУº £¨1£© £© fork ϵͳµ÷ÓãºÓÃÓÚ´´½¨Ð½ø³Ì £¨2£© £© exit ϵͳµ÷ÓãºÊµÏÖ½ø³Ì×ÔÎÒÖÕÖ¹ £¨3£© £© exec ϵͳµ÷Óãº¸Ä±ä½ø³ÌÔÓдúÂë
£¨4£© £© wait ϵͳµ÷Ó㺽«µ÷Óýø³Ì¹ÒÆð²¢µÈ´ý×Ó½ø³ÌÖÕÖ¹ 6£®Îª´´½¨Ò»¸öнø³Ì£¬Ðë×öÄÄЩ¹¤×÷£¿
´ð£ºÎªÐ½ø³Ì·ÖÅäÒ»¸ö½ø³Ì±íÏîºÍ½ø³Ì±êÖ¾·û£» ¼ì²éͬʱÔËÐеĽø³ÌÊýÄ¿£» ¿½±´½ø³Ì±íÏîÖеÄÊý¾Ý£»×Ó½ø³Ì¼Ì³Ð¸¸½ø³ÌµÄËùÓÐÎļþ£»Îª×Ó½ø³Ì´´½¨½ø³ÌÉÏÏÂÎÄ£»×Ó½ø³ÌÖ´ÐС£ 7£®ÎªºÎÒª²ÉÈ¡½ø³Ì×ÔÎÒÖÕÖ¹·½Ê½£¿ÈçºÎʵÏÖ
exit £¿
Unix ÄÚºËÓà exit ʵÏÖ
´ð£ºÎªÁ˼°Ê±»ØÊÕ½ø³ÌÕ¼ÓõÄ×ÊÔ´£¬ÔÚ½ø³ÌÈÎÎñÍê³ÉºóÓ¦¾¡¿ì³·Ïú¡£
½ø³ÌµÄ×ÔÎÒÖÕÖ¹¡£ ¸¸½ø³ÌÔÚ´´½¨×Ó½ø³Ìʱ£¬ Ó¦ÔÚ×Ó½ø³Ìĩβ°²ÅÅ exit ʹ×Ó½ø³ÌÄÜ×ÔÎÒÖÕÖ¹¡£ÊµÏÖ exit µÄ¾ßÌå²Ù×÷ÊÇ£º¹Ø±ÕÈíÖжϡ¢»ØÊÕ×ÊÔ´¡¢Ð´¼ÇÕËÐÅÏ¢ºÍÖýø³ÌΪ½©ËÀ״̬¡£ 8£®ÔÚ UNIX ϵͳÖвÉÓÃÁ˺ÎÖÖµ÷¶ÈËã·¨£¿ÈçºÎÈ·¶¨½ø³ÌµÄÓÅÏÈÊý£¿ ´ð£º UNIX ϵͳ²ÉÓö¯Ì¬ÓÅÏÈÊýÂÖתµÄ½ø³Ìµ÷¶ÈËã·¨¡£ÓÅÏÈÊýÈ·¶¨¹«Ê½£ºÓÅÏÈÊý =£¨×î½üʹÓà CPU µÄʱ¼ä /2 £© +»ù±¾Óû§ÓÅÏÈÊý 9£®ÔÚ½øÈë sleep ¹ý³Ìºó£¬ÄÚºËÓ¦×öÄÄЩ´¦Àí£¿
´ð£º½øÈë sleep ¹ý³Ìºó£¬ºËÐÄÊ×Ïȱ£´æ½øÈë˯ÃßʱµÄ´¦Àí»úÔËÐм¶£¬
Ìá¸ß´¦Àí»úµÄÔËÐÐÓÅÏÈ
½«¸Ã½ø³Ì·ÅÈë˯
¼¶ÆÁ±ÎËùÓÐÖжϣ¬ ½«¸Ã½ø³ÌÖÃΪ˯Ãß״̬£¬ ½«Ë¯ÃßµØÖ·±£´æÔÚ½ø³Ì±íÏîÖУ¬ Ãß¶ÓÁС£Èç¹û½ø³ÌµÄ˯Ãß²»¿ÉÖжϣ¬
ÔÚ½ø³ÌÉÏÏÂÎÄÇл»ºó£¬½ø³Ì±ã°²ÎÈ˯Ãß¡£µ±½ø³Ì±»»½ÐÑ
²¢±»µ÷¶ÈÖ´ÐУ¬½«»Ö¸´´¦Àí»úµÄÔËÐм¶Îª½øÈë˯ÃßʱµÄÖµ£¬´ËʱÔÊÐíÖжϴ¦Àí»ú¡£ 10 £®ÊÔ˵Ã÷ÐźÅÓëÖжÏÁ½ÖÖ»úÖÆ¼äµÄÒìͬ´¦¡£
´ð£º²»Í¬µã :ÖжÏÓÐÓÅÏȼ¶£¬¶øÐźÅûÓУ¬ËùÓÐÐÅºÅ½ÔÆ½µÈ£»ÐźŴ¦Àí³ÌÐòÔÚÓû§Ì¬ÔËÐУ¬¶øÖжϴ¦Àí³ÌÐòÊÇÔÚºËÐÄ̬ÔËÐУ»»¹ÓÐÖжÏÏìÓ¦¼°Ê±£¬¶øÐźÅÏìӦͨ³£¶¼ÊÇÑÓʱµÄ¡£
Ïàͬµã£º¶¼²ÉÓÃÒ첽ͨÐÅ·½Ê½£»µ±¼ì²â³öÐźŻòÖжÏÇëÇóʱ¶¼ÔÝÍ£ÕýÔÚÖ´ÐеijÌÐò¶ø×ªÈ¥Ö´ÐÐÏàÓ¦µÄ´¦Àí³ÌÐò£»¶¼ÔÚ´¦ÀíÍê±Ï·µ»Øµ½ÔÀ´¶Ïµã£»¶ÔÐźŻòÖж϶¼¿É½øÐÐÆÁ±Î¡£ 11 £®¶óҪ˵Ã÷ÐźŻúÖÆÖÐÐźŵķ¢ËͺͶÔÐźŵĴ¦Àí¹¦ÄÜ¡£ ´ð£ºÐźŷ¢ËÍÊÇÖ¸ÓÉ·¢Ëͽø³Ì°ÑÐźÅË͵½Ä¿±ê½ø³ÌµÄ ¶ÔÐźŵĴ¦Àí¹¦ÄÜ£ºÊ×ÏÈÀûÓÃϵͳµ÷ÓÃ
proc ½á¹¹ÖÐÐźÅÓòµÄijһλÉÏ¡£
signal £¨sig £¬ func £©Ô¤ÖöÔÐźŵĴ¦Àí·½Ê½£¬
func Ϊ·Ç 0 ·Ç 1 ʱ£¬ func
´¦ÀíÍê±ÏÔÙ
func=1 ʱÆÁ±Î¸ÃÀàÐźţ» func=0 ʱ£¬½ø³ÌÊÕµ½ÐźźóÖÕÖ¹×Ô¼º£»
Öµ×÷ΪÐźŴ¦Àí³ÌÐòµÄÖ¸Õ룬 ϵͳ´ÓºËÐÄ̬תΪÓû§Ì¬²¢Ö´ÐÐÏàÓ¦µÄ´¦Àí³ÌÐò£¬ ·µ»ØÓû§³ÌÐòµÄ¶Ïµã´¦¡£
12 £®Ê²Ã´ÊǹܵÀ£¿ÎÞÃû¹ÜµÀºÍÓÐÃû¹ÜµÀµÄÖ÷Òª²î±ðÊÇʲô£¿ ´ð£º¹ÜµÀÊÇÖ¸ÄÜÁ¬½Óд½ø³ÌºÍ¶Á½ø³Ì£¬
²¢ÔÊÐíËüÃÇÒÔÉú²úÕßÏû·ÑÕß·½Ê½½øÐÐͨÐŵÄÒ»¸ö¹²Ïí
Îļþ»ò pipe Îļþ¡£ÎÞÃû¹ÜµÀÊǸöÁÙʱÎļþ£¬ÊÇÀûÓÃϵͳµ÷ÓÃ
pipe £¨£©½¨Á¢ÆðÀ´µÄÎÞ·¾¶Ãû
Îļþ£¬Ö»Óе÷Óà pipe µÄ½ø³Ì¼°Æä×ÓËï½ø³Ì²ÅÄÜʶ±ð´ËÎļþÃèÊö·û¶øÀûÓøÃÎļþ£¨¹ÜµÀ£©½ø ÐÐͨÐÅ£»ÓÐÃû¹ÜµÀÊÇÀûÓÃ
mknod ϵͳµ÷Óý¨Á¢µÄ¡¢¿ÉÒÔÔÚÎļþϵͳÖг¤ÆÚ´æÔÚµÄÓз¾¶Ãû
Îļþ£¬ÆäËü½ø³Ì¿ÉÒÔÖªµÀÆä´æÔÚ£¬²¢ÀûÓøÃ·¾¶Ãû·ÃÎʵÄÎļþ¡£ 13 £®ÔÚ¶Á¡¢Ð´¹ÜµÀʱ£¬Ó¦×ñÑÄÄЩ¹æÔò£¿´ð£º£¨ 1£©¶Ô pipe Îļþ´óСµÄÏÞÖÆ £¨2 £©½ø³Ì»¥³â
£¨3 £©½ø³Ìд¹ÜµÀʱÔڹܵÀ¿Õ¼äÉÏÂú×ãÉú²úÕß²Ù×÷¹æÔò £¨4 £©½ø³Ì¶Á¹ÜµÀʱÔڹܵÀ¿Õ¼äÉÏÂú×ãÏû·ÑÕß²Ù×÷¹æÔò 14 £®ÔÚÏûÏ¢»úÖÆÖÐÓÐÄÄЩϵͳµ÷Óã¿ËµÃ÷ËüÃǵÄÓÃ;¡£ ´ð£ºÔÚÏûÏ¢»úÖÆÖеÄϵͳµ÷ÓÃÊÇ
msgctl( ) ¡¢msgsnd( ) ¡¢msgrcv( ) ¡£
msgctl( ) ϵͳµ÷ÓÃÓÚÖ¸¶¨µÄÏûÏ¢¶ÓÁнøÐвÙ×Ý¡£ msgsnd( ) ϵͳµ÷ÓÃÀ´·¢ËÍÏûÏ¢¡£
msgrcv( ) ϵͳµ÷ÓôÓÖ¸¶¨ÏûÏ¢¶ÓÁÐÖжÁȡһ¸öÏûÏ¢¡£ 15 £®ÔÚ¹²Ïí´æ´¢»úÖÆÖÐÓÐÄÄЩϵͳµ÷Óã¿¶óҪ˵Ã÷ËüÃǵÄÓÃ; ´ð£ºÔÚ¹²Ïí´æ´¢»úÖÆÖеÄϵͳµ÷ÓÃÓÐ
shmget() ¡¢shmctl() ¡¢shmat() ¡£
shmget( ) ÓÃÓÚ½¨Á¢Ò»¿é¹²Ïí´æ´¢Çø£¬Ìṩ¸ÃÇøÃû×Ö key ºÍ¹²Ïí´æ´¢Çø³¤¶È size µÈ²ÎÊý¡£
shmctl( ) ϵͳµ÷ÓÃÓÚ²éѯ¹²Ïí´æ´¢ÇøµÄ״̬ÐÅÏ¢¡£
shmat( ) ϵͳµ÷ÓÃÓÚ½«¸Ã¹²Ïí´æ´¢Çø¸½½Óµ½Óû§¸ø¶¨µÄij¸ö½ø³ÌÐ鵨ַ shmaddr ÉÏ£¬
²¢Ö¸¶¨¸Ã´æ´¢ÇøµÄ·ÃÎÊÊôÐÔÊÇÖ»¶Á»¹ÊǿɶÁ¿Éд¡£ 16 £®ºËÐÄÔÚÖ´ÐÐ shmget ϵͳµ÷ÓÃʱÐèÍê³ÉÄÄЩ¹¤×÷£¿
´ð£º(1) ¼ì²é¹²Ïí´æ´¢Çø±í£¬ ÈôÕÒµ½ key ±íÏ ±íÃ÷¸ÃÇøÒѽ¨Á¢£¬ ·µ»Ø¹²ÏíÇøÃèÊö·û shmid £»(2) ÈôδÕÒµ½Ö¸¶¨ key ±íÏ¶ø flag ±ê־Ϊ IPC_CREAT ÇÒ²ÎÊý size ÖµÔÚϵͳÏÞÖÆÖµÄÚ£¬Ôò·ÖÅäһϵͳ¿ÕÏÐÇø×÷Ϊ¹²ÏíÇøµÄÒ³±íÇø£¬
·ÖÅäÏàÓ¦µÄÄÚ´æ¿é£¬ ½«ÕâЩ¿éºÅÌîÈëÒ³±íÖУ»
Ïà¹ØÍÆ¼ö£º