SAR (System Activity Report)

¡iĶ¦W¡j¨t²Î¹B§@³ø§i®Ñ

¡i»¡©ú¡jSAR¡]System Activity Report¡^¬O UNIX ¤Wªº¤@­Ó¤½¥Î³nÅé¡A¥¦·|ÀH®É°lÂÜ CPU ªº¬¡°Ê±¡§Î¡B¦UÃþ¶gÃä³]³Æªº¨Ï¥Î±¡§Îµ¥¡A¨Ã¥B´£¨Ñ¨t²ÎºÞ²zªÌ¡]system administrator¡^­×¥¿¨t²Îªº³Ì¨Î°Ñ¦Ò­È¡A¥H¹F¨ì³Ì¦nªº¨t²Î®Ä²v¡C

Scatter loading

¡iĶ¦W¡j´²§G¸ü¤Jªk

¡i»¡©ú¡j³o¬O¤@ºØ°O¾ÐÅéºÞ²z§Þ¥©¡C·í¤@­Ó³B²zµ{§Ç¡]process¡^³Q¸ü¨ì°O¾ÐÅ餤®É¡A¨ä¦ì§}ªÅ¶¡ªº¤º®e¥i¥H©ñ¨ì¤£³sÄòªº°O¾ÐÅé°Ï°ì¤¤¡C¦p¦¹§@ªk¬O¬°¤FÅý°O¾ÐÅ骺¨Ï¥Î¦³§ó¤jªº¼u©Ê¡C¦ý¤£¥iÁקKªº¡A¤]·|³y¦¨¤F°O¾ÐÅ骺¸H¶ô¡]fragmentation¡^²{¶H¡C

¡i°Ñ¦Ò¡jprocess, fragmentation¡C

Scatter read

¡iĶ¦W¡j´²§GŪ¨ú

¡i»¡©ú¡jSVR4 ´£¨Ñ¤F readv() ¨ç¦¡¡A¥¦¯à¥H³æ¿W¤@¦¸ªº¥s¥Î±N¸ê®Æ¥Ñ¦h­Ó«D³sÄòªº½w½Ä°Ï¤¤Åª¥X¡A³oºÙ¬°´²§GŪ¨ú¡C

SCCS (Source Code Control System)

¡iĶ¦W¡j­ì©l½X±±¨î¨t²Î

¡i»¡©ú¡jSCCS¡]Source Code Control System¡^¬O UNIX ¨t²Î´£¨Ñµ¹¨Ï¥ÎªÌªº¤@­Ó¤½¥Î³nÅé¡C³Ìªìªº³]­p­«ÂI´N¦b©ó¦UÃþ¤å¥óªººÞ²z¥H¤Îª©¥»±±¨îªºªA°È¡A¥H¤ÎÀ°§U¨Ï¥ÎªÌºÞ²z¦h­ÓÀɮסA©Î¬O¹ï¦h­Ó¥Î¤á¦@¦P¨Ï¥Î¨ìªºÀɮ׶i¦æºûÅ@¡C¡]¨Ò¦p¡G¦b¦P¤@®É¶¡¤º¥u¦³¤@­Ó¤H¥i¥H¼g¤J¸ê®Æ¡C¡^¥¦§Q¥Î¤@­Ó¥DÀɨӴxºÞ©Ò¦³´¿¸g­×§ï¹Lªº¤å¥ó¡A·í¥Î¤á¦³¥[¤J·s¸ê®Æªº¦P®É¡ASCCS ´N·|µ¹¤©¤@­Ó³Ì·sªºª©¥»¸¹½X¡]±q 1.1¡B1.2 ¡B1.3 ¶}©lºCºC¼W¥[¡^¡A¦Ó¤£¯}Ãa­ì¥ýªºÂÂÀÉ¡C¦p¦¹¤@¨Ó¨Ï¥ÎªÌ«K¥i¥H±q¥DÀɤ¤¨ú±o¥ô¦ó±z·Q­nªºª©¥»¨Ó¶i¦æ­×§ï¡B¦Lªí©Î½sĶµ¥¤u§@¡C¥t¥~¥¦¤]´£¨Ñ¤F¤@¶µ¡uµù¸Ñ¡vªº¥\¯à¡A¦nÅý¨C­Ó¨Ï¥ÎªÌª¾¹D¤£¦Pªºª©¥»¶¡ªº¤£¦P¤§³B¨s³º¦b¨º¸Ì¡C

Scripts

¡iĶ¦W¡j«ü¥OÀÉ

¡i»¡©ú¡j¦b UNIX ¡M¸Ì¤S³QºÙ¬° shell program¡C³o¤@ÃþªºÀÉ®×¥²¶·³z¹L¬Y­Ó«ü¥O¸ÑĶ¾¹¡]command interperter¡^¨Ó°õ¦æ¡A¦b UNIX ¸Ì¦h¥b¬O C shell ©Î Bourne shell¡CScripts ÀÉ»P DOS ¤¤ªº§å¦¸ÀɤQ¤ÀÃþ¦ü¡A¦ý¨äÁÙ¦³³]©wÅܼƪº¥\¯à¡B°õ¦æ°j°éªº¯à¤O¡B¦UºØ±±¨î¬yµ{ªº±Ô­z¡A¦b³Ì·sªº korn shell ¬Æ¥B´£¨Ñ¤F¶Ç°e°Ñ¼Æ©M¥s¥Î°Æµ{¦¡ªº¯à¤O¡C

¡i°Ñ¦Ò¡jcommand interperter, shell¡C

Semaphore

¡iĶ¦W¡j«H¸¹

¡i»¡©ú¡j«H¸¹¬O³B²zµ{§Ç¶¡³q°Tªº¤@ºØ¤è¦¡¡C©MºÞ½u¡]pipe¡^¡B°T®§¦î¦C (message queue) ¤£¦Pªº¬O¡A«H¸¹¤£¬O¥Î¨Ó¥æ´«¤j¶q¸ê®Æ¡A¦Ó¬OµÛ²´©ó«P¨Ï¦h­Ó³B²zµ{§Ç¦P¨B¹B§@¡C¨ä¥\¥Î¬OÅý¤@­Ó¥H¤Wªº³B²zµ{§Ç¯à°÷¦P¨B°õ¦æ¡]synchronized execution¡^¨Ã¤À¨É¼Æ­Ó¨t²Î¸ê·½¡]resource¡^¡C

³o¸Ì©Ò»¡ªº¦P¨B¬O«ü¼Æ­Ó¦³¬Û¤¬¦X§@Ãö«Y¦@¦P°õ¦æ¬Y­Ó¤u§@ªº³B²zµ{§Ç¡A¥i¥H©¼¦¹¤£»Ý¤¬¬Ûµ¥«Ý¦Ó¯à§¹¦¨¤u§@¡C¨Ò¦p¨â­Ó³B²zµ{§Ç¥i¥H¦P®ÉŪ¨ú¬Y¤@­ÓÀɮסA³o´N¬O¦P¨B§@·~¡F¬Û¤Ïªº¡A¦pªG¤A³B²zµ{§Ç¥²¶·µ¥¥Ò³B²zµ{§ÇŪ§¹³o­ÓÀɮ׫á¤~¯àŪ¨ú¡A³o´N¬O«D¦P¨B§@·~¤F¡C

¡i°Ñ¦Ò¡jInterprocess Communication, pipe¡C

Session

¡iĶ¦W¡j´Á¶¡¡B·|´Á

¡i»¡©ú¡j¤@­Ó¡u´Á¶¡¡v¬O¥Ñ³\¦hªº¡u³B²zµ{§Ç¸s¡v¡]process group¡^²Õ¦X¦Ó¦¨ªº¡C¨ä¤¤ªº¤@­Ó¡u³B²zµ{§Ç¸s­º¡v¡]process group leader¡^¦P®É¤]¬°¦¹´Á¶¡ªº¡u´Á¶¡¸s­º¡v¡] session leader¡^¡C¤]´N¬O»¡¨ä¡u³B²zµ{§ÇÃѧO½X¡vµ¥©ó¡u³B²zµ{§Ç¸sÃѧO½X¡v¤Î¡u´Á¶¡ÃѧO½X¡v¡]process ID¡×process grooup ID ¡× session ID¡^¡C

¡u´Á¶¡¸s­º¡vªºÃѧO½X·|³Q¦¹´Á¶¡ªº©Ò¦³¦¨­û©Ò¾Ö¦³¡A´N¹³³B²zµ{§Ç¸sªº¦¨­û­Ì«O¦³¥¦­Ì³B²zµ{§Ç¸s­ºªºÃѧO½X¤@¼Ë¡C¦Ó«O¦s¦¹ÃѧO½Xªº§@¥Î¤§¤@¬O·í¨t²Î¦³»Ý­nµo°e°T¸¹¡]signal¡^µ¹¦¹´Á¶¡ªº¨C­Ó³B²zµ{§Ç®É¡A³z¹L¦¹ÃѧO½X«K¥i»´©ö¦a°µ¨ì¡C·í¡u´Á¶¡¸s­º¡v«Ø¥ß¤@­Ó·sªº´Á¶¡®É¡A¤@­Ó·sªº´Á¶¡¥Í©R¶g´Á´N¶}©l¤F¡Cª½¨ì©Ò¦³ªº³B²zµ{§Çµ²§ô¤F¥L­Ì¥»¨­ªº¥Í©R¶g´Á¡A©Î¬O¶È³Ñ°ß¤@ªº³B²zµ{§Ç¤SÂ÷¶}¤F¦¹¸s¦Ó§i²×¤î¡CŪªÌ¥i±N¡u´Á¶¡¡vµø¬°¡u³B²zµ{§Ç¸s¡vªºÂX¤j¡A¦p¦¹¸û®e©ö²z¸Ñ¨Ç¡C

¡i°Ñ¦Ò¡jsignal¡C

Session leader

¡iĶ¦W¡j´Á¶¡¸s²Õ­º»â¡A·|´Á¸s²Õ­º»â

¡i»¡©ú¡j½Ð°Ñ¦Ò session ¤@Ãã¡C

¡i°Ñ¦Ò¡jsession¡C

set group ID

¡iĶ¦W¡j³]©w¨Ï¥Î¸sÃѧO½X

¡i»¡©ú¡j³]©w¨Ï¥Î¸sÃѧO½X¬°³]©wÀÉ®×Äݩʪº²Ä¤Q­Ó¦ì¤¸¡] ²ºÙ SGID¡^¡C¥¦ªº§@¥Î»P¥\¯à©M SUID ¤Q¤Àªñ¦ü¡A¦ý¬O¥¦ªº¹ï¶H¬O¨Ï¥Î¸sÃѧO½X¡C´«¨¥¤§¡AÅýÄÝ©ó¦P¤@­Ó¨Ï¥Î¸sªºÀɮׯ੼¦¹¤À¨É¸ê°T¡A¹ï©ó¨ä¥Lªº¨Ï¥Î¸s«h°µ¤F¬Y¨Çµ{«×ªº¦w¥þ¨¾Å@¡C»P¨Ï¥ÎªÌÃѧO½X¤@¼Ë¡A¨Ï¥Î¸sÃѧO½X¤]¦³¯u¹ê¨Ï¥Î¸sÃѧO½X¤Î¦³®Ä¨Ï¥Î¸sÃѧO½X¤§§O¡C¥¦­Ìªº¥\¯à»P°Ï§O©M¯u¹ê¨Ï¥ÎªÌÃѧO½X¤Î¦³®Ä¨Ï¥ÎªÌÃѧO½X¶¡§¹¥þ¤@¼Ë¡A¶È¶È¬O¹ï¶H¥Ñ¨Ï¥Î¸s¨ú¥N¤F¨Ï¥ÎªÌ¡C¤j¦h¼Æªº UNIX ¨t²Î¡A SUID ³]¬° "on" ªºÀɮצ³¼Æ¶q¤Wªº­­¨î¡]³q±`¬O¤p©ó 50 ­Ó¡^¡C¦P®É SUID

]¥ß¦³¨ä­·ÀI¡]½Ð°Ñ¾\Ãö©ó set user ID ªº»¡©ú¡^¡C¦]¦¹±NÀɮר̩ʽè¤ÀÃþ¡A¦A¥Î³]©w SGID ¦ì¤¸¨Ó¹F¨ì¸ê·½¤À¨Éªº¥Øªº¡A¤£¥¢¬°¤@­Ó¸û¦w¥þªº¿ìªk¡C

¡i°Ñ¦Ò¡jset user ID¡C

set user ID

¡iĶ¦W¡j³]©w¨Ï¥ÎªÌÃѧO½X

¡i»¡©ú¡j³]©w¨Ï¥ÎªÌÃѧO½X¦ì¤¸¡]²ºÙ SUID ¡^¬°³]©wÀÉ®×Äݩʪº²Ä¤Q¤@­Ó¦ì¤¸¡A¦¹¦ì¤¸ªº³]©w¥¿½T»P§_·|Ãö«Y¨ì¾ã­Ó¨t²Îªº¦w¥þ¡A ©Ò¥H«D±`ªº­«­n¡C

·í¤@­Ó³B²zµ{§Ç³Q«Ø¥ß®É¡A¨t²Î·|µ¹¥¦¨â­ÓÃѧO½X¡G¯u¹ê¨Ï¥Î ªÌÃѧO½X¡]real user ID¡^»P¦³®Ä¨Ï¥ÎªÌÃѧO½X¡] effective user ID ¡^¡C¯u¹ê¨Ï¥ÎªÌÃѧO½X¬O¨ú¦Û©ó¨Ï¥ÎªÌ¦b«Ø¥ß±b¤á®É©Ò¦¬¨ìªº¨Ï¥ÎªÌÃѧO½X¡C³o­ÓÃѧO½X¬O¥Î¨Ó°O¿ý¨Ï¥ÎªÌ¹ï¸ê·½ªº¨ú¥Î±¡ªp¡C¦Ó¦³®Ä¨Ï¥ÎªÌÃѧO½X«h¬O¥Î©ó¨M©w¨º¨Ç¸ê·½¥i³Q¨º´X­Ó³B²zµ{§Ç©Ò¨Ï¥Î¡C¹ï¤j³¡¥÷ªº³B²zµ{§Ç¨Ó»¡¡A¯u¹ê¨Ï¥ÎªÌÃѧO½X»P¦³®Ä¨Ï¥ÎªÌÃѧO½Xªº­È·|¬O¤@¼Ëªº¡A¤ñ¦p»¡¢w«ü¥O who¡C¦ý¬O¦pªG¨Ï¥ÎªÌ©Ò±Ò©lªºÀÉ®×±N SUID ¦ì¤¸³]¬° "on"¡]¨Ò¦p passwd¡Bps¡Bdf µ¥¡^¡A³o®É½Ö°õ¦æ³o­Óµ{¦¡¡A¥¦´NÅܦ¨¸Óµ{¦¡ªº¾Ö¦³ªÌ¡F§óºë½Tªº»¡¡A³o®É¸Ó³B²zµ{§Çªº¯u¹ê¨Ï¥ÎªÌÃѧO½X¤£ÅÜ¡A¥i¬O¦³®Ä¨Ï¥ÎªÌÃѧO½XÅܦ¨¤F¸ÓÀÉ®×¾Ö¦³ªÌªºÃѧO½X¡C´«¨¥¤§¦pªG¸ÓÀɪº¾Ö¦³¤H¬° root¡A«h½Ö°õ¦æ¦¹µ{¦¡¡A½Ö´N·|¦b¨º¤@¨èÅܦ¨¶W¯Å¨Ï¥ÎªÌ¡C³oºØ±¡ªp¹ï passwd ³oÃþªº«ü¥O¦Ó¨¥¨S¦³¥ô¦ó­·ÀI¡A¦]¬°¥¦¥u¶i¦æ´X­Ó¯S©wªº°Ê§@¡C¦ý¬O°²¨Ï¤@­Ó SUID ¦ì¤¸¬° on ªºµ{¦¡·|²£¥Í¤@­Ó sub-shell®É¡A¨º³Â·Ð´N¤j¤F¡A¦]¬°¸Ó shell ±N¬O¦b¶W¯Å¨Ï¥ÎªÌ¼Ò¦¡¤U¡C

¡i°Ñ¦Ò¡jset group ID, real user ID, effective user ID, superuser¡C

Sfs

¡iĶ¦W¡jµL

¡i»¡©ú¡jsfs ÀÉ«ö¨t²Îªº inode ¨äÃѧO½X¬°°Ï¤À©_¼Æ»P°¸¼Æ¡A°¸¼Æªº inode »P ufs ªº inode §¹¥þ¤@¼Ë¡A¦Ó©_¼Æªº¨º­Ó«hÀx¦sµÛ¦w¥þ¸ê°T¡A·í±z¤U¹FÅã¥Ü inode ¸ê°Tªº«ü¥O®É¡]¨Ò¦p ls -i¡^¡A³o¨Ç«ü¥O¶È·|Åã¥Ü°¸¼Æªº inode ¡C¦b "/usr/include/sys/fs/sfs_inode.h" Àɤº¦³ sfs ªº inode ¸ê®Æ¡A±z¥i±N¥¦»P "/usr/include/sys/fs/ufs_inode.h" ¥[¥H¤ñ¸û¡A·|µo²{®t§O¦b sfs_inode.h ¤¤ªº inode µ²ºc¦h¤F¤@­Ó¥s i_secure ªº union¡A¸Ó union ¬O¥Î©óÀx¦s¦³Ãö¦w¥þªº¸ê®Æ¡C

¡i°Ñ¦Ò¡jufs¡C

Shadow password

¡iĶ¦W¡jµL

¡i»¡©ú¡j¬°¤F²Å¦X¬ü°ê°ê¨¾³¡¾í¥Ö®Ñ©Ò³W©wªº C2 ¨t²Î¦w¥þ¼Ð·Ç¡A«h±q SVR 3.1 ª©°_¡AUNIX ±N­ì¨Óªº "/etc/passwd" ÀɤÀ¬° "/etc/shadow" ¤Î "/etc/passwd" ¨â­ÓÀɮסC³o¼Ë°µ¬O¦]¬°Â¦³ªº "/etc/passwd" Àɬ°ÅU¤Î¤@¨Ç¤½¥Îµ{¦¡¡A¦p who¡Bls µ¥»Ý­nŪ¨ú¥¦ªº¤º®e¡A¦Ó±NÀɮצs¨úÅv­­³]¬° 644¡C¦ý¬O³o¼Ë¤@¨Ó¡A½Ö³£¥i¥H¾\Ū³o­ÓÀɪº¤º®e¡A³o¸Ì­±¤]¥]¬A¤F¥Î¤áªºÃ±¤J±K½X¡C¶ÈºÞ³o¨Ç±K½X¸g¹L¥[±Kªº³B²z¡A¦ý¬O¡yÅS¥Õ¡z¤§«á­Y¬O¦³¤H¥H·M¤½²¾¤sªº·F«l¨Ó¯}¸Ñ±K½X¡AÃø«O¤£³Q¸Ñ¡F¦Ó³q¦æ±K½X¹ï¤j¦h¼Æªº¨t²Î¤½¥Îµ{¦¡¨Ó»¡®Ú¥»¥Î¤£¨ì¡C¦]¦¹³Ì¦n¬O§â±K½X³o¤@Äæ¦ì²¾¥X "etc/passwd" ¡A¦p¦¹¡y²´¤£¨£¬°²b¡z¡A¨Ï¦³¤ß¯}ÃaªÌ®Ú¥»µL¾÷¥i­¼¡C³Q²¾¥Xªº±K½X©M UNIX ¨t²Îªº¤@¨Ç·s¼W¸ê°T´N³£¦s¦b "/etc/shadow" ³o­ÓÀɤ¤¡C"/etc/shadow" ªºÀɮצs¨úÅv­­¹w³]­È¬O600¡A¤]´N¬O»¡ "for superuser eyes only"¡A¨ä¥L¥Î¤á¤@·§§K½Í¡C¥u¦³·¥¤Ö¼Æªº¨t²Î«ü¥O»Ý­nŪ¨ú shadow password Àɪº¤º®e¡]¾Ú§@ªÌ©Òª¾¶È¦³ login ¤Î passwd¡^¡A³o¨Ç«ü¥O³£¦³¤@­Ó¦@³qÂI´N¬O SUID¡]set user ID¡^¦ì¤¸³Q³]¬° on¡C

¡i°Ñ¦Ò¡jTrust Computer System Security Evaluation Criteria¡C

Share locking

¡iĶ¦W¡j¤À¨ÉÂê©w

¡i»¡©ú¡j¤À¨ÉÂê©w¤]ºÙ§@Ū¨úÂê©w¡A·í¤@­ÓÀɮשΰO¿ý¥HŪ¨úÂê©wªº¤è¦¡Âê¦í®É¡A¨ä¥Lªº³B²zµ{§Ç¶È¯à¹ï³QÂê©wªºÀɮס]©Î°O¿ý¡^¶i¦æŪ¨ú§@·~¡F¦b¸ÓÂê©w¥¼³Q¸Ñ°£«e¡A©Ò¦³ªº§ó·s¤Î·s¼W§@·~³£±N³Q©Úµ´¡C

Shared memory

¡iĶ¦W¡j¦@¨É°O¾ÐÅé

¡i»¡©ú¡j©Ò¿×ªº¡u¦@¨É°O¾ÐÅé¡v¬O«ü UNIX ¨t²Î¹F¦¨¡u³B²zµ{§Ç¶¡³q°T¡v¡]interprocess communication¡^ªº¨ä¤¤¤@ºØ¤è¦¡¡C¥¦¤¹³\¦h­Ó³B²zµ{§Ç¦@¦P¤À¨É¬Û¦Pªº¸ê®ÆªÅ¶¡¡C¨ä§@ªk¬O¡G¥ý±N¤@¶ô °O¾ÐÅé«Å§i¬°¦@¦P°Ï°ì¡AµM«á¦U³B²zµ{§Ç¦A§â³o­Ó°Ï°ì¬M³]¡]map¡^¨ì¥»¨­ªºµêÀÀ¦ì§}ªÅ¶¡¡]virtual address space¡^¤W¡A¦p¦¹¤@¨Ó¡A¨C­Ó³B²zµ{§Ç«K¥i¥H¨Ï¥Î³o¶ô¦ì¸mŪ¼g¸ê®Æ¡A¦n¹³³o¶ô°O¾ÐÅé¬O¥¦ªº¤@³¡¥÷¤@¼Ë¡C

¦³Ãö¡u¦@¨É°O¾ÐÅé¡vªº¸ê®Æµ²ºc¦p¹Ï©Ò¥Ü¡G

Shared memory.gif (5241 bytes)

¡i°Ñ¦Ò¡jinterprocess communication, virtual address space¡C

Shell

¡iĶ¦W¡jµL

¡i»¡©ú¡jshell ¬O¤@­Óµ{¦¡¡A­t³d±µ¨ü¨Ï¥ÎªÌ©ÒÁä¤Jªº©R¥O¡AµM«á¥ß§Y§@¸ÑĶ¶i¦Ó°õ¦æ¡C´«¥y¸Ü»¡¥¦¬O UNIX ©³¤Uªº«ü¥O¸ÑĶ¾¹¡C¨Ï¥ÎªÌ¶i¤J¨t²Î«á¡A¤@­Ó shell ªº³B²zµ{§ÇÀô¹Ò«K·|¦Û°Ê«Ø¥ß¡C¥]¬A§â¼Ð·Ç¿é¤J¡B¼Ð·Ç¿é¥X¥H¤Î¼Ð·Ç¿ù»~¿é¥X³sµ²¨ì¥Î¤á©Òñ¤J¡]login¡^ªº²×ºÝ³]³Æ¤W¡C

¡i°Ñ¦Ò¡j login¡C

Signal

¡iĶ¦W¡j°T¸¹

¡i»¡©ú¡j¡u°T¸¹¡v¬O¨t²Î¥Î¨Ó³qª¾³B²zµ{§Ç¡]process¡^¬Y¨Çª¬ªpªºµo¥Í¡C°w¹ï¤£¦Pªºª¬ªp¡A¨t²Î·|µo°e¥X¤£¦Pªº°T¸¹¥Î¥H¯÷ÃѧO¡C§Ú­Ì¥i¥H±N°T¸¹µø¬°¨t²Î®Ö¤ß¡]kernel¡^»P³B²zµ{§Ç¶¡ªº¤@ºØ·¾³q¤u¨ã¡C¤£¹LŪªÌ­nª`·N¡A³B²zµ{§Ç»P³B²zµ{§Ç¤§¶¡¤]¥i¥H¬Û¤¬¶Ç°e°T¸¹¡]¥H kill «ü¥O¡^¡C

AT&T ª©ªº UNIX ¨t²Î¨ì SYSTEM V Release 3.2 ¬°¤î¦@©w¸q¤F 20 ºØ°T¸¹¡A¦b Release 4.0 ®É¤S¼W¥[¤@¨Ç·sªº¥\¯à¨ì 31 ºØ°T¸¹¡CBSD4.3 ª©ªº UNIX ¨t²Î«h©w¸q¤F 30 ºØ°T¸¹¡C

¡i°Ñ¦Ò¡jprocess, kernel, AT&T¡C

Single indirect block

¡iĶ¦W¡j³æ¤@¶¡±µ°Ï¶ô

¡i»¡©ú¡j¬°«K©ó¸ÔºÉ»¡©ú¡A½ÐŪªÌ¤@¨Ö°Ñ¦Ò¡u¶¡±µ°Ï¶ô¡v¤@Ãã¡C

¡i°Ñ¦Ò¡jindirect block¡C

SLIP (Serial Line Interface Protocol)

¡iĶ¦W¡jµL

¡i»¡©ú¡j§Y Serial Line Interface Protocol¡CSLIP ¤¹³\¦b¨âºÝªº¹q¸£³z¹L serial line ³s±µ¡CSLIP ¬O¥Ñ 4.3 BSD ©Òµo®iªº¡C

SMTP (Simple Mail Transfer Protocol)

¡iĶ¦W¡jµL

¡i»¡©ú¡j²©ö¹q¤l¶l¥ó¶Ç¿é¨ó©w (STMP) ´£¨Ñ¨t²Î¤§¶¡±o¥H¥æ´«¹q¤l¶l¥ó¡CSMTP ¤]¨Ï¥Î TCP¡A¨ä³q°T¨ó©w©w¸q¦b RFC821 ¤å¥ó¤¤¡A¹q¤l¶l¥ó®æ¦¡¦b RFC822 ¤¤©w¸q¡A¦Ó RFC974 ³]©w¶l¥ó¸ô®|¦p¦ó¨M©w¡C

STMP ¨Ï¥Î³q°T°ð¸¹ 25¡A§Q¥Î telent ³q°T¨ó©wªº³¡¥÷«ü¥O¤ñ¸û­«­nªº¦³¡G

HELO - ¹ï½Í¶}©l

MAIL From : <°e«H¦a§}> - ¶}©l¹q¤l¶l»¼¤u§@¡A¨Ã¥B¿ëÃÑ°e«H¤H¡C

RCPT To : <¦¬«H¦a§}> - ¿ëÃѦ¬«H¤H¡C

DATA - ¶}©l«H¥ó¤º®e¡A¥H¥yÂI . ¬°«H¥óµ²§ôªº¼ÐÃѲŸ¹¡C

QUIT - µ²§ôÂù¤èªº¹ï½Í¡C

HELP - ½u¤W»¡©ú¡C

SMTP ¦@¦³ 14 ­Ó«ü¥O¡AŪªÌ¥i°Ñ¾\ RFC 821 ¤å¥ó¡C

SNA (System Network Architecture)

¡iĶ¦W¡jµL

¡i»¡©ú¡jIBM ¦b 1974 ¦~µoªíªº SNA ¬[ºc¡A¸g¹L¼Æ¦¸­×­q«á¡A¤w¦¨¬° IBM ¹q¸£ªº¥D­nºô¸ô¬[ºc¡CSNA ¬O¤@ºØ¬[ºc¦Ó«D²£«~¡A¥¦¨Ã¤£¬O¥H UNIX ¬°°ò¦ªººô¸ô¬[ºc¡A¦ý«Ü¦h UNIX »s³y°Ó¤w¯à¤ä´© SNA ¬[ºc¡C¤j¦h°¾­«¦b LU6.2¡C

SNA ¬[ºc»P¨ä¥L³q°T¨ó©w¤£¦Pªº¬O¡A¥¦·íªì³]­pªº¥Øªº¦b³s±µ²×ºÝ¾÷»P¦Lªí¾÷¨ì IBM ¥D¾÷ (mainframe) ¦p system1370 ¤§¶¡ªº³s½u¡C

¤@­Ó SNA ºô¸ô¯¸¡]Node¡^ ªº¬[ºc¡A¥D­n¤À¦³¥|¼h¡A¦p¹Ï¡G

* ²×ºÝ¥Î¤á¡]end user¡^

* ÅÞ¿è³æ¦ì¡]logical unit or LU¡^

* ¹êÅé³æ¦ì¡]physical unit¡^

* ¸ê®ÆÃì¼h¡]data link¡^

SNA ªº¼h¦¸»P OSI ¤@¼Ë¡A³£¤À¬°¤C¼h¡A·íµM¨C¼hªº¦WºÙ»P¥\¯à»P OSI ¤£ºÉ¬Û¦P¡A¤ñ¸û¦p¤U¹Ï©Ò¥Ü¡G

san.gif (5106 bytes)

Socket

¡iĶ¦W¡j´¡®y

¡i»¡©ú¡j¡u´¡®y¡v¬O BSD 4.2 ª©©Ò´£¨Ñªº¤@ºØ¯S®í«¬ºAªºÀɮסC¥¦ªº§@¥Î»áÃþ¦ü©óºÞ½u¡]pipe¡^¡A´£¨Ñ¤F³B²zµ{§Ç¤§¶¡³q°T¡]inter process communication¡^ªº¯à¤O¡A¨Ã¥B¤ä´©¤Fºô¸ôªº¥\¯à¡C¨Ï¥ÎªÌ¥i¥H¥Î "socket" ¨t²Î©I¥s¡]system call¡^¨Ó«Ø¥ß¥¦¡A¶Ç¦^­È¬O¤@­Ó¡uÀÉ®×´y­zµü¡v¡]file descriptor¡^¡C

¡u´¡®y¡v¦³³\¦h¤£¦PªººØÃþ¡A¨ä¥Øªº¬O¥Î¨Ó¤ä´©¤£¦Pªº¡u³q°T»y¸q¡v¡]communication semantic¡^¡C¦p¡G¸ê®Æ¥i¾aªº¶Ç»¼¡B°T®§¥ý«á¦¸§Çªº«O«ùµ¥¡F¦P®É¡A¡u´¡®y¡v¤ñ¡uºÞ½u¡v±jªº¤@ÂI¬O¡A¡uºÞ½u¡v»Ý­n¤@­Ó¦@¦Pªº¤÷³B²zµ{§Ç¡]parent process¡^¨Ó³]¥ß¤@­Ó³B²zµ{§Ç¶¡ªº³q°TºÞ¹D¡A¦ý¬O¡u´¡®y¡v«o¥i¥H¥Ñ¨â­Ó§¹¥þ¤£¬ÛÃöªº³B²zµ{§Ç¨Ó³]¥ß¡A¬Æ¦Ü³o¨â­Ó³B²zµ{§ÇÁÙ¥i¥H¦s¦b©ó¤£¦Pªº¾÷¾¹¤W¡C¬°¤F¤ä´©¡u´¡®y¡v¨t²Î®Ö¤ß¡]kernel¡^ªºµ²ºc»Ý¥]§t¥H¤U¤T­Ó¥D­nªº³¡¥÷¡G

´¡ ®y ¼h

socket layer

¥Î§@¨t²Î©I¥s»P³q°T¨ó©w¼h¤§¶¡ªº¤¶­±

³q°T¨ó©w¼h

protocal layer

¥]§t¤F¤@¨Ç³q°T¨ó©w¼Ò²Õ

³] ³Æ ¼h

device layer

¥]§t¤F¤@¨Ç±±¨îºô¸ô³]³ÆªºÅX°Êµ{¦¡

¦p¤U¹Ï©Ò¥Ü¡G

socket.gif (5409 bytes)

¡i°Ñ¦Ò¡jBSD, TCP/IP, interprocess communication, system call, parent process, client processpipe, protocol, kernel, named pipe¡C

Soft link

¡iĶ¦W¡j³n¦¡³s±µ

¡i»¡©ú¡j¦P¡u²Å¸¹³s±µ¡v¤@Ãã¡C

¡i°Ñ¦Ò¡jsymbolic link¡C

SPOOLER

¡iĶ¦W¡j¶gÃä³]³Æ¦P®É§@·~¾¹

¡i»¡©ú¡j³o¬O¤@ºØ¥H³nÅé¥[³t¶gÃä³]³Æ¨Ï¥Î³t²vªº¤è¦¡¡C¥D­nªº¥\¯à¬O¤¹³\¦h­Ó¨Ï¥ÎªÌ¤À¨É¤@¥x©Î¦h¥x¦Lªí¾÷¡A¨Ã±N©Ò¦³ªº¦C¦L­n¨D§@¦n±Æ§Ç¨Ã©ñ¶i¦¸Àx¦sÅ餤µ¥«Ý¦C¦L¡A¦Ó¨Ï¥ÎªÌ¥i¥HÄ~Äò°õ¦æ¨ä¥Lªº¤u§@¡C¨ä¯S©ÊÂk¯Ç¦p¤U¡G

  1. ¤¹³\¤£¦P«¬¦¡ªº¦UÃþ¦Lªí¾÷¡C
  2. Àx¦s¦h­Ó¦C¦L­n¨D¨Ãµ¥«Ý°õ¦æªºÀɮסC
  3. ¤¹³\¨Ï¥ÎªÌÁ{®É¨ú®ø¦C¦L­n¨D¡C
  4. Åã¥Ü¥Ø«e¦U¦Lªí¾÷ªº¦C¦Lª¬ºA¡C
  5. ¥Ñ©ó¦C¦L¤º®e¬O¦s©ñ¦b¦¸Àx¦sÅ餤¡A¦]¦¹§Y¨Ï¬O¨t²ÎÃö¾÷«á¦A¶}¾÷¤]¥i¥HÄ~Äò¦C¦L¡C

SPP (Sequenced Packet Protocol)

¡iĶ¦W¡j´`§Ç«Ê¥]¨ó©w¡C

¡i»¡©ú¡j¥¦¦b XNS ¬[ºc¤¤¬O¥Î¨Ó§@¬°²Ä¤G¼hªºªA°È¯¸¡A¥¦´£¨Ñ¤F¥i¾a«×°ª¡Bµ´¤£­«½Æ©M¥i¬y¶q±±¨îªº°T®§¶Ç¿é¤è¦¡¡C

¡i°Ñ¦Ò¡jXNS¡C

Sticky bit

¡iĶ¦W¡jÂHµÛ¦ì¤¸

¡i»¡©ú¡j¦b UNIX ¨t²Î¤¤¡A¨C­ÓÀɮשҹïÀ³ªº¯Á¤Þ¸`ÂI¡]inode¡^¤¤³£¦³¤@­Ó¦û 16 ¦ì¤¸ªºÄæ¦ì¨Óªí¥Ü¸ÓÀɪº¦s¨úÅv­­»PÄÝ©Ê¡C¨ä¤¤²Ä¤E­Ó¦ì¤¸ºÙ¬°ÂHµÛ¦ì¤¸¡A¥D­n¬O¥Î¨Ó±±¨îÀɮתº°õ¦æ®Ä²v¡C·í¥ô¤@ÀɮתºÂHµÛ¦ì¤¸³Q³]¬° 1¡]on¡^®É¡A¥u­n¦¹Àɤ@¥¹³Q¸ü¤J¥D°O¾ÐÅé«á¡A§Y¨Ï°õ¦æ§¹²¦¤]¤£·|±q°O¾ÐÅ餤²¾¥X¡C³q±`¤@¨Ç¨Ï¥ÎÀW²v°ªªº¤½¥Îµ{¦¡¦p vi¡Bls µ¥ªºÂHµÛ¦ì¤¸³£³]¬° on¡C

µM¦Ó¡AÂHµÛ¦ì¤¸ªº¨Ï¥Î¡A¦b¤j³¡¥÷·sª© UNIX ³£±Ä¦æ¥HµêÀÀ°O¾ÐÅéºÞ²z°O¾ÐªÅ¶¡ªº±¡ªp¤U¡A¤w¦¨¬Q¤é¶Àªá¡A¤£¦A³Q¤j¶q¨Ï¥Î¡C¦³¤@ÂIŪªÌ­nª`·N¡A¦pªG¥Ø¼ÐÀɮ׬°¤@¥Ø¿ý¡A¦Ó¨äÂHµÛ¦ì¤¸¬° on¡A³o®É©Òªí¥Üªº·N¸q¨Ã«D¬O¾ã­Ó¥Ø¿ý¤UªºÀÉ®×°õ¦æ§¹³£·|¯d¦b¥D°O¾ÐÅ餺¡A¥¦¬O«ü¸Ó¥Ø¿ý¤Uªº©Ò¦³ÀÉ®×¥u¦³¸ÓÀɮתº¾Ö¦³ªÌ©Î¬O¶W¯Å¨Ï¥ÎªÌ¤~¦³Åv§R°£©Î¼g¤J¸ê®Æ¡C³oºØ¥Îªk¥X²{¦b¨t²Îªº¤@¨Ç¤½¥Î¥Ø¿ý¤U¡A¨Ò¦p /tmp ©Î¬O ºô»Úºô¸ô¤Uªº /Public¡A³o¨Ç¥Ø¿ýªº¨Ï¥ÎÅv³£¬O¶}©ñµ¹©Ò¦³ªº¥Î¤á¡A¦ý¬O¬°¤FÁקK¦³¤H´c·Nªº§ó§ï¥L¤Hªº¸ê®Æ©Î¬O§R°£§O¤HªºÀɮסA¬G¦³±N³oÃþ¥Ø¿ý¤§ÂHµÛ¦ì¤¸³]¬° on ªº±¹¬I¡C

¡i°Ñ¦Ò¡jinode¡C

stream

¡iĶ¦W¡j¸ê®Æ¬y

¡i»¡©ú¡j©Ò¿×ªº¡u¸ê®Æ¬y¡v¬O«ü¡G¦b¤@­Ó³B²zµ{§Ç¡]process¡^»P¤@­Ó¡u³]³Æ°Ï°Êµ{¦¡¡v¤§¶¡ªº¤@±ø¥þÂù¤u¡]full-duplex¡^³q¹D¡C¥¦¥]§t¤F¤@¨Ç¿é¥X¿é¤Jªº¦î¦C§Ç¹ï¡]queue pair¡^¡A¦p¤U¹Ï¡G

stream.gif (5913 bytes)

·í¤@­Ó³B²zµ{§Ç­n¼g¸ê®Æ¨ì¸ê®Æ¬yùØ­±¥hªº®É­Ô¡A¨t²Î®Ö¤ß·|±N¸ê®Æ°e¨ì¿é¥X¦î¦C¡C¦P¼Ë¦a¡A·í¡u¸ê®Æ¬yÅX°Êµ{¦¡¡v¦¬¨ì¿é¤J¸ê®Æªº®É­Ô¤]·|©¹¤W°eµ¹­nŪ¨ú¸ê®Æªº³B²zµ{§Ç¡C¨C¤@­Ó¦î¦C§Ç¹ï³£·|©M¨t²Î®Ö¤ß¤ºªº¬Y¤@­Ó¼Ò²Õ¬Û¹ïÀ³¡C¨Ò¦p³]³ÆÅX°Êµ{¦¡¡]device driver¡^¡B½u¤W±±¨î¡]line discipline¡^¡B³q°T¨ó©w¡]protocol¡^©Î¬O­t³d¸ê®Æ¶Ç¿éªº¼Ò²Õµ¥¡C

¡i°Ñ¦Ò¡jSTREAM, kernel, device driver, potocol, line discipline¡C

STREAM

¡i½Ķ¡jµL

¡i»¡©ú¡jSTREAMS ¬O«ü¤@²Õ¨ã³Æ¤¶­±³q¥Î©Ê¤Î¨Ï¥Î¼u©Êªº¨t²Î¶}µo¤u¨ã¡A¥¦ªºµo®i¬O¬°¤F¦]À³ UNIX ¨t²Î¤¤¤é¯q®ï¤Áªº³q°TªA°È¡C¥¦¤ä´©ªº½d³ò·¥¨ä¼sªx¡A±q¾ã­Óºô¸ô³q°T¨ó©w¨ì³æ¿W¤@­Ó³]³ÆÅX°Êµ{¦¡¡A¬Ò¦b¨ä²[»\½dÃ¥¤º¡C

¦³¤@ÂIŪªÌ±o¯d·N¡A·í§Ú­ÌºÙ STREAMS ®É¡A«üªº¬O¤W­z¾ã­Ó¨t²Î¶}µo¤u¨ã¡A·í§Ú­Ì«ü STREAMS ùØ­±¦U§Oªº¤u¨ã®É¡A§Ú­Ì±Ä¥Î­^¤å¤p¼gªº stream¡A¨Ò¦p stream head¡Bstream message µ¥¡CŪªÌ°È¥²¯d·N¡A§O±N¼Ð·Ç¿é¥X¿é¤J¨ç¦¡À]ùتº¸ê®Æ¬y¡]data stream¡^»P¥»³¹©Ò°Q½×ªº STREAMS §Ë²V¡A¨âªÌ§¹¥þ¬O­·°¨¤û¤£¬Û¤z¡CSTREAMS ªºÆ[©À¬O¥Ñ UNIX §@·~¨t²Îªº³]­pªÌ¤§¤@ Dennis Ritchie ©Ò´£¥Xªº¡A³o¬O¤@ºØ·s¦¡ªº³B²zµ{§Ç»P²×ºÝ¾÷¡]©ÎªÌºô¸ô¡^¶¡ªº¤¶­±¡A¥Î¥H¨ú¥N¦³ªº³B²zµ{§Ç»P²×ºÝ¾÷¡]©ÎªÌºô¸ô¡^¤§³s±µ¤è¦¡¡CSTREAMS ±N®Ö¤ß¤º³¡ªº¿é¥X¿é¤J»P®Ö¤ß©M¨ä¾l UNIX ¨t²Î¤¸¥óªº¤¶­±¥[¥H¼Ð·Ç¤Æ¡C¥¦ªº³]­p¬O±N¯S©w¥\¯àªº±`¦¡¡]routine¡^¶°¤¤¦b¤@­Ó¼Ò²Õ¡]module¡^¤¤¡A¤£¦Pªº¼Ò²Õ­t³d¤£¦P¯S©Êªº¥ô°È¡C¼Ò²Õªº²Õ¦¨¥÷¤l¥]¬A¤F®Ö¤ß¤ºªº±`¦¡¡B¨t²Î©I¥s¥H¤Î­Y¤z®Ö¤ßªº¸ê·½¡]kernel resources¡^¡C²×ºÝ¾÷½u¤W±±¨î¡]terminal line discipline¡^´N¬O streams ¼Ò²Õªº¤@ºØ¡CÅã¥Ü¨Ï¥ÎªÌ³B²zµ{§Ç¡BSTREAMS ¤Î³]³ÆÅX°Êµ{¦¡¶¡ªºÃö«Y¡C

stream01.gif (10115 bytes)

¥Ñ¤W¹Ï§Ú­Ì¥i¥H¤U­±±oª¾¼ÆÂI¡G

  1. ±q¨Ï¥ÎªÌ³B²zµ{§Ç¨ì³]³ÆÅX°Êµ{¦¡ªº¸ê®Æ¬y³q¸ô®|¬Ò¬O±Ä¦æ full-duplex ªº¼Ò¥Ü¡]¦]¬°©Ò¦³ªº¡ô¡õ³£¬OÂù¦Vªº¡^¡C
  2. stream¤£¤@©w«D©M¹ê»ÚµwÅé³]³Æ¬Û³s¡A¥¦¤]¥i¥H©M°²³]³ÆÅX°Êµ{¦¡³s±µ¡]pseudo driver¡A¤SºÙ³nÅéÅX°Êµ{¦¡¡Asoftware driver¡A¨Ò¦p°²²×ºÝ¾÷¡Ð pseudo terminal¡^¡C
  3. ­t³d¨Ï¥ÎªÌ»P®Ö¤ß³sôªº¼Ò²ÕºÙ°µ head¡A­t³d®Ö¤ß»PµwÅ鶡³sôªº¼Ò²Õ«h¥s§@ driver¡F¦Ó¤¶©ó head ©M driver ¶¡ªº¦UºØ¼Ò²Õ«h¬O§êºt¹LÂo¾¹¡]filter¡^ªº¨¤¦â¡A³o¨Ç¼Ò²Õ¥i¥Hµø¹ê»Úªº»Ý­n¥H ioctl() ¨t²Î©I¥s°ÊºA¡]dynamic¡^ªº¥[¤J¡]push onto¡^STREAMS ¤¤¡C
  4. ¾á¥ô¨Ï¥ÎªÌ»P®Ö¤ßµ{¦¡¶¡¤¶­±ªº stream head ¡A©M¾á¥ôµ{¦¡»PµwÅé stream driver ³£¶È¦³¤@­Ó¡A¦ý¬O¼Ò²Õ¥i¥H¦³¦h­Ó©Î¬O®Ú¥»¨S¦³¡A¨C­Ó¼Ò²Õ§¡­t³d¤£¦Pªº¥\¯à¡C

¥Ñ©ó¼Ò²Õ¥i¥H°ÊºAªº§R°£©Î·s¼W¡A¦]¦¹ STREAMS ¥i¥H«Ü¦³¼u©Ê¦aÀH®É§ïÅܩηs¼W¨ä¥\¯à¡A¤£¹³¶Ç²ÎÅX°Êµ{¦¡¡AÁöµM¥H ¢Ñ »y¨¥¼¶¼g¡A¦ý¬O¥Ñ©ó¦b°õ¦æ®É¤@¤Á¥\¯à¬Ò¤w©T©w¡A­Y¾D¹J³]­p®É¥¼¦Ò¼{¨ìªºª¬ªp¡A©¹©¹´N¥u¯à§ô¤âµLµ¦¡C¦AªÌ¦UºØ³]³ÆÅX°Êµ{¦¡©¹©¹¬O¦b«Ø¥ß®Ö¤ß¡]build kernel¡^´N¤w´Ó¤J®Ö¤ß¡A¥H­P¼W§R¤@­ÓÅX°Êµ{¦¡³£±o¤j¶O©P³¹¦a­««Ø®Ö¤ß¡]rebuilt kernel¡^¡A­Y±Ä¥Î STREAMS¡A³o¤@¤Á³Â·Ð³£±o¥Hªï¤b¦Ó¸Ñ¡C¥Hºô¸ô¨t²Î¤WªºÀ³¥Î¬°¨Ò¡ASTREAMS ªº¹B¥Î¨Ï±o¥Î¤á¥i¥H¼u©Ê¦a§ó§ï³q«H¨ó©w¡C

°²³]§Ú­Ì©Ò­±¹ïªºµwÅé¸Ë¸m¬°²×ºÝ¾÷¡A¨º»ò¤W¹Ïªº¼Ò²Õ³¡¥÷´N»Ý­n§ï¬°²×ºÝ¾÷½u¤W±±¨î¡AÅX°Êµ{¦¡´NÅܬ°¸Ó²×ºÝ¾÷ªºÅX°Êµ{¦¡¡A¾ã­Ó·s¬[ºc¦p¤U¹Ï¡G

STREAM02.gif (8738 bytes)

¥Ñ¤W­±¨â±i¹Ï¤§¶¡ªºÅܤơA§Ú­ÌÀ³¸Ó¯à²`¤Á»{ª¾¨ì STREAMS ªº°ò¥»ºë¯«´N¬O±N¦UºØ¥ô°È¼Ò²Õ¤Æ¡A¤£¦Pªº¼Ò²Õ¦b®Ö¤ß¤¤´£¨Ñ¤@¨t¦C§¹³Æªº³B²z¾÷¯à¤Î¬ÛÃöªA°È¡C¼Ò²Õ¤]¥i¥H¥Ñ¥Î¤á¦b±Ò°Ê®É¿ï¾Ü¡A¨Ã¨Ì¥Î³~³s±µ¥H«´¦X¤u§@ªº»Ý¨D¡AµL¶·­«¦æ³sµ²¡]LINK¡^¡A¦p¦¹¨Ï±o¥Î¤á¼hªº³B²zµ{§Ç¥i¥H§¹¥þ¤£¨Ì¿à¯S©wªº³q°T¨ó©w¡]protocol¡^¤Î´CÅé¡]media¡^¡A§¹¥þ¿W¥ß©ó¥~³¡ªºµwÅé¸Ë¸m¡C

Super block

¡iĶ¦W¡jºÞ²z°Ï¶ô¡B¶W¯Å°Ï¶ô

¡i»¡©ú¡jUNIX ªºÀɮרt²Î¡]file system¡^§Ú­Ì¥iµø§@¬O¥Ñ¤@³s¦êªº°Ï¶ô¡]block¡^©Ò²Õ¦¨ªº¡A¨ä¤¤ªº²Ä¤G­Ó°Ï¶ôºÙ¬°¡uºÞ²z°Ï¶ô¡v¡A¥\¯à»P DOS ¤¤ªº FAT Ãþ¦ü¡A¥¦Àx¦s¤F¾ã­ÓÀɮרt²Îªº¬ÛÃö¸ê°T¡A¤j­P¦³¤U¦C´X¶µ¡G

  1. ¾ã­ÓÀɮרt²Îªº¤j¤p¡A¤]´N¬O©Ò¦ûªº°Ï¶ôÁ`¼Æ¡C
  2. ¥Ø«e¥i¨Ñ¨Ï¥Îªº°Ï¶ôÁ`¼Æ¤Î¨ä¥i¨Ñ¨Ï¥Î°Ï¶ô©Ò²Õ¦¨¤§¦ê¦C¡C
  3. ¥Ø«e¥i¨Ñ¨Ï¥Îªº¯Á¤Þ¸`ÂI¡]inode¡^Á`¼Æ¤Î¤@³¡¥÷¥i¨Ï¥Îªº¯Á¤Þ¸`ÂI½s¸¹¡C
  4. ²Ä¤@­Ó¥i¥Î¸ê®Æ°Ï¶ôªº½s¸¹¤Î²Ä¤@­Ó¥i¥Îªº inode ½s¸¹¡C
  5. ºÞ²z°Ï¶ô¬O§_³Q­×§ï¹L¡H¦pªG¬O¡A·í®Ö¤ßµ{¦¡°õ¦æ "sync" ¨t²Î©I¥s®É¡A«K·|±N¥D°O¾ÐÅ餤·sªººÞ²z°Ï¶ô¼g¦^ºÏºÐ¸Ì¡C
  6. ºÞ²z°Ï¶ô³Ì«á¤@¦¸³Q­×§ï¹Lªº®É¶¡¡C
  7. Àɮרt²Î»PºÏºÐªºÅÞ¿è¦WºÙ¡C

¨ä¤¤¡AÀɮרt²Îªº¤j¤p¡B¸ê®Æ°Ï¶ôªº¤j¤p¥H¤Î¯Á¤Þ¸`ÂIªº¼Æ¶q¬OÄÝ©ó©óÀRºA¸ê®Æ¡A¤£·|§ïÅܪº¡C¨ä¾lªº§¡¬°°ÊºA¸ê®Æ¡C

¡i°Ñ¦Ò¡jfile system, inode, kernel, system call¡C

Superuser

¡iĶ¦W¡j¶W¯Å¨Ï¥ÎªÌ

¡i»¡©ú¡j¥Ñ©ó UNIX ¬°¶}©ñ¦¡ªº¨t²Î¡A¦]¦¹¥²¶·­n¦³¤@¦ì¨t²ÎºÞ²zªÌªº¦s¦b¡C³o¦ì¨t²ÎºÞ²zªÌÀ³¨ã³Æ superuser ªº¨­¥÷¡A¥H root §@¬°µn¿ý¦WºÙ¡A¦Ó¥B¨ä shell ´£¥Ü²Å¸¹¬O "#"¡A¦Ó«D¤@¯ëªº "$" ²Å¸¹¡C¨ä¨Ï¥ÎªÌÃѧO½X¬° 0¡A¦b superuser ¼Ò¦¡¤U©Ò²£¥Íªº³B²zµ{§Ç¤ñ¤@¯ë¨Ï¥ÎªÌªº³B²zµ{§Ç¾Ö¦³¸û¯S®íªº¨Ï¥ÎÅv­­¡C

¨ä¥D­n­t³d¨Æ¶µ¦³¤U¦C´XÂI¡G

  1. ¨t²Îªº¥¿½T¹BÂà¡C
  2. ¸ê·½ªº¤À°t¡C
  3. ºô¸ôªº«Ø¥ß»PºÞ²z¡C

¡i°Ñ¦Ò¡jshell¡C

Swap area

¡iĶ¦W¡j¸m´«°Ï°ì

¡i»¡©ú¡j¥¦¬O¥Ñ¦¸Àx¦sÅé¡]¨Ò¦pµw¦¡ºÏºÐ¡^©Ò¹º¤À¥X¨Óªº¤@¶ô°Ï°ì¡A»PÀɮרt²Î¡]file system¡^¤À¶}¡A¦b°µ¡u¸m´«¤u§@¡v®É¨Ï¥Î¡C

Swap device

¡iĶ¦W¡j¸m´«³]³Æ

¡i»¡©ú¡j¡u¸m´«°Ï°ì¡v¡]swap area¡^©Ò¦bªºÀx¦sÅéºÙ¤§¡A¥¦¬O¥Î¨ÓÀx¦s¼È®É±q¥D°O¾ÐÅé¸m´«¥X¥hªº³B²zµ{§Ç¡]process¡^¡C

¡i°Ñ¦Ò¡jswap area¡C

Synchronous writing

¡iĶ¦W¡j¦P¨B¼g¤J

¡i»¡©ú¡j¨Ï¥Î¦P¨B¼g¤J¨ä¹ê´N§Î¦P¨S¦³½w½Ä°Ïªº¦s¦b¡A¨t²Îª½±µ¥s¥Î±±¨î¼g¤Jªº¨t²Î±`¦¡¡A´£¥X¼g¤J­n¨Dªº³B²zµ{§Ç³o®É«K¶i¤JºÎ¯vª¬ºA¡]sleep¡^¡Aª½¨ì¿é¤J§@·~µ²§ô¡A¥Ñ©ó¦b¶i¦æ¼g¤J¤u§@ªº³o­Ó®É¬q¡A³B²zµ{§Ç§¹¥þ¬O³B©ó¶¢¸mªºª¬ºA¡A¦]¦¹¨Ï¥Î®Ä²v¤Q¤À§C¸¨¡A¦ý¬O¥¦³Ì¤jªº¯S¦â«K¬O¦w¥þ¡CUNIX ªº¨t²Î©I¥s sync() ´N±Ä¥Î¦P¨B¼g¤Jªº¤è¦¡¡C

¡i¸É¥R¡j sync() ¨t²Î©I¥s±N¶W¯Å°Ï¶ôªº¤º®e¼g¦^µwºÐ¡A¨Ï in-disk inode ©M in-core inode ªº¸ê®Æ¯à°÷¤@­P¡CUNIX ¨C¹j¤@·|¨à«K·|¦Û°Ê°õ¦æ¦¹ sync()¡A¨t²ÎÃö¾÷¡]shutdown¡^®É¤]¤@©w·|°õ¦æ³o«ü¥O¡C¥Ñ©ó sync() ªº°õ¦æ¦¨±Ñ¯A¤Î¨t²Î¸ê®Æªº¤@­P©Ê»P¾ã¦X©Ê¡A¬G¤Q¤Àºò­n¡A¤£®e³\¥X¿ù¡A¦]¦¹±Ä¦æ¦P¨B¦¡ªº¼g¤J§@·~¡C

¡i°Ñ¦Ò¡jAsynchronous writing

Symbolic link

¡iĶ¦W¡j²Å¸¹³s±µ

¡i»¡©ú¡jUNIX ¨t²Î¤¤ªº¨C­ÓÀɮ׳£¦³¤@­Ó¿W¤@µL¤Gªº¯Á¤Þ¸`ÂI¡]inode¡^§@¥Nªí¡A¦ý¬O¦b¦P¤@­ÓÀɮרt²Î¥i¯à¦³¦h­Ó¨Ï¥ÎªÌ¥L­Ì·Q¥Î¤£¦PªºªºÀɮצWºÙ¨Ó°Ñ¦Ò¨ì¦P¤@¥÷Àɮפº®e¡A³o´N­n³z¹L¡uµw¦¡³s±µ¡vªº¥\¯à¨Ó¹F¦¨¤F¡CµM¦Ó¡uµw¦¡³s±µ¡v¡]hard link¡^ µLªk¸ó¶VÀɮרt²Î¡A¦]¦¹ BSD ª©ªº UNIX ­º¥ý´£¨Ñ¤F¡u²Å¸¹³s±µ¡vªº¥\¯à¡A¨Ï±o¦b¤£¦PÀɮרt²ÎªºÀɮפ]¯à³s±µ¦b¤@°_¡CAT&T ªº UNIX «hª½¨ì SVR4 ¤~¦³¤ä´©²Å¸¹³s±µ¡C

¦¹¥~¥u¦³¶W¯Å¨Ï¥ÎªÌ¡]superuser¡^¤~¯à¥Hµw¦¡³s±µ¥h³s±µ¤@­Ó¥Ø¿ý¡A¦ý¥ô¦ó¨Ï¥ÎªÌ³£¯à§Q¥Î²Å¸¹³s±µ¥h³s±µ¥Ø¿ý¡C¤£¹L¤j³¡¥÷ªº¨t²Î³£¹ï²Å¸¹³s±µªº¼Æ¶q¦³©Ò­­¨î¡C²Å¸¹³s±µ¥\¯àªº¤ä´©ªí¥Ü UNIX ªºÀɮרt²Î¤w¹ý©³ÅÞ¿è¤Æ¡A¦]¦¹§¹¥þ¤£¨ü¹êÅé³]³Æ®e¶q©Î¨ä¥L¯S©Êªº­­¨î¡C

¤U¹Ï»¡©ú¤F¦p¦ó¥Î²Å¸¹³s±µ¨ì¤@­ÓÀɮסG

Symbolic link.gif (6752 bytes)

¡i°Ñ¦Ò¡jinode, BSD, hard link, superuser, file system¡C

¡iªþµù¡j²Å¸¹³s±µ»P³n¦¡³s±µ¡]soft link¡^¬O¦P¸qÃã¡C

System call

¡iĶ¦W¡j¨t²Î©I¥s¡B¨t²Î½Õ¥Î

¡i»¡©ú¡j¡u¨t²Î©I¥s¡v¬OÅý¨Ï¥ÎªÌ»P¨t²Î®Ö¤ß¡]kernel¡^ª½±µ·¾³qªº¤¶­±¤§¤@¡C»¡±o§ó²M·¡¨Ç¡A©Ò¦³¥Î¤á²£¥Íªº³B²zµ{§Ç¡]process¡^³£­n³z¹L¥¦­Ì¤~¯à§¹¦¨Ãþ¦üÀɮתº¦s¨ú¡B³B²zµ{§Ç¶¡ªº³q°T¡]interprocess communication¡^¡B°O¾ÐÅéºÞ²z¡BµwÅ骺±±¨îµ¥¸û§C¶¥¡]low level¡^ªº¤u§@¡C¤U¹Ï©Ò¥Ü¬°¨Ï¥ÎªÌ³B²zµ{§Ç¡B¨t²Î©I¥s»P®Ö¤ßµ{¦¡¤TªÌ¶¡ªº¤¬°ÊÃö«Y¡C

System call.gif (5226 bytes)

¥Ñ¤W¹Ï¥i¥H²M·¡¬Ý¥X¡A¨Ï¥ÎªÌªº³B²zµ{§Ç¦³¨âºØ¤èªk¶i¦æ¨t²Î©I¥s¡C¤@¬O³z¹L½sĶµ{¦¡´£¨Ñªº¨ç¦¡¨Ó¥s¥Î¡A¨Ò¦p C »y¨¥¼Ð·Ç¨ç¦¡À]©Ò´£¨Ñªº popen() ¨ç¥Ü¡C popen() ¬O­Ó¨ç¥Ü¡A¦ý¬O¨ç¦¡¥»¨­«o·|¥s¥Î pipe() ³o­Ó¨t²Î©I¥s¡C¤S¦p getc() ¤]¬O¤@­Ó¨ç¥Ü¡A¦ý¥¦«o·|©I¥s read() ¨t²Î©I¥s¡C´«¨¥¤§¡A¨Ï¥ÎªÌ¬O¶¡±µ¥s¥Î¨t²Î©I¥s±`¦¡¡C·íµMª½±µ¦bµ{¦¡¤¤¥s¥Î¨t²Î©I¥s¤]¬O¥i¥Hªº¡A¤£¹L·U¬O·sª©ªº UNIX ¨t²Î¡A·U¬O±N¨t²Î©I¥s¨ç¦¡¤Æ¡C³o¤]´N¬O¥H¨ç¦¡¨Ó¨ú¥N¦³¨t²Î©I¥sªº¥\¯à¡A³o»ò°µªº¥D¦]¬O´£¨ÑÀ³¥Îµ{¦¡§ó¤jªº¥iÄâ©Ê¡C

¦b¨t²Î©I¥s³Q¥s¥Î®É·|°õ¦æ¤@­Ó¯S®íªº«ü¥O¥s°µ "trap" ¡C¥¦±N³B²zµ{§Ç¥Ñ¨Ï¥ÎªÌ¼Ò¦¡¤Á´«¨ì¨t²Î®Ö¤ß¼Ò¦¡¡A¶i¤J¨t²Î®Ö¤ß¼Ò¦¡«á¡AUNIX ·|®Ú¾Ú¶Ç¤Jªº¤Þ¼Æ»P¨t²Î©I¥sªº¦WºÙ¨ì¨t²Î®Ö¤ßªÅ¶¡¤¤¥h´M§ä¹ïÀ³ªº¨t²Î®Ö¤ß±`¦¡½X¨Ó°õ¦æ¡C¦]¬°¨Ï¥ÎªÌªÅ¶¡»P¨t²Î®Ö¤ßªÅ¶¡¬O¨â¶ôºIµM¤£¦Pªº°O¾ÐªÅ¶¡¡A©Ò¥H¦b°õ¦æ¨t²Î©I¥s®É¡A¨t²Î®Ö¤ßµ{¦¡¥²¶·§â¸ê®Æ§¹¾ã¦w¥þ¦a¦b¨â­Ó¦a§}¶¡¶Ç°e¡C¦]¦¹±q¨Ï¥ÎªÌ¼Ò¦¡¹L´ç¨ì¨t²Î®Ö¤ß¼Ò¦¡®É¡A®Ö¤ßµ{¦¡¥²¶·±N³B²zµ{§Ç¦b¨Ï¥ÎªÌ¼Ò¦¡¤U§@·~ªºª¬ºAÀx¦s°_¨Ó¡Aµ¥¨ì¨t²Î©I¥s°õ¦æµ²§ô¡A°õ¦æª¬ºA¥Ñ¨t²Î®Ö¤ß¼Ò¦¡ªð¦^¨Ï¥ÎªÌ¼Ò¦¡®É¡A¦AÄ~Äò­è¤~¥¼§¹ªº¤u§@¡C

¶ÈºÞ¦b C »y¨¥ªº¨Ï¥ÎÀô¹Ò¤U¡A©I¥s¨ç¦¡»P¥s¥Î¨t²Î©I¥s¦ü¥G¬O¨S¦³®t§O¡A¦ý¬O¹ê»Ú¤W¨âªÌ®t§O«Ü¤j¡C§Ú­Ì¥i´N¤U¦C´XÂI¨ÓÅçµý¡G

¤@¡^¥\¯à©Ê¡G

¨t²Î©I¥s¬O­n¨D¨t²Î®Ö¤ß¬°¨Ï¥ÎªÌ³B²zµ{§Ç°µ¬YºØªA°È¡C¤ñ¦p»¡ getpid() ¨t²Î©I¥s´N¬OÅý§@·~¨t²Î¶Ç¦^²{¦b°õ¦æªº³B²zµ{§Ç¤§ÃѧO½X¡F¦Ó C »y¨¥¨ç¦¡«h³q±`¤£»Ý­n¡]ª`·N¡G¤£¬Oµ´¹ï¤£»Ý­n¡A¨Ò¦p malloc() ´N­n¡^¨t²Î®Ö¤ßªºªA°È¡C¤ñ¦p»¡ exp() ¨ç¥Ü¡C¦]¦¹¤@¥s¥Î¨t²Î©I¥s¡A³B²zµ{§Çªº°õ¦æ´N·|±q¨Ï¥ÎªÌ¼Ò¦¡Âà¤J®Ö¤ßµ{¦¡¼Ò¦¡¡FµM¦Ó°õ¦æ¨ç¦¡®É¡A³B²zµ{§Ç¦h¥b³£¬O¦b¨Ï¥ÎªÌ¼Ò¦¡¤U¹B§@¡]¶È¦³¤Ö¼Æªº¨ç¦¡¨Ò¥~¡^¡C

¤G¡^¼h¦¸©Ê¡G

C »y¨¥¨ç¦¡¡]¯S§O¬O»P¿é¥X¿é¤J¤Î°O¾ÐÅé°t¸m¦³Ãöªº¨ç¦¡¡^¦h¥b±o³z¹L UNIX ªº¨t²Î©I¥s¨Ó¹F¦¨¡C¦]¦¹§Ú­Ì¥i¥H±N C »y¨¥ªº¨ç¦¡·í¦¨¬OÀ³¥Îµ{¦¡³]­p¤H­û»P¨t²Î©I¥s±`¦¡¶¡ªº¤@¼hµ´½t¡C³o¨Ç¨ç¦¡´£¨Ñ¥~Æ[¤@­Pªº¤¶­±¡AÅýµ{¦¡³]­p®v¯à°÷¤£¦] UNIX ªºª©¥»¤£¦P¦Ó¾D¨ìµ{¦¡³]­p¤Wªº§xÂZ¡C

¤T¡^°õ¦æ®Ä²v¡G

¨t²Î©I¥sªº°õ¦æ®Ä²v¦b¤j³¡¤Àªº®É­Ô­n¤ñ¨ç¦¡¨Óªº¦n¡A¯S§O¬O°õ¦æ»P¿é¥X¿é¤J¦³Ãöªº¨ç¦¡¡C¦b©Ò³B²zªº¸ê®Æ¶q¤£«Ü¤j®É¡A¨ç¦¡¤§°õ¦æ®Ä²v·|¸û¨Î¡A¦]¬°¥¦¬O±N«Ý³B²zªº¸ê®Æ¥ý¦s¦b½w½Ä°Ï¡Aµ¥¨ì½w½Ä°Ï¸Ëº¡¤F¦A±N¸ê®Æ¤@¦¸¼g¤J©Î¼g¥X¡C³oºØ¤è¦¡¦b³B²z¤p¶q¸ê®Æ®É¸û¬°§Ö³t¡A¨Ò¦p³æ¤@¦r¤¸ªº¿é¥X¿é¤J¡C¬Û¹ï¦a¡A¦b¶i¦æ¨t²Î©I¥s®É¡A¥Ñ©ó¨Ï¥ÎªÌ³B²zµ{§Ç±o±q¨Ï¥ÎªÌ¼Ò¦¡¶i¤J¨t²Î®Ö¤ß¼Ò¦¡¡A¨ä¶¡®Ö¤ßµ{¦¡­n°µ¤£¤ÖªºÃB¥~¤u§@¡]overhead¡^¡A³o¨ÇÃB¥~¤u§@·íµM¹ï¨t²Îªº°õ¦æ®Ä²v¦³¼vÅT¡C¦ý¬O¦b¸ê®Æ¶q¤jªº®É­Ô¡A¨ç¦¡©Ò±Ä¥Îªº¤è¦¡´NÅã±o¯Ê¥F®Ä²v¥B¦h¦¹¤@Á|¡A¨Ò¦p¦b«þ¨©¤j«¬Àɮ׮ɡA½w½Ä°Ïªº¦s¦b¤Ï¦Ó¬O¤@ºØ­t¾á¡C

¥|¡^¥iÄâ©Ê¡G

³oÂI²@µLºÃ°Ý¡A¨ç¦¡¤ñ¨t²Î©I¥s¾Ö¦³¸û°ªªº¥iÄâ©Ê¡C

¡i°Ñ¦Ò¡jkernel, process, interprocess communication¡C

system device

¡iĶ¦W¡j¨t²Î³]³Æ

¡i»¡©ú¡j¦b¤@­Ó¹q¸£ºô¸ô¤¤¡A·í¶gÃä³]³Æ¡]periphral device¡^¬Oª½±µ³s±µ¦b¥D¾÷¤W¡A¦Ó¤£¬O»P­Ó¤H¹q¸£©Î¤u§@¯¸¡]work station¡^¬Û³s±µ¡A¦¹Ãþ³]³Æ«KºÙ¬°¡u¨t²Î³]³Æ¡v¡C»P¦¹¬Û¹ïªº¬O¡u°Ï°ì³]³Æ¡v¡]local device¡^¡C

¡i°Ñ¦Ò¡j local device¡C

system process

¡iĶ¦W¡j¨t²Î³B²zµ{§Ç

¡i»¡©ú¡j¨t²Î³B²zµ{§Ç¬O«ü¤@¨Ç¦b¨t²Îªì©l®É´N¥Ñ¨t²Î®Ö¤ß¡]kernel¡^©Ò±Ò°Êªº³B²zµ{§Ç¡C³o¨Ç³B²zµ{§Ç©¹©¹¬O­t³d¾ã­Ó¨t²ÎªººÞ²z¤ÎºûÅ@¤u§@¡C³o¨Ç³B²zµ{§Ç¥H³B²zµ{§Ç 0¡]swapper¡^¡B³B²zµ{§Ç 1¡]init process¡^¡B³B²zµ{§Ç 2¡]pagedaemon¡^¬°¥Nªí¡C

¡i°Ñ¦Ò¡jinitialization process, page daemon, scheuler process¡C

system space

¡iĶ¦W¡j¨t²Î°Ï¶¡

¡i»¡©ú¡j¦P¡u¨t²Î®Ö¤ßªÅ¶¡¡v¤@Ãã¡C

¡i°Ñ¦Ò¡jkernel space¡C

system time

¡iĶ¦W¡j¨t²Î®É¶¡

¡i»¡©ú¡j¤@­Ó³B²zµ{§Ç¡]process¡^¦b®Ö¤ß¼Ò¦¡¡]kernel mode¡^¤U©Ò°õ¦æªº®É¶¡¡C»P¦¹¬Û¹ïªº¦Wµü¬°¡u¨Ï¥ÎªÌ®É¶¡¡v¡]user time¡^¡C

¡i°Ñ¦Ò¡jprocess, kernel mode, user time¡C