¡iͦW¡jµêÀÀÀɮרt²Î¡]
Virtual File System¡^¡i»¡©ú¡j
VFS µ²¦X¤F SVR3.x ª©ªº FFS¡]File System Switch¡^¥H¤Î Sun OS ªºµêÀÀÀɮרt²ÎºÞ²z§Þ³N¡CVFS ¬[ºc¤¹³\¤£¦P«¬ºAªºÀɮרt²Î¦b¦P¤@Ó¨t²Î¤W¨Ã¦s¡A¥¦¨Ã´£¨Ñ¨t²Î¶}µo¤Hû³]p¤Î§ó§ïªº¤u¨ã¡A¥H¤è«K¼W¨Ö·s«¬ºAªºÀɮרt²Î©ó UNIX §@·~¨t²Î¤¤¡C¡iͦW¡jµêÀÀ¦ì§}ªÅ¶¡
¡i»¡©ú¡j·í³B²zµ{§Ç¦b¯}¸H¡]
fragment¡^ªº¯u¹ê°O¾ÐÅ餤²¾¥X²¾¤J®É¡A¨ÃµLªk«OµýÀH®É³£¦³¨¬°÷ªºªÅ¶¡¯à°÷µ¹¨CÓ³B²zµ{§Ç¡A¦]¦¹®Ö¤ßµ{¦¡¡]kernel¡^·|¦b³B²zµ{§Ç½Õ¤J®É°t¸mµ{¦¡¦b°O¾ÐÅ餤©Ò¦bªº¦ì§}¡A¦Ó¨Ï¥ÎµêÀÀ¦ì§}ªÅ¶¡¥i¥H«ü©w¤@¶ô³sÄòªºµêÀÀ°O¾ÐÅé°Ï¶ô¡]block¡^µ¹³B²zµ{§Ç¡A³o¨Ç°Ï¶ô·|·í½Õ¤J®É¤~¯u¥¿¬M®g¨ì¯u¹ê°O¾ÐÅ餤¡C¡i°Ñ¦Ò¡j
fragmentation, block¡C¡iͦW¡jµêÀÀ½u¸ô
¡i»¡©ú¡jµêÀÀ½u¸ô¬O¤À«Ê¥æ´«ºô¸ô¡]
packed-switching network¡^ªº§Þ³N¤§¤@¡A¥t¤@ºØ¥Dn¤è¦¡¬O¡G¸ê®Æ¬y¡]datagram¡^¡CµêÀÀ½u¸ô¦n¤ñ¬O§Ṳ́é±`¥Í¬¡¤¤©Ò¨Ï¥Îªº¹q¸Ü¨t²Î¡G¦b¨âºÝ¶}©l³q°T¤§«e¡A¶·¥ý±N³q°T¸ô®|«Ø¥ß°_¨Ó¡C¦]¦¹¡A·í³s½u«Ø¥ß«á¡A©Ò¦³ªº¶Ç¿é¸ô®|¤]´N¦P®É²£¥Í¤F¡A¨CÓ«Ê¥]¥un«öµÛ³o±ø¸ô®|¡A«K¥i¥H°e¹F¨ì¹ï¤èªº¥D¾÷¡C¦Ó©M¹q¸Ü¨t²Î¤£¦Pªº¬O¡GµêÀÀ½u¸ôªº¦U¶µ¸ê·½¡A¦p¡G
IMP¡A¶Ç¿é½u¸ôµ¥¡M¦b¶Ç¿é¹Lµ{¤¤¨Ã«D¬O©T©w¤À°tµ¹¬YӨϥΪ̨ӨϥΡC¦p¦¹¤@¨Ó¡A¤~¥i¥H¹F¨ì¸ê·½¦@¨É¡A¦Ó¨Ïºô¸ôªº¸ê·½±o¥H³Q¥R¤À§Q¥Î¡C¥Ñ©óµêÀÀ½u¸ô¦b¶Ç¿é¹Lµ{¤¤¡A¨ä¶Ç¿é¸ô®|¤w³Q©T©w¡A¦]¦¹¨CÓ«Ê¥]¨Ã¤£»Ýn¥h°µ¸ô®|ªº¿ï¾Ü¡A©Ò¥H«Ê¥]¤¤¥u»Ý¦s©ñµêÀÀ½u¸ôªº½s¸¹¡A¦Ó¤£¥²°O¦í§¹¾ãªº¥Øªº¦a¦ì§}¡C©Ò¥H¥¦¾A¦X¥Î©ó¨CÓ«Ê¥]ªø«×¬Ò«Üµuªº±¡ªp¤U¡A¦p²×ºÝ¾÷»P¥D¾÷¶¡ªº³s½u¡C¦ý¥Ñ©óµêÀÀ½u¸ô¬O±N¶Ç¿é¸ô®|ªº¸ê®ÆÀx¦s©ó
IMP ¤¤¡A¦]¦¹·í¬YÓ IMP ¬G»Ù¦Ó¾É¦Ü¨ä°O¾ÐÅ餤ªº¸ê®Æ¬y¥¢®É¡A©Ò¦³¸g¹L¦¹ IMP ªºµêÀÀ½u¸ô³£±N¾D¨ìÂ_½uªº©R¹B¡C¡iͦW¡jµêÀÀ¥D±±¥x
¡i»¡©ú¡j©Ò¿×µêÀÀ¥D±±¥x¬O«ü¥Î¤á¥i¥H¦b¥u¦³¤@Ó¹ê»Ú¥D±±¥xªº±¡ªp¤U¡A¥H³nÅé¡]¥]¬A
vgetty¡Bvtlmgr¡Bnewvt µ¥¡^¼ÒÀÀ¼ÆÓ¥D±±¥x¡A¨Ï¥Î¤á¯à¥H¼öÁä¦b¦UÓµêÀÀ¥D±±¥x¶¡¤Á´«¡A¨Ï±o¦P¤@¥Î¤á¯à°÷¦P®É¾Þ§@¤@Ó¥H¤Wªº±±¨î¥x¡C¨C±Ò°Ê¤@ÓµêÀÀ¥D±±¥x´N§Î¦P¶}±Ò¤@Ó·sªº session¡A¸Ó session ¦³¦Û¤vªº session leader¡A¬O¥H session »P session ¶¡¬O§¹¥þ¿W¥ßªº¡C¤j¦h¼Æ SVR4 ª©ªº UNIX ³£¦³´£¨Ñ³oºØ¥\¯à¡A¦]¦¹±z¥i¥H¦b¤@¥x²×ºÝ¾÷¤W¶}±Ò¦n´XÓµêÀÀ±±¨î¥x¡A¦Ó¨CÓµêÀÀ±±¨î¥x³£°õ¦æ¤£¦Pªº shell ©Î¬O¥ô¦óÀ³¥Îµ{¦¡¡C¡iͦW¡jµêÀÀ°O¾ÐÅéºÞ²z
¡i»¡©ú¡j¦Û
System V ¥H°¡AUNIX ¨t²Î´£¨ÑµêÀÀ°O¾ÐÅéºÞ²zªº¯à¤O¡A¦]¦¹¥¦¤¹³\³B²zµ{§Ç¤£¶·¥þ³¡¸ü¤J¥D°O¾ÐÅé´N¯à°õ¦æ¡A¥¦¥i¥HÅý»²§U°O¾ÐÅé¼ÒÀÀ¦¨¥D°O¾ÐÅé¡A¥H´£°ª multi-programming ªºµ{«×¡AµM«á§Q¥Îµ{¦¡¦b¥D°O¾ÐÅé»P»²§U°O¾ÐÅé¶¡¤Á´«¡A³oºØ°O¾ÐÅéºÞ²z¤è¦¡«K¬O©Ò¿×ªºµêÀÀ°O¾ÐÅéºÞ²z¡C¦Ó¼ÒÀÀ¥D°O¾ÐÅ骺»²§U°O¾ÐÅé«h³QºÙ§@¸m´«³]³Æ¡]swap device¡^¡C¸m´«³]³Æ¥²¶·¬O¤@Ӱ϶ô³]³Æ¡A¤@¯ë¨Ó»¡³£¬O¥Hµw¦¡ºÏºÐ¾÷¨Ó¾á¥ô¸m´«³]³Æ¡CVTP (Virtual Terminal Protocal)
¡iͦW¡jµL
¡i»¡©ú¡jÀ³¥Î¼hªº³q°T¨ó©w¡]
protocol¡^¡C´£¨Ñ¤@ºØµêÀÀ²×ºÝ¾÷ªº¼Ð·Ç¡A¥H«K¯à¨Ï¤@¨Ç¥þ¿Ã¹õ«¬ªº½s¿èµ{¦¡¡]¦p UNIX ¤Wªº vi¡^¯à°÷¤£¦]²×ºÝ¾÷ºØ®t²§¦Ó¦³©Ò¼vÅT¡C¡i°Ñ¦Ò¡j
protocol¡C¡iͦW¡jµL
¡i»¡©ú¡j¦b
SVR4 ©Ò´£¨Ñªº½Ñ¦h«¬§O¤§Àɮרt²Î¤¤¡Avxfs ºâ¬O°õ¦æ®Ä¯à»P®e¿ù¯à¤O³£±jªº¤@Ó¡A¥¦¦³¤U±¤T¶µ¯SÂI¡G1. ¯à°÷§Ö³t¦^´_¡]recover¡^¨ü·l¡]failure¡^ªºÀɮ׫Y²Î¤£½×¬O ufs ÁÙ¬O s5¡A¥¦Ì¦bÀɮרt²Î¨ü·l®É³£¥²¶·¨Ì¿à¨t²Î«ü¥O fsck ¨ÓÅçÃÒÀɮרt²Î¬O§_¨ü·l¡A¨Ã§ó¥¿©Ò¦³µo²{ªº¿ù»~¡F¹ï©ó¤@ÓÃe¤jªºÀɮרt²Î¡A³oÓ¬dÅçµ{§Ç¥i¯à¯Ó®É¬Æ¤[¡Cvxfs ´£¨Ñ¤@Ó¦bµu®É¶¡¡]¦³®É¬Æ¦Ü¥u¶·´X¬íÄÁ¡^¦^´_¨ü·lÀɮרt²Îªº¤è¦¡¡F³oӤ覡ºÙ§@·N¦V°O¿ý¡]intent logging¡^¡C·N¦V°O¿ý¬O§âÀɮרt²Îùضi¦æ¤F¤@³¡¥÷¡A¦ý¬O¥¼¥þ³¡°µ§¹ªºÅܤƤ©¥H°O¸ü¡C·íÀɮרt²Î¥X¤ò¯f®É¡Avxfs ªº fsck «ü¥O±N·|ª½±µÀˬd·N¦V°O¿ý¡]intent log¡Aª`·N¦¹³B log ¬O§@¦Wµü¸Ñ¡^¡A¨Ã§â¦b¨t²Î¥X°ÝÃD®É©Ò¦³¥¼§¹¦¨ªº§ïÅܤ@«h±N¥¦°µ§¹¡A©Î¬O©ñ±ó©Ò°µªº¤@¤Á§ïÅÜ¡C¦p¦¹ UNIX «K¥i¥H¦b«Üµuªº®É¶¡¤º±NÀɮרt²Î±¾¤W¡]mount¡^²Î¬dÅç¬yµ{¡C
2. extent-based ªº©w§}¤è¦¡ extent ¬O«üÀɮרt²Î¤¤¬Û¾FªºÀx¦s°Ï¶ô¡Avxfs ¦b¦s¤JÀÉ®×¸ê®Æ®É´N¬O¥H extent ¬°³æ¦ì¡A´«¨¥¤§¦b vxfs ¤§¤U¹ïÀÉ®×Ū¼gªººÏºÐ¿é¥X¿é¤J¬O¥H¨C¦¸¼ÆÓ°Ï¶ô¬°³æ¦ì¡A¦Ó s5¡Bufs¡Bsfs µ¥«h¥H°Ï¶ô¬°³æ¦ì¡C·í¶i¦æ´`§Ç¿é¥X¿é¤J¡]sequential I/O¡^®É¡A¤@¦¸¹ï¼ÆÓ°Ï¶ô¶i¦æ¿é¥X¿é¤Jªº³t«×±N»·°ª©ó¤@¦¸¤@Ӱ϶ôªº§@·~¡C
3. ¸ê®Æ§¹¾ã©Ê¡]integrity¡^ªº±j¤Æ¦b¨t²Î¹B¦æ®É¡Ainode »P¤@¯ë¸ê®Æ³£¾Ö¦³¨â¥÷«þ¨©¡AY¥H inode ¬°¨Ò¡A¦b¥D°O¾ÐÅ骺¨º¤@¥÷ºÙ¬° in-core inode¡A¦bµwºÐ¤¤ªº¨º¥÷¥s disk inode¡C¤@¯ë¸ê®Æ¤]¬O¤@¼Ë¡A¦b³Q³B²z®É³£·|¥ý¸ü¤J°O¾ÐÅé¡AµM¦Ó¬°¤F´î¤ÖµwºÐ¿é¥X¿é¤Jªº¦¸¼Æ¼W¥[¨t²Îªº®Ä²v¡A¨t²Î¤£·|¦b¸ê®Æ¤@³Q§ó§ï«á´N±N×§ï¹Lªº¸ê®Æ¦s¤JµwºÐ¡A³q±`¬O¹j¤@¬q®É¶¡¤~§@¤@¦¸¸ê®Æ¼g¤Jªº§@·~¡C³oӰʧ@¥s¦P¨B¡]synchronize¡AUNIX ³z¹L«ü¥O sync ¨Ó°õ¦æ¦¹°Ê§@¡^¡C°²¨Ï¨t²Î¦b¤W¦¸°õ¦æ sync «á¨ì¦A¦¸°õ¦æ sync ¤§¶¡·í¾÷¡A¨º»ò³o¬q®É¶¡©Ò¦³§ó§ï©Î·s¼Wªº¸ê®Æ³£±N¤@¥h¤£¦^¡Cvxfs¡C´£¨Ñ¤F¤@ÓºÙ§@ mincache ªº¿ï¶µ¡A¥¦Åý¨t²Î´X¥G¬O¦b§Y®Éªº±¡ªp¤U°µ¸ê®Æ¦P¨B¡A¦p¦¹¥u¦³¦b·í¾÷¨º¤@¨è¥¿¶i¦æ¼g¤Jªº¸ê®Æ¤~·|³à¥¢¡A¨Ï¸ê®Æªº¤@P©Ê»P§¹¾ã©Ê¤j¬°¼W¶i¡C·íµM¤Ñ¤UµL¥Õ¦Yªº¤ÈÀ\¡A·í¨Ï¥Î mincache ¿ï¶µ®É¡A¨t²Îªº³t«×±NÅܺC¡C¤U±¬° vxfs ªº¬[ºc¹Ï¡G
¦b¶W¯Å°Ï¶ô³o³¡¥÷¡Avxfs »P ufs ®t¤£¦h¡A¦Ó©w§}³æ¦ì¡]allocation unit¡^«h¬O³sÄòªº¤@²Õ°Ï¶ô¡A¤ñ¸ûȱo¤@´£ªº¬O¡y·N¦V°O¿ý¡z¡A³oÓ³¡¥÷¦û 256 Ӱ϶ô¡]vxfs ªº°Ï¶ô¤j¤p¥i¥H±q 1K ¨ì 8K¡A¹w³]¤j¤p¬° 1K¡^¡A¥¦ªº¤j¤p¤j¬ù¬O 256K¡A¦pªG¨t²Îªº¤j¤p¤Ö©ó 4 MB¡A·N¦V°O¿ýªº¤Ø¤o·|¦Û¦æÁY¤p¥H¸`¬ÙªÅ¶¡¡Cvxfs ªº³o®M³B²z¤è¦¡¦³¤HºÙ§@¬O¡y¥æ©ö°ò·Ç¡zªº§@·~¼Ò¦¡¡A§ÚÌ¥H»È¦æªº¦Û°ÊÂdû¾÷¡]ATM¡^¬°¨Ò¡A¨C¤@µ§¥æ©ö¡]¤£½×¬O¦s´ÚÁÙ¬O´£´Ú¡^³£¥²¶·n¥þ³¡§¹¦¨¡Aµ´¹ï¤£¤¹³\¦³°µ¤F¤@¥bªº±¡ªp¡C¥H´£´Ú¬°¨Ò¡A°²³]¾ãÓ¥æ©ö°Ê§@¥]¬AÅç®Ö¥Î¤á±K½X¡BŪ¨ú¦s´Ú¾lÃB¡B®Ö¹ï¦s´Ú¬O§_¨¬°÷¡B¦pªG°÷«h´£»â´Ú¶µ¡B±N·sªº¦s´Ú¾lÃB¼g¤J¡B¥I´Úµ¥¡A³o¤»Ó°Ê§@µ²¦X¦b¤@°_«K¬O¤@µ§¥æ©ö¡A¤@µ§¥æ©ön´N¬O¥þ³¡§¹¦¨¡An´N¬O¾ãÓ©ñ±ó¡Aµ´¤£®e³\¦³°µ¤F¤@³¡¥÷ªº±¡ªp¡Cvxfs ´N¬O±NÀɮרt²Îªº§@·~¥HÃþ¦ü¥æ©öªº¤è¦¡³B²z¡A©Ò¦³¥¼°µ sync ªº¤u§@³£·|¥H¡y·N¦V¬ö¿ý¡z»P¥H°O¸ü¡A¦]¦¹¤~¯à°µ¨ì·í¨t²Î·í±¼®É¶È¦³²{¦b¥¿¼g¤JªºÓµ§¸ê®Æ·|³à¥¢¡C