±à¼ÍƼö: |
±¾ÎÄ´Ó¼¸¸ö·½ÃæÀ´½éÉÜÁ˲Ù×÷ϵͳ£¬Ê×ÏÈÈÏʶ²Ù×÷ϵͳ
£¬¼ÆËã»úÓ²¼þ £¬È»ºó´Ó½ø³ÌºÍỊ̈߳¬½ø³Ì¼äͨÐÅ£¬µ÷¶È£¬µØÖ·¿Õ¼ä£¬ÐéÄâÄÚ´æµÈµÈ·½Ãæ½éÉܵġ£
±¾ÎÄÀ´×ÔÓÚ΢ÐÅJava½¨ÉèÕߣ¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Õâ²»ÊÇһƪ½ÌÄãÈçºÎ´´½¨Ò»¸ö²Ù×÷ϵͳµÄÎÄÕ£¬Ïà·´£¬ÕâÊÇһƪָµ¼ÐÔÎÄÕ£¬½ÌÄã´Ó¼¸¸ö·½ÃæÀ´Àí½â²Ù×÷ϵͳ¡£Ê×ÏÈÄãÐèÒªÖªµÀÄãΪʲôҪ¿´ÕâÆªÎÄÕÂÒÔ¼°ÎªÊ²Ã´ÒªÑ§Ï°²Ù×÷ϵͳ¡£

¸ßÇå´óͼ¼ûÎÄÄ©
¸ãÇå³þ¼¸¸öÎÊÌâ
Ê×ÏÈÄãÒª¸ãÃ÷°×Äãѧϰ²Ù×÷ϵͳµÄÄ¿µÄÊÇʲô£¿²Ù×÷ϵͳµÄÖØÒªÐÔÈçºÎ£¿Ñ§Ï°²Ù×÷ϵͳ»á¸øÎÒ´øÀ´Ê²Ã´£¿ÏÂÃæÎÒ»á´ÓÕ⼸¸ö·½ÃæÎªÄã»Ø´ðÏ¡£
²Ù×÷ϵͳҲÊÇÒ»ÖÖÈí¼þ£¬µ«ÊDzÙ×÷ϵͳÊÇÒ»Öַdz£¸´ÔÓµÄÈí¼þ¡£²Ù×÷ϵͳÌṩÁ˼¸ÖÖ³éÏóÄ£ÐÍ
Îļþ£º¶Ô I/O É豸µÄ³éÏó
ÐéÄâÄڴ棺¶Ô³ÌÐò´æ´¢Æ÷µÄ³éÏó
½ø³Ì£º¶ÔÒ»¸öÕýÔÚÔËÐгÌÐòµÄ³éÏó
ÐéÄâ»ú£º¶ÔÕû¸ö²Ù×÷ϵͳµÄ³éÏó
ÕâЩ³éÏóºÍÎÒÃǵÄÈÕ³£¿ª·¢Ï¢Ï¢Ïà¹Ø¡£¸ãÇå³þÁ˲Ù×÷ϵͳÊÇÈçºÎ³éÏóµÄ£¬²ÅÄÜÅàÑøÎÒÃǵijéÏóÐÔ˼άºÍ¿ª·¢Ë¼Â·¡£
ºÜ¶àÎÊÌâ¶¼ºÍ²Ù×÷ϵͳÏà¹Ø£¬²Ù×÷ϵͳÊǽâ¾öÕâЩÎÊÌâµÄ»ù´¡¡£Èç¹ûÄ㲻ѧϰ²Ù×÷ϵͳ£¬¿ÉÄÜ»áÏë×Å´Ó¿ò¼Ü²ãÃæÀ´½â¾ö£¬ÄÇÊÇÄãÁ˽âµÄ»¹²»¹»ÉîÈ룬µ±ÄãѧϰÁ˲Ù×÷ϵͳºó£¬Äܹ»ÅàÑøÄãµÄÈ«¾ÖÐÔ˼ά¡£
ѧϰ²Ù×÷ϵͳÎÒÃÇÄܹ»ÓÐЧµÄ½â¾ö²¢·¢ÎÊÌ⣬²¢·¢¼¸ºõÊÇ»¥ÁªÍøµÄÖØÖÐÖ®ÖØÁË£¬ÕâÒ²´Ó²àÃæËµÃ÷ÁËѧϰ²Ù×÷ϵͳµÄÖØÒªÐÔ¡£
ѧϰ²Ù×÷ϵͳµÄÖØµã²»ÊÇÈÃÄã´ÓÍ·ÖÆÔìÒ»¸ö²Ù×÷ϵͳ£¬¶øÊǸæËßÄ㡸²Ù×÷ϵͳÊÇÈçºÎ¹¤×÷µÄ¡¹£¬Äܹ»ÈÃÄã¶Ô¼ÆËã»úµ×²ãÓÐËùÁ˽⣬´òʵÄãµÄ»ù´¡¡£
ÏàÐÅÄãÒ»¶¨Çå³þʲôÊDZà³Ì
¡¸Data structures + Algorithms = Programming¡¹
²Ù×÷ϵͳÄÚ²¿»áÉæ¼°µ½ÖÚ¶àµÄÊý¾Ý½á¹¹ºÍËã·¨ÃèÊö£¬Äܹ»ÈÃÄãÁ˽âËã·¨µÄ»ù´¡ÉÏ£¬ÈÃÄã±àд¸üÓÅÐãµÄ³ÌÐò¡£
ÎÒÈÏΪ¿ÉÒ԰ѼÆËã»ú±È×÷Ò»¶°Â¥
¼ÆËã»úµÄµ×²ãÏ൱ÓÚ¾ÍÊÇÂ¥µÄ¸ù»ù£¬¼ÆËã»úÓ¦ÓÃÏ൱ÓÚ¾ÍÊÇÂ¥µÄÍâÐΣ¬¶ø²Ù×÷ϵͳ¾ÍÏ൱ÓÚÊǸæËßÄã´óÂ¥µÄ¹¹ÔìÔÀí£¬±àд¸ßÖÊÁ¿µÄÈí¼þ¾ÍÏ൱ÓÚÊǸæËßÄã¹¹½¨Ò»¸öÎȶ¨µÄ·¿×Ó¡£
ÈÏʶ²Ù×÷ϵͳ
ÔÚÁ˽â²Ù×÷ϵͳǰ£¬ÄãÐèÒªÏÈÖªµÀÒ»ÏÂʲôÊǼÆËã»úϵͳ£ºÏÖ´ú¼ÆËã»úϵͳÓÉ¡¸Ò»¸ö»ò¶à¸ö´¦ÀíÆ÷¡¢Ö÷´æ¡¢´òÓ¡»ú¡¢¼üÅÌ¡¢Êó±ê¡¢ÏÔʾÆ÷¡¢ÍøÂç½Ó¿ÚÒÔ¼°¸÷ÖÖÊäÈë/Êä³öÉ豸¹¹³ÉµÄϵͳ¡¹¡£ÕâЩ¶¼ÊôÓÚÓ²¼þµÄ·¶³ë¡£ÎÒÃdzÌÐòÔ±²»»áÖ±½ÓºÍÕâЩӲ¼þ´ò½»µÀ£¬²¢ÇÒÿλ³ÌÐòÔ±²»¿ÉÄÜ»áÕÆÎÕËùÓмÆËã»úϵͳµÄϸ½Ú¡£
ËùÒÔ¼ÆËã»ú¿ÆÑ§¼ÒÔÚÓ²¼þµÄ»ù´¡Ö®ÉÏ£¬°²×°ÁËÒ»²ãÈí¼þ£¬Õâ²ãÈí¼þÄܹ»¸ù¾ÝÓû§ÊäÈëµÄÖ¸Áî´ïµ½¿ØÖÆÓ²¼þµÄЧ¹û£¬´Ó¶øÂú×ãÓû§µÄÐèÇó£¬ÕâÑùµÄÈí¼þ³ÆÎª
²Ù×÷ϵͳ£¬ËüµÄÈÎÎñ¾ÍÊÇΪÓû§³ÌÐòÌṩһ¸ö¸üºÃ¡¢¸ü¼òµ¥¡¢¸üÇåÎúµÄ¼ÆËã»úÄ£ÐÍ¡£Ò²¾ÍÊÇ˵£¬²Ù×÷ϵͳÏ൱ÓÚÊÇÒ»¸öÖмä²ã£¬ÎªÓû§²ãºÍÓ²¼þÌṩ¸÷×ԵĽè¿Ú£¬ÆÁ±ÎÁ˲»Í¬Ó¦ÓúÍÓ²¼þÖ®¼äµÄ²îÒ죬´ïµ½Í³Ò»±ê×¼µÄ×÷Óá£

ÉÏÃæÒ»¸ö²Ù×÷ϵͳµÄ¼ò»¯Í¼£¬×îµ×²ãÊÇÓ²¼þ£¬Ó²¼þ°üÀ¨¡¸Ð¾Æ¬¡¢µç·°å¡¢´ÅÅÌ¡¢¼üÅÌ¡¢ÏÔʾÆ÷¡¹µÈÎÒÃÇÉÏÃæÌáµ½µÄÉ豸£¬ÔÚÓ²¼þÖ®ÉÏÊÇÈí¼þ¡£´ó²¿·Ö¼ÆËã»úÓÐÁ½ÖÖÔËÐÐģʽ£ºÄÚºË̬
ºÍ Óû§Ì¬£¬Èí¼þÖÐ×î»ù´¡µÄ²¿·ÖÊDzÙ×÷ϵͳ£¬ËüÔËÐÐÔÚ ÄÚºË̬ ÖС£²Ù×÷ϵͳ¾ßÓÐÓ²¼þµÄ·ÃÎÊȨ£¬¿ÉÒÔÖ´ÐлúÆ÷Äܹ»ÔËÐеÄÈκÎÖ¸Áî¡£Èí¼þµÄÆäÓಿ·ÖÔËÐÐÔÚ
Óû§Ì¬ Ï¡£
ÔÚ´ó¸ÅÁ˽⵽²Ù×÷ϵͳ֮ºó£¬ÎÒÃÇÏÈÀ´ÈÏʶһÏÂÓ²¼þ¶¼ÓÐÄÄЩ
¼ÆËã»úÓ²¼þ
¼ÆËã»úÓ²¼þÊǼÆËã»úµÄÖØÒª×é³É²¿·Ö£¬ÆäÖаüº¬ÁË 5 ¸öÖØÒªµÄ×é³É²¿·Ö£º¡¸ÔËËãÆ÷¡¢¿ØÖÆÆ÷¡¢´æ´¢Æ÷¡¢ÊäÈëÉ豸¡¢Êä³öÉ豸¡¹¡£
ÔËËãÆ÷£ºÔËËãÆ÷×îÖ÷ÒªµÄ¹¦ÄÜÊǶÔÊý¾ÝºÍÐÅÏ¢½øÐмӹ¤ºÍÔËËã¡£ËüÊǼÆËã»úÖÐÖ´ÐÐËãÊýºÍ¸÷ÖÖÂß¼ÔËËãµÄ²¿¼þ¡£ÔËËãÆ÷µÄ»ù±¾ÔËËã°üÀ¨¼Ó¡¢¼õ¡¢³Ë¡¢³ý¡¢ÒÆÎ»µÈ²Ù×÷£¬ÕâЩÊÇÓÉ
ËãÊõÂß¼µ¥Ôª(Arithmetic&logical Unit) ʵÏֵġ£¶øÔËËãÆ÷Ö÷ÒªÓÉËãÊýÂß¼µ¥ÔªºÍ¼Ä´æÆ÷¹¹³É¡£
¿ØÖÆÆ÷£ºÖ¸°´ÕÕÖ¸¶¨Ë³Ðò¸Ä±äÖ÷µç·»ò¿ØÖƵ緵IJ¿¼þ£¬ËüÖ÷ÒªÆðµ½ÁË¿ØÖÆÃüÁîÖ´ÐеÄ×÷Óã¬Íê³Éе÷ºÍÖ¸»ÓÕû¸ö¼ÆËã»úϵͳµÄ²Ù×÷¡£¿ØÖÆÆ÷ÊÇÓɳÌÐò¼ÆÊýÆ÷¡¢Ö¸Áî¼Ä´æÆ÷¡¢½âÂëÒëÂëÆ÷µÈ¹¹³É¡£
ÔËËãÆ÷ºÍ¿ØÖÆÆ÷¹²Í¬×é³ÉÁË CPU
´æ´¢Æ÷£º´æ´¢Æ÷¾ÍÊǼÆËã»úµÄ¼ÇÒäÉ豸£¬¹ËÃû˼Ò壬´æ´¢Æ÷¿ÉÒÔ±£´æÐÅÏ¢¡£´æ´¢Æ÷·ÖΪÁ½ÖÖ£¬Ò»ÖÖÊÇÖ÷´æ£¬Ò²¾ÍÊÇÄڴ棬ËüÊÇ
CPU Ö÷Òª½»»¥¶ÔÏ󣬻¹ÓÐÒ»ÖÖÊÇÍâ´æ£¬±ÈÈçÓ²ÅÌÈíÅ̵ȡ£ÏÂÃæÊÇÏÖ´ú¼ÆËã»úϵͳµÄ´æ´¢¼Ü¹¹
ÊäÈëÉ豸£ºÊäÈëÉ豸ÊǸø¼ÆËã»ú»ñÈ¡ÍⲿÐÅÏ¢µÄÉ豸£¬ËüÖ÷Òª°üÀ¨¼üÅ̺ÍÊó±ê¡£
Êä³öÉ豸£ºÊä³öÉ豸ÊǸøÓû§³ÊÏÖ¸ù¾ÝÊäÈëÉ豸»ñÈ¡µÄÐÅÏ¢¾¹ýһϵÁеļÆËãºóµÃµ½ÏÔʾµÄÉ豸£¬ËüÖ÷Òª°üÀ¨ÏÔʾÆ÷¡¢´òÓ¡»úµÈ¡£
ÕâÎ岿·ÖÒ²ÊÇ·ëŵÒÁÂüµÄÌåϵ½á¹¹£¬ËüÈÏΪ¼ÆËã»ú±ØÐë¾ßÓÐÈçϹ¦ÄÜ£º
°ÑÐèÒªµÄ³ÌÐòºÍÊý¾ÝËÍÖÁ¼ÆËã»úÖС£±ØÐë¾ßÓг¤ÆÚ¼ÇÒä³ÌÐò¡¢Êý¾Ý¡¢Öмä½á¹û¼°×îÖÕÔËËã½á¹ûµÄÄÜÁ¦¡£Äܹ»Íê³É¸÷ÖÖËãÊõ¡¢Âß¼ÔËËãºÍÊý¾Ý´«Ë͵ÈÊý¾Ý¼Ó¹¤´¦ÀíµÄÄÜÁ¦¡£Äܹ»¸ù¾ÝÐèÒª¿ØÖƳÌÐò×ßÏò£¬²¢Äܸù¾ÝÖ¸Áî¿ØÖÆ»úÆ÷µÄ¸÷²¿¼þе÷²Ù×÷¡£Äܹ»°´ÕÕÒªÇ󽫴¦Àí½á¹ûÊä³ö¸øÓû§¡£

ÏÂÃæÊÇÒ»ÕÅ intel ¼Ò×å²úƷͼ£¬ÊÇÒ»¸öÏêϸµÄ¼ÆËã»úÓ²¼þ·ÖÀ࣬ÎÒÃÇÔÚ¸ù¾ÝͼÖÐÉæ¼°µ½Ó²¼þ½øÐнéÉÜ

×ÜÏß(Buses)£ºÔÚÕû¸öϵͳÖÐÔËÐеÄÊdzÆÎª×ÜÏßµÄµçÆø¹ÜµÀµÄ¼¯ºÏ£¬ÕâЩ×ÜÏßÔÚ×é¼þÖ®¼äÀ´»Ø´«Êä×Ö½ÚÐÅÏ¢¡£Í¨³£×ÜÏß±»Éè¼Æ³É´«ËͶ¨³¤µÄ×ֽڿ飬Ҳ¾ÍÊÇ
×Ö(word)¡£×ÖÖеÄ×Ö½ÚÊý£¨×Ö³¤£©ÊÇÒ»¸ö»ù±¾µÄϵͳ²ÎÊý£¬¸÷¸öϵͳÖж¼²»¾¡Ïàͬ¡£ÏÖÔڴ󲿷ֵÄ×Ö¶¼ÊÇ
4 ¸ö×Ö½Ú£¨32 룩»òÕß 8 ¸ö×Ö½Ú£¨64 룩¡£

I/O É豸(I/O Devices)£ºInput/Output É豸ÊÇϵͳºÍÍⲿÊÀ½çµÄÁ¬½Ó¡£ÉÏͼÖÐÓÐËÄÀà
I/O É豸£ºÓÃÓÚÓû§ÊäÈëµÄ¼üÅ̺ÍÊó±ê£¬ÓÃÓÚÓû§Êä³öµÄÏÔʾÆ÷£¬Ò»¸ö´ÅÅÌÇý¶¯ÓÃÀ´³¤Ê±¼äµÄ±£´æÊý¾ÝºÍ³ÌÐò¡£¸Õ¿ªÊ¼µÄʱºò£¬¿ÉÖ´ÐгÌÐò¾Í±£´æÔÚ´ÅÅÌÉÏ¡£
ÿ¸öI/O É豸Á¬½Ó I/O ×ÜÏß¶¼±»³ÆÎª¿ØÖÆÆ÷(controller) »òÕßÊÇ ÊÊÅäÆ÷(Adapter)¡£¿ØÖÆÆ÷ºÍÊÊÅäÆ÷Ö®¼äµÄÖ÷񻂿±ðÔÚÓÚ·â×°·½Ê½¡£¿ØÖÆÆ÷ÊÇ
I/O É豸±¾Éí»òÕßϵͳµÄÖ÷Ó¡ÖÆ°åµç·£¨Í¨³£³Æ×÷Ö÷°å£©ÉϵÄоƬ×é¡£¶øÊÊÅäÆ÷ÔòÊÇÒ»¿é²åÔÚÖ÷°å²å²ÛÉϵĿ¨¡£ÎÞÂÛ×éÖ¯ÐÎʽÈçºÎ£¬ËüÃǵÄ×îÖÕÄ¿µÄ¶¼ÊDZ˴˽»»»ÐÅÏ¢¡£
Ö÷´æ(Main Memory)£¬Ö÷´æÊÇÒ»¸öÁÙʱ´æ´¢É豸£¬¶ø²»ÊÇÓÀ¾ÃÐÔ´æ´¢£¬´ÅÅÌÊÇ ÓÀ¾ÃÐÔ´æ´¢ µÄÉ豸¡£Ö÷´æ¼È±£´æ³ÌÐò£¬ÓÖ±£´æ´¦ÀíÆ÷Ö´ÐÐÁ÷³ÌËù´¦ÀíµÄÊý¾Ý¡£´ÓÎïÀí×é³ÉÉÏ˵£¬Ö÷´æÊÇÓÉһϵÁÐ
DRAM(dynamic random access memory) ¶¯Ì¬Ëæ»ú´æ´¢¹¹³ÉµÄ¼¯ºÏ¡£Âß¼ÉÏ˵£¬ÄÚ´æ¾ÍÊÇÒ»¸öÏßÐÔµÄ×Ö½ÚÊý×飬ÓÐËüΨһµÄµØÖ·±àºÅ£¬´Ó
0 ¿ªÊ¼¡£Ò»°ãÀ´Ëµ£¬×é³É³ÌÐòµÄÿÌõ»úÆ÷Ö¸Áî¶¼Óɲ»Í¬ÊýÁ¿µÄ×Ö½Ú¹¹³É£¬C ³ÌÐò±äÁ¿Ïà¶ÔÓ¦µÄÊý¾ÝÏîµÄ´óС¸ù¾ÝÀàÐͽøÐб仯¡£±ÈÈ磬ÔÚ
Linux µÄ x86-64 »úÆ÷ÉÏ£¬short ÀàÐ͵ÄÊý¾ÝÐèÒª 2 ¸ö×Ö½Ú£¬int ºÍ float
ÐèÒª 4 ¸ö×Ö½Ú£¬¶ø long ºÍ double ÐèÒª 8 ¸ö×Ö½Ú¡£
´¦ÀíÆ÷(Processor)£¬CPU(central processing unit) »òÕß¼òµ¥µÄ´¦ÀíÆ÷£¬ÊǽâÊÍ£¨²¢Ö´ÐУ©´æ´¢ÔÚÖ÷´æ´¢Æ÷ÖеÄÖ¸ÁîµÄÒýÇæ¡£´¦ÀíÆ÷µÄºËÐÄ´óСΪһ¸ö×ֵĴ洢É豸£¨»ò¼Ä´æÆ÷£©£¬³ÆÎª³ÌÐò¼ÆÊýÆ÷(PC)¡£ÔÚÈκÎʱ¿Ì£¬PC
¶¼Ö¸ÏòÖ÷´æÖеÄijÌõ»úÆ÷ÓïÑÔÖ¸Á¼´º¬ÓиÃÌõÖ¸ÁîµÄµØÖ·£©¡£
´Óϵͳͨµç¿ªÊ¼£¬Ö±µ½ÏµÍ³¶Ïµç£¬´¦ÀíÆ÷Ò»Ö±ÔÚ²»¶ÏµØÖ´ÐгÌÐò¼ÆÊýÆ÷Ö¸ÏòµÄÖ¸ÁÔÙ¸üгÌÐò¼ÆÊýÆ÷£¬Ê¹ÆäÖ¸ÏòÏÂÒ»ÌõÖ¸Áî¡£´¦ÀíÆ÷¸ù¾ÝÆäÖ¸ÁÌåϵ½á¹¹¶¨ÒåµÄÖ¸ÁîÄ£ÐͽøÐвÙ×÷¡£ÔÚÕâ¸öÄ£ÐÍÖУ¬Ö¸Áî°´ÕÕÑϸñµÄ˳ÐòÖ´ÐУ¬Ö´ÐÐÒ»ÌõÖ¸ÁîÉæ¼°Ö´ÐÐһϵÁеIJ½Öè¡£´¦ÀíÆ÷´Ó³ÌÐò¼ÆÊýÆ÷Ö¸ÏòµÄÄÚ´æÖжÁȡָÁ½âÊÍÖ¸ÁîÖеÄλ£¬Ö´ÐиÃÖ¸ÁîָʾµÄһЩ¼òµ¥²Ù×÷£¬È»ºó¸üгÌÐò¼ÆÊýÆ÷ÒÔÖ¸ÏòÏÂÒ»ÌõÖ¸Áî¡£Ö¸ÁîÓëÖ¸ÁîÖ®¼ä¿ÉÄÜÁ¬Ðø£¬¿ÉÄܲ»Á¬Ðø£¨±ÈÈç
jmp Ö¸Áî¾Í²»»á˳Ðò¶ÁÈ¡£©
ÏÂÃæÊÇ CPU ¿ÉÄÜÖ´Ðмòµ¥²Ù×÷µÄ¼¸¸ö²½Öè
¼ÓÔØ(Load)£º´ÓÖ÷´æÖп½±´Ò»¸ö×Ö½Ú»òÕßÒ»¸ö×Öµ½ÄÚ´æÖУ¬¸²¸Ç¼Ä´æÆ÷ÏÈǰµÄÄÚÈÝ
´æ´¢(Store)£º½«¼Ä´æÆ÷ÖеÄ×Ö½Ú»ò×Ö¸´ÖƵ½Ö÷´æ´¢Æ÷ÖеÄij¸öλÖ㬴Ӷø¸²¸Ç¸ÃλÖõÄÏÈǰÄÚÈÝ
²Ù×÷(Operate)£º°ÑÁ½¸ö¼Ä´æÆ÷µÄÄÚÈݸ´ÖƵ½ ALU(Arithmetic logic unit)¡£°ÑÁ½¸ö×Ö½øÐÐËãÊõÔËË㣬²¢°Ñ½á¹û´æ´¢ÔڼĴæÆ÷ÖУ¬ÖØÐ´¼Ä´æÆ÷ÏÈǰµÄÄÚÈÝ¡£
ËãÊõÂß¼µ¥Ôª£¨ALU£©ÊǶÔÊý×Ö¶þ½øÖÆÊýÖ´ÐÐËãÊõºÍ°´Î»ÔËËãµÄ×éºÏÊý×Öµç×ӵ緡£
Ìø×ª(jump)£º´ÓÖ¸ÁîÖгéȡһ¸ö×Ö£¬°ÑÕâ¸ö×Ö¸´ÖƵ½³ÌÐò¼ÆÊýÆ÷(PC) ÖУ¬¸²¸ÇÔÀ´µÄÖµ
½ø³ÌºÍÏß³Ì
¹ØÓÚ½ø³ÌºÍỊ̈߳¬ÄãÐèÒªÀí½âÏÂÃæÕâÕÅÄÔͼÖеÄÖØµã

½ø³Ì
²Ù×÷ϵͳÖÐ×îºËÐĵĸÅÄî¾ÍÊÇ ½ø³Ì£¬½ø³ÌÊǶÔÕýÔÚÔËÐÐÖеijÌÐòµÄÒ»¸ö³éÏó¡£²Ù×÷ϵͳµÄÆäËûËùÓÐÄÚÈݶ¼ÊÇÎ§ÈÆ×Žø³ÌÕ¹¿ªµÄ¡£
ÔÚ¶àµÀ³ÌÐò´¦ÀíµÄϵͳÖУ¬CPU »áÔÚ½ø³Ì¼ä¿ìËÙÇл»£¬Ê¹Ã¿¸ö³ÌÐòÔËÐм¸Ê®»òÕß¼¸°ÙºÁÃ롣Ȼ¶ø£¬ÑϸñÒâÒåÀ´Ëµ£¬ÔÚijһ¸ö˲¼ä£¬CPU
Ö»ÄÜÔËÐÐÒ»¸ö½ø³Ì£¬È»¶øÎÒÃÇÈç¹û°Ñʱ¼ä¶¨Î»Îª 1 ÃëÄڵϰ£¬Ëü¿ÉÄÜÔËÐжà¸ö½ø³Ì¡£ÕâÑù¾Í»áÈÃÎÒÃDzúÉú²¢ÐеĴí¾õ¡£ÒòΪ
CPU Ö´ÐÐËٶȺܿ죬½ø³Ì¼äµÄ»»½ø»»³öÒ²·Ç³£Ñ¸ËÙ£¬Òò´ËÎÒÃǺÜÄѶԶà¸ö²¢Ðнø³Ì½øÐиú×Ù¡£ËùÒÔ£¬²Ù×÷ϵͳµÄÉè¼ÆÕß¿ª·¢ÁËÓÃÓÚÃèÊö²¢ÐеÄÒ»ÖÖ¸ÅÄîÄ£ÐÍ£¨Ë³Ðò½ø³Ì£©£¬Ê¹µÃ²¢Ðиü¼ÓÈÝÒ×Àí½âºÍ·ÖÎö¡£
½ø³ÌÄ£ÐÍ
Ò»¸ö½ø³Ì¾ÍÊÇÒ»¸öÕýÔÚÖ´ÐеijÌÐòµÄʵÀý£¬½ø³ÌÒ²°üÀ¨³ÌÐò¼ÆÊýÆ÷¡¢¼Ä´æÆ÷ºÍ±äÁ¿µÄµ±Ç°Öµ¡£´Ó¸ÅÄîÉÏÀ´Ëµ£¬Ã¿¸ö½ø³Ì¶¼Óи÷×ÔµÄÐéÄâ
CPU£¬µ«ÊÇʵ¼ÊÇé¿öÊÇ CPU »áÔÚ¸÷¸ö½ø³ÌÖ®¼ä½øÐÐÀ´»ØÇл»¡£

ÈçÉÏͼËùʾ£¬ÕâÊÇÒ»¸ö¾ßÓÐ 4 ¸ö³ÌÐòµÄ¶àµÀ´¦Àí³ÌÐò£¬ÔÚ½ø³Ì²»¶ÏÇл»µÄ¹ý³ÌÖУ¬³ÌÐò¼ÆÊýÆ÷Ò²ÔÚ²»Í¬µÄ±ä»¯¡£

ÔÚÉÏͼÖУ¬Õâ 4 µÀ³ÌÐò±»³éÏóΪ 4 ¸öÓµÓи÷×Ô¿ØÖÆÁ÷³Ì£¨¼´Ã¿¸ö×Ô¼ºµÄ³ÌÐò¼ÆÊýÆ÷£©µÄ½ø³Ì£¬²¢ÇÒÿ¸ö³ÌÐò¶¼¶ÀÁ¢µÄÔËÐС£µ±È»£¬Êµ¼ÊÉÏÖ»ÓÐÒ»¸öÎïÀí³ÌÐò¼ÆÊýÆ÷£¬Ã¿¸ö³ÌÐòÒªÔËÐÐʱ£¬ÆäÂß¼³ÌÐò¼ÆÊýÆ÷»á×°ÔØµ½ÎïÀí³ÌÐò¼ÆÊýÆ÷ÖС£µ±³ÌÐòÔËÐнáÊøºó£¬ÆäÎïÀí³ÌÐò¼ÆÊýÆ÷¾Í»áÊÇÕæÕýµÄ³ÌÐò¼ÆÊýÆ÷£¬È»ºóÔÙ°ÑËü·Å»Ø½ø³ÌµÄÂß¼¼ÆÊýÆ÷ÖС£
´ÓÏÂͼÎÒÃÇ¿ÉÒÔ¿´µ½£¬ÔÚ¹Û²ì×ã¹»³¤µÄÒ»¶Îʱ¼äºó£¬ËùÓеĽø³Ì¶¼ÔËÐÐÁË£¬¡¸µ«ÔÚÈκÎÒ»¸ö¸ø¶¨µÄ˲¼ä½öÓÐÒ»¸ö½ø³ÌÕæÕýÔËÐС¹¡£

Òò´Ë£¬µ±ÎÒÃÇ˵һ¸ö CPU Ö»ÄÜÕæÕýÒ»´ÎÔËÐÐÒ»¸ö½ø³ÌµÄʱºò£¬¼´Ê¹ÓÐ 2 ¸öºË£¨»ò CPU£©£¬¡¸Ã¿Ò»¸öºËÒ²Ö»ÄÜÒ»´ÎÔËÐÐÒ»¸öÏ̡߳¹¡£
ÓÉÓÚ CPU »áÔÚ¸÷¸ö½ø³ÌÖ®¼äÀ´»Ø¿ìËÙÇл»£¬ËùÒÔÿ¸ö½ø³ÌÔÚ CPU ÖеÄÔËÐÐʱ¼äÊÇÎÞ·¨È·¶¨µÄ¡£²¢ÇÒµ±Í¬Ò»¸ö½ø³ÌÔÙ´ÎÔÚ
CPU ÖÐÔËÐÐʱ£¬ÆäÔÚ CPU ÄÚ²¿µÄÔËÐÐʱ¼äÍùÍùÒ²ÊDz»¹Ì¶¨µÄ¡£
ÕâÀïµÄ¹Ø¼ü˼ÏëÊÇÈÏʶµ½Ò»¸ö½ø³ÌËùÐèµÄÌõ¼þ£¬½ø³ÌÊÇijһÀàÌØ¶¨»î¶¯µÄ×ܺͣ¬ËüÓгÌÐò¡¢ÊäÈëÊä³öÒÔ¼°×´Ì¬¡£
½ø³ÌµÄ´´½¨
²Ù×÷ϵͳÐèҪһЩ·½Ê½À´´´½¨½ø³Ì¡£ÏÂÃæÊÇһЩ´´½¨½ø³ÌµÄ·½Ê½
ϵͳ³õʼ»¯£¨init£©£ºÆô¶¯²Ù×÷ϵͳʱ£¬Í¨³£»á´´½¨Èô¸É¸ö½ø³Ì¡£
ÕýÔÚÔËÐеijÌÐòÖ´ÐÐÁË´´½¨½ø³ÌµÄϵͳµ÷Ó㨱ÈÈç fork£©
Óû§ÇëÇó´´½¨Ò»¸öнø³Ì£ºÔÚÐí¶à½»»¥Ê½ÏµÍ³ÖУ¬ÊäÈëÒ»¸öÃüÁî»òÕßË«»÷ͼ±ê¾Í¿ÉÒÔÆô¶¯³ÌÐò£¬ÒÔÉÏÈÎÒâÒ»ÖÖ²Ù×÷¶¼¿ÉÒÔÑ¡Ôñ¿ªÆôÒ»¸öеĽø³Ì£¬ÔÚ»ù±¾µÄ
UNIX ϵͳÖÐÔËÐÐ X£¬Ð½ø³Ì½«½Ó¹ÜÆô¶¯ËüµÄ´°¿Ú¡£
³õʼ»¯Ò»¸öÅú´¦Àí¹¤×÷
´Ó¼¼ÊõÉϽ²£¬ÔÚËùÓÐÕâЩÇé¿öÏ£¬ÈÃÏÖÓÐÁ÷³ÌÖ´ÐÐÁ÷³ÌÊÇͨ¹ý´´½¨ÏµÍ³µ÷ÓÃÀ´´´½¨ÐÂÁ÷³ÌµÄ¡£¸Ã½ø³Ì¿ÉÄÜÊÇÕýÔÚÔËÐеÄÓû§½ø³Ì£¬ÊÇ´Ó¼üÅÌ»òÊó±êµ÷ÓõÄϵͳ½ø³Ì»òÅú´¦Àí³ÌÐò¡£ÕâЩ¾ÍÊÇϵͳµ÷Óô´½¨Ð½ø³ÌµÄ¹ý³Ì¡£¸Ãϵͳµ÷ÓøæËß²Ù×÷ϵͳ´´½¨Ò»¸öнø³Ì£¬²¢Ö±½Ó»ò¼ä½ÓָʾÔÚÆäÖÐÔËÐÐÄĸö³ÌÐò¡£
ÔÚ UNIX ÖУ¬½öÓÐÒ»¸öϵͳµ÷ÓÃÀ´´´½¨Ò»¸öеĽø³Ì£¬Õâ¸öϵͳµ÷ÓþÍÊÇ fork¡£Õâ¸öµ÷Óûᴴ½¨Ò»¸öÓëµ÷Óýø³ÌÏà¹ØµÄ¸±±¾¡£ÔÚ
fork ºó£¬Ò»¸ö¸¸½ø³ÌºÍ×Ó½ø³Ì»áÓÐÏàͬµÄÄÚ´æÓ³Ïñ£¬ÏàͬµÄ»·¾³×Ö·û´®ºÍÏàͬµÄ´ò¿ªÎļþ¡£
ÔÚ Windows ÖУ¬Çé¿öÕýÏà·´£¬Ò»¸ö¼òµ¥µÄ Win32 ¹¦Äܵ÷Óà CreateProcess£¬»á´¦ÀíÁ÷³Ì´´½¨²¢½«ÕýÈ·µÄ³ÌÐò¼ÓÔØµ½ÐµĽø³ÌÖС£Õâ¸öµ÷ÓûáÓÐ
10 ¸ö²ÎÊý£¬°üÀ¨ÁËÐèÒªÖ´ÐеijÌÐò¡¢ÊäÈë¸ø³ÌÐòµÄÃüÁîÐвÎÊý¡¢¸÷ÖÖ°²È«ÊôÐÔ¡¢Óйشò¿ªµÄÎļþÊÇ·ñ¼Ì³Ð¿ØÖÆÎ»¡¢ÓÅÏȼ¶ÐÅÏ¢¡¢½ø³ÌËùÐèÒª´´½¨µÄ´°¿Ú¹æ¸ñÒÔ¼°Ö¸ÏòÒ»¸ö½á¹¹µÄÖ¸Õ룬ÔڸýṹÖÐд´½¨½ø³ÌµÄÐÅÏ¢±»·µ»Ø¸øµ÷ÓÃÕß¡£¡¸ÔÚ
Windows ÖУ¬´ÓÒ»¿ªÊ¼¸¸½ø³ÌµÄµØÖ·¿Õ¼äºÍ×Ó½ø³ÌµÄµØÖ·¿Õ¼ä¾ÍÊDz»Í¬µÄ¡¹¡£
½ø³ÌµÄÖÕÖ¹
½ø³ÌÔÚ´´½¨Ö®ºó£¬Ëü¾Í¿ªÊ¼ÔËÐв¢×öÍê³ÉÈÎÎñ¡£È»¶ø£¬Ã»ÓÐʲôʶùÊÇÓÀ²»Í£ÐªµÄ£¬°üÀ¨½ø³ÌÒ²Ò»Ñù¡£½ø³ÌÔçÍí»á·¢ÉúÖÕÖ¹£¬µ«ÊÇͨ³£ÊÇÓÉÓÚÒÔÏÂÇé¿ö´¥·¢µÄ
Õý³£Í˳ö(×ÔÔ¸µÄ) £º¶àÊý½ø³ÌÊÇÓÉÓÚÍê³ÉÁ˹¤×÷¶øÖÕÖ¹¡£µ±±àÒëÆ÷Íê³ÉÁËËù¸ø¶¨³ÌÐòµÄ±àÒëÖ®ºó£¬±àÒëÆ÷»áÖ´ÐÐÒ»¸öϵͳµ÷ÓøæËß²Ù×÷ϵͳËüÍê³ÉÁ˹¤×÷¡£Õâ¸öµ÷ÓÃÔÚ
UNIX ÖÐÊÇ exit £¬ÔÚ Windows ÖÐÊÇ ExitProcess¡£
´íÎóÍ˳ö(×ÔÔ¸µÄ)£º±ÈÈçÖ´ÐÐÒ»Ìõ²»´æÔÚµÄÃüÁÓÚÊDZàÒëÆ÷¾Í»áÌáÐѲ¢Í˳ö¡£
ÑÏÖØ´íÎó(·Ç×ÔÔ¸µÄ)
±»ÆäËû½ø³ÌɱËÀ(·Ç×ÔÔ¸µÄ) £ºÄ³¸ö½ø³ÌÖ´ÐÐϵͳµ÷ÓøæËß²Ù×÷ϵͳɱËÀij¸ö½ø³Ì¡£ÔÚ UNIX ÖУ¬Õâ¸öϵͳµ÷ÓÃÊÇ
kill¡£ÔÚ Win32 ÖжÔÓ¦µÄº¯ÊýÊÇ TerminateProcess£¨×¢Òâ²»ÊÇϵͳµ÷Óã©¡£
½ø³ÌµÄ²ã´Î½á¹¹
ÔÚһЩϵͳÖУ¬µ±Ò»¸ö½ø³Ì´´½¨ÁËÆäËû½ø³Ìºó£¬¸¸½ø³ÌºÍ×Ó½ø³Ì¾Í»áÒÔijÖÖ·½Ê½½øÐйØÁª¡£×Ó½ø³ÌËü×Ô¼º¾Í»á´´½¨¸ü¶à½ø³Ì£¬´Ó¶øÐγÉÒ»¸ö½ø³Ì²ã´Î½á¹¹¡£
UNIX ½ø³ÌÌåϵ
ÔÚ UNIX ÖУ¬½ø³ÌºÍËüµÄËùÓÐ×Ó½ø³ÌÒÔ¼°×Ó½ø³ÌµÄ×Ó½ø³Ì¹²Í¬×é³ÉÒ»¸ö½ø³Ì×é¡£µ±Óû§´Ó¼üÅÌÖз¢³öÒ»¸öÐźź󣬸ÃÐźű»·¢Ë͸øµ±Ç°Óë¼üÅÌÏà¹ØµÄ½ø³Ì×éÖеÄËùÓгÉÔ±£¨ËüÃÇͨ³£ÊÇÔÚµ±Ç°´°¿Ú´´½¨µÄËùÓл½ø³Ì£©¡£Ã¿¸ö½ø³Ì¿ÉÒԷֱ𲶻ñ¸ÃÐźš¢ºöÂÔ¸ÃÐźŻò²ÉȡĬÈϵ͝×÷£¬¼´±»ÐźÅ
kill µô¡£Õû¸ö²Ù×÷ϵͳÖÐËùÓеĽø³Ì¶¼Á¥ÊôÓÚÒ»¸öµ¥¸öÒÔ init Ϊ¸ùµÄ½ø³ÌÊ÷¡£

Windows ½ø³ÌÌåϵ
Ïà·´£¬Windows ÖÐûÓнø³Ì²ã´ÎµÄ¸ÅÄWindows ÖÐËùÓнø³Ì¶¼ÊÇÆ½µÈµÄ£¬Î¨Ò»ÀàËÆÓÚ²ã´Î½á¹¹µÄÊÇÔÚ´´½¨½ø³ÌµÄʱºò£¬¸¸½ø³ÌµÃµ½Ò»¸öÌØ±ðµÄÁîÅÆ£¨³ÆÎª¾ä±ú£©£¬¸Ã¾ä±ú¿ÉÒÔÓÃÀ´¿ØÖÆ×Ó½ø³Ì¡£È»¶ø£¬Õâ¸öÁîÅÆ¿ÉÄÜÒ²»áÒÆ½»¸ø±ðµÄ²Ù×÷ϵͳ£¬ÕâÑù¾Í²»´æÔÚ²ã´Î½á¹¹ÁË¡£¶øÔÚ
UNIX ÖУ¬½ø³Ì²»Äܰþ¶áÆä×Ó½ø³ÌµÄ ½ø³ÌȨ¡££¨ÕâÑù¿´À´£¬»¹ÊÇ Windows ±È½ÏÔü£©¡£
½ø³Ì״̬
¾¡¹Üÿ¸ö½ø³ÌÊÇÒ»¸ö¶ÀÁ¢µÄʵÌ壬ÓÐÆä×Ô¼ºµÄ³ÌÐò¼ÆÊýÆ÷ºÍÄÚ²¿×´Ì¬£¬µ«ÊÇ£¬½ø³ÌÖ®¼äÈÔÈ»ÐèÒªÏ໥°ïÖú¡£µ±Ò»¸ö½ø³Ì¿ªÊ¼ÔËÐÐʱ£¬Ëü¿ÉÄÜ»á¾ÀúÏÂÃæÕ⼸ÖÖ״̬

ͼÖлáÉæ¼°ÈýÖÖ״̬
ÔËÐÐ̬£¬ÔËÐÐָ̬µÄ¾ÍÊǽø³Ìʵ¼ÊÕ¼Óà CPU ʱ¼äƬÔËÐÐʱ
¾ÍÐ÷̬£¬¾ÍÐ÷ָ̬µÄÊÇ¿ÉÔËÐУ¬µ«ÒòΪÆäËû½ø³ÌÕýÔÚÔËÐжø´¦ÓÚ¾ÍÐ÷״̬
×èÈû̬£¬³ý·ÇijÖÖÍⲿʼþ·¢Éú£¬·ñÔò½ø³Ì²»ÄÜÔËÐÐ
½ø³ÌµÄʵÏÖ
²Ù×÷ϵͳΪÁËÖ´Ðнø³Ì¼äµÄÇл»£¬»áά»¤×ÅÒ»ÕÅ±í£¬ÕâÕűí¾ÍÊÇ ½ø³Ì±í(process table)¡£Ã¿¸ö½ø³ÌÕ¼ÓÃÒ»¸ö½ø³Ì±íÏî¡£¸Ã±íÏî°üº¬Á˽ø³Ì״̬µÄÖØÒªÐÅÏ¢£¬°üÀ¨³ÌÐò¼ÆÊýÆ÷¡¢¶ÑÕ»Ö¸Õë¡¢ÄÚ´æ·ÖÅä×´¿ö¡¢Ëù´ò¿ªÎļþµÄ״̬¡¢Õ˺ź͵÷¶ÈÐÅÏ¢£¬ÒÔ¼°ÆäËûÔÚ½ø³ÌÓÉÔËÐÐ̬ת»»µ½¾ÍÐ÷̬»ò×èÈû̬ʱËù±ØÐë±£´æµÄÐÅÏ¢¡£
ÏÂÃæÕ¹Ê¾ÁËÒ»¸öµäÐÍϵͳÖеĹؼü×Ö¶Î

µäÐ͵Ľø³Ì±í±íÏîÖеÄһЩ×Ö¶Î
µÚÒ»ÁÐÄÚÈÝÓë½ø³Ì¹ÜÀíÓйأ¬µÚ¶þÁÐÄÚÈÝÓë ´æ´¢¹ÜÀíÓйأ¬µÚÈýÁÐÄÚÈÝÓëÎļþ¹ÜÀíÓйء£
ÏÖÔÚÎÒÃÇÓ¦¸Ã¶Ô½ø³Ì±íÓиö´óÖµÄÁ˽âÁË£¬¾Í¿ÉÒÔÔÚ¶Ôµ¥¸ö CPU ÉÏÈçºÎÔËÐжà¸ö˳Ðò½ø³ÌµÄ´í¾õ×ö¸ü¶àµÄ½âÊÍ¡£Óëÿһ
I/O ÀàÏà¹ØÁªµÄÊÇÒ»¸ö³Æ×÷ ÖжÏÏòÁ¿(interrupt vector) µÄλÖ㨿¿½üÄÚ´æµ×²¿µÄ¹Ì¶¨ÇøÓò£©¡£Ëü°üº¬ÖжϷþÎñ³ÌÐòµÄÈë¿ÚµØÖ·¡£¼ÙÉèµ±Ò»¸ö´ÅÅÌÖжϷ¢Éúʱ£¬Óû§½ø³Ì
3 ÕýÔÚÔËÐУ¬ÔòÖжÏÓ²¼þ½«³ÌÐò¼ÆÊýÆ÷¡¢³ÌÐò״̬×Ö¡¢ÓÐʱ»¹ÓÐÒ»¸ö»ò¶à¸ö¼Ä´æÆ÷ѹÈë¶ÑÕ»£¬¼ÆËã»úËæ¼´Ìø×ªµ½ÖжÏÏòÁ¿ËùָʾµÄµØÖ·¡£Õâ¾ÍÊÇÓ²¼þËù×öµÄÊÂÇ顣ȻºóÈí¼þ¾ÍËæ¼´½Ó¹ÜÒ»ÇÐÊ£ÓàµÄ¹¤×÷¡£
µ±ÖжϽáÊøºó£¬²Ù×÷ϵͳ»áµ÷ÓÃÒ»¸ö C ³ÌÐòÀ´´¦ÀíÖжÏÊ£ÏµĹ¤×÷¡£ÔÚÍê³ÉÊ£ÏµĹ¤×÷ºó£¬»áʹijЩ½ø³Ì¾ÍÐ÷£¬½Ó×ŵ÷Óõ÷¶È³ÌÐò£¬¾ö¶¨ËæºóÔËÐÐÄĸö½ø³Ì¡£È»ºó½«¿ØÖÆÈ¨×ªÒƸøÒ»¶Î»ã±àÓïÑÔ´úÂ룬Ϊµ±Ç°µÄ½ø³Ì×°Èë¼Ä´æÆ÷ÖµÒÔ¼°ÄÚ´æÓ³Éä²¢Æô¶¯¸Ã½ø³ÌÔËÐУ¬ÏÂÃæÏÔʾÁËÖжϴ¦ÀíºÍµ÷¶ÈµÄ¹ý³Ì¡£
Ó²¼þѹÈë¶ÑÕ»³ÌÐò¼ÆÊýÆ÷µÈ
Ó²¼þ´ÓÖжÏÏòÁ¿×°ÈëеijÌÐò¼ÆÊýÆ÷
»ã±àÓïÑÔ¹ý³Ì±£´æ¼Ä´æÆ÷µÄÖµ
»ã±àÓïÑÔ¹ý³ÌÉèÖÃеĶÑÕ»
C ÖжϷþÎñÆ÷ÔËÐУ¨µäÐ͵ĶÁºÍ»º´æÐ´È룩
µ÷¶ÈÆ÷¾ö¶¨ÏÂÃæÄĸö³ÌÐòÏÈÔËÐÐ
C ¹ý³Ì·µ»ØÖÁ»ã±à´úÂë
»ã±àÓïÑÔ¹ý³Ì¿ªÊ¼ÔËÐÐеĵ±Ç°½ø³Ì
Ò»¸ö½ø³ÌÔÚÖ´Ðйý³ÌÖпÉÄܱ»ÖжÏÊýǧ´Î£¬µ«¹Ø¼üÿ´ÎÖжϺ󣬱»ÖжϵĽø³Ì¶¼·µ»Øµ½ÓëÖжϷ¢ÉúǰÍêÈ«ÏàͬµÄ״̬¡£
Ïß³Ì
ÔÚ´«Í³µÄ²Ù×÷ϵͳÖУ¬Ã¿¸ö½ø³Ì¶¼ÓÐÒ»¸öµØÖ·¿Õ¼äºÍÒ»¸ö¿ØÖÆÏ̡߳£ÊÂʵÉÏ£¬ÕâÊǴ󲿷ֽø³ÌµÄ¶¨Òå¡£²»¹ý£¬ÔÚÐí¶àÇé¿öÏ£¬¾³£´æÔÚͬһµØÖ·¿Õ¼äÖÐÔËÐжà¸ö¿ØÖÆÏ̵߳ÄÇéÐΣ¬ÕâЩÏ߳̾ÍÏñÊÇ·ÖÀëµÄ½ø³Ì¡£ÏÂÃæÎÒÃǾÍ×ÅÖØÌ½ÌÖÒ»ÏÂʲôÊÇÏß³Ì
Ï̵߳ÄʹÓÃ
»òÐíÕâ¸öÒÉÎÊÒ²ÊÇÄãµÄÒÉÎÊ£¬ÎªÊ²Ã´ÒªÔÚ½ø³ÌµÄ»ù´¡ÉÏÔÙ´´½¨Ò»¸öÏ̵߳ĸÅÄ׼ȷµÄ˵£¬ÕâÆäʵÊǽø³ÌÄ£ÐͺÍÏß³ÌÄ£Ð͵ÄÌÖÂÛ£¬»Ø´ðÕâ¸öÎÊÌ⣬¿ÉÄÜÐèÒª·ÖÈý²½À´»Ø´ð
¶àÏß³ÌÖ®¼ä»á¹²Ïíͬһ¿éµØÖ·¿Õ¼äºÍËùÓпÉÓÃÊý¾ÝµÄÄÜÁ¦£¬ÕâÊǽø³ÌËù²»¾ß±¸µÄ
Ïß³ÌÒª±È½ø³Ì¸üÇáÁ¿¼¶£¬ÓÉÓÚÏ̸߳üÇᣬËùÒÔËü±È½ø³Ì¸üÈÝÒ×´´½¨£¬Ò²¸üÈÝÒ׳·Ïú¡£ÔÚÐí¶àϵͳÖУ¬´´½¨Ò»¸öÏß³ÌÒª±È´´½¨Ò»¸ö½ø³Ì¿ì
10 - 100 ±¶¡£
µÚÈý¸öÔÒò¿ÉÄÜÊÇÐÔÄÜ·½ÃæµÄ̽ÌÖ£¬Èç¹û¶à¸öÏ̶߳¼ÊÇ CPU Ãܼ¯Ð͵ģ¬ÄÇô²¢²»ÄÜ»ñµÃÐÔÄÜÉϵÄÔöÇ¿£¬µ«ÊÇÈç¹û´æÔÚ×Å´óÁ¿µÄ¼ÆËãºÍ´óÁ¿µÄ
I/O ´¦Àí£¬ÓµÓжà¸öÏß³ÌÄÜÔÚÕâЩ»î¶¯Öб˴ËÖØµþ½øÐУ¬´Ó¶ø»á¼Ó¿ìÓ¦ÓóÌÐòµÄÖ´ÐÐËÙ¶È
¾µäµÄÏß³ÌÄ£ÐÍ
½ø³ÌÖÐÓµÓÐÒ»¸öÖ´ÐеÄỊ̈߳¬Í¨³£¼òдΪ Ïß³Ì(thread)¡£Ï̻߳áÓгÌÐò¼ÆÊýÆ÷£¬ÓÃÀ´¼Ç¼½Ó×ÅÒªÖ´ÐÐÄÄÒ»ÌõÖ¸ÁÏß³Ìʵ¼ÊÉÏ
CPU Éϵ÷¶ÈÖ´ÐеÄʵÌå¡£
ÏÂͼÎÒÃÇ¿ÉÒÔ¿´µ½Èý¸ö´«Í³µÄ½ø³Ì£¬Ã¿¸ö½ø³ÌÓÐ×Ô¼ºµÄµØÖ·¿Õ¼äºÍµ¥¸ö¿ØÖÆÏ̡߳£Ã¿¸öÏ̶߳¼ÔÚ²»Í¬µÄµØÖ·¿Õ¼äÖÐÔËÐÐ

ÏÂͼÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÓÐÒ»¸ö½ø³ÌÈý¸öÏ̵߳ÄÇé¿ö¡£Ã¿¸öÏ̶߳¼ÔÚÏàͬµÄµØÖ·¿Õ¼äÖÐÔËÐС£

Ï̲߳»ÏñÊǽø³ÌÄÇÑù¾ß±¸½ÏÇ¿µÄ¶ÀÁ¢ÐÔ¡£Í¬Ò»¸ö½ø³ÌÖеÄËùÓÐÏ̶߳¼»áÓÐÍêȫһÑùµÄµØÖ·¿Õ¼ä£¬ÕâÒâζ×ÅËüÃÇÒ²¹²ÏíͬÑùµÄÈ«¾Ö±äÁ¿¡£ÓÉÓÚÿ¸öÏ̶߳¼¿ÉÒÔ·ÃÎʽø³ÌµØÖ·¿Õ¼äÄÚÿ¸öÄÚ´æµØÖ·£¬¡¸Òò´ËÒ»¸öÏ߳̿ÉÒÔ¶ÁÈ¡¡¢Ð´ÈëÉõÖÁ²Á³ýÁíÒ»¸öÏ̵߳ĶÑÕ»¡¹¡£Ïß³ÌÖ®¼ä³ýÁ˹²ÏíͬһÄÚ´æ¿Õ¼äÍ⣬»¹¾ßÓÐÈçϲ»Í¬µÄÄÚÈÝ

ÉÏͼ×ó±ßµÄÊÇͬһ¸ö½ø³ÌÖÐÿ¸öÏ̹߳²ÏíµÄÄÚÈÝ£¬ÉÏͼÓÒ±ßÊÇÿ¸öÏß³ÌÖеÄÄÚÈÝ¡£Ò²¾ÍÊÇ˵×ó±ßµÄÁбíÊǽø³ÌµÄÊôÐÔ£¬ÓұߵÄÁбíÊÇÏ̵߳ÄÊôÐÔ¡£
¡¸Ïß³ÌÖ®¼äµÄ״̬ת»»ºÍ½ø³ÌÖ®¼äµÄ״̬ת»»ÊÇÒ»ÑùµÄ¡¹¡£
ÿ¸öÏ̶߳¼»áÓÐ×Ô¼ºµÄ¶ÑÕ»£¬ÈçÏÂͼËùʾ

Ïß³Ìϵͳµ÷ÓÃ
½ø³Ìͨ³£»á´Óµ±Ç°µÄij¸öµ¥Ï߳̿ªÊ¼£¬È»ºóÕâ¸öÏß³Ìͨ¹ýµ÷ÓÃÒ»¸ö¿âº¯Êý£¨±ÈÈç thread_create£©´´½¨ÐµÄÏ̡߳£Ï̴߳´½¨µÄº¯Êý»áÒªÇóÖ¸¶¨Ð´´½¨Ï̵߳ÄÃû³Æ¡£´´½¨µÄÏß³Ìͨ³£¶¼·µ»ØÒ»¸öÏ̱߳êʶ·û£¬¸Ã±êʶ·û¾ÍÊÇÐÂÏ̵߳ÄÃû×Ö¡£
µ±Ò»¸öÏß³ÌÍê³É¹¤×÷ºó£¬¿ÉÒÔͨ¹ýµ÷ÓÃÒ»¸öº¯Êý£¨±ÈÈç thread_exit£©À´Í˳ö¡£½ô½Ó×ÅÏß³ÌÏûʧ£¬×´Ì¬±äΪÖÕÖ¹£¬²»ÄÜÔÙ½øÐе÷¶È¡£ÔÚijЩÏ̵߳ÄÔËÐйý³ÌÖУ¬¿ÉÒÔͨ¹ýµ÷Óú¯ÊýÀýÈç
thread_join £¬±íʾһ¸öÏ߳̿ÉÒԵȴýÁíÒ»¸öÏß³ÌÍ˳ö¡£Õâ¸ö¹ý³Ì×èÈûµ÷ÓÃÏß³ÌÖ±µ½µÈ´ýÌØ¶¨µÄÏß³ÌÍ˳ö¡£ÔÚÕâÖÖÇé¿öÏ£¬Ï̵߳Ĵ´½¨ºÍÖÕÖ¹·Ç³£ÀàËÆÓÚ½ø³ÌµÄ´´½¨ºÍÖÕÖ¹¡£
ÁíÒ»¸ö³£¼ûµÄÏß³ÌÊǵ÷Óà thread_yield£¬ËüÔÊÐíÏß³Ì×Ô¶¯·ÅÆú CPU ´Ó¶øÈÃÁíÒ»¸öÏß³ÌÔËÐС£ÕâÑùÒ»¸öµ÷Óû¹ÊǺÜÖØÒªµÄ£¬ÒòΪ²»Í¬ÓÚ½ø³Ì£¬Ïß³ÌÊÇÎÞ·¨ÀûÓÃʱÖÓÖжÏÇ¿ÖÆÈÃÏß³ÌÈóö
CPU µÄ¡£
POSIX Ïß³Ì
POSIX Ïß³Ì Í¨³£³ÆÎª pthreadsÊÇÒ»ÖÖ¶ÀÁ¢ÓÚÓïÑÔ¶ø´æÔÚµÄÖ´ÐÐÄ£ÐÍ£¬ÒÔ¼°²¢ÐÐÖ´ÐÐÄ£ÐÍ¡£

ËüÔÊÐí³ÌÐò¿ØÖÆÊ±¼äÉÏÖØµþµÄ¶à¸ö²»Í¬µÄ¹¤×÷Á÷³Ì¡£Ã¿¸ö¹¤×÷Á÷³Ì¶¼³ÆÎªÒ»¸öỊ̈߳¬¿ÉÒÔͨ¹ýµ÷ÓÃ
POSIX Threads API À´ÊµÏÖ¶ÔÕâЩÁ÷³ÌµÄ´´½¨ºÍ¿ØÖÆ¡£¿ÉÒÔ°ÑËüÀí½âΪÏ̵߳ıê×¼¡£
POSIX Threads µÄʵÏÖÔÚÐí¶àÀàËÆÇÒ·ûºÏPOSIXµÄ²Ù×÷ϵͳÉÏ¿ÉÓã¬ÀýÈç
¡¸FreeBSD¡¢NetBSD¡¢OpenBSD¡¢Linux¡¢macOS¡¢Android¡¢Solaris¡¹£¬ËüÔÚÏÖÓÐ
Windows API Ö®ÉÏʵÏÖÁË¡¸pthread¡¹¡£
IEEE ÊÇÊÀ½çÉÏ×î´óµÄ¼¼Êõרҵ×éÖ¯£¬ÖÂÁ¦ÓÚΪÈËÀàµÄÀûÒæ¶ø·¢Õ¹¼¼Êõ¡£

ËùÓÐµÄ Pthreads ¶¼ÓÐÌØ¶¨µÄÊôÐÔ£¬Ã¿Ò»¸ö¶¼º¬Óбêʶ·û¡¢Ò»×é¼Ä´æÆ÷£¨°üÀ¨³ÌÐò¼ÆÊýÆ÷£©ºÍÒ»×é´æ´¢ÔڽṹÖеÄÊôÐÔ¡£Õâ¸öÊôÐÔ°üÀ¨¶ÑÕ»´óС¡¢µ÷¶È²ÎÊýÒÔ¼°ÆäËûÏß³ÌÐèÒªµÄÏîÄ¿¡£
Ïß³ÌʵÏÖ
Ö÷ÒªÓÐÈýÖÖʵÏÖ·½Ê½
ÔÚÓû§¿Õ¼äÖÐʵÏÖỊ̈߳»
ÔÚÄں˿ռäÖÐʵÏÖỊ̈߳»
ÔÚÓû§ºÍÄں˿ռäÖлìºÏʵÏÖÏ̡߳£
ÏÂÃæÎÒÃÇ·Ö¿ªÌÖÂÛÒ»ÏÂ
ÔÚÓû§¿Õ¼äÖÐʵÏÖÏß³Ì
µÚÒ»ÖÖ·½·¨ÊǰÑÕû¸öḬ̈߳ü·ÅÔÚÓû§¿Õ¼äÖУ¬Äں˶ÔÏß³ÌÒ»ÎÞËùÖª£¬Ëü²»ÖªµÀÏ̵߳ĴæÔÚ¡£ËùÓеÄÕâÀàʵÏÖ¶¼ÓÐͬÑùµÄͨÓýṹ

ÔÚÓû§¿Õ¼äÖÐʵÏÖ¶àÏß³Ì
Ïß³ÌÔÚÔËÐÐʱϵͳ֮ÉÏÔËÐУ¬ÔËÐÐʱϵͳÊǹÜÀíÏ̹߳ý³ÌµÄ¼¯ºÏ£¬°üÀ¨Ç°ÃæÌáµ½µÄËĸö¹ý³Ì£ºpthread_create,
pthread_exit, pthread_join ºÍ pthread_yield¡£
ÔÚÄÚºËÖÐʵÏÖÏß³Ì
µ±Ä³¸öÏß³ÌÏ£Íû´´½¨Ò»¸öÐÂÏ̻߳ò³·ÏúÒ»¸öÒÑÓÐÏß³Ìʱ£¬Ëü»á½øÐÐÒ»¸öϵͳµ÷Óã¬Õâ¸öϵͳµ÷ÓÃͨ¹ý¶ÔÏ̱߳íµÄ¸üÐÂÀ´Íê³ÉÏ̴߳´½¨»òÏú»Ù¹¤×÷¡£

ÔÚÄÚºËÖÐʵÏÖ¶àÏß³Ì
ÄÚºËÖеÄÏ̱߳í³ÖÓÐÿ¸öÏ̵߳ļĴæÆ÷¡¢×´Ì¬ºÍÆäËûÐÅÏ¢¡£ÕâЩÐÅÏ¢ºÍÓû§¿Õ¼äÖеÄÏß³ÌÐÅÏ¢Ïàͬ£¬µ«ÊÇλÖÃÈ´±»·ÅÔÚÁËÄÚºËÖжø²»ÊÇÓû§¿Õ¼äÖС£ÁíÍ⣬Äں˻¹Î¬»¤ÁËÒ»ÕŽø³Ì±íÓÃÀ´¸ú×Ùϵͳ״̬¡£
ËùÓÐÄܹ»×èÈûµÄµ÷Óö¼»áͨ¹ýϵͳµ÷Óõķ½Ê½À´ÊµÏÖ£¬µ±Ò»¸öÏß³Ì×èÈûʱ£¬Äں˿ÉÒÔ½øÐÐÑ¡Ôñ£¬ÊÇÔËÐÐÔÚͬһ¸ö½ø³ÌÖеÄÁíÒ»¸öỊ̈߳¨Èç¹ûÓоÍÐ÷Ï̵߳ϰ£©»¹ÊÇÔËÐÐÒ»¸öÁíÒ»¸ö½ø³ÌÖеÄÏ̡߳£µ«ÊÇÔÚÓû§ÊµÏÖÖУ¬ÔËÐÐʱϵͳʼÖÕÔËÐÐ×Ô¼ºµÄỊ̈߳¬Ö±µ½Äں˰þ¶áËüµÄ
CPU ʱ¼äƬ£¨»òÕßûÓпÉÔËÐеÄÏ̴߳æÔÚÁË£©ÎªÖ¹¡£
»ìºÏʵÏÖ
½áºÏÓû§¿Õ¼äºÍÄں˿ռäµÄÓŵ㣬Éè¼ÆÈËÔ±²ÉÓÃÁËÒ»ÖÖÄں˼¶Ï̵߳ķ½Ê½£¬È»ºó½«Óû§¼¶Ïß³ÌÓëijЩ»òÕßÈ«²¿ÄÚºËÏ̶߳à·¸´ÓÃÆðÀ´

Óû§Ïß³ÌÓëÄÚºËÏ̵߳Ķà·¸´ÓÃ
ÔÚÕâÖÖÄ£ÐÍÖУ¬±à³ÌÈËÔ±¿ÉÒÔ×ÔÓÉ¿ØÖÆÓû§Ï̺߳ÍÄÚºËÏ̵߳ÄÊýÁ¿£¬¾ßÓкܴóµÄÁé»î¶È¡£²ÉÓÃÕâÖÖ·½·¨£¬ÄÚºËֻʶ±ðÄں˼¶Ị̈߳¬²¢¶ÔÆä½øÐе÷¶È¡£ÆäÖÐһЩÄں˼¶Ï̻߳ᱻ¶à¸öÓû§¼¶Ï̶߳à·¸´Óá£
½ø³Ì¼äͨÐÅ
½ø³ÌÊÇÐèҪƵ·±µÄºÍÆäËû½ø³Ì½øÐн»Á÷µÄ¡£ÏÂÃæÎÒÃÇ»áÒ»ÆðÌÖÂÛÓÐ¹Ø ½ø³Ì¼äͨÐÅ(Inter Process
Communication, IPC) µÄÎÊÌâ¡£´óÖÂÀ´Ëµ£¬½ø³Ì¼äµÄͨÐÅ»úÖÆ¿ÉÒÔ·ÖΪ 6 ÖÖ

ÏÂÃæÎÒÃÇ·Ö±ð¶ÔÆä½øÐиÅÊö
ÐźŠsignal
ÐźÅÊÇ UNIX ϵͳ×îÏÈ¿ªÊ¼Ê¹ÓõĽø³Ì¼äͨÐÅ»úÖÆ£¬ÒòΪ Linux ÊǼ̳ÐÓÚ UNIX µÄ£¬ËùÒÔ
Linux Ò²Ö§³ÖÐźŻúÖÆ£¬Í¨¹ýÏòÒ»¸ö»ò¶à¸ö½ø³Ì·¢ËÍÒ첽ʼþÐźÅÀ´ÊµÏÖ£¬ÐźſÉÒÔ´Ó¼üÅÌ»òÕß·ÃÎʲ»´æÔÚµÄλÖõȵط½²úÉú£»ÐźÅͨ¹ý
shell ½«ÈÎÎñ·¢Ë͸ø×Ó½ø³Ì¡£
Äã¿ÉÒÔÔÚ Linux ϵͳÉÏÊäÈë kill -l À´ÁгöϵͳʹÓõÄÐźţ¬ÏÂÃæÊÇÎÒÌṩµÄһЩÐźÅ

½ø³Ì¿ÉÒÔÑ¡ÔñºöÂÔ·¢Ë͹ýÀ´µÄÐźţ¬µ«ÊÇÓÐÁ½¸öÊDz»ÄܺöÂԵģºSIGSTOP ºÍ SIGKILL Ðźš£SIGSTOP
ÐźŻá֪ͨµ±Ç°ÕýÔÚÔËÐеĽø³ÌÖ´ÐйرղÙ×÷£¬SIGKILL ÐźŻá֪ͨµ±Ç°½ø³ÌÓ¦¸Ã±»É±ËÀ¡£³ý´ËÖ®Í⣬½ø³Ì¿ÉÒÔÑ¡ÔñËüÏëÒª´¦ÀíµÄÐźţ¬½ø³ÌÒ²¿ÉÒÔÑ¡Ôñ×èÖ¹Ðźţ¬Èç¹û²»×èÖ¹£¬¿ÉÒÔÑ¡Ôñ×ÔÐд¦Àí£¬Ò²¿ÉÒÔÑ¡Ôñ½øÐÐÄں˴¦Àí¡£Èç¹ûÑ¡Ôñ½»¸øÄں˽øÐд¦Àí£¬ÄÇô¾ÍÖ´ÐÐĬÈÏ´¦Àí¡£
²Ù×÷ϵͳ»áÖжÏÄ¿±ê³ÌÐòµÄ½ø³ÌÀ´ÏòÆä·¢ËÍÐźš¢ÔÚÈκηÇÔ×ÓÖ¸ÁîÖУ¬Ö´Ðж¼¿ÉÒÔÖжϣ¬Èç¹û½ø³ÌÒѾע²áÁËкŴ¦Àí³ÌÐò£¬ÄÇô¾ÍÖ´Ðнø³Ì£¬Èç¹ûûÓÐ×¢²á£¬½«²ÉÓÃĬÈÏ´¦ÀíµÄ·½Ê½¡£
¹ÜµÀ pipe
Linux ϵͳÖеĽø³Ì¿ÉÒÔͨ¹ý½¨Á¢¹ÜµÀ pipe ½øÐÐͨÐÅ

ÔÚÁ½¸ö½ø³ÌÖ®¼ä£¬¿ÉÒÔ½¨Á¢Ò»¸öͨµÀ£¬Ò»¸ö½ø³ÌÏòÕâ¸öͨµÀÀïдÈë×Ö½ÚÁ÷£¬ÁíÒ»¸ö½ø³Ì´ÓÕâ¸ö¹ÜµÀÖжÁÈ¡×Ö½ÚÁ÷¡£¹ÜµÀÊÇͬ²½µÄ£¬µ±½ø³Ì³¢ÊԴӿչܵÀ¶ÁÈ¡Êý¾Ýʱ£¬¸Ã½ø³Ì»á±»×èÈû£¬Ö±µ½ÓпÉÓÃÊý¾ÝΪֹ¡£shell
ÖеĹÜÏß pipelines ¾ÍÊÇÓùܵÀʵÏֵ쬵± shell ·¢ÏÖÊä³ö
sort <f | head
Ëü»á´´½¨Á½¸ö½ø³Ì£¬Ò»¸öÊÇ sort£¬Ò»¸öÊÇ head£¬sort£¬»áÔÚÕâÁ½¸öÓ¦ÓóÌÐòÖ®¼ä½¨Á¢Ò»¸ö¹ÜµÀʹµÃ
sort ½ø³ÌµÄ±ê×¼Êä³ö×÷Ϊ head ³ÌÐòµÄ±ê×¼ÊäÈë¡£sort ½ø³Ì²úÉúµÄÊä³ö¾Í²»ÓÃдµ½ÎļþÖÐÁË£¬Èç¹û¹ÜµÀÂúÁËϵͳ»áÍ£Ö¹
sort ÒԵȴý head ¶Á³öÊý¾Ý

¹ÜµÀʵ¼ÊÉϾÍÊÇ |£¬Á½¸öÓ¦ÓóÌÐò²»ÖªµÀÓйܵÀµÄ´æÔÚ£¬Ò»Çж¼ÊÇÓÉ shell ¹ÜÀíºÍ¿ØÖƵġ£
¹²ÏíÄÚ´æ shared memory
Á½¸ö½ø³ÌÖ®¼ä»¹¿ÉÒÔͨ¹ý¹²ÏíÄÚ´æ½øÐнø³Ì¼äͨÐÅ£¬ÆäÖÐÁ½¸ö»òÕß¶à¸ö½ø³Ì¿ÉÒÔ·ÃÎʹ«¹²ÄÚ´æ¿Õ¼ä¡£Á½¸ö½ø³ÌµÄ¹²Ïí¹¤×÷ÊÇͨ¹ý¹²ÏíÄÚ´æÍê³ÉµÄ£¬Ò»¸ö½ø³ÌËù×÷µÄÐ޸ĿÉÒÔ¶ÔÁíÒ»¸ö½ø³Ì¿É¼û(ºÜÏñÏ̼߳äµÄͨÐÅ)¡£

ÔÚʹÓù²ÏíÄÚ´æÇ°£¬ÐèÒª¾¹ýһϵÁеĵ÷ÓÃÁ÷³Ì£¬Á÷³ÌÈçÏÂ
´´½¨¹²ÏíÄÚ´æ¶Î»òÕßʹÓÃÒÑ´´½¨µÄ¹²ÏíÄÚ´æ¶Î(shmget())
½«½ø³Ì¸½¼Óµ½ÒѾ´´½¨µÄÄÚ´æ¶ÎÖÐ(shmat())
´ÓÒÑÁ¬½ÓµÄ¹²ÏíÄÚ´æ¶Î·ÖÀë½ø³Ì(shmdt())
¶Ô¹²ÏíÄÚ´æ¶ÎÖ´ÐпØÖƲÙ×÷(shmctl())
ÏÈÈëÏȳö¶ÓÁÐ FIFO
ÏÈÈëÏȳö¶ÓÁÐ FIFO ͨ³£±»³ÆÎª ÃüÃû¹ÜµÀ(Named Pipes)£¬ÃüÃû¹ÜµÀµÄ¹¤×÷·½Ê½Óë³£¹æ¹ÜµÀ·Ç³£ÏàËÆ£¬µ«ÊÇȷʵÓÐһЩÃ÷ÏÔµÄÇø±ð¡£Î´ÃüÃûµÄ¹ÜµÀûÓб¸·ÝÎļþ£º²Ù×÷ϵͳ¸ºÔðά»¤ÄÚ´æÖеĻº³åÇø£¬ÓÃÀ´½«×Ö½Ú´ÓдÈëÆ÷´«Êäµ½¶ÁÈ¡Æ÷¡£Ò»µ©Ð´Èë»òÕßÊä³öÖÕÖ¹µÄ»°£¬»º³åÇø½«±»»ØÊÕ£¬´«ÊäµÄÊý¾Ý»á¶ªÊ§¡£Ïà±È֮ϣ¬ÃüÃû¹ÜµÀ¾ßÓÐÖ§³ÖÎļþºÍ¶ÀÌØ
API £¬ÃüÃû¹ÜµÀÔÚÎļþϵͳÖÐ×÷ΪÉ豸µÄרÓÃÎļþ´æÔÚ¡£µ±ËùÓеĽø³ÌͨÐÅÍê³Éºó£¬ÃüÃû¹ÜµÀ½«±£ÁôÔÚÎļþϵͳÖÐÒÔ±¸ºóÓá£ÃüÃû¹ÜµÀ¾ßÓÐÑϸñµÄ
FIFO ÐÐΪ

дÈëµÄµÚÒ»¸ö×Ö½ÚÊǶÁÈ¡µÄµÚÒ»¸ö×Ö½Ú£¬Ð´ÈëµÄµÚ¶þ¸ö×Ö½ÚÊǶÁÈ¡µÄµÚ¶þ¸ö×Ö½Ú£¬ÒÀ´ËÀàÍÆ¡£
ÏûÏ¢¶ÓÁÐ Message Queue
Ò»Ìýµ½ÏûÏ¢¶ÓÁÐÕâ¸öÃû´ÊÄã¿ÉÄܲ»ÖªµÀÊÇʲôÒâ˼£¬ÏûÏ¢¶ÓÁÐÊÇÓÃÀ´ÃèÊöÄÚºËѰַ¿Õ¼äÄÚµÄÄÚ²¿Á´½ÓÁÐ±í¡£¿ÉÒÔ°´¼¸ÖÖ²»Í¬µÄ·½Ê½½«ÏûÏ¢°´Ë³Ðò·¢Ë͵½¶ÓÁв¢´Ó¶ÓÁÐÖмìË÷ÏûÏ¢¡£Ã¿¸öÏûÏ¢¶ÓÁÐÓÉ
IPC ±êʶ·ûΨһ±êʶ¡£ÏûÏ¢¶ÓÁÐÓÐÁ½ÖÖģʽ£¬Ò»ÖÖÊÇÑϸñģʽ£¬ Ñϸñģʽ¾ÍÏñÊÇ FIFO ÏÈÈëÏȳö¶ÓÁÐËÆµÄ£¬ÏûϢ˳Ðò·¢ËÍ£¬Ë³Ðò¶ÁÈ¡¡£»¹ÓÐÒ»ÖÖģʽÊÇ
·ÇÑϸñģʽ£¬ÏûÏ¢µÄ˳ÐòÐÔ²»ÊǷdz£ÖØÒª¡£
Ì×½Ó×Ö Socket
»¹ÓÐÒ»ÖÖ¹ÜÀíÁ½¸ö½ø³Ì¼äͨÐŵÄÊÇʹÓà socket£¬socket Ìṩ¶Ëµ½¶ËµÄË«ÏàͨÐÅ¡£Ò»¸öÌ×½Ó×Ö¿ÉÒÔÓëÒ»¸ö»ò¶à¸ö½ø³Ì¹ØÁª¡£¾ÍÏñ¹ÜµÀÓÐÃüÁî¹ÜµÀºÍδÃüÃû¹ÜµÀÒ»Ñù£¬Ì×½Ó×ÖÒ²ÓÐÁ½ÖÖģʽ£¬Ì×½Ó×ÖÒ»°ãÓÃÓÚÁ½¸ö½ø³ÌÖ®¼äµÄÍøÂçͨÐÅ£¬ÍøÂçÌ×½Ó×ÖÐèÒªÀ´×ÔÖîÈçTCP£¨´«Êä¿ØÖÆÐÒ飩»ò½ÏµÍ¼¶±ðUDP£¨Óû§Êý¾Ý±¨ÐÒ飩µÈ»ù´¡ÐÒéµÄÖ§³Ö¡£
Ì×½Ó×ÖÓÐÒÔϼ¸ÖÖ·ÖÀà
˳Ðò°üÌ×½Ó×Ö(Sequential Packet Socket)£º´ËÀàÌ×½Ó×ÖΪ×î´ó³¤¶È¹Ì¶¨µÄÊý¾Ý±¨Ìṩ¿É¿¿µÄÁ¬½Ó¡£´ËÁ¬½ÓÊÇË«ÏòµÄ²¢ÇÒÊÇ˳ÐòµÄ¡£
Êý¾Ý±¨Ì×½Ó×Ö(Datagram Socket)£ºÊý¾Ý°üÌ×½Ó×ÖÖ§³ÖË«ÏòÊý¾ÝÁ÷¡£Êý¾Ý°üÌ×½Ó×Ö½ÓÊÜÏûÏ¢µÄ˳ÐòÓë·¢ËÍÕß¿ÉÄܲ»Í¬¡£
Á÷ʽÌ×½Ó×Ö(Stream Socket)£ºÁ÷Ì×½Ó×ֵŤ×÷·½Ê½ÀàËÆÓڵ绰¶Ô»°£¬Ìṩ˫Ïò¿É¿¿µÄÊý¾ÝÁ÷¡£
ÔʼÌ×½Ó×Ö(Raw Socket)£º¿ÉÒÔʹÓÃÔʼÌ×½Ó×Ö·ÃÎÊ»ù´¡Í¨ÐÅÐÒé¡£
µ÷¶È
µ±Ò»¸ö¼ÆËã»úÊǶàµÀ³ÌÐòÉè¼ÆÏµÍ³Ê±£¬»áƵ·±µÄÓÐºÜ¶à½ø³Ì»òÕßÏß³ÌÀ´Í¬Ê±¾ºÕù CPU ʱ¼äƬ¡£µ±Á½¸ö»òÁ½¸öÒÔÉϵĽø³Ì/Ï̴߳¦ÓÚ¾ÍÐ÷״̬ʱ£¬¾Í»á·¢ÉúÕâÖÖÇé¿ö¡£Èç¹ûÖ»ÓÐÒ»¸ö
CPU ¿ÉÓã¬ÄÇô±ØÐëÑ¡Ôñ½ÓÏÂÀ´Äĸö½ø³Ì/Ï߳̿ÉÒÔÔËÐС£²Ù×÷ϵͳÖÐÓÐÒ»¸ö½Ð×ö µ÷¶È³ÌÐò(scheduler)
µÄ½ÇÉ«´æÔÚ£¬Ëü¾ÍÊÇ×öÕâ¼þʶùµÄ£¬¸Ã³ÌÐòʹÓõÄËã·¨½Ð×ö µ÷¶ÈËã·¨(scheduling algorithm)
¡£
µ÷¶ÈËã·¨µÄ·ÖÀà
ºÁÎÞÒÉÎÊ£¬²»Í¬µÄ»·¾³ÏÂÐèÒª²»Í¬µÄµ÷¶ÈËã·¨¡£Ö®ËùÒÔ³öÏÖÕâÖÖÇé¿ö£¬ÊÇÒòΪ²»Í¬µÄÓ¦ÓóÌÐòºÍ²»Í¬µÄ²Ù×÷ϵͳÓв»Í¬µÄÄ¿±ê¡£Ò²¾ÍÊÇ˵£¬ÔÚ²»Í¬µÄϵͳÖУ¬µ÷¶È³ÌÐòµÄÓÅ»¯Ò²ÊDz»Í¬µÄ¡£ÕâÀïÓбØÒª»®·Ö³öÈýÖÖ»·¾³
Åú´¦Àí(Batch) : ÉÌÒµÁìÓò
½»»¥Ê½(Interactive)£º½»»¥Ê½Óû§»·¾³
ʵʱ(Real time)
Åú´¦ÀíÖеĵ÷¶È
ÏÖÔÚÈÃÎÒÃǰÑÄ¿¹â´ÓÒ»°ãÐԵĵ÷¶Èת»»ÎªÌض¨µÄµ÷¶ÈËã·¨¡£ÏÂÃæÎÒÃÇ»á̽ÌÖÔÚÅú´¦ÀíÖеĵ÷¶È¡£
ÏÈÀ´ÏÈ·þÎñ
×î¼òµ¥µÄ·ÇÇÀռʽµ÷¶ÈËã·¨µÄÉè¼Æ¾ÍÊÇ ÏÈÀ´ÏÈ·þÎñ(first-come,first-serverd)¡£µ±µÚÒ»¸öÈÎÎñ´ÓÍⲿ½øÈëϵͳʱ£¬½«»áÁ¢¼´Æô¶¯²¢ÔÊÐíÔËÐÐÈÎÒⳤµÄʱ¼ä¡£Ëü²»»áÒòΪÔËÐÐʱ¼äÌ«³¤¶øÖжϡ£µ±ÆäËû×÷Òµ½øÈëʱ£¬ËüÃÇÅŵ½¾ÍÐ÷¶ÓÁÐβ²¿¡£µ±ÕýÔÚÔËÐеĽø³Ì×èÈû£¬´¦Óڵȴý¶ÓÁеĵÚÒ»¸ö½ø³Ì¾Í¿ªÊ¼ÔËÐС£µ±Ò»¸ö×èÈûµÄ½ø³ÌÖØÐ´¦ÓÚ¾ÍÐ÷̬ʱ£¬Ëü»áÏñÒ»¸öе½´ïµÄÈÎÎñ£¬»áÅÅÔÚ¶ÓÁеÄĩ⣬¼´ÅÅÔÚËùÓнø³Ì×îºó¡£

Õâ¸öËã·¨µÄÇ¿´óÖ®´¦ÔÚÓÚÒ×ÓÚÀí½âºÍ±à³Ì£¬ÔÚÕâ¸öËã·¨ÖУ¬Ò»¸öµ¥Á´±í¼Ç¼ÁËËùÓоÍÐ÷½ø³Ì¡£ÒªÑ¡È¡Ò»¸ö½ø³ÌÔËÐУ¬Ö»Òª´Ó¸Ã¶ÓÁеÄÍ·²¿ÒÆ×ßÒ»¸ö½ø³Ì¼´¿É£»ÒªÌí¼ÓÒ»¸öеÄ×÷Òµ»òÕß×èÈûÒ»¸ö½ø³Ì£¬Ö»Òª°ÑÕâ¸ö×÷Òµ»ò½ø³Ì¸½¼ÓÔÚ¶ÓÁеÄĩβ¼´¿É¡£ÕâÊǺܼòµ¥µÄÒ»ÖÖʵÏÖ¡£
×î¶Ì×÷ÒµÓÅÏÈ
Åú´¦ÀíÖУ¬µÚ¶þÖÖµ÷¶ÈËã·¨ÊÇ ×î¶Ì×÷ÒµÓÅÏÈ(Shortest Job First)£¬ÎÒÃǼÙÉèÔËÐÐʱ¼äÒÑÖª¡£ÀýÈ磬һ¼Ò±£ÏÕ¹«Ë¾£¬ÒòΪÿÌìÒª×öÀàËÆµÄ¹¤×÷£¬ËùÒÔÈËÃÇ¿ÉÒÔÏ൱¾«È·µØÔ¤²â´¦Àí
1000 ¸öË÷ÅâµÄÒ»Åú×÷ÒµÐèÒª¶à³¤Ê±¼ä¡£µ±ÊäÈë¶ÓÁÐÖÐÓÐÈô¸É¸öͬµÈÖØÒªµÄ×÷Òµ±»Æô¶¯Ê±£¬µ÷¶È³ÌÐòӦʹÓÃ×î¶ÌÓÅÏÈ×÷ÒµËã·¨

ÐèҪעÒâµÄÊÇ£¬ÔÚËùÓеĽø³Ì¶¼¿ÉÒÔÔËÐеÄÇé¿öÏ£¬×î¶Ì×÷ÒµÓÅÏȵÄËã·¨²ÅÊÇ×îÓŵġ£
×î¶ÌÊ£Óàʱ¼äÓÅÏÈ
×î¶Ì×÷ÒµÓÅÏȵÄÇÀռʽ°æ±¾±»³Æ×÷Ϊ ×î¶ÌÊ£Óàʱ¼äÓÅÏÈ(Shortest Remaining Time
Next) Ëã·¨¡£Ê¹ÓÃÕâ¸öËã·¨£¬µ÷¶È³ÌÐò×ÜÊÇÑ¡ÔñÊ£ÓàÔËÐÐʱ¼ä×î¶ÌµÄÄǸö½ø³ÌÔËÐС£
½»»¥Ê½ÏµÍ³Öеĵ÷¶È
½»»¥Ê½ÏµÍ³ÖÐÔÚ¸öÈ˼ÆËã»ú¡¢·þÎñÆ÷ºÍÆäËûϵͳÖж¼ÊǺܳ£Óõģ¬ËùÒÔÓбØÒªÀ´Ì½ÌÖһϽ»»¥Ê½µ÷¶È
ÂÖѯµ÷¶È
Ò»ÖÖ×î¹ÅÀÏ¡¢×î¼òµ¥¡¢×ƽ²¢ÇÒ×î¹ã·ºÊ¹ÓõÄËã·¨¾ÍÊÇ ÂÖѯËã·¨(round-robin)¡£Ã¿¸ö½ø³Ì¶¼»á±»·ÖÅäÒ»¸öʱ¼ä¶Î£¬³ÆÎªÊ±¼äƬ(quantum)£¬ÔÚÕâ¸öʱ¼äƬÄÚÔÊÐí½ø³ÌÔËÐС£Èç¹ûʱ¼äƬ½áÊøÊ±½ø³Ì»¹ÔÚÔËÐеϰ£¬ÔòÇÀÕ¼Ò»¸ö
CPU ²¢½«Æä·ÖÅ䏸ÁíÒ»¸ö½ø³Ì¡£Èç¹û½ø³ÌÔÚʱ¼äƬ½áÊøÇ°×èÈû»ò½áÊø£¬Ôò CPU Á¢¼´½øÐÐÇл»¡£ÂÖѯËã·¨±È½ÏÈÝÒ×ʵÏÖ¡£µ÷¶È³ÌÐòËù×öµÄ¾ÍÊÇά»¤Ò»¸ö¿ÉÔËÐнø³ÌµÄÁÐ±í£¬¾ÍÏñÏÂͼÖеÄ
a£¬µ±Ò»¸ö½ø³ÌÓÃÍêʱ¼äƬºó¾Í±»ÒƵ½¶ÓÁеÄĩ⣬¾ÍÏñÏÂͼµÄ b¡£

ÓÅÏȼ¶µ÷¶È
ÂÖѯµ÷¶È¼ÙÉèÁËËùÓеĽø³ÌÊÇͬµÈÖØÒªµÄ¡£µ«ÊÂʵÇé¿ö¿ÉÄܲ»ÊÇÕâÑù¡£ÀýÈ磬ÔÚÒ»Ëù´óѧÖеĵȼ¶Öƶȣ¬Ê×ÏÈÊÇÔº³¤£¬È»ºóÊǽÌÊÚ¡¢ÃØÊé¡¢ºóÇÚÈËÔ±£¬×îºóÊÇѧÉú¡£ÕâÖÖ½«ÍⲿÇé¿ö¿¼ÂÇÔÚÄÚ¾ÍʵÏÖÁËÓÅÏȼ¶µ÷¶È(priority
scheduling)

ËüµÄ»ù±¾Ë¼ÏëºÜÃ÷È·£¬Ã¿¸ö½ø³Ì¶¼±»¸³ÓèÒ»¸öÓÅÏȼ¶£¬ÓÅÏȼ¶¸ßµÄ½ø³ÌÓÅÏÈÔËÐС£
¶à¼¶¶ÓÁÐ
×îÔçʹÓÃÓÅÏȼ¶µ÷¶ÈµÄϵͳÊÇ CTSS(Compatible TimeSharing System)¡£CTSS
ÔÚÿ´ÎÇл»Ç°¶¼ÐèÒª½«µ±Ç°½ø³Ì»»³öµ½´ÅÅÌ£¬²¢´Ó´ÅÅÌÉ϶ÁÈëÒ»¸öнø³Ì¡£Îª CPU Ãܼ¯Ðͽø³ÌÉèÖýϳ¤µÄʱ¼äƬ±ÈƵ·±µØ·Ö¸øËûÃǺ̵ܶÄʱ¼äÒª¸üÓÐЧ£¨¼õÉÙ½»»»´ÎÊý£©¡£ÁíÒ»·½Ã棬ÈçǰËùÊö£¬³¤Ê±¼äƬµÄ½ø³ÌÓÖ»áÓ°Ïìµ½ÏìӦʱ¼ä£¬½â¾ö°ì·¨ÊÇÉèÖÃÓÅÏȼ¶Àà¡£ÊôÓÚ×î¸ßÓÅÏȼ¶µÄ½ø³ÌÔËÐÐÒ»¸öʱ¼äƬ£¬´Î¸ßÓÅÏȼ¶½ø³ÌÔËÐÐ
2 ¸öʱ¼äƬ£¬ÔÙÏÂÃæÒ»¼¶ÔËÐÐ 4 ¸öʱ¼äƬ£¬ÒÔ´ËÀàÍÆ¡£µ±Ò»¸ö½ø³ÌÓÃÍê·ÖÅäµÄʱ¼äƬºó£¬Ëü±»ÒƵ½ÏÂÒ»Àà¡£
×î¶Ì½ø³ÌÓÅÏÈ
×î¶Ì½ø³ÌÓÅÏÈÊǸù¾Ý½ø³Ì¹ýÈ¥µÄÐÐΪ½øÐÐÍÆ²â£¬²¢Ö´ÐйÀ¼ÆÔËÐÐʱ¼ä×î¶ÌµÄÄÇÒ»¸ö¡£¼ÙÉèÿ¸öÖÕ¶ËÉÏÿÌõÃüÁîµÄÔ¤¹ÀÔËÐÐʱ¼äΪ
T0£¬ÏÖÔÚ¼ÙÉè²âÁ¿µ½ÆäÏÂÒ»´ÎÔËÐÐʱ¼äΪ T1£¬¿ÉÒÔÓÃÁ½¸öÖµµÄ¼ÓȨÀ´¸Ä½ø¹À¼ÆÊ±¼ä£¬¼´aT0+ (1-
1)T1¡£Í¨¹ýÑ¡Ôñ a µÄÖµ£¬¿ÉÒÔ¾ö¶¨ÊǾ¡¿ìÍüµôÀϵÄÔËÐÐʱ¼ä£¬»¹ÊÇÔÚÒ»¶Î³¤Ê±¼äÄÚʼÖÕ¼ÇסËüÃÇ¡£µ± a
= 1/2 ʱ£¬¿ÉÒԵõ½ÏÂÃæÕâ¸öÐòÁÐ

¿ÉÒÔ¿´µ½£¬ÔÚÈýÂÖ¹ýºó£¬T0 ÔÚеĹÀ¼ÆÖµÖÐËùÕ¼±ÈÖØÏ½µÖÁ 1/8¡£
±£Ö¤µ÷¶È
Ò»ÖÖÍêÈ«²»Í¬µÄµ÷¶È·½·¨ÊǶÔÓû§×ö³öÃ÷È·µÄÐÔÄܱ£Ö¤¡£Ò»ÖÖʵ¼Ê¶øÇÒÈÝÒ×ʵÏֵı£Ö¤ÊÇ£ºÈôÓû§¹¤×÷ʱÓÐ n
¸öÓû§µÇ¼£¬Ôòÿ¸öÓû§½«»ñµÃ CPU ´¦ÀíÄÜÁ¦µÄ 1/n¡£ÀàËÆµØ£¬ÔÚÒ»¸öÓÐ n ¸ö½ø³ÌÔËÐеĵ¥Óû§ÏµÍ³ÖУ¬ÈôËùÓеĽø³Ì¶¼µÈ¼Û£¬Ôòÿ¸ö½ø³Ì½«»ñµÃ
1/n µÄ CPU ʱ¼ä¡£
²ÊƱµ÷¶È
¶ÔÓû§½øÐгÐŵ²¢ÔÚËæºó¶ÒÏÖ³ÐŵÊÇÒ»¼þºÃÊ£¬²»¹ýºÜÄÑʵÏÖ¡£µ«ÊÇ´æÔÚ×ÅÒ»ÖÖ¼òµ¥µÄ·½Ê½£¬ÓÐÒ»ÖּȿÉÒÔ¸ø³öÔ¤²â½á¹û¶øÓÖÓÐÒ»ÖֱȽϼòµ¥µÄʵÏÖ·½Ê½µÄËã·¨£¬¾ÍÊÇ
²ÊƱµ÷¶È(lottery scheduling)Ëã·¨¡£
Æä»ù±¾Ë¼ÏëÊÇΪ½ø³ÌÌṩ¸÷ÖÖϵͳ×ÊÔ´£¨ÀýÈç CPU ʱ¼ä£©µÄ²ÊƱ¡£µ±×ö³öÒ»¸öµ÷¶È¾ö²ßµÄʱºò£¬¾ÍËæ»ú³é³öÒ»ÕÅ²ÊÆ±£¬ÓµÓÐ²ÊÆ±µÄ½ø³Ì½«»ñµÃ¸Ã×ÊÔ´¡£ÔÚÓ¦Óõ½
CPU µ÷¶Èʱ£¬ÏµÍ³¿ÉÒÔÿÃë³ÖÓÐ 50 ´Î³é½±£¬Ã¿¸öÖн±Õß½«»ñµÃ±ÈÈç 20 ºÁÃëµÄ CPU ʱ¼ä×÷Ϊ½±Àø¡£
¹«Æ½·ÖÏíµ÷¶È
µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃǼÙÉè±»µ÷¶ÈµÄ¶¼ÊǸ÷¸ö½ø³Ì×ÔÉí£¬¶ø²»Óÿ¼ÂǸýø³ÌµÄÓµÓÐÕßÊÇË¡£½á¹ûÊÇ£¬Èç¹ûÓû§ 1 Æô¶¯ÁË
9 ¸ö½ø³Ì£¬¶øÓû§ 2 Æô¶¯ÁËÒ»¸ö½ø³Ì£¬Ê¹ÓÃÂÖת»òÏàͬÓÅÏȼ¶µ÷¶ÈËã·¨£¬ÄÇôÓû§ 1 ½«µÃµ½ 90 %
µÄ CPU ʱ¼ä£¬¶øÓû§ 2 ½«Ö®µÃµ½ 10 % µÄ CPU ʱ¼ä¡£
ΪÁË×èÖ¹ÕâÖÖÇé¿öµÄ³öÏÖ£¬Ò»Ð©ÏµÍ³ÔÚµ÷¶Èǰ»á°Ñ½ø³ÌµÄÓµÓÐÕß¿¼ÂÇÔÚÄÚ¡£ÔÚÕâÖÖÄ£ÐÍÏ£¬Ã¿¸öÓû§¶¼»á·ÖÅäһЩCPU
ʱ¼ä£¬¶øµ÷¶È³ÌÐò»áÑ¡Ôñ½ø³Ì²¢Ç¿ÖÆÖ´ÐС£Òò´ËÈç¹ûÁ½¸öÓû§Ã¿¸ö¶¼»áÓÐ 50% µÄ CPU ʱ¼äƬ±£Ö¤£¬ÄÇôÎÞÂÛÒ»¸öÓû§ÓжàÉÙ¸ö½ø³Ì£¬¶¼½«»ñµÃÏàͬµÄ
CPU ·Ý¶î¡£

ʵʱϵͳÖеĵ÷¶È
ʵʱϵͳ(real-time) ÊÇÒ»¸öʱ¼ä°çÑÝÁËÖØÒª×÷ÓõÄϵͳ¡£ÊµÊ±ÏµÍ³¿ÉÒÔ·ÖΪÁ½À࣬Ӳʵʱ(hard
real time) ºÍ Èíʵʱ(soft real time) ϵͳ£¬Ç°ÕßÒâζ×űØÐëÒªÂú×ã¾ø¶ÔµÄ½ØÖ¹Ê±¼ä£»ºóÕߵĺ¬ÒåÊÇËäÈ»²»Ï£Íûż¶û´íʧ½ØÖ¹Ê±¼ä£¬µ«ÊÇ¿ÉÒÔÈÝÈÌ¡£
ʵʱϵͳÖеÄʼþ¿ÉÒÔ°´ÕÕÏìÓ¦·½Ê½½øÒ»²½·ÖÀàΪÖÜÆÚÐÔ(ÒÔ¹æÔòµÄʱ¼ä¼ä¸ô·¢Éú)ʼþ»ò ·ÇÖÜÆÚÐÔ(·¢Éúʱ¼ä²»¿ÉÔ¤Öª)ʼþ¡£Ò»¸öϵͳ¿ÉÄÜÒªÏìÓ¦¶à¸öÖÜÆÚÐÔʼþÁ÷£¬¸ù¾Ýÿ¸öʼþ´¦ÀíËùÐèµÄʱ¼ä£¬¿ÉÄÜÉõÖÁÎÞ·¨´¦ÀíËùÓÐʼþ¡£ÀýÈ磬Èç¹ûÓÐ
m ¸öÖÜÆÚʼþ£¬Ê¼þ i ÒÔÖÜÆÚ Pi ·¢Éú£¬²¢ÐèÒª Ci Ãë CPU ʱ¼ä´¦ÀíÒ»¸öʼþ£¬ÄÇô¿ÉÒÔ´¦Àí¸ºÔØµÄÌõ¼þÊÇ

Ö»ÓÐÂú×ãÕâ¸öÌõ¼þµÄʵʱϵͳ³ÆÎª¿Éµ÷¶ÈµÄ£¬ÕâÒâζ×ÅËüʵ¼ÊÉÏÄܹ»±»ÊµÏÖ¡£Ò»¸ö²»Âú×ã´Ë¼ìÑé±ê×¼µÄ½ø³Ì²»Äܱ»µ÷¶È£¬ÒòΪÕâЩ½ø³Ì¹²Í¬ÐèÒªµÄ
CPU ʱ¼ä×ܺʹóÓÚ CPU ÄÜÌṩµÄʱ¼ä¡£
ÏÂÃæÎÒÃÇÀ´Á˽âÒ»ÏÂÄÚ´æ¹ÜÀí£¬ÄãÐèÒªÖªµÀµÄ֪ʶµãÈçÏÂ

µØÖ·¿Õ¼ä
Èç¹ûҪʹ¶à¸öÓ¦ÓóÌÐòͬʱÔËÐÐÔÚÄÚ´æÖУ¬±ØÐëÒª½â¾öÁ½¸öÎÊÌ⣺±£»¤ºÍ ÖØ¶¨Î»¡£µÚÒ»ÖÖ½â¾ö·½Ê½ÊÇÓñ£»¤ÃÜÔ¿±ê¼ÇÄÚ´æ¿é£¬²¢½«Ö´Ðйý³ÌµÄÃÜÔ¿ÓëÌáÈ¡µÄÿ¸ö´æ´¢×ÖµÄÃÜÔ¿½øÐбȽϡ£ÕâÖÖ·½Ê½Ö»Äܽâ¾öµÚÒ»ÖÖÎÊÌâ£¨ÆÆ»µ²Ù×÷ϵͳ£©£¬µ«ÊDz»Äܽâ¾ö¶à½ø³ÌÔÚÄÚ´æÖÐͬʱÔËÐеÄÎÊÌâ¡£
»¹ÓÐÒ»ÖÖ¸üºÃµÄ·½Ê½ÊÇ´´ÔìÒ»¸ö´æ´¢Æ÷³éÏ󣺵ØÖ·¿Õ¼ä(the address space)¡£¾ÍÏñ½ø³ÌµÄ¸ÅÄî´´½¨ÁËÒ»ÖÖ³éÏóµÄ
CPU À´ÔËÐгÌÐò£¬µØÖ·¿Õ¼äÒ²´´½¨ÁËÒ»ÖÖ³éÏóÄڴ湩³ÌÐòʹÓá£
»ùÖ·¼Ä´æÆ÷ºÍ±äÖ·¼Ä´æÆ÷
×î¼òµ¥µÄ°ì·¨ÊÇʹÓö¯Ì¬Öض¨Î»(dynamic relocation)¼¼Êõ£¬Ëü¾ÍÊÇͨ¹ýÒ»ÖÖ¼òµ¥µÄ·½Ê½½«Ã¿¸ö½ø³ÌµÄµØÖ·¿Õ¼äÓ³Éäµ½ÎïÀíÄÚ´æµÄ²»Í¬ÇøÓò¡£»¹ÓÐÒ»ÖÖ·½Ê½ÊÇʹÓûùÖ·¼Ä´æÆ÷ºÍ±äÖ·¼Ä´æÆ÷¡£
»ùÖ·¼Ä´æÆ÷£º´æ´¢Êý¾ÝÄÚ´æµÄÆðʼλÖÃ
±äÖ·¼Ä´æÆ÷£º´æ´¢Ó¦ÓóÌÐòµÄ³¤¶È¡£
ÿµ±½ø³ÌÒýÓÃÄÚ´æÒÔ»ñȡָÁî»ò¶ÁÈ¡¡¢Ð´ÈëÊý¾Ýʱ£¬CPU ¶¼»á×Ô¶¯½«»ùÖ·ÖµÌí¼Óµ½½ø³ÌÉú³ÉµÄµØÖ·ÖУ¬È»ºóÔÙ½«Æä·¢Ë͵½ÄÚ´æ×ÜÏßÉÏ¡£Í¬Ê±£¬Ëü¼ì²é³ÌÐòÌṩµÄµØÖ·ÊÇ·ñ´óÓÚ»òµÈÓÚ±äÖ·¼Ä´æÆ÷
ÖеÄÖµ¡£Èç¹û³ÌÐòÌṩµÄµØÖ·Òª³¬¹ý±äÖ·¼Ä´æÆ÷µÄ·¶Î§£¬ÄÇô»á²úÉú´íÎó²¢ÖÐÖ¹·ÃÎÊ¡£
½»»»¼¼Êõ
ÔÚ³ÌÐòÔËÐйý³ÌÖУ¬¾³£»á³öÏÖÄÚ´æ²»×ãµÄÎÊÌâ¡£
Õë¶ÔÉÏÃæÄÚ´æ²»×ãµÄÎÊÌ⣬Ìá³öÁËÁ½ÖÖ´¦Àí·½Ê½£º×î¼òµ¥µÄÒ»ÖÖ·½Ê½¾ÍÊǽ»»»(swapping)¼¼Êõ£¬¼´°ÑÒ»¸ö½ø³ÌÍêÕûµÄµ÷ÈëÄڴ棬ȻºóÔÙÄÚ´æÖÐÔËÐÐÒ»¶Îʱ¼ä£¬ÔÙ°ÑËü·Å»Ø´ÅÅÌ¡£¿ÕÏнø³Ì»á´æ´¢ÔÚ´ÅÅÌÖУ¬ËùÒÔÕâЩ½ø³ÌÔÚûÓÐÔËÐÐʱ²»»áÕ¼ÓÃÌ«¶àÄÚ´æ¡£ÁíÍâÒ»ÖÖ²ßÂÔ½Ð×öÐéÄâÄÚ´æ(virtual
memory)£¬ÐéÄâÄÚ´æ¼¼ÊõÄܹ»ÔÊÐíÓ¦ÓóÌÐò²¿·ÖµÄÔËÐÐÔÚÄÚ´æÖС£ÏÂÃæÎÒÃÇÊ×ÏÈÏÈ̽ÌÖһϽ»»»
½»»»¹ý³Ì
ÏÂÃæÊÇÒ»¸ö½»»»¹ý³Ì

¸Õ¿ªÊ¼µÄʱºò£¬Ö»Óнø³Ì A ÔÚÄÚ´æÖУ¬È»ºó´Ó´´½¨½ø³Ì B ºÍ½ø³Ì C »òÕß´Ó´ÅÅÌÖаÑËüÃÇ»»ÈëÄڴ棬ȻºóÔÚͼ
d ÖУ¬A ±»»»³öÄÚ´æµ½´ÅÅÌÖУ¬×îºó A ÖØÐ½øÀ´¡£ÒòΪͼ g ÖеĽø³Ì A ÏÖÔÚµ½Á˲»Í¬µÄλÖã¬ËùÒÔÔÚ×°ÔØ¹ý³ÌÖÐÐèÒª±»ÖØÐ¶¨Î»£¬»òÕßÔÚ½»»»³ÌÐòʱͨ¹ýÈí¼þÀ´Ö´ÐУ»»òÕßÔÚ³ÌÐòÖ´ÐÐÆÚ¼äͨ¹ýÓ²¼þÀ´Öض¨Î»¡£»ùÖ·¼Ä´æÆ÷ºÍ±äÖ·¼Ä´æÆ÷¾ÍÊÊÓÃÓÚÕâÖÖÇé¿ö¡£

½»»»ÔÚÄÚ´æ´´½¨Á˶à¸ö ¿ÕÏÐÇø(hole)£¬ÄÚ´æ»á°ÑËùÓеĿÕÏÐÇø¾¡¿ÉÄÜÏòÏÂÒÆ¶¯ºÏ²¢³ÉΪһ¸ö´óµÄ¿ÕÏÐÇø¡£ÕâÏî¼¼Êõ³ÆÎªÄÚ´æ½ôËõ(memory
compaction)¡£µ«ÊÇÕâÏî¼¼Êõͨ³£²»»áʹÓã¬ÒòΪÕâÏî¼¼Êõ»áÏûºÄºÜ¶à CPU ʱ¼ä¡£
¿ÕÏÐÄÚ´æ¹ÜÀí
ÔÚ½øÐÐÄڴ涯̬·ÖÅäʱ£¬²Ù×÷ϵͳ±ØÐë¶ÔÆä½øÐйÜÀí¡£´óÖÂÉÏ˵£¬ÓÐÁ½ÖÖ¼à¿ØÄÚ´æÊ¹Óõķ½Ê½
λͼ(bitmap)
¿ÕÏÐÁбí(free lists)
ʹÓÃλͼµÄ´æ´¢¹ÜÀí
ʹÓÃλͼ·½·¨Ê±£¬ÄÚ´æ¿ÉÄܱ»»®·ÖΪСµ½¼¸¸ö×Ö»ò´óµ½¼¸Ç§×ֽڵķÖÅäµ¥Ôª¡£Ã¿¸ö·ÖÅäµ¥Ôª¶ÔÓ¦ÓÚλͼÖеÄһ룬0
±íʾ¿ÕÏУ¬ 1 ±íʾռÓ㨻òÕßÏà·´£©¡£Ò»¿éÄÚ´æÇøÓòºÍÆä¶ÔÓ¦µÄλͼÈçÏÂ

λͼÌṩÁËÒ»ÖÖ¼òµ¥µÄ·½·¨Ôڹ̶¨´óСµÄÄÚ´æÖиú×ÙÄÚ´æµÄʹÓÃÇé¿ö£¬ÒòΪ¡¸Î»Í¼µÄ´óСȡ¾öÓÚÄÚ´æºÍ·ÖÅäµ¥ÔªµÄ´óС¡¹¡£ÕâÖÖ·½·¨ÓÐÒ»¸öÎÊÌâÊÇ£¬µ±¾ö¶¨Îª°Ñ¾ßÓÐ
k ¸ö·ÖÅäµ¥ÔªµÄ½ø³Ì·ÅÈëÄÚ´æÊ±£¬ÄÚÈݹÜÀíÆ÷(memory manager) ±ØÐëËÑË÷λͼ£¬ÔÚλͼÖÐÕÒ³öÄܹ»ÔËÐÐ
k ¸öÁ¬Ðø 0 λµÄ´®¡£ÔÚλͼÖÐÕÒ³öÖÆ¶¨³¤¶ÈµÄÁ¬Ðø 0 ´®ÊÇÒ»¸öºÜºÄʱµÄ²Ù×÷£¬ÕâÊÇλͼµÄȱµã¡££¨¿ÉÒÔ¼òµ¥Àí½âΪÔÚÔÓÂÒÎÞÕµÄÊý×éÖУ¬ÕÒ³ö¾ßÓÐÒ»´ó³¤´®¿ÕÏеÄÊý×éµ¥Ôª£©
ʹÓÃÁ´±í½øÐйÜÀí
ÁíÒ»ÖּǼÄÚ´æÊ¹ÓÃÇé¿öµÄ·½·¨ÊÇ£¬Î¬»¤Ò»¸ö¼Ç¼ÒÑ·ÖÅäÄÚ´æ¶ÎºÍ¿ÕÏÐÄÚ´æ¶ÎµÄÁ´±í£¬¶Î»á°üº¬½ø³Ì»òÕßÊÇÁ½¸ö½ø³ÌµÄ¿ÕÏÐÇøÓò¡£¿ÉÓÃÉÏÃæµÄͼ
c ¡¸À´±íʾÄÚ´æµÄʹÓÃÇé¿ö¡¹¡£Á´±íÖеÄÿһÏî¶¼¿ÉÒÔ´ú±íÒ»¸ö ¿ÕÏÐÇø(H) »òÕßÊǽø³Ì(P)µÄÆðʼ±êÖ¾£¬³¤¶ÈºÍÏÂÒ»¸öÁ´±íÏîµÄλÖá£

µ±°´ÕÕµØÖ·Ë³ÐòÔÚÁ´±íÖдæ·Å½ø³ÌºÍ¿ÕÏÐÇøÊ±£¬Óм¸ÖÖËã·¨¿ÉÒÔΪ´´½¨µÄ½ø³Ì£¨»òÕß´Ó´ÅÅÌÖл»ÈëµÄ½ø³Ì£©·ÖÅäÄÚ´æ¡£ÎÒÃÇÏȼÙÉèÄÚ´æ¹ÜÀíÆ÷ÖªµÀÓ¦¸Ã·ÖÅä¶àÉÙÄڴ棬×î¼òµ¥µÄËã·¨ÊÇʹÓÃ
Ê×´ÎÊÊÅä(first fit)¡£ÄÚ´æ¹ÜÀíÆ÷»áÑØ×ŶÎÁÐ±í½øÐÐɨÃ裬ֱµ½ÕÒ¸öÒ»¸ö×ã¹»´óµÄ¿ÕÏÐÇøÎªÖ¹¡£ ³ý·Ç¿ÕÏÐÇø´óСºÍÒª·ÖÅäµÄ¿Õ¼ä´óСһÑù£¬·ñÔò½«¿ÕÏÐÇø·ÖΪÁ½²¿·Ö£¬Ò»²¿·Ö¹©½ø³ÌʹÓã»Ò»²¿·ÖÉú³ÉеĿÕÏÐÇø¡£Ê×´ÎÊÊÅäËã·¨ÊÇÒ»ÖÖËٶȺܿìµÄËã·¨£¬ÒòΪËü»á¾¡¿ÉÄܵÄËÑË÷Á´±í¡£
Ê×´ÎÊÊÅäµÄÒ»¸öСµÄ±äÌåÊÇ Ï´ÎÊÊÅä(next fit)¡£ËüºÍÊ×´ÎÆ¥ÅäµÄ¹¤×÷·½Ê½Ïàͬ£¬Ö»ÓÐÒ»¸ö²»Í¬Ö®´¦ÄǾÍÊÇÏ´ÎÊÊÅäÔÚÿ´ÎÕÒµ½ºÏÊʵĿÕÏÐÇøÊ±¾Í»á¼Ç¼µ±Ê±µÄλÖã¬ÒÔ±ãÏ´ÎѰÕÒ¿ÕÏÐÇøÊ±´ÓÉϴνáÊøµÄµØ·½¿ªÊ¼ËÑË÷£¬¶ø²»ÊÇÏñÊ×´ÎÆ¥ÅäËã·¨ÄÇÑùÿ´Î¶¼»á´ÓÍ·¿ªÊ¼ËÑË÷¡£
ÁíÍâÒ»¸öÖøÃûµÄ²¢Çҹ㷺ʹÓõÄËã·¨ÊÇ ×î¼ÑÊÊÅä(best fit)¡£×î¼ÑÊÊÅä»á´ÓÍ·µ½Î²Ñ°ÕÒÕû¸öÁ´±í£¬ÕÒ³öÄܹ»ÈÝÄɽø³ÌµÄ×îС¿ÕÏÐÇø¡£
ÐéÄâÄÚ´æ
¾¡¹Ü»ùÖ·¼Ä´æÆ÷ºÍ±äÖ·¼Ä´æÆ÷ÓÃÀ´´´½¨µØÖ·¿Õ¼äµÄ³éÏ󣬵«ÊÇÕâÓÐÒ»¸öÆäËûµÄÎÊÌâÐèÒª½â¾ö£º¹ÜÀíÈí¼þµÄ²»¶ÏÔö´ó(managing
bloatware)¡£ÐéÄâÄÚ´æµÄ»ù±¾Ë¼ÏëÊÇ£¬Ã¿¸ö³ÌÐò¶¼ÓÐ×Ô¼ºµÄµØÖ·¿Õ¼ä£¬Õâ¸öµØÖ·¿Õ¼ä±»»®·ÖΪ¶à¸ö³ÆÎªÒ³Ãæ(page)µÄ¿é¡£Ã¿Ò»Ò³¶¼ÊÇÁ¬ÐøµÄµØÖ··¶Î§¡£ÕâЩҳ±»Ó³Éäµ½ÎïÀíÄڴ棬µ«²¢²»ÊÇËùÓеÄÒ³¶¼±ØÐëÔÚÄÚ´æÖвÅÄÜÔËÐгÌÐò¡£µ±³ÌÐòÒýÓõ½Ò»²¿·ÖÔÚÎïÀíÄÚ´æÖеĵØÖ·¿Õ¼äʱ£¬Ó²¼þ»áÁ¢¿ÌÖ´ÐбØÒªµÄÓ³Éä¡£µ±³ÌÐòÒýÓõ½Ò»²¿·Ö²»ÔÚÎïÀíÄÚ´æÖеĵØÖ·¿Õ¼äʱ£¬ÓɲÙ×÷ϵͳ¸ºÔð½«È±Ê§µÄ²¿·Ö×°ÈëÎïÀíÄÚ´æ²¢ÖØÐÂÖ´ÐÐʧ°ÜµÄÖ¸Áî¡£
·ÖÒ³
´ó²¿·ÖʹÓÃÐéÄâÄÚ´æµÄϵͳÖж¼»áʹÓÃÒ»ÖÖ ·ÖÒ³(paging) ¼¼Êõ¡£ÔÚÈκÎһ̨¼ÆËã»úÉÏ£¬³ÌÐò»áÒýÓÃʹÓÃÒ»×éÄÚ´æµØÖ·¡£µ±³ÌÐòÖ´ÐÐ
MOV REG,1000
ÕâÌõÖ¸Áîʱ£¬Ëü»á°ÑÄÚ´æµØÖ·Îª 1000 µÄÄÚ´æµ¥ÔªµÄÄÚÈݸ´ÖƵ½ REG ÖУ¨»òÕßÏà·´£¬ÕâÈ¡¾öÓÚ¼ÆËã»ú£©¡£µØÖ·¿ÉÒÔͨ¹ýË÷Òý¡¢»ùÖ·¼Ä´æÆ÷¡¢¶Î¼Ä´æÆ÷»òÆäËû·½Ê½²úÉú¡£
ÕâЩ³ÌÐòÉú³ÉµÄµØÖ·±»³ÆÎª ÐéÄâµØÖ·(virtual addresses) ²¢ÐγÉÐéÄâµØÖ·¿Õ¼ä(virtual
address space)£¬ÔÚûÓÐÐéÄâÄÚ´æµÄ¼ÆËã»úÉÏ£¬ÏµÍ³Ö±½Ó½«ÐéÄâµØÖ·Ë͵½ÄÚ´æÖÐÏßÉÏ£¬¶Áд²Ù×÷¶¼Ê¹ÓÃͬÑùµØÖ·µÄÎïÀíÄÚ´æ¡£¡¸ÔÚʹÓÃÐéÄâÄÚ´æÊ±£¬ÐéÄâµØÖ·²»»áÖ±½Ó·¢Ë͵½ÄÚ´æ×ÜÏßÉÏ¡¹¡£Ïà·´£¬»áʹÓÃ
MMU(Memory Management Unit) ÄÚ´æ¹ÜÀíµ¥Ôª°Ñ¡¸ÐéÄâµØÖ·Ó³ÉäΪÎïÀíÄÚ´æµØÖ·¡¹£¬ÏñÏÂͼÕâÑù

ÏÂÃæÕâ·ùͼչʾÁËÕâÖÖÓ³ÉäÊÇÈçºÎ¹¤×÷µÄ

Ò³±í¸ø³öÐéÄâµØÖ·ÓëÎïÀíÄÚ´æµØÖ·Ö®¼äµÄÓ³Éä¹ØÏµ¡£Ã¿Ò»Ò³ÆðʼÓÚ 4096 µÄ±¶ÊýλÖ㬽áÊøÓÚ 4095
µÄλÖã¬ËùÒÔ 4K µ½ 8K ʵ¼ÊΪ 4096 - 8191 £¬8K - 12K ¾ÍÊÇ 8192 -
12287
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇ¿ÉÄÜÓÐÒ»¸ö 16 λµØÖ·µÄ¼ÆËã»ú£¬µØÖ·´Ó 0 - 64 K - 1£¬ÕâЩÊÇÐéÄâµØÖ·¡£È»¶øÖ»ÓÐ
32 KB µÄÎïÀíµØÖ·¡£ËùÒÔËäÈ»¿ÉÒÔ±àд 64 KB µÄ³ÌÐò£¬µ«ÊdzÌÐòÎÞ·¨È«²¿µ÷ÈëÄÚ´æÔËÐУ¬ÔÚ´ÅÅÌÉϱØÐëÓÐÒ»¸ö×î¶à
64 KB µÄ³ÌÐòºËÐÄÓ³ÏñµÄÍêÕû¸±±¾£¬ÒÔ±£Ö¤³ÌÐòƬ¶ÎÔÚÐèҪʱ±»µ÷ÈëÄÚ´æ¡£
Ò³±í
ÐéÄâÒ³ºÅ¿É×÷Ϊҳ±íµÄË÷ÒýÓÃÀ´ÕÒµ½ÐéÄâÒ³ÖеÄÄÚÈÝ¡£ÓÉÒ³±íÏî¿ÉÒÔÕÒµ½Ò³¿òºÅ£¨Èç¹ûÓеϰ£©¡£È»ºó°ÑÒ³¿òºÅÆ´½Óµ½Æ«ÒÆÁ¿µÄ¸ßλ¶Ë£¬ÒÔÌæ»»µôÐéÄâÒ³ºÅ£¬ÐγÉÎïÀíµØÖ·¡£

Òò´Ë£¬Ò³±íµÄÄ¿µÄÊǰÑÐéÄâÒ³Ó³Éäµ½Ò³¿òÖС£´ÓÊýѧÉÏ˵£¬Ò³±íÊÇÒ»¸öº¯Êý£¬ËüµÄ²ÎÊýÊÇÐéÄâÒ³ºÅ£¬½á¹ûÊÇÎïÀíÒ³¿òºÅ¡£

ͨ¹ýÕâ¸öº¯Êý¿ÉÒÔ°ÑÐéÄâµØÖ·ÖеÄÐéÄâҳת»»ÎªÒ³¿ò£¬´Ó¶øÐγÉÎïÀíµØÖ·¡£
Ò³±íÏîµÄ½á¹¹
ÏÂÃæÎÒÃÇ̽ÌÖÒ»ÏÂÒ³±íÏîµÄ¾ßÌå½á¹¹£¬ÉÏÃæÄãÖªµÀÁËÒ³±íÏîµÄ´óÖ¹¹³É£¬ÊÇÓÉÒ³¿òºÅºÍÔÚ/²»ÔÚλ¹¹³ÉµÄ£¬ÏÖÔÚÎÒÃÇÀ´¾ßÌå̽ÌÖÒ»ÏÂÒ³±íÏîµÄ¹¹³É

Ò³±íÏîµÄ½á¹¹ÊÇÓë»úÆ÷Ïà¹ØµÄ£¬µ«ÊDz»Í¬»úÆ÷ÉϵÄÒ³±íÏî´óÖÂÏàͬ¡£ÉÏÃæÊÇÒ»¸öÒ³±íÏîµÄ¹¹³É£¬²»Í¬¼ÆËã»úµÄÒ³±íÏî¿ÉÄܲ»Í¬£¬µ«ÊÇÒ»°ãÀ´Ëµ¶¼ÊÇ
32 λµÄ¡£Ò³±íÏîÖÐ×îÖØÒªµÄ×ֶξÍÊÇÒ³¿òºÅ(Page frame number)¡£±Ï¾¹£¬Ò³±íµ½Ò³¿ò×îÖØÒªµÄÒ»²½²Ù×÷¾ÍÊÇÒª°Ñ´ËÖµÓ³Éä¹ýÈ¥¡£ÏÂÒ»¸ö±È½ÏÖØÒªµÄ¾ÍÊÇÔÚ/²»ÔÚ룬Èç¹û´ËλÉϵÄÖµÊÇ
1£¬ÄÇôҳ±íÏîÊÇÓÐЧµÄ²¢ÇÒÄܹ»±»Ê¹Óá£Èç¹û´ËÖµÊÇ 0 µÄ»°£¬Ôò±íʾ¸ÃÒ³±íÏî¶ÔÓ¦µÄÐéÄâÒ³Ãæ²»ÔÚÄÚ´æÖУ¬·ÃÎʸÃÒ³Ãæ»áÒýÆðÒ»¸öȱҳÒì³£(page
fault)¡£
±£»¤Î»(Protection) ¸æËßÎÒÃÇÄÄÒ»ÖÖ·ÃÎÊÊÇÔÊÐíµÄ£¬É¶ÒâË¼ÄØ£¿×î¼òµ¥µÄ±íʾÐÎʽÊÇÕâ¸öÓòÖ»ÓÐһ룬¡¸0
±íʾ¿É¶Á¿Éд£¬1 ±íʾµÄÊÇÖ»¶Á¡¹¡£
ÐÞ¸Äλ(Modified) ºÍ ·ÃÎÊλ(Referenced) »á¸ú×ÙÒ³ÃæµÄʹÓÃÇé¿ö¡£µ±Ò»¸öÒ³Ãæ±»Ð´Èëʱ£¬Ó²¼þ»á×Ô¶¯µÄÉèÖÃÐÞ¸Äλ¡£ÐÞ¸ÄλÔÚÒ³ÃæÖØÐ·ÖÅäÒ³¿òʱºÜÓÐÓá£Èç¹ûÒ»¸öÒ³ÃæÒѾ±»Ð޸Ĺý£¨¼´ËüÊÇ
Ôà µÄ£©£¬Ôò±ØÐë°ÑËüд»Ø´ÅÅÌ¡£Èç¹ûÒ»¸öÒ³ÃæÃ»Óб»Ð޸Ĺý£¨¼´ËüÊÇ ¸É¾»µÄ£©£¬ÄÇÃ´ÖØÐ·ÖÅäʱÕâ¸öÒ³¿ò»á±»Ö±½Ó¶ªÆú£¬ÒòΪ´ÅÅÌÉϵĸ±±¾ÈÔÈ»ÊÇÓÐЧµÄ¡£Õâ¸öλÓÐʱҲ½Ð×ö
Ôàλ(dirty bit)£¬ÒòΪËü·´Ó³ÁËÒ³ÃæµÄ״̬¡£
·ÃÎÊλ(Referenced) ÔÚÒ³Ãæ±»·ÃÎÊʱ±»ÉèÖ㬲»¹ÜÊǶÁ»¹ÊÇд¡£Õâ¸öÖµÄܹ»°ïÖú²Ù×÷ϵͳÔÚ·¢ÉúȱҳÖжÏʱѡÔñÒªÌÔ̵ÄÒ³¡£²»ÔÙʹÓõÄÒ³Òª±ÈÕýÔÚʹÓõÄÒ³¸üÊʺϱ»ÌÔÌ¡£Õâ¸öλÔÚºóÃæÒªÌÖÂÛµÄÒ³ÃæÖû»Ëã·¨ÖÐ×÷Óúܴó¡£
×îºóһλÓÃÓÚ½ûÖ¹¸ÃÒ³Ãæ±»¸ßËÙ»º´æ£¬Õâ¸ö¹¦ÄܶÔÓÚÓ³Éäµ½É豸¼Ä´æÆ÷»¹ÊÇÄÚ´æÖÐÆðµ½Á˹ؼü×÷Óá£Í¨¹ýÕâһλ¿ÉÒÔ½ûÓøßËÙ»º´æ¡£¾ßÓжÀÁ¢µÄ
I/O ¿Õ¼ä¶ø²»ÊÇÓÃÄÚ´æÓ³Éä I/O µÄ»úÆ÷À´Ëµ£¬²¢²»ÐèÒªÕâһλ¡£
Ò³ÃæÖû»Ëã·¨
ÏÂÃæÎÒÃǾÍÀ´Ì½ÌÖÒ»ÏÂÓÐÄÄÐ©Ò³ÃæÖû»Ëã·¨¡£
×îÓÅÒ³ÃæÖû»Ëã·¨
×îÓŵÄÒ³ÃæÖû»Ëã·¨µÄ¹¤×÷Á÷³ÌÈçÏ£ºÔÚȱҳÖжϷ¢Éúʱ£¬ÕâÐ©Ò³ÃæÖ®Ò»½«ÔÚÏÂÒ»ÌõÖ¸Á°üº¬¸ÃÖ¸ÁîµÄÒ³Ãæ£©Éϱ»ÒýÓá£ÆäËûÒ³ÃæÔò¿ÉÄÜÒªµ½
10¡¢100 »òÕß 1000 ÌõÖ¸Áîºó²Å»á±»·ÃÎÊ¡£Ã¿¸öÒ³Ãæ¶¼¿ÉÒÔÓÃÔÚ¸ÃÒ³Ê״α»·ÃÎÊǰËùÒªÖ´ÐеÄÖ¸ÁîÊý×÷Ϊ±ê¼Ç¡£
×îÓÅ»¯µÄÒ³ÃæËã·¨±íÃ÷Ó¦¸Ã±ê¼Ç×î´óµÄÒ³Ãæ¡£Èç¹ûÒ»¸öÒ³ÃæÔÚ 800 ÍòÌõÖ¸ÁîÄÚ²»»á±»Ê¹Óã¬ÁíÍâÒ»¸öÒ³ÃæÔÚ
600 ÍòÌõÖ¸ÁîÄÚ²»»á±»Ê¹Óã¬ÔòÖû»Ç°Ò»¸öÒ³Ãæ£¬´Ó¶ø°ÑÐèÒªµ÷ÈëÕâ¸öÒ³Ãæ¶ø·¢ÉúµÄȱҳÖжÏÍÆ³Ù¡£¼ÆËã»úÒ²ÏñÈËÀàÒ»Ñù£¬»á°Ñ²»Ô¸Òâ×öµÄÊÂÇ龡¿ÉÄܵÄÍùºóÍÏ¡£
Õâ¸öËã·¨×î´óµÄÎÊÌâʱÎÞ·¨ÊµÏÖ¡£µ±È±Ò³ÖжϷ¢Éúʱ£¬²Ù×÷ϵͳÎÞ·¨ÖªµÀ¸÷¸öÒ³ÃæµÄÏÂÒ»´Î½«ÔÚʲôʱºò±»·ÃÎÊ¡£ÕâÖÖËã·¨ÔÚʵ¼Ê¹ý³ÌÖиù±¾²»»áʹÓá£
×î½üδʹÓÃÒ³ÃæÖû»Ëã·¨
ΪÁËÄܹ»ÈòÙ×÷ϵͳÊÕ¼¯Ò³ÃæÊ¹ÓÃÐÅÏ¢£¬´ó²¿·ÖʹÓÃÐéÄâµØÖ·µÄ¼ÆËã»ú¶¼ÓÐÁ½¸ö״̬룬R ºÍ M£¬À´ºÍÿ¸öÒ³Ãæ½øÐйØÁª¡£¡¸Ã¿µ±ÒýÓÃÒ³Ãæ£¨¶ÁÈë»òдÈ룩ʱ¶¼ÉèÖÃ
R£¬Ð´È루¼´Ð޸ģ©Ò³ÃæÊ±ÉèÖà M¡¹£¬ÕâЩλ°üº¬ÔÚÿ¸öÒ³±íÏîÖУ¬¾ÍÏñÏÂÃæËùʾ

ÒòΪÿ´Î·ÃÎÊʱ¶¼»á¸üÐÂÕâЩ룬Òò´ËÓÉÓ²¼þÀ´ÉèÖÃËüÃǷdz£ÖØÒª¡£Ò»µ©Ä³¸öλ±»ÉèÖÃΪ 1£¬¾Í»áÒ»Ö±±£³Ö
1 Ö±µ½²Ù×÷ϵͳÏ´ÎÀ´Ð޸ĴËλ¡£
Èç¹ûÓ²¼þûÓÐÕâЩ룬ÄÇô¿ÉÒÔʹÓòÙ×÷ϵͳµÄȱҳÖжϺÍʱÖÓÖжϻúÖÆÀ´½øÐÐÄ£Äâ¡£µ±Æô¶¯Ò»¸ö½ø³Ìʱ£¬½«ÆäËùÓеÄÒ³Ãæ¶¼±ê¼ÇΪ²»ÔÚÄڴ棻һµ©·ÃÎÊÈκÎÒ»¸öÒ³Ãæ¾Í»áÒý·¢Ò»´ÎȱҳÖжϣ¬´Ëʱ²Ù×÷ϵͳ¾Í¿ÉÒÔÉèÖÃ
R λ(ÔÚËüµÄÄÚ²¿±íÖÐ)£¬ÐÞ¸ÄÒ³±íÏîʹÆäÖ¸ÏòÕýÈ·µÄÒ³Ãæ£¬²¢ÉèÖÃΪ READ ONLY ģʽ£¬È»ºóÖØÐÂÆô¶¯ÒýÆðȱҳÖжϵÄÖ¸Áî¡£Èç¹ûÒ³ÃæËæºó±»Ð޸ģ¬¾Í»á·¢ÉúÁíÒ»¸öȱҳÒì³£¡£´Ó¶øÔÊÐí²Ù×÷ϵͳÉèÖÃ
M λ²¢°ÑÒ³ÃæµÄģʽÉèÖÃΪ READ/WRITE¡£
¿ÉÒÔÓà R λºÍ M λÀ´¹¹ÔìÒ»¸ö¼òµ¥µÄÒ³ÃæÖû»Ëã·¨£ºµ±Æô¶¯Ò»¸ö½ø³Ìʱ£¬²Ù×÷ϵͳ½«ÆäËùÓÐÒ³ÃæµÄÁ½¸öλ¶¼ÉèÖÃΪ
0¡£R 붨ÆÚµÄ±»ÇåÁ㣨ÔÚÿ¸öʱÖÓÖжϣ©¡£ÓÃÀ´½«×î½üδÒýÓõÄÒ³ÃæºÍÒÑÒýÓõÄÒ³Ãæ·Ö¿ª¡£
µ±³öÏÖȱҳÖжϺ󣬲Ù×÷ϵͳ»á¼ì²éËùÓеÄÒ³Ãæ£¬²¢¸ù¾ÝËüÃÇµÄ R λºÍ M 뽫µ±Ç°Öµ·ÖΪËÄÀࣺ
µÚ 0 ÀࣺûÓÐÒýÓà R£¬Ã»ÓÐÐÞ¸Ä M
µÚ 1 ÀࣺûÓÐÒýÓà R£¬ÒÑÐÞ¸Ä M
µÚ 2 ÀࣺÒýÓà R £¬Ã»ÓÐÐÞ¸Ä M
µÚ 3 ÀࣺÒѱ»·ÃÎÊ R£¬Òѱ»ÐÞ¸Ä M
¾¡¹Ü¿´ÆðÀ´ºÃÏñÎÞ·¨ÊµÏÖµÚÒ»ÀàÒ³Ãæ£¬µ«Êǵ±µÚÈýÀàÒ³ÃæµÄ R λ±»Ê±ÖÓÖжÏÇå³ýʱ£¬ËüÃǾͻᷢÉú¡£Ê±ÖÓÖжϲ»»áÇå³ý
M 룬ÒòΪÐèÒªÕâ¸öÐÅÏ¢²ÅÄÜÖªµÀÊÇ·ñд»Ø´ÅÅÌÖС£Çå³ý R µ«²»Çå³ý M »áµ¼Ö³öÏÖÒ»ÀàÒ³Ãæ¡£
NRU(Not Recently Used) Ëã·¨´Ó±àºÅ×îСµÄ·Ç¿ÕÀàÖÐËæ»úɾ³ýÒ»¸öÒ³Ãæ¡£´ËËã·¨Òþº¬µÄ˼ÏëÊÇ£¬ÔÚÒ»¸öʱÖÓÄÚ£¨Ô¼
20 ms£©ÌÔÌÒ»¸öÒÑÐ޸ĵ«ÊÇûÓб»·ÃÎʵÄÒ³ÃæÒª±ÈÒ»¸ö´óÁ¿ÒýÓõÄδÐÞ¸ÄÒ³ÃæºÃ£¬NRU µÄÖ÷ÒªÓŵãÊÇ¡¸Ò×ÓÚÀí½â²¢ÇÒÄܹ»ÓÐЧµÄʵÏÖ¡¹¡£
ÏȽøÏȳöÒ³ÃæÖû»Ëã·¨
ÁíÒ»ÖÖ¿ªÏú½ÏСµÄ·½Ê½ÊÇʹÓà FIFO(First-In,First-Out) Ëã·¨£¬ÕâÖÖÀàÐ͵ÄÊý¾Ý½á¹¹Ò²ÊÊÓÃÔÚÒ³ÃæÖû»Ëã·¨ÖС£ÓɲÙ×÷ϵͳά»¤Ò»¸öËùÓÐÔÚµ±Ç°ÄÚ´æÖеÄÒ³ÃæµÄÁ´±í£¬×îÔç½øÈëµÄ·ÅÔÚ±íÍ·£¬×îнøÈëµÄÒ³Ãæ·ÅÔÚ±íβ¡£ÔÚ·¢ÉúȱҳÒ쳣ʱ£¬»á°ÑÍ·²¿µÄÒ³ÒÆ³ý²¢ÇÒ°ÑеÄÒ³Ìí¼Óµ½±íβ¡£
µÚ¶þ´Î»ú»áÒ³ÃæÖû»Ëã·¨
ÎÒÃÇÉÏÃæÑ§µ½µÄ FIFO Á´±íÒ³ÃæÓиöȱÏÝ£¬ÄǾÍÊdzöÁ´ºÍÈëÁ´²¢²»»á½øÐÐ check ¼ì²é£¬ÕâÑù¾Í»áÈÝÒװѾ³£Ê¹ÓõÄÒ³ÃæÖû»³öÈ¥£¬ÎªÁ˱ÜÃâÕâÒ»ÎÊÌ⣬ÎÒÃǶԸÃËã·¨×öÒ»¸ö¼òµ¥µÄÐ޸ģºÎÒÃǼì²é×îÀÏÒ³ÃæµÄ
R 룬Èç¹ûÊÇ 0 £¬ÄÇôÕâ¸öÒ³Ãæ¾ÍÊÇ×îÀϵĶøÇÒûÓб»Ê¹Óã¬ÄÇôÕâ¸öÒ³Ãæ¾Í»á±»Á¢¿Ì»»³ö¡£Èç¹û R λÊÇ
1£¬ÄÇô¾ÍÇå³ý´Ë룬´ËÒ³Ãæ»á±»·ÅÔÚÁ´±íµÄβ²¿£¬ÐÞ¸ÄËüµÄ×°Èëʱ¼ä¾ÍÏñ¸Õ·Å½øÀ´µÄÒ»Ñù¡£È»ºó¼ÌÐøËÑË÷¡£
ÕâÖÖËã·¨½Ð×ö µÚ¶þ´Î»ú»á(second chance)Ëã·¨£¬¾ÍÏñÏÂÃæÕâÑù£¬ÎÒÃÇ¿´µ½Ò³Ãæ A µ½ H
±£ÁôÔÚÁ´±íÖУ¬²¢°´µ½´ïÄÚ´æµÄʱ¼äÅÅÐò¡£

a£©°´ÕÕÏȽøÏȳöµÄ·½·¨ÅÅÁеÄÒ³Ãæ£»b£©ÔÚʱ¿Ì 20 ´¦·¢ÉúȱҳÒì³£Öжϲ¢ÇÒ A µÄ R λÒѾÉèÖÃʱµÄÒ³ÃæÁ´±í¡£
¼ÙÉèȱҳÒì³£·¢ÉúÔÚʱ¿Ì 20 ´¦£¬Õâʱ×îÀϵÄÒ³ÃæÊÇ A £¬ËüÊÇÔÚ 0 ʱ¿Ìµ½´ïµÄ¡£Èç¹û A µÄ R
λÊÇ 0£¬ÄÇôËü½«±»ÌÔ̳öÄڴ棬»òÕß°ÑËüд»Ø´ÅÅÌ£¨Èç¹ûËüÒѾ±»Ð޸Ĺý£©£¬»òÕßÖ»ÊǼòµ¥µÄ·ÅÆú£¨Èç¹ûËüÊÇδ±»Ð޸Ĺý£©¡£ÁíÒ»·½Ã棬Èç¹ûËüµÄ
R λÒѾÉèÖÃÁË£¬Ôò½« A ·Åµ½Á´±íµÄβ²¿²¢ÇÒÖØÐÂÉèÖÃ×°Èëʱ¼äΪµ±Ç°Ê±¿Ì£¨20 ´¦£©£¬È»ºóÇå³ý R
λ¡£È»ºó´Ó B Ò³Ãæ¿ªÊ¼¼ÌÐøËÑË÷ºÏÊʵÄÒ³Ãæ¡£
ѰÕÒµÚ¶þ´Î»ú»áµÄÊÇÔÚ×î½üµÄʱÖÓ¼ä¸ôÖÐδ±»·ÃÎʹýµÄÒ³Ãæ¡£Èç¹ûËùÓеÄÒ³Ãæ¶¼±»·ÃÎʹý£¬¸ÃËã·¨¾Í»á±»¼ò»¯Îªµ¥´¿µÄ
FIFO Ëã·¨¡£¾ßÌåÀ´Ëµ£¬¼ÙÉèͼ a ÖÐËùÓÐÒ³Ãæ¶¼ÉèÖÃÁË R λ¡£²Ù×÷ϵͳ½«Ò³ÃæÒÀ´ÎÒÆµ½Á´±íĩβ£¬Ã¿´Î¶¼ÔÚÌí¼Óµ½Ä©Î²Ê±Çå³ý
R λ¡£×îºó£¬Ëã·¨ÓÖ»á»Øµ½Ò³Ãæ A£¬´ËʱµÄ R λÒѾ±»Çå³ý£¬ÄÇÃ´Ò³Ãæ A ¾Í»á±»Ö´ÐгöÁ´´¦Àí£¬Òò´ËËã·¨Äܹ»Õý³£½áÊø¡£
ʱÖÓÒ³ÃæÖû»Ëã·¨
Ò»ÖֱȽϺõķ½Ê½ÊǰÑËùÓеÄÒ³Ãæ¶¼±£´æÔÚÒ»¸öÀàËÆÖÓÃæµÄ»·ÐÎÁ´±íÖУ¬Ò»¸ö±íÕëÖ¸Ïò×îÀϵÄÒ³Ãæ¡£ÈçÏÂͼËùʾ

µ±È±Ò³´íÎó³öÏÖʱ£¬Ëã·¨Ê×Ïȼì²é±íÕëÖ¸ÏòµÄÒ³Ãæ£¬Èç¹ûËüµÄ R λÊÇ 0 ¾ÍÌÔ̸ÃÒ³Ãæ£¬²¢°ÑеÄÒ³Ãæ²åÈëµ½Õâ¸öλÖã¬È»ºó°Ñ±íÕëÏòÇ°ÒÆ¶¯Ò»Î»£»Èç¹û
R λÊÇ 1 ¾ÍÇå³ý R λ²¢°Ñ±íÕëÇ°ÒÆÒ»¸öλÖá£Öظ´Õâ¸ö¹ý³ÌÖ±µ½ÕÒµ½ÁËÒ»¸ö R λΪ 0 µÄÒ³ÃæÎ»Öá£Á˽âÕâ¸öËã·¨µÄ¹¤×÷·½Ê½£¬¾ÍÃ÷°×ΪʲôËü±»³ÆÎª
ʱÖÓ(clokc)Ëã·¨ÁË¡£
×î½ü×îÉÙʹÓÃÒ³ÃæÖû»Ëã·¨
ÔÚÇ°Ãæ¼¸ÌõÖ¸ÁîÖÐÆµ·±Ê¹ÓõÄÒ³ÃæºÍ¿ÉÄÜÔÚºóÃæµÄ¼¸ÌõÖ¸ÁîÖб»Ê¹Ó᣷´¹ýÀ´Ëµ£¬ÒѾºÜ¾ÃûÓÐʹÓõÄÒ³ÃæÓпÉÄÜÔÚδÀ´Ò»¶Îʱ¼äÄÚÈÔ²»»á±»Ê¹Óá£Õâ¸ö˼Ïë½ÒʾÁËÒ»¸ö¿ÉÒÔʵÏÖµÄËã·¨£ºÔÚȱҳÖжÏʱ£¬Öû»Î´Ê¹ÓÃʱ¼ä×µÄÒ³Ãæ¡£Õâ¸ö²ßÂÔ³ÆÎª
LRU(Least Recently Used) £¬×î½ü×îÉÙʹÓÃÒ³ÃæÖû»Ëã·¨¡£
ËäÈ» LRU ÔÚÀíÂÛÉÏÊÇ¿ÉÒÔʵÏֵ쬵«ÊÇ´Ó³¤Ô¶¿´À´´ú¼Û±È½Ï¸ß¡£ÎªÁËÍêȫʵÏÖ LRU£¬»áÔÚÄÚ´æÖÐά»¤Ò»¸öËùÓÐÒ³ÃæµÄÁ´±í£¬×îÆµ·±Ê¹ÓõÄҳλÓÚ±íÍ·£¬×î½ü×îÉÙʹÓõÄҳλÓÚ±íβ¡£À§ÄѵÄÊÇÔÚÿ´ÎÄÚ´æÒýÓÃʱ¸üÐÂÕû¸öÁ´±í¡£ÔÚÁ´±íÖÐÕÒµ½Ò»¸öÒ³Ãæ£¬É¾³ýËü£¬È»ºó°ÑËüÒÆ¶¯µ½±íÍ·ÊÇÒ»¸ö·Ç³£ºÄʱµÄ²Ù×÷£¬¼´Ê¹Ê¹ÓÃÓ²¼þÀ´ÊµÏÖÒ²ÊÇÒ»ÑùµÄ·Ñʱ¡£
ÓÃÈí¼þÄ£Äâ LRU
¾¡¹ÜÉÏÃæµÄ LRU Ëã·¨ÔÚÔÔòÉÏÊÇ¿ÉÒÔʵÏֵ쬡¸µ«ÊǺÜÉÙÓлúÆ÷Äܹ»ÓµÓÐÄÇÐ©ÌØÊâµÄÓ²¼þ¡¹¡£ÉÏÃæÊÇÓ²¼þµÄʵÏÖ·½Ê½£¬ÄÇôÏÖÔÚ¿¼ÂÇÒªÓÃÈí¼þÀ´ÊµÏÖ
LRU ¡£Ò»ÖÖ¿ÉÒÔʵÏֵķ½°¸ÊÇ NFU(Not Frequently Used£¬×î²»³£ÓÃ)Ëã·¨¡£ËüÐèÒªÒ»¸öÈí¼þ¼ÆÊýÆ÷À´ºÍÿ¸öÒ³Ãæ¹ØÁª£¬³õʼ»¯µÄʱºòÊÇ
0 ¡£ÔÚÿ¸öʱÖÓÖжÏʱ£¬²Ù×÷ϵͳ»áä¯ÀÀÄÚ´æÖеÄËùÓÐÒ³£¬»á½«Ã¿¸öÒ³ÃæµÄ R 루0 »ò 1£©¼Óµ½ËüµÄ¼ÆÊýÆ÷ÉÏ¡£Õâ¸ö¼ÆÊýÆ÷´óÌåÉϸú×ÙÁ˸÷¸öÒ³Ãæ·ÃÎÊµÄÆµ·±³Ì¶È¡£µ±È±Ò³Òì³£³öÏÖʱ£¬ÔòÖû»¼ÆÊýÆ÷Öµ×îСµÄÒ³Ãæ¡£
Ö»ÐèÒª¶Ô NFU ×öÒ»¸ö¼òµ¥µÄÐ޸ľͿÉÒÔÈÃËüÄ£Äâ LRU£¬Õâ¸öÐÞ¸ÄÓÐÁ½¸ö²½Öè
Ê×ÏÈ£¬ÔÚ R λ±»Ìí¼Ó½øÀ´Ö®Ç°ÏȰѼÆÊýÆ÷ÓÒÒÆÒ»Î»£»
µÚ¶þ²½£¬R λ±»Ìí¼Óµ½×î×ó±ßµÄλ¶ø²»ÊÇ×îÓұߵÄλ¡£
ÐÞ¸ÄÒÔºóµÄËã·¨³ÆÎª ÀÏ»¯(aging) Ëã·¨£¬ÏÂͼ½âÊÍÁËÀÏ»¯Ëã·¨ÊÇÈçºÎ¹¤×÷µÄ¡£

ÎÒÃǼÙÉèÔÚµÚÒ»¸öʱÖÓÖÜÆÚÄÚÒ³Ãæ 0 - 5 µÄ R λÒÀ´ÎÊÇ 1£¬0£¬1£¬0£¬1£¬1£¬£¨Ò²¾ÍÊÇÒ³Ãæ
0 ÊÇ 1£¬Ò³Ãæ 1 ÊÇ 0£¬Ò³Ãæ 2 ÊÇ 1 ÕâÑùÀàÍÆ£©¡£Ò²¾ÍÊÇ˵£¬¡¸ÔÚ 0 ¸öʱÖÓÖÜÆÚµ½ 1 ¸öʱÖÓÖÜÆÚÖ®¼ä£¬0£¬2£¬4£¬5
¶¼±»ÒýÓÃÁË¡¹£¬´Ó¶ø°ÑËüÃÇµÄ R λÉèÖÃΪ 1£¬Ê£ÏµÄÉèÖÃΪ 0 ¡£ÔÚÏà¹ØµÄÁù¸ö¼ÆÊýÆ÷±»ÓÒÒÆÖ®ºó R
λ±»Ìí¼Óµ½ ×ó²à £¬¾ÍÏñÉÏͼÖÐµÄ a¡£Ê£ÏµÄËÄÁÐÏÔʾÁ˽ÓÏÂÀ´µÄËĸöʱÖÓÖÜÆÚÄÚµÄÁù¸ö¼ÆÊýÆ÷±ä»¯¡£
CPUÕýÔÚÒÔij¸öƵÂÊǰ½ø£¬¸ÃƵÂʵÄÖÜÆÚ³ÆÎªÊ±Öӵδð»òʱÖÓÖÜÆÚ¡£Ò»¸ö 100Mhz µÄ´¦ÀíÆ÷ÿÃ뽫½ÓÊÕ100,000,000¸öʱÖӵδð¡£
µ±È±Ò³Òì³£³öÏÖʱ£¬½«Öû»£¨¾ÍÊÇÒÆ³ý£©¼ÆÊýÆ÷Öµ×îСµÄÒ³Ãæ¡£Èç¹ûÒ»¸öÒ³ÃæÔÚÇ°Ãæ 4 ¸öʱÖÓÖÜÆÚÄÚ¶¼Ã»Óб»·ÃÎʹý£¬ÄÇôËüµÄ¼ÆÊýÆ÷Ó¦¸Ã»áÓÐËĸöÁ¬ÐøµÄ
0 £¬Òò´ËËüµÄÖµ¿Ï¶¨Òª±ÈÇ°Ãæ 3 ¸öʱÖÓÖÜÆÚÄÚ¶¼Ã»Óб»·ÃÎʹýµÄÒ³ÃæµÄ¼ÆÊýÆ÷С¡£
Õâ¸öËã·¨Óë LRU Ëã·¨ÓÐÁ½¸öÖØÒªµÄÇø±ð£º¿´Ò»ÏÂÉÏͼÖÐµÄ e£¬µÚÈýÁк͵ÚÎåÁÐ

¹¤×÷¼¯Ê±ÖÓÒ³ÃæÖû»Ëã·¨
µ±È±Ò³Òì³£·¢Éúºó£¬ÐèҪɨÃèÕû¸öÒ³±í²ÅÄÜÈ·¶¨±»ÌÔ̵ÄÒ³Ãæ£¬Òò´Ë»ù±¾¹¤×÷¼¯Ëã·¨»¹ÊDZȽÏÀË·Ñʱ¼äµÄ¡£Ò»¸ö¶Ô»ù±¾¹¤×÷¼¯Ëã·¨µÄÌáÉýÊÇ»ùÓÚʱÖÓËã·¨µ«ÊÇȴʹÓù¤×÷¼¯µÄÐÅÏ¢£¬ÕâÖÖËã·¨³ÆÎªWSClock(¹¤×÷¼¯Ê±ÖÓ)¡£ÓÉÓÚËüµÄʵÏÖ¼òµ¥²¢ÇÒ¾ßÓиßÐÔÄÜ£¬Òò´ËÔÚʵ¼ùÖб»¹ã·ºÓ¦Óá£
ÓëʱÖÓËã·¨Ò»Ñù£¬ËùÐèµÄÊý¾Ý½á¹¹ÊÇÒ»¸öÒÔÒ³¿òÎªÔªËØµÄÑ»·ÁÐ±í£¬¾ÍÏñÏÂÃæÕâÑù

¹¤×÷¼¯Ê±ÖÓÒ³ÃæÖû»Ëã·¨µÄ²Ù×÷£ºa) ºÍ b) ¸ø³ö R = 1 ʱËù·¢ÉúµÄÇéÐΣ»c) ºÍ d) ¸ø³ö
R = 0 µÄÀý×Ó
×î³õµÄʱºò£¬¸Ã±íÊǿյġ£µ±×°ÈëµÚÒ»¸öÒ³Ãæºó£¬°ÑËü¼ÓÔØµ½¸Ã±íÖС£Ëæ×Ÿü¶àµÄÒ³ÃæµÄ¼ÓÈ룬ËüÃÇÐγÉÒ»¸ö»·Ðνṹ¡£Ã¿¸ö±íÏî°üº¬À´×Ô»ù±¾¹¤×÷¼¯Ëã·¨µÄÉÏ´ÎʹÓÃʱ¼ä£¬ÒÔ¼°
R 루ÒѱêÃ÷£©ºÍ M λ£¨Î´±êÃ÷£©¡£
ÓëʱÖÓËã·¨Ò»Ñù£¬ÔÚÿ¸öȱҳÒ쳣ʱ£¬Ê×Ïȼì²éÖ¸ÕëÖ¸ÏòµÄÒ³Ãæ¡£Èç¹û R λ±»ÊÇÉèÖÃΪ 1£¬¸ÃÒ³ÃæÔÚµ±Ç°Ê±ÖÓÖÜÆÚÄھͱ»Ê¹Óùý£¬ÄÇô¸ÃÒ³Ãæ¾Í²»Êʺϱ»ÌÔÌ¡£È»ºó°Ñ¸ÃÒ³ÃæµÄ
R λÖÃΪ 0£¬Ö¸ÕëÖ¸ÏòÏÂÒ»¸öÒ³Ãæ£¬²¢Öظ´¸ÃËã·¨¡£¸ÃʼþÐòÁл¯ºóµÄ״̬²Î¼ûͼ b¡£
ÏÖÔÚ¿¼ÂÇÖ¸ÕëÖ¸ÏòµÄÒ³Ãæ R = 0 ʱ»á·¢Éúʲô£¬²Î¼ûͼ c£¬Èç¹ûÒ³ÃæµÄʹÓÃÆÚÏÞ´óÓÚ t ²¢ÇÒÒ³ÃæÎª±»·ÃÎʹý£¬ÄÇôÕâ¸öÒ³Ãæ¾Í²»»áÔÚ¹¤×÷¼¯ÖУ¬²¢ÇÒÔÚ´ÅÅÌÉÏ»áÓÐÒ»¸ö´ËÒ³ÃæµÄ¸±±¾¡£ÉêÇëÖØÐµ÷ÈëÒ»¸öеÄÒ³Ãæ£¬²¢°ÑеÄÒ³Ãæ·ÅÔÚÆäÖУ¬Èçͼ
d Ëùʾ¡£ÁíÒ»·½Ã棬Èç¹ûÒ³Ãæ±»Ð޸Ĺý£¬¾Í²»ÄÜÖØÐÂÉêÇëÒ³Ãæ£¬ÒòΪÕâ¸öÒ³ÃæÔÚ´ÅÅÌÉÏûÓÐÓÐЧµÄ¸±±¾¡£ÎªÁ˱ÜÃâÓÉÓÚµ÷¶Èд´ÅÅ̲Ù×÷ÒýÆðµÄ½ø³ÌÇл»£¬Ö¸Õë¼ÌÐøÏòǰ×ߣ¬Ëã·¨¼ÌÐø¶ÔÏÂÒ»¸öÒ³Ãæ½øÐвÙ×÷¡£±Ï¾¹£¬ÓпÉÄÜ´æÔÚÒ»¸öÀϵģ¬Ã»Óб»Ð޸ĹýµÄÒ³Ãæ¿ÉÒÔÁ¢¼´Ê¹Óá£
ÔÔòÉÏÀ´Ëµ£¬ËùÓеÄÒ³Ãæ¶¼ÓпÉÄÜÒòΪ´ÅÅÌI/O ÔÚij¸öʱÖÓÖÜÆÚÄÚ±»µ÷¶È¡£ÎªÁ˽µµÍ´ÅÅÌ×èÈû£¬ÐèÒªÉèÖÃÒ»¸öÏÞÖÆ£¬¼´×î´óÖ»ÔÊÐíд»Ø
n ¸öÒ³Ãæ¡£Ò»µ©´ïµ½¸ÃÏÞÖÆ£¬¾Í²»ÔÊÐíµ÷¶ÈеÄд²Ù×÷¡£
ÄÇô¾ÍÓиöÎÊÌ⣬ָÕë»áÈÆÒ»È¦»Øµ½ÔµãµÄ£¬Èç¹û»Øµ½Ôµã£¬ËüµÄÆðʼµã»á·¢Éúʲô£¿ÕâÀïÓÐÁ½ÖÖÇé¿ö£º
ÖÁÉÙµ÷¶ÈÁËÒ»´Îд²Ù×÷
ûÓе÷¶È¹ýд²Ù×÷
ÔÚµÚÒ»ÖÖÇé¿öÖУ¬Ö¸Õë½ö½öÊDz»Í£µÄÒÆ¶¯£¬Ñ°ÕÒÒ»¸öδ±»Ð޸ĹýµÄÒ³Ãæ¡£ÓÉÓÚÒѾµ÷¶ÈÁËÒ»¸ö»òÕß¶à¸öд²Ù×÷£¬×îÖÕ»áÓÐij¸öд²Ù×÷Íê³É£¬ËüµÄÒ³Ãæ»á±»±ê¼ÇΪδÐ޸ġ£Öû»Óöµ½µÄµÚÒ»¸öδ±»Ð޸ĹýµÄÒ³Ãæ£¬Õâ¸öÒ³Ãæ²»Ò»¶¨ÊǵÚÒ»¸ö±»µ÷¶Èд²Ù×÷µÄÒ³Ãæ£¬ÒòΪӲÅÌÇý¶¯³ÌÐòΪÁËÓÅ»¯ÐÔÄÜ¿ÉÄÜ»á°Ñд²Ù×÷ÖØÅÅÐò¡£
¶ÔÓÚµÚ¶þÖÖÇé¿ö£¬ËùÓеÄÒ³Ãæ¶¼ÔÚ¹¤×÷¼¯ÖУ¬·ñÔò½«ÖÁÉÙµ÷¶ÈÁËÒ»¸öд²Ù×÷¡£ÓÉÓÚȱ·¦¶îÍâµÄÐÅÏ¢£¬×î¼òµ¥µÄ·½·¨¾ÍÊÇÖû»Ò»¸öδ±»Ð޸ĵÄÒ³ÃæÀ´Ê¹Óã¬É¨ÃèÖÐÐèÒª¼Ç¼δ±»Ð޸ĵÄÒ³ÃæµÄλÖã¬Èç¹û²»´æÔÚδ±»Ð޸ĵÄÒ³Ãæ£¬¾ÍÑ¡¶¨µ±Ç°Ò³Ãæ²¢°ÑËüд»Ø´ÅÅÌ¡£
Ò³ÃæÖû»Ë㷨С½á
ÎÒÃǵ½ÏÖÔÚÒѾÑо¿Á˸÷ÖÖÒ³ÃæÖû»Ëã·¨£¬ÏÖÔÚÎÒÃÇÀ´Ò»¸ö¼òµ¥µÄ×ܽᣬËã·¨µÄ×ܽá¹éÄÉÈçÏÂ

×îÓÅËã·¨ÔÚµ±Ç°Ò³ÃæÖÐÖû»×îºóÒª·ÃÎʵÄÒ³Ãæ¡£²»ÐÒµÄÊÇ£¬Ã»Óа취À´Åж¨ÄĸöÒ³ÃæÊÇ×îºóÒ»¸öÒª·ÃÎʵģ¬Òò´Ëʵ¼ÊÉϸÃËã·¨²»ÄÜʹÓá£È»¶ø£¬Ëü¿ÉÒÔ×÷ΪºâÁ¿ÆäËûËã·¨µÄ±ê×¼¡£
NRU Ëã·¨¸ù¾Ý R λºÍ M λµÄ״̬½«Ò³Ãæ·ÕΧËÄÀà¡£´Ó±àºÅ×îСµÄÀà±ðÖÐËæ»úÑ¡ÔñÒ»¸öÒ³Ãæ¡£NRU
Ëã·¨Ò×ÓÚʵÏÖ£¬µ«ÊÇÐÔÄܲ»ÊǺܺᣴæÔÚ¸üºÃµÄËã·¨¡£
FIFO »á¸ú×ÙÒ³Ãæ¼ÓÔØ½øÈëÄÚ´æÖеÄ˳Ðò£¬²¢°ÑÒ³Ãæ·ÅÈëÒ»¸öÁ´±íÖС£ÓпÉÄÜɾ³ý´æÔÚʱ¼ä×µ«ÊÇ»¹ÔÚʹÓõÄÒ³Ãæ£¬Òò´ËÕâ¸öËã·¨Ò²²»ÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£
µÚ¶þ´Î»ú»áËã·¨ÊÇ¶Ô FIFO µÄÒ»¸öÐ޸ģ¬Ëü»áÔÚɾ³ýÒ³ÃæÖ®Ç°¼ì²éÕâ¸öÒ³ÃæÊÇ·ñÈÔÔÚʹÓá£Èç¹ûÒ³ÃæÕýÔÚʹÓã¬¾Í»á½øÐб£Áô¡£Õâ¸ö¸Ä½ø´ó´óÌá¸ßÁËÐÔÄÜ¡£
ʱÖÓ Ëã·¨Êǵڶþ´Î»ú»áËã·¨µÄÁíÍâÒ»ÖÖʵÏÖÐÎʽ£¬Ê±ÖÓËã·¨ºÍµÚ¶þ´ÎËã·¨µÄÐÔÄܲ¶à£¬µ«ÊǻỨ·Ñ¸üÉÙµÄʱ¼äÀ´Ö´ÐÐËã·¨¡£
LRU Ëã·¨ÊÇÒ»¸ö·Ç³£ÓÅÐãµÄËã·¨£¬µ«ÊÇûÓÐÌØÊâµÄÓ²¼þ(TLB)ºÜÄÑʵÏÖ¡£Èç¹ûûÓÐÓ²¼þ£¬¾Í²»ÄÜʹÓÃ
LRU Ëã·¨¡£
NFU Ëã·¨ÊÇÒ»ÖÖ½üËÆÓÚ LRU µÄËã·¨£¬ËüµÄÐÔÄܲ»ÊǷdz£ºÃ¡£
ÀÏ»¯ Ëã·¨ÊÇÒ»ÖÖ¸ü½Ó½ü LRU Ëã·¨µÄʵÏÖ£¬²¢ÇÒ¿ÉÒÔ¸üºÃµÄʵÏÖ£¬Òò´ËÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ
×îºóÁ½ÖÖËã·¨¶¼Ê¹ÓÃÁ˹¤×÷¼¯Ëã·¨¡£¹¤×÷¼¯Ëã·¨ÌṩÁ˺ÏÀíµÄÐÔÄÜ¿ªÏú£¬µ«ÊÇËüµÄʵÏֱȽϸ´ÔÓ¡£WSClock
ÊÇÁíÍâÒ»ÖÖ±äÌ壬Ëü²»½öÄܹ»ÌṩÁ¼ºÃµÄÐÔÄÜ£¬¶øÇÒ¿ÉÒÔ¸ßЧµØÊµÏÖ¡£
×ÜÖ®£¬¡¸×îºÃµÄËã·¨ÊÇÀÏ»¯Ëã·¨ºÍWSClockËã·¨¡¹¡£ËûÃÇ·Ö±ðÊÇ»ùÓÚ LRU ºÍ¹¤×÷¼¯Ëã·¨¡£ËûÃǶ¼¾ßÓÐÁ¼ºÃµÄÐÔÄܲ¢ÇÒÄܹ»±»ÓÐЧµÄʵÏÖ¡£»¹´æÔÚÆäËûһЩºÃµÄËã·¨£¬µ«Êµ¼ÊÉÏÕâÁ½¸ö¿ÉÄÜÊÇ×îÖØÒªµÄ¡£
ÏÂÃæÀ´ÁÄÒ»ÁÄÎļþϵͳ£¬ÄãÐèÒªÖªµÀÏÂÃæÕâЩ֪ʶµã

Îļþ
ÎļþÃüÃû
ÎļþÊÇÒ»ÖÖ³éÏó»úÖÆ£¬ËüÌṩÁËÒ»ÖÖ·½Ê½ÓÃÀ´´æ´¢ÐÅÏ¢ÒÔ¼°ÔÚºóÃæ½øÐжÁÈ¡¡£¿ÉÄÜÈκÎÒ»ÖÖ»úÖÆ×îÖØÒªµÄÌØÐÔ¾ÍÊǹÜÀí¶ÔÏóµÄÃüÃû·½Ê½¡£ÔÚ´´½¨Ò»¸öÎļþºó£¬Ëü»á¸øÎļþÒ»¸öÃüÃû¡£µ±½ø³ÌÖÕֹʱ£¬Îļþ»á¼ÌÐø´æÔÚ£¬²¢ÇÒÆäËû½ø³Ì¿ÉÒÔʹÓÃÃû³Æ·ÃÎʸÃÎļþ¡£
ÎļþÃüÃû¹æÔò¶ÔÓÚ²»Í¬µÄ²Ù×÷ϵͳÀ´ËµÊDz»Ò»ÑùµÄ£¬µ«ÊÇËùÓÐÏÖ´ú²Ù×÷ϵͳ¶¼ÔÊÐíʹÓà 1 - 8 ¸ö×ÖĸµÄ×Ö·û´®×÷ΪºÏ·¨ÎļþÃû¡£
ijЩÎļþÇø·Ö´óСд×Öĸ£¬¶ø´ó¶àÊýÔò²»Çø·Ö¡£UNIX ÊôÓÚµÚÒ»ÀࣻÀúÊ·ÓÆ¾ÃµÄ MS-DOS ÊôÓÚµÚ¶þÀࣨ˳±ã˵һ¾ä£¬¾¡¹Ü
MS-DOS ÀúÊ·ÓÆ¾Ã£¬µ« MS-DOS ÈÔÔÚǶÈëʽϵͳÖзdz£¹ã·ºµØÊ¹Óã¬Òò´ËËü¾ø²»ÊǹýʱµÄ£©£»Òò´Ë£¬UNIX
ϵͳ»áÓÐÈýÖÖ²»Í¬µÄÃüÃûÎļþ£ºmaria¡¢Maria¡¢MARIA ¡£ÔÚ MS-DOS £¬ËùÓÐÕâЩÃüÃû¶¼ÊôÓÚÏàͬµÄÎļþ¡£

Ðí¶à²Ù×÷ϵͳ֧³ÖÁ½²¿·ÖµÄÎļþÃû£¬ËüÃÇÖ®¼äÓà . ·Ö¸ô¿ª£¬±ÈÈçÎļþÃû
prog.c¡£ÔµãºóÃæµÄÎļþ³ÆÎª ÎļþÀ©Õ¹Ãû(file extension) £¬ÎļþÀ©Õ¹Ãûͨ³£±íʾÎļþµÄһЩÐÅÏ¢¡£Ò»Ð©³£ÓõÄÎļþÀ©Õ¹ÃûÒÔ¼°º¬ÒåÈçÏÂͼËùʾ

ÔÚ UNIX ϵͳÖУ¬ÎļþÀ©Õ¹ÃûÖ»ÊÇÒ»ÖÖÔ¼¶¨£¬²Ù×÷ϵͳ²¢²»Ç¿ÖƲÉÓá£
Îļþ½á¹¹
ÎļþµÄ¹¹ÔìÓжàÖÖ·½Ê½¡£ÏÂͼÁгöÁ˳£ÓõÄÈýÖÖ¹¹Ô췽ʽ

ÈýÖÖ²»Í¬µÄÎļþ¡£a) ×Ö½ÚÐòÁÐ ¡£b) ¼Ç¼ÐòÁС£c) Ê÷
ÉÏͼÖÐµÄ a ÊÇÒ»ÖÖÎ޽ṹµÄ×Ö½ÚÐòÁУ¬²Ù×÷ϵͳ²»¹ØÐÄÐòÁеÄÄÚÈÝÊÇʲô£¬²Ù×÷ϵͳÄÜ¿´µ½µÄ¾ÍÊÇ×Ö½Ú(bytes)¡£ÆäÎļþÄÚÈݵÄÈκκ¬ÒåÖ»ÔÚÓû§³ÌÐòÖнøÐнâÊÍ¡£UNIX
ºÍ Windows ¶¼²ÉÓÃÕâÖÖ°ì·¨¡£
ͼ b ±íʾÔÚÎļþ½á¹¹ÉϵĵÚÒ»²¿¸Ä½ø¡£ÔÚÕâ¸öÄ£ÐÍÖУ¬ÎļþÊǾßÓй̶¨³¤¶È¼Ç¼µÄÐòÁУ¬Ã¿¸ö¼Ç¼¶¼ÓÐÆäÄÚ²¿½á¹¹¡£°ÑÎļþ×÷Ϊ¼Ç¼ÐòÁеĺËÐÄ˼ÏëÊÇ£º¡¸¶Á²Ù×÷·µ»ØÒ»¸ö¼Ç¼£¬¶øÐ´²Ù×÷ÖØÐ´»òÕß×·¼ÓÒ»¸ö¼Ç¼¡¹¡£µÚÈýÖÖÎļþ½á¹¹ÈçÉÏͼ
c Ëùʾ¡£ÔÚÕâÖÖ×éÖ¯½á¹¹ÖУ¬ÎļþÓÉÒ»¿Å¼Ç¼Ê÷¹¹³É£¬¼Ç¼Ê÷µÄ³¤¶È²»Ò»¶¨Ïàͬ£¬Ã¿¸ö¼Ç¼Ê÷¶¼ÔڼǼÖеĹ̶¨Î»Öðüº¬Ò»¸ökey
×ֶΡ£Õâ¿ÃÊ÷°´ key ½øÐÐÅÅÐò£¬´Ó¶ø¿ÉÒÔ¶ÔÌØ¶¨µÄ key ½øÐпìËÙ²éÕÒ¡£
ÎļþÀàÐÍ
ºÜ¶à²Ù×÷ϵͳ֧³Ö¶àÖÖÎļþÀàÐÍ¡£ÀýÈ磬UNIX£¨Í¬Ñù°üÀ¨ OS X£©ºÍ Windows ¶¼¾ßÓг£¹æµÄÎļþºÍĿ¼¡£³ý´ËÖ®Í⣬UNIX
»¹¾ßÓÐ×Ö·ûÌØÊâÎļþ(character special file) ºÍ ¿éÌØÊâÎļþ(block special
file)¡£³£¹æÎļþ(Regular files) Êǰüº¬ÓÐÓû§ÐÅÏ¢µÄÎļþ¡£Óû§Ò»°ãʹÓõÄÎļþ´ó¶¼Êdz£¹æÎļþ£¬³£¹æÎļþÒ»°ã°üÀ¨
¡¸¿ÉÖ´ÐÐÎļþ¡¢Îı¾Îļþ¡¢Í¼ÏñÎļþ¡¹£¬´Ó³£¹æÎļþ¶ÁÈ¡Êý¾Ý»ò½«Êý¾ÝдÈëʱ£¬Äں˻á¸ù¾ÝÎļþϵͳµÄ¹æÔòÖ´ÐвÙ×÷£¬ÊÇдÈë¿ÉÄܱ»ÑÓ³Ù£¬¼Ç¼ÈÕÖ¾»òÕß½ÓÊÜÆäËû²Ù×÷¡£
Îļþ·ÃÎÊ
ÔçÆÚµÄ²Ù×÷ϵͳֻÓÐÒ»ÖÖ·ÃÎÊ·½Ê½£ºÐòÁзÃÎÊ(sequential access)¡£ÔÚÕâЩϵͳÖУ¬½ø³Ì¿ÉÒÔ°´ÕÕ˳Ðò¶ÁÈ¡ËùÓеÄ×Ö½Ú»òÎļþÖеļǼ£¬µ«ÊDz»ÄÜÌø¹ý²¢ÂÒÐòÖ´ÐÐËüÃÇ¡£Ë³Ðò·ÃÎÊÎļþÊÇ¿ÉÒÔ·µ»Øµ½ÆðµãµÄ£¬ÐèҪʱ¿ÉÒÔ¶à´Î¶ÁÈ¡¸ÃÎļþ¡£µ±´æ´¢½éÖÊÊÇ´Å´ø¶ø²»ÊÇ´ÅÅÌʱ£¬Ë³Ðò·ÃÎÊÎļþºÜ·½±ã¡£
ÔÚʹÓôÅÅÌÀ´´æ´¢Îļþʱ£¬¿ÉÒÔ²»°´ÕÕ˳Ðò¶ÁÈ¡ÎļþÖеÄ×Ö½Ú»òÕ߼Ǽ£¬»òÕß°´Õչؼü×Ö¶ø²»ÊÇλÖÃÀ´·ÃÎʼǼ¡£ÕâÖÖÄܹ»ÒÔÈÎÒâ´ÎÐò½øÐжÁÈ¡µÄ³ÆÎªËæ»ú·ÃÎÊÎļþ(random
access file)¡£Ðí¶àÓ¦ÓóÌÐò¶¼ÐèÒªÕâÖÖ·½Ê½¡£
Ëæ»ú·ÃÎÊÎļþ¶ÔÐí¶àÓ¦ÓóÌÐòÀ´Ëµ¶¼±Ø²»¿ÉÉÙ£¬ÀýÈ磬Êý¾Ý¿âϵͳ¡£Èç¹û³Ë¿Í´òµç»°Ô¤¶¨Ä³º½°à»úƱ£¬¶©Æ±³ÌÐò±ØÐëÄܹ»Ö±½Ó·ÃÎʺ½°à¼Ç¼£¬¶ø²»±ØÏȶÁÈ¡ÆäËûº½°àµÄ³ÉǧÉÏÍòÌõ¼Ç¼¡£
ÓÐÁ½ÖÖ·½·¨¿ÉÒÔָʾ´ÓºÎ´¦¿ªÊ¼¶ÁÈ¡Îļþ¡£µÚÒ»ÖÖ·½·¨ÊÇÖ±½ÓʹÓà read ´ÓÍ·¿ªÊ¼¶ÁÈ¡¡£ÁíÒ»ÖÖÊÇÓÃÒ»¸öÌØÊâµÄ
seek ²Ù×÷ÉèÖõ±Ç°Î»Öã¬ÔÚ seek ²Ù×÷ºó£¬´ÓÕâ¸öµ±Ç°Î»ÖÃ˳ÐòµØ¿ªÊ¼¶ÁÎļþ¡£UNIX ºÍ Windows
ʹÓõÄÊǺóÃæÒ»ÖÖ·½Ê½¡£
ÎļþÊôÐÔ
Îļþ°üÀ¨ÎļþÃûºÍÊý¾Ý¡£³ý´ËÖ®Í⣬ËùÓеIJÙ×÷ϵͳ»¹»á±£´æÆäËûÓëÎļþÏà¹ØµÄÐÅÏ¢£¬ÈçÎļþ´´½¨µÄÈÕÆÚºÍʱ¼ä¡¢Îļþ´óС¡£ÎÒÃÇ¿ÉÒÔ³ÆÕâЩΪÎļþµÄÊôÐÔ(attributes)¡£ÓÐЩÈËҲϲ»¶°ÑËüÃdzÆ×÷
ÔªÊý¾Ý(metadata)¡£ÎļþµÄÊôÐÔÔÚ²»Í¬µÄϵͳÖвî±ðºÜ´ó¡£ÎļþµÄÊôÐÔÖ»ÓÐÁ½ÖÖ״̬£ºÉèÖÃ(set)
ºÍ Çå³ý(clear)¡£
Îļþ²Ù×÷
ʹÓÃÎļþµÄÄ¿µÄÊÇÓÃÀ´´æ´¢ÐÅÏ¢²¢·½±ãÒÔºóµÄ¼ìË÷¡£¶ÔÓÚ´æ´¢ºÍ¼ìË÷£¬²»Í¬µÄϵͳÌṩÁ˲»Í¬µÄ²Ù×÷¡£ÒÔÏÂÊÇÓëÎļþÓйصÄ×î³£ÓõÄһЩϵͳµ÷Óãº
Create£¬´´½¨²»°üº¬ÈκÎÊý¾ÝµÄÎļþ¡£µ÷ÓõÄÄ¿µÄÊDZíʾÎļþ¼´½«½¨Á¢£¬²¢¶ÔÎļþÉèÖÃһЩÊôÐÔ¡£
Delete£¬µ±Îļþ²»ÔÙÐèÒª£¬±ØÐëɾ³ýËüÒÔÊÍ·ÅÄÚ´æ¿Õ¼ä¡£Îª´Ë×Ü»áÓÐÒ»¸öϵͳµ÷ÓÃÀ´É¾³ýÎļþ¡£
Open£¬ÔÚʹÓÃÎļþ֮ǰ£¬±ØÐëÏÈ´ò¿ªÎļþ¡£Õâ¸öµ÷ÓõÄÄ¿µÄÊÇÔÊÐíϵͳ½«ÊôÐԺʹÅÅ̵ØÖ·ÁÐ±í±£´æµ½Ö÷´æÖУ¬ÓÃÀ´ÒÔºóµÄ¿ìËÙ·ÃÎÊ¡£
Close£¬µ±ËùÓнø³ÌÍê³Éʱ£¬ÊôÐԺʹÅÅ̵ØÖ·²»ÔÙÐèÒª£¬Òò´ËÓ¦¹Ø±ÕÎļþÒÔÊͷűí¿Õ¼ä¡£ºÜ¶àϵͳÏÞÖÆ½ø³Ì´ò¿ªÎļþµÄ¸öÊý£¬ÒÔ´Ë´ïµ½¹ÄÀøÓû§¹Ø±Õ²»ÔÙʹÓõÄÎļþ¡£´ÅÅÌÒÔ¿éΪµ¥Î»Ð´È룬¹Ø±ÕÎļþʱ»áÇ¿ÖÆÐ´Èë×îºóÒ»¿é£¬¼´Ê¹Õâ¸ö¿é¿Õ¼äÄÚ²¿»¹²»Âú¡£
Read£¬Êý¾Ý´ÓÎļþÖжÁÈ¡¡£Í¨³£Çé¿öÏ£¬¶ÁÈ¡µÄÊý¾ÝÀ´×ÔÎļþµÄµ±Ç°Î»Öᣵ÷ÓÃÕß±ØÐëÖ¸¶¨ÐèÒª¶ÁÈ¡¶àÉÙÊý¾Ý£¬²¢ÇÒÌṩ´æ·ÅÕâЩÊý¾ÝµÄ»º³åÇø¡£
Write£¬ÏòÎļþдÊý¾Ý£¬Ð´²Ù×÷Ò»°ãÒ²ÊÇ´ÓÎļþµÄµ±Ç°Î»ÖÿªÊ¼½øÐС£Èç¹ûµ±Ç°Î»ÖÃÊÇÎļþµÄĩ⣬Ôò»áÖ±½Ó×·¼Ó½øÐÐдÈë¡£Èç¹ûµ±Ç°Î»ÖÃÔÚÎļþÖУ¬ÔòÏÖÓÐÊý¾Ý±»¸²¸Ç£¬²¢ÇÒÓÀÔ¶Ïûʧ¡£
append£¬Ê¹Óà append Ö»ÄÜÏòÎļþĩβÌí¼ÓÊý¾Ý¡£
seek£¬¶ÔÓÚËæ»ú·ÃÎʵÄÎļþ£¬ÒªÖ¸¶¨´ÓºÎ´¦¿ªÊ¼»ñÈ¡Êý¾Ý¡£Í¨³£µÄ·½·¨ÊÇÓà seek ϵͳµ÷Óðѵ±Ç°Î»ÖÃÖ¸ÕëÖ¸ÏòÎļþÖеÄÌØ¶¨Î»Öá£seek
µ÷ÓýáÊøºó£¬¾Í¿ÉÒÔ´ÓÖ¸¶¨Î»ÖÿªÊ¼¶ÁдÊý¾ÝÁË¡£
get attributes£¬½ø³ÌÔËÐÐʱͨ³£ÐèÒª¶ÁÈ¡ÎļþÊôÐÔ¡£
set attributes£¬Óû§¿ÉÒÔ×Ô¼ºÉèÖÃһЩÎļþÊôÐÔ£¬ÉõÖÁÊÇÔÚÎļþ´´½¨Ö®ºó£¬ÊµÏָù¦ÄܵÄÊÇ set
attributes ϵͳµ÷Óá£
rename£¬Óû§¿ÉÒÔ×Ô¼º¸ü¸ÄÒÑÓÐÎļþµÄÃû×Ö£¬rename ϵͳµ÷ÓÃÓÃÓÚÕâһĿµÄ¡£
Ŀ¼
Îļþϵͳͨ³£ÌṩĿ¼(directories) »òÕß Îļþ¼Ð(folders) ÓÃÓڼǼÎļþµÄλÖã¬ÔںܶàϵͳÖÐĿ¼±¾ÉíÒ²ÊÇÎļþ£¬ÏÂÃæÎÒÃÇ»áÌÖÂÛ¹ØÓÚÎļþ£¬ËûÃǵÄ×éÖ¯ÐÎʽ¡¢ÊôÐԺͿÉÒÔ¶ÔÎļþ½øÐеIJÙ×÷¡£
Ò»¼¶Ä¿Â¼ÏµÍ³
Ŀ¼ϵͳ×î¼òµ¥µÄÐÎʽÊÇÓÐÒ»¸öÄܹ»°üº¬ËùÓÐÎļþµÄĿ¼¡£ÕâÖÖĿ¼±»³ÆÎª¸ùĿ¼(root directory)£¬ÓÉÓÚ¸ùĿ¼µÄΨһÐÔ£¬ËùÒÔÆäÃû³Æ²¢²»ÖØÒª¡£ÔÚ×îÔçÆÚµÄ¸öÈ˼ÆËã»úÖУ¬ÕâÖÖϵͳºÜ³£¼û£¬²¿·ÖÔÒòÊÇÒòΪֻÓÐÒ»¸öÓû§¡£ÏÂÃæÊÇÒ»¸öµ¥²ãĿ¼ϵͳµÄÀý×Ó

¸ÃĿ¼ÖÐÓÐËĸöÎļþ¡£ÕâÖÖÉè¼ÆµÄÓŵãÔÚÓÚ¼òµ¥£¬²¢ÇÒÄܹ»¿ìËÙ¶¨Î»Îļþ£¬±Ï¾¹Ö»ÓÐÒ»¸öµØ·½¿ÉÒÔ¼ìË÷¡£ÕâÖÖĿ¼×éÖ¯ÐÎʽÏÖÔÚÒ»°ãÓÃÓÚ¼òµ¥µÄǶÈëʽÉ豸£¨ÈçÊýÂëÏà»úºÍijЩ±ãЯʽÒôÀÖ²¥·ÅÆ÷£©ÉÏʹÓá£
²ã´ÎĿ¼ϵͳ
¶ÔÓÚ¼òµ¥µÄÓ¦ÓöøÑÔ£¬Ò»°ã¶¼Óõ¥²ãĿ¼·½Ê½£¬µ«ÊÇÕâÖÖ×éÖ¯ÐÎʽ²¢²»ÊʺÏÓÚÏÖ´ú¼ÆËã»ú£¬ÒòΪÏÖ´ú¼ÆËã»úº¬ÓгÉǧÉÏÍò¸öÎļþºÍÎļþ¼Ð¡£Èç¹û¶¼·ÅÔÚ¸ùĿ¼Ï£¬²éÕÒÆðÀ´»á·Ç³£À§ÄÑ¡£ÎªÁ˽â¾öÕâÒ»ÎÊÌ⣬³öÏÖÁ˲ã´ÎĿ¼ϵͳ(Hierarchical
Directory Systems)£¬Ò²³ÆÎªÄ¿Â¼Ê÷¡£Í¨¹ýÕâÖÖ·½Ê½£¬¿ÉÒÔÓúܶàĿ¼°ÑÎļþ½øÐзÖ×é¡£½ø¶ø£¬Èç¹û¶à¸öÓû§¹²Ïíͬһ¸öÎļþ·þÎñÆ÷£¬±ÈÈ繫˾µÄÍøÂçϵͳ£¬Ã¿¸öÓû§¿ÉÒÔΪ×Ô¼ºµÄĿ¼Ê÷ÓµÓÐ×Ô¼ºµÄ˽È˸ùĿ¼¡£ÕâÖÖ·½Ê½µÄ×éÖ¯½á¹¹ÈçÏÂ

¸ùĿ¼º¬ÓÐĿ¼ A¡¢B ºÍ C £¬·Ö±ðÊôÓÚ²»Í¬µÄÓû§£¬ÆäÖÐÁ½¸öÓû§¸ö×Ö´´½¨ÁË×ÓĿ¼¡£Óû§¿ÉÒÔ´´½¨ÈÎÒâÊýÁ¿µÄ×ÓĿ¼£¬ÏÖ´úÎļþϵͳ¶¼Êǰ´ÕÕÕâÖÖ·½Ê½×éÖ¯µÄ¡£
·¾¶Ãû
µ±Ä¿Â¼Ê÷×éÖ¯Îļþϵͳʱ£¬ÐèÒªÓÐijÖÖ·½·¨Ö¸Ã÷ÎļþÃû¡£³£Óõķ½·¨ÓÐÁ½ÖÖ£¬µÚÒ»ÖÖ·½Ê½ÊÇÿ¸öÎļþ¶¼»áÓÃÒ»¸ö¾ø¶Ô·¾¶Ãû(absolute
path name)£¬ËüÓɸùĿ¼µ½ÎļþµÄ·¾¶×é³É¡£
ÁíÍâÒ»ÖÖÖ¸¶¨ÎļþÃûµÄ·½·¨ÊÇ Ïà¶Ô·¾¶Ãû(relative path name)¡£Ëü³£³£ºÍ ¹¤×÷Ŀ¼(working
directory) £¨Ò²³Æ×÷ µ±Ç°Ä¿Â¼(current directory)£©Ò»ÆðʹÓá£Óû§¿ÉÒÔÖ¸¶¨Ò»¸öĿ¼×÷Ϊµ±Ç°¹¤×÷Ŀ¼¡£ÀýÈ磬Èç¹ûµ±Ç°Ä¿Â¼ÊÇ
/usr/ast£¬ÄÇô¾ø¶Ô·¾¶ /usr/ast/mailbox¿ÉÒÔÖ±½ÓʹÓà mailbox À´ÒýÓá£
Ŀ¼²Ù×÷
²»Í¬ÎļþÖйÜÀíĿ¼µÄϵͳµ÷ÓõIJî±ð±È¹ÜÀíÎļþµÄϵͳµ÷Óòî±ð´ó¡£ÎªÁËÁ˽âÕâЩϵͳµ÷ÓÃÓÐÄÄЩÒÔ¼°ËüÃÇÔõÑù¹¤×÷£¬ÏÂÃæ¸ø³öÒ»¸öÀý×Ó£¨È¡×Ô
UNIX£©¡£
Create£¬´´½¨Ä¿Â¼£¬³ýÁËĿ¼Ïî . ºÍ .. Í⣬Ŀ¼ÄÚÈÝΪ¿Õ¡£
Delete£¬É¾³ýĿ¼£¬Ö»ÓпÕĿ¼¿ÉÒÔɾ³ý¡£Ö»°üº¬ . ºÍ .. µÄĿ¼±»ÈÏΪÊÇ¿ÕĿ¼£¬ÕâÁ½¸öĿ¼Ïîͨ³£²»ÄÜɾ³ý
opendir£¬Ä¿Â¼ÄÚÈݿɱ»¶ÁÈ¡¡£ÀýÈ磬δÁгöĿ¼ÖеÄÈ«²¿Îļþ£¬³ÌÐò±ØÐëÏÈ´ò¿ª¸ÃĿ¼£¬È»ºó¶ÁÆäÖÐÈ«²¿ÎļþµÄÎļþÃû¡£Óë´ò¿ªºÍ¶ÁÎļþÏàͬ£¬ÔÚ¶ÁĿ¼ǰ£¬±ØÐëÏÈ´ò¿ªÎļþ¡£
closedir£¬¶ÁĿ¼½áÊøºó£¬Ó¦¸Ã¹Ø±ÕĿ¼ÓÃÓÚÊÍ·ÅÄÚ²¿±í¿Õ¼ä¡£
readdir£¬ÏµÍ³µ÷Óà readdir ·µ»Ø´ò¿ªÄ¿Â¼µÄÏÂÒ»¸öĿ¼Ïî¡£ÒÔǰҲ²ÉÓà read ϵͳµ÷ÓÃÀ´¶ÁȡĿ¼£¬µ«ÊÇÕâÖÖ·½·¨ÓÐÒ»¸öȱµã£º³ÌÐòÔ±±ØÐëÁ˽âºÍ´¦ÀíĿ¼µÄÄÚ²¿½á¹¹¡£Ïà·´£¬²»ÂÛ²ÉÓÃÄÄÒ»ÖÖĿ¼½á¹¹£¬readdir
×ÜÊÇÒÔ±ê×¼¸ñʽ·µ»ØÒ»¸öĿ¼Ïî¡£
rename£¬ÔÚºÜ¶à·½ÃæÄ¿Â¼ºÍÎļþ¶¼ÏàËÆ¡£Îļþ¿ÉÒÔ¸ü»»Ãû³Æ£¬Ä¿Â¼Ò²¿ÉÒÔ¡£
link£¬Á´½Ó¼¼ÊõÔÊÐíÔÚ¶à¸öĿ¼ÖгöÏÖͬһ¸öÎļþ¡£Õâ¸öϵͳµ÷ÓÃÖ¸¶¨Ò»¸ö´æÔÚµÄÎļþºÍÒ»¸ö·¾¶Ãû£¬²¢½¨Á¢´Ó¸ÃÎļþµ½Â·¾¶ËùÖ¸Ãû×ÖµÄÁ´½Ó¡£ÕâÑù£¬¿ÉÒÔÔÚ¶à¸öĿ¼ÖгöÏÖͬһ¸öÎļþ¡£ÓÐʱҲ±»³ÆÎªÓ²Á´½Ó(hard
link)¡£
unlink£¬É¾³ýĿ¼Ïî¡£Èç¹û±»½â³ýÁ´½ÓµÄÎļþÖ»³öÏÖÔÚÒ»¸öĿ¼ÖУ¬Ôò½«Ëü´ÓÎļþÖÐɾ³ý¡£Èç¹ûËü³öÏÖÔÚ¶à¸öĿ¼ÖУ¬Ôòֻɾ³ýÖ¸¶¨Â·¾¶ÃûµÄÁ´½Ó£¬ÒÀÈ»±£ÁôÆäËû·¾¶ÃûµÄÁ´½Ó¡£ÔÚ
UNIX ÖУ¬ÓÃÓÚɾ³ýÎļþµÄϵͳµ÷ÓþÍÊÇ unlink¡£
ÎļþϵͳµÄʵÏÖ
Îļþϵͳ²¼¾Ö
Îļþϵͳ´æ´¢ÔÚ´ÅÅÌÖС£´ó²¿·ÖµÄ´ÅÅÌÄܹ»»®·Ö³öÒ»µ½¶à¸ö·ÖÇø£¬½Ð×ö´ÅÅÌ·ÖÇø(disk partitioning)
»òÕßÊÇ´ÅÅÌ·ÖÆ¬(disk slicing)¡£Ã¿¸ö·ÖÇø¶¼ÓжÀÁ¢µÄÎļþϵͳ£¬Ã¿¿é·ÖÇøµÄÎļþϵͳ¿ÉÒÔ²»Í¬¡£´ÅÅ̵Ä
0 ºÅ·ÖÇø³ÆÎª Ö÷Òýµ¼¼Ç¼(Master Boot Record, MBR)£¬ÓÃÀ´Òýµ¼(boot)
¼ÆËã»ú¡£ÔÚ MBR µÄ½áβÊÇ·ÖÇø±í(partition table)¡£Ã¿¸ö·ÖÇø±í¸ø³öÿ¸ö·ÖÇøÓÉ¿ªÊ¼µ½½áÊøµÄµØÖ·¡£
µ±¼ÆËã»ú¿ªÊ¼Òý boot ʱ£¬BIOS ¶ÁÈë²¢Ö´ÐÐ MBR¡£
Òýµ¼¿é
MBR ×öµÄµÚÒ»¼þʾÍÊÇÈ·¶¨»î¶¯·ÖÇø£¬¶ÁÈëËüµÄµÚÒ»¸ö¿é£¬³ÆÎªÒýµ¼¿é(boot block) ²¢Ö´ÐС£Òýµ¼¿éÖеijÌÐò½«¼ÓÔØ·ÖÇøÖеIJÙ×÷ϵͳ¡£ÎªÁËÒ»ÖÂÐÔ£¬Ã¿¸ö·ÖÇø¶¼»á´ÓÒýµ¼¿é¿ªÊ¼£¬¼´Ê¹Òýµ¼¿é²»°üº¬²Ù×÷ϵͳ¡£Òýµ¼¿éÕ¼¾ÝÎļþϵͳµÄǰ
4096 ¸ö×Ö½Ú£¬´Ó´ÅÅÌÉϵÄ×Ö½ÚÆ«ÒÆÁ¿ 0 ¿ªÊ¼¡£Òýµ¼¿é¿ÉÓÃÓÚÆô¶¯²Ù×÷ϵͳ¡£
³ýÁË´ÓÒýµ¼¿é¿ªÊ¼Ö®Í⣬´ÅÅÌ·ÖÇøµÄ²¼¾ÖÊÇËæ×ÅÎļþϵͳµÄ²»Í¬¶ø±ä»¯µÄ¡£Í¨³£Îļþϵͳ»á°üº¬Ò»Ð©ÊôÐÔ£¬ÈçÏÂ

³¬¼¶¿é
½ô¸úÔÚÒýµ¼¿éºóÃæµÄÊÇ ³¬¼¶¿é(Superblock)£¬³¬¼¶¿é µÄ´óСΪ 4096 ×Ö½Ú£¬´Ó´ÅÅÌÉϵÄ×Ö½ÚÆ«ÒÆ
4096 ¿ªÊ¼¡£³¬¼¶¿é°üº¬ÎļþϵͳµÄËùÓйؼü²ÎÊý
ÎļþϵͳµÄ´óС
ÎļþϵͳÖеÄÊý¾Ý¿éÊý
ָʾÎļþϵͳ״̬µÄ±êÖ¾
·ÖÅä×é´óС
ÔÚ¼ÆËã»úÆô¶¯»òÕßÎļþϵͳÊ×´ÎʹÓÃʱ£¬³¬¼¶¿é»á±»¶ÁÈëÄÚ´æ¡£
¿ÕÏпռä¿é
½Ó×ÅÊÇÎļþϵͳÖпÕÏпéµÄÐÅÏ¢£¬ÀýÈ磬¿ÉÒÔÓÃλͼ»òÕßÖ¸ÕëÁбíµÄÐÎʽ¸ø³ö¡£
¡¸BitMap λͼ»òÕß Bit vector λÏòÁ¿¡¹
λͼ»òλÏòÁ¿ÊÇһϵÁÐλ»òλµÄ¼¯ºÏ£¬ÆäÖÐÿ¸öλ¶ÔÓ¦Ò»¸ö´ÅÅ̿飬¸Ãλ¿ÉÒÔ²ÉÓÃÁ½¸öÖµ£º0ºÍ1£¬0±íʾÒÑ·ÖÅä¸Ã¿é£¬¶ø1±íʾһ¸ö¿ÕÏп顣ÏÂͼÖеĴÅÅÌÉϸø¶¨µÄ´ÅÅÌ¿éʵÀý£¨·ÖÅäÁËÂÌÉ«¿é£©¿ÉÒÔÓÃ16λµÄλͼ±íʾΪ£º0000111000000110¡£

¡¸Ê¹ÓÃÁ´±í½øÐйÜÀí¡¹
ÔÚÕâÖÖ·½·¨ÖУ¬¿ÕÏдÅÅÌ¿éÁ´½ÓÔÚÒ»Æð£¬¼´Ò»¸ö¿ÕÏпé°üº¬Ö¸ÏòÏÂÒ»¸ö¿ÕÏпéµÄÖ¸Õë¡£µÚÒ»¸ö´ÅÅÌ¿éµÄ¿éºÅ´æ´¢ÔÚ´ÅÅÌÉϵĵ¥¶ÀλÖã¬Ò²»º´æÔÚÄÚ´æÖС£

Ë鯬
ÕâÀï²»µÃ²»ÌáÒ»¸ö½Ð×öË鯬(fragment)µÄ¸ÅÄҲ³ÆÎªÆ¬¶Î¡£Ò»°ãÁãÉ¢µÄµ¥¸öÊý¾Ýͨ³£³ÆÎªÆ¬¶Î¡£´ÅÅÌ¿é¿ÉÒÔ½øÒ»²½·ÖΪ¹Ì¶¨´óСµÄ·ÖÅäµ¥Ôª£¬Æ¬¶ÎÖ»ÊÇÔÚÇý¶¯Æ÷Éϱ˴˲»ÏàÁÚµÄÎļþƬ¶Î¡£
inode
È»ºóÔÚºóÃæÊÇÒ»¸ö inode(index node)£¬Ò²³Æ×÷Ë÷Òý½Úµã¡£ËüÊÇÒ»¸öÊý×éµÄ½á¹¹£¬Ã¿¸öÎļþÓÐÒ»¸ö
inode£¬inode ·Ç³£ÖØÒª£¬Ëü˵Ã÷ÁËÎļþµÄ·½·½ÃæÃ档ÿ¸öË÷Òý½Úµã¶¼´æ´¢¶ÔÏóÊý¾ÝµÄÊôÐԺʹÅÅÌ¿éλÖÃ
ÓÐÒ»ÖÖ¼òµ¥µÄ·½·¨¿ÉÒÔÕÒµ½ËüÃÇ ls -lai ÃüÁî¡£ÈÃÎÒÃÇ¿´Ò»Ï¸ùÎļþϵͳ£º

inode ½ÚµãÖ÷Òª°üÀ¨ÁËÒÔÏÂÐÅÏ¢
ģʽ/ȨÏÞ£¨±£»¤£©
ËùÓÐÕß ID
×é ID
Îļþ´óС
ÎļþµÄÓ²Á´½ÓÊý
ÉϴηÃÎÊʱ¼ä
×îºóÐÞ¸Äʱ¼ä
inode ÉÏ´ÎÐÞ¸Äʱ¼ä
Îļþ·ÖΪÁ½²¿·Ö£¬Ë÷Òý½ÚµãºÍ¿é¡£Ò»µ©´´½¨ºó£¬Ã¿ÖÖÀàÐ͵ĿéÊýÊǹ̶¨µÄ¡£Äã²»ÄÜÔö¼Ó·ÖÇøÉÏ inode µÄÊýÁ¿£¬Ò²²»ÄÜÔö¼Ó´ÅÅÌ¿éµÄÊýÁ¿¡£
½ô¸úÔÚ inode ºóÃæµÄÊǸùĿ¼£¬Ëü´æ·ÅµÄÊÇÎļþϵͳĿ¼Ê÷µÄ¸ù²¿¡£×îºó£¬´ÅÅÌµÄÆäËû²¿·Ö´æ·ÅÁËÆäËûËùÓеÄĿ¼ºÍÎļþ¡£
ÎļþµÄʵÏÖ
×îÖØÒªµÄÎÊÌâÊǼǼ¸÷¸öÎļþ·Ö±ðÓõ½ÁËÄÄЩ´ÅÅ̿顣²»Í¬µÄϵͳ²ÉÓÃÁ˲»Í¬µÄ·½·¨¡£ÏÂÃæÎÒÃÇ»á̽ÌÖÒ»ÏÂÕâЩ·½Ê½¡£·ÖÅä±³ºóµÄÖ÷Ҫ˼ÏëÊÇÓÐЧÀûÓÃÎļþ¿Õ¼äºÍ¿ìËÙ·ÃÎÊÎļþ
£¬Ö÷ÒªÓÐÈýÖÖ·ÖÅä·½°¸
Á¬Ðø·ÖÅä
Á´±í·ÖÅä
Ë÷Òý·ÖÅä
Á¬Ðø·ÖÅä
×î¼òµ¥µÄ·ÖÅä·½°¸ÊǰÑÿ¸öÎļþ×÷ΪһÁ¬´®Á¬ÐøÊý¾Ý¿é´æ´¢ÔÚ´ÅÅÌÉÏ¡£Òò´Ë£¬ÔÚ¾ßÓÐ 1KB ¿éµÄ´ÅÅÌÉÏ£¬½«Îª
50 KB Îļþ·ÖÅä 50 ¸öÁ¬Ðø¿é¡£

ÉÏÃæÕ¹Ê¾ÁË 40 ¸öÁ¬ÐøµÄÄÚ´æ¿é¡£´Ó×î×ó²àµÄ 0 ¿é¿ªÊ¼¡£³õʼ״̬Ï£¬»¹Ã»ÓÐ×°ÔØÎļþ£¬Òò´Ë´ÅÅÌÊǿյġ£½Ó×Å£¬´Ó´ÅÅÌ¿ªÊ¼´¦£¨¿é
0 £©´¦¿ªÊ¼Ð´ÈëÕ¼Óà 4 ¿é³¤¶ÈµÄÄÚ´æ A ¡£È»ºóÊÇÒ»¸öÕ¼Óà 6 ¿é³¤¶ÈµÄÄÚ´æ B£¬»áÖ±½ÓÔÚ A µÄĩβ¿ªÊ¼Ð´¡£
×¢Òâÿ¸öÎļþ¶¼»áÔÚеÄÎļþ¿é¿ªÊ¼Ð´£¬ËùÒÔÈç¹ûÎļþ A Ö»Õ¼ÓÃÁË 3 ÓÖ 1/2 ¸ö¿é£¬ÄÇô×îºóÒ»¸ö¿éµÄ²¿·ÖÄÚ´æ»á±»ÀË·Ñ¡£ÔÚÉÏÃæÕâ·ùͼÖУ¬×ܹ²Õ¹Ê¾ÁË
7 ¸öÎļþ£¬Ã¿¸öÎļþ¶¼»á´ÓÉϸöÎļþµÄĩβ¿é¿ªÊ¼Ð´ÐµÄÎļþ¿é¡£
Á¬ÐøµÄ´ÅÅ̿ռä·ÖÅäÓÐÁ½¸öÓŵ㡣
µÚÒ»£¬Á¬ÐøÎļþ´æ´¢ÊµÏÖÆðÀ´±È½Ï¼òµ¥£¬Ö»ÐèÒª¼ÇסÁ½¸öÊý×־ͿÉÒÔ£ºÒ»¸öÊǵÚÒ»¸ö¿éµÄÎļþµØÖ·ºÍÎļþµÄ¿éÊýÁ¿¡£¸ø¶¨µÚÒ»¸ö¿éµÄ±àºÅ£¬¿ÉÒÔͨ¹ý¼òµ¥µÄ¼Ó·¨ÕÒµ½ÈÎºÎÆäËû¿éµÄ±àºÅ¡£
µÚ¶þµãÊǶÁÈ¡ÐÔÄܱȽÏÇ¿£¬¿ÉÒÔͨ¹ýÒ»´Î²Ù×÷´ÓÎļþÖжÁÈ¡Õû¸öÎļþ¡£Ö»ÐèÒªÒ»´ÎѰÕÒµÚÒ»¸ö¿é¡£ºóÃæ¾Í²»ÔÙÐèҪѰµÀʱ¼äºÍÐýתÑÓ³Ù£¬ËùÒÔÊý¾Ý»áÒÔÈ«´ø¿í½øÈë´ÅÅÌ¡£
Òò´Ë£¬Á¬ÐøµÄ¿Õ¼ä·ÖÅä¾ßÓÐʵÏÖ¼òµ¥¡¢¸ßÐÔÄܵÄÌØµã¡£
²»ÐÒµÄÊÇ£¬Á¬Ðø¿Õ¼ä·ÖÅäÒ²ÓкÜÃ÷ÏԵIJ»×ã¡£Ëæ×Åʱ¼äµÄÍÆÒÆ£¬´ÅÅÌ»á±äµÃºÜÁãËé¡£ÏÂͼ½âÊÍÁËÕâÖÖÏÖÏó

ÕâÀïÓÐÁ½¸öÎļþ D ºÍ F ±»É¾³ýÁË¡£µ±É¾³ýÒ»¸öÎļþʱ£¬´ËÎļþËùÕ¼ÓõĿéÒ²ËæÖ®ÊÍ·Å£¬¾Í»áÔÚ´ÅÅ̿ռäÖÐÁôÏÂһЩ¿ÕÏп顣´ÅÅ̲¢²»»áÔÚÕâ¸öλÖü·Ñ¹µô¿ÕÏп飬ÒòΪÕâ»á¸´ÖÆ¿ÕÏпéÖ®ºóµÄËùÓÐÎļþ£¬¿ÉÄÜ»áÓÐÉϰÙÍòµÄ¿é£¬Õâ¸öÁ¿¼¶¾ÍÌ«´óÁË¡£
Á´±í·ÖÅä
µÚ¶þÖÖ´æ´¢ÎļþµÄ·½Ê½ÊÇΪÿ¸öÎļþ¹¹Ôì´ÅÅÌ¿éÁ´±í£¬Ã¿¸öÎļþ¶¼ÊÇ´ÅÅÌ¿éµÄÁ´½ÓÁÐ±í£¬¾ÍÏñÏÂÃæËùʾ

ÿ¸ö¿éµÄµÚÒ»¸ö×Ö×÷ΪָÏòÏÂÒ»¿éµÄÖ¸Õ룬¿éµÄÆäËû²¿·Ö´æ·ÅÊý¾Ý¡£Èç¹ûÉÏÃæÕâÕÅͼÄã¿´µÄ²»ÊǺÜÇå³þµÄ»°£¬¿ÉÒÔ¿´¿´Õû¸öµÄÁ´±í·ÖÅä·½°¸

ÓëÁ¬Ðø·ÖÅä·½°¸²»Í¬£¬ÕâÒ»·½·¨¿ÉÒÔ³ä·ÖÀûÓÃÿ¸ö´ÅÅ̿顣³ýÁË×îºóÒ»¸ö´ÅÅÌ¿éÍ⣬²»»áÒòΪ´ÅÅÌË鯬¶øÀË·Ñ´æ´¢¿Õ¼ä¡£Í¬Ñù£¬ÔÚĿ¼ÏîÖУ¬Ö»Òª´æ´¢Á˵ÚÒ»¸öÎļþ¿é£¬ÄÇôÆäËûÎļþ¿éÒ²Äܹ»±»ÕÒµ½¡£
ÁíÒ»·½Ã棬ÔÚÁ´±íµÄ·ÖÅä·½°¸ÖУ¬¾¡¹Ü˳Ðò¶ÁÈ¡·Ç³£·½±ã£¬µ«ÊÇËæ»ú·ÃÎÊÈ´ºÜÀ§ÄÑ£¨ÕâÒ²ÊÇÊý×éºÍÁ´±íÊý¾Ý½á¹¹µÄÒ»´óÇø±ð£©¡£
»¹ÓÐÒ»¸öÎÊÌâÊÇ£¬ÓÉÓÚÖ¸Õë»áÕ¼ÓÃһЩ×Ö½Ú£¬Ã¿¸ö´ÅÅÌ¿éʵ¼Ê´æ´¢Êý¾ÝµÄ×Ö½ÚÊý²¢²»ÔÙÊÇ 2 µÄÕûÊý´ÎÃÝ¡£ËäÈ»Õâ¸öÎÊÌâ²¢²»»áºÜÑÏÖØ£¬µ«ÊÇÕâÖÖ·½Ê½½µµÍÁ˳ÌÐòÔËÐÐЧÂÊ¡£Ðí¶à³ÌÐò¶¼ÊÇÒÔ³¤¶ÈΪ
2 µÄÕûÊý´ÎÃÝÀ´¶Áд´ÅÅÌ£¬ÓÉÓÚÿ¸ö¿éµÄǰ¼¸¸ö×Ö½Ú±»Ö¸ÕëËùʹÓã¬ËùÒÔÒª¶Á³öÒ»¸öÍê³ÉµÄ¿é´óСÐÅÏ¢£¬¾ÍÐèÒªµ±Ç°¿éµÄÐÅÏ¢ºÍÏÂÒ»¿éµÄÐÅϢƴ´Õ¶ø³É£¬Òò´Ë¾ÍÒý·¢Á˲éÕÒºÍÆ´½ÓµÄ¿ªÏú¡£
ʹÓÃÄÚ´æ±í½øÐÐÁ´±í·ÖÅä
ÓÉÓÚÁ¬Ðø·ÖÅäºÍÁ´±í·ÖÅä¶¼ÓÐÆä²»¿ÉºöÊÓµÄȱµã¡£ËùÒÔÌá³öÁËʹÓÃÄÚ´æÖеıíÀ´½â¾ö·ÖÅäÎÊÌ⡣ȡ³öÿ¸ö´ÅÅÌ¿éµÄÖ¸Õë×Ö£¬°ÑËüÃÇ·ÅÔÚÄÚ´æµÄÒ»¸ö±íÖУ¬¾Í¿ÉÒÔ½â¾öÉÏÊöÁ´±íµÄÁ½¸ö²»×ãÖ®´¦¡£ÏÂÃæÊÇÒ»¸öÀý×Ó

ÉÏͼ±íʾÁËÁ´±íÐγɵĴÅÅÌ¿éµÄÄÚÈÝ¡£ÕâÁ½¸öͼÖж¼ÓÐÁ½¸öÎļþ£¬Îļþ A ÒÀ´ÎʹÓÃÁË´ÅÅÌ¿éµØÖ· ¡¸4¡¢7¡¢
2¡¢ 10¡¢ 12¡¹£¬Îļþ B ʹÓÃÁË¡¸6¡¢3¡¢11 ºÍ 14¡¹¡£Ò²¾ÍÊÇ˵£¬Îļþ A ´ÓµØÖ· 4 ´¦¿ªÊ¼£¬Ë³×ÅÁ´±í×ß¾ÍÄÜÕÒµ½Îļþ
A µÄÈ«²¿´ÅÅ̿顣ͬÑù£¬´ÓµÚ 6 ¿é¿ªÊ¼£¬Ë³×ÅÁ´×ßµ½×îºó£¬Ò²Äܹ»ÕÒµ½Îļþ B µÄÈ«²¿´ÅÅ̿顣Äã»á·¢ÏÖ£¬ÕâÁ½¸öÁ´±í¶¼ÒÔ²»ÊôÓÚÓÐЧ´ÅÅ̱àºÅµÄÌØÊâ±ê¼Ç£¨-1£©½áÊø¡£ÄÚ´æÖеÄÕâÖÖ±í¸ñ³ÆÎª
Îļþ·ÖÅä±í(File Application Table,FAT)¡£
Ŀ¼µÄʵÏÖ
ÎļþÖ»Óдò¿ªºó²ÅÄܹ»±»¶ÁÈ¡¡£ÔÚÎļþ´ò¿ªºó£¬²Ù×÷ϵͳ»áʹÓÃÓû§ÌṩµÄ·¾¶ÃûÀ´¶¨Î»´ÅÅÌÖеÄĿ¼¡£Ä¿Â¼ÏîÌṩÁ˲éÕÒÎļþ´ÅÅÌ¿éËùÐèÒªµÄÐÅÏ¢¡£¸ù¾ÝϵͳµÄ²»Í¬£¬ÌṩµÄÐÅÏ¢Ò²²»Í¬£¬¿ÉÄÜÌṩµÄÐÅÏ¢ÊÇÕû¸öÎļþµÄ´ÅÅ̵ØÖ·£¬»òÕßÊǵÚÒ»¸ö¿éµÄÊýÁ¿£¨Á½¸öÁ´±í·½°¸£©»ò
inodeµÄÊýÁ¿¡£²»¹ý²»¹ÜÓÃÄÇÖÖÇé¿ö£¬Ä¿Â¼ÏµÍ³µÄÖ÷Òª¹¦ÄܾÍÊÇ ¡¸½«ÎļþµÄ ASCII ÂëµÄÃû³ÆÓ³Éäµ½¶¨Î»Êý¾ÝËùÐèµÄÐÅÏ¢ÉÏ¡¹¡£
¹²ÏíÎļþ
µ±¶à¸öÓû§ÔÚͬһ¸öÏîÄ¿Öй¤×÷ʱ£¬ËûÃÇͨ³£ÐèÒª¹²ÏíÎļþ¡£Èç¹ûÕâ¸ö¹²ÏíÎļþͬʱ³öÏÖÔÚ¶à¸öÓû§Ä¿Â¼Ï£¬ÄÇôËûÃÇÐͬ¹¤×÷ÆðÀ´¾ÍºÜ·½±ã¡£ÏÂÃæµÄÕâÕÅͼÎÒÃÇÔÚÉÏÃæÌáµ½¹ý£¬µ«ÊÇÓÐÒ»¸ö¸ü¸ÄµÄµØ·½£¬¾ÍÊÇ
¡¸C µÄÒ»¸öÎļþÒ²³öÏÖÔÚÁË B µÄĿ¼Ï¡¹¡£

Èç¹û°´ÕÕÈçÉÏͼµÄÕâÖÖ×éÖ¯·½Ê½¶øÑÔ£¬ÄÇô B µÄĿ¼Óë¸Ã¹²ÏíÎļþµÄÁªÏµ³ÆÎª Á´½Ó(link)¡£ÄÇôÎļþϵͳÏÖÔÚ¾ÍÊÇÒ»¸ö
ÓÐÏòÎÞ»·Í¼(Directed Acyclic Graph, ¼ò³Æ DAG)£¬¶ø²»ÊÇÒ»¿ÃÊ÷ÁË¡£
ÈÕÖ¾½á¹¹Îļþϵͳ
¼¼ÊõµÄ¸Ä±ä»á¸øµ±Ç°µÄÎļþϵͳ´øÀ´Ñ¹Á¦¡£ÕâÖÖÇé¿öÏ£¬CPU »á±äµÃÔ½À´Ô½¿ì£¬´ÅÅÌ»á±äµÃÔ½À´Ô½´ó²¢ÇÒÔ½À´Ô½±ãÒË£¨µ«²»»áÔ½À´Ô½¿ì£©¡£ÄÚ´æÈÝÁ¿Ò²ÊÇÒÔÖ¸Êý¼¶Ôö³¤¡£µ«ÊÇ´ÅÅ̵ÄѰµÀʱ¼ä£¨³ýÁ˹Ì̬ÅÌ£¬ÒòΪ¹Ì̬ÅÌûÓÐѰµÀʱ¼ä£©²¢Ã»ÓлñµÃÌá¸ß¡£
Ϊ´Ë£¬Berkeley Éè¼ÆÁËÒ»ÖÖȫеÄÎļþϵͳ£¬ÊÔͼ»º½âÕâ¸öÎÊÌ⣬Õâ¸öÎļþϵͳ¾ÍÊÇ ÈÕÖ¾½á¹¹Îļþϵͳ(Log-structured
File System, LFS)¡£Ö¼ÔÚ½â¾öÒÔÏÂÎÊÌâ¡£
²»¶ÏÔö³¤µÄϵͳÄÚ´æ
˳Ðò I/O ÐÔÄÜʤ¹ýËæ»ú I/O ÐÔÄÜ
ÏÖÓеÍЧÂʵÄÎļþϵͳ
Îļþϵͳ²»Ö§³Ö RAID£¨ÐéÄ⻯£©
ÁíÒ»·½Ã棬µ±Ê±µÄÎļþϵͳ²»ÂÛÊÇ UNIX »¹ÊÇ FFS£¬¶¼ÓдóÁ¿µÄËæ»ú¶Áд£¨ÔÚ FFS Öд´½¨Ò»¸öÐÂÎļþÖÁÉÙÐèÒª5´ÎËæ»úд£©£¬Òò´Ë³ÉΪÕû¸öϵͳµÄÐÔÄÜÆ¿¾±¡£Í¬Ê±ÒòΪ
Page cacheµÄ´æÔÚ£¬×÷ÕßÈÏÎªËæ»ú¶Á²»ÊÇÖ÷ÒªÎÊÌâ£ºËæ×ÅÔ½À´Ô½´óµÄÄڴ棬´ó²¿·ÖµÄ¶Á²Ù×÷¶¼Äܱ» cache£¬Òò´Ë
LFS Ö÷ÒªÒª½â¾öµÄÊǼõÉÙ¶ÔÓ²Å̵ÄËæ»úд²Ù×÷¡£
ÔÚÕâÖÖÉè¼ÆÖУ¬inode ÉõÖÁ¾ßÓÐÓë UNIX ÖÐÏàͬµÄ½á¹¹£¬µ«ÊÇÏÖÔÚËüÃÇ·ÖÉ¢ÔÚÕû¸öÈÕÖ¾ÖУ¬¶ø²»ÊÇλÓÚ´ÅÅÌÉϵĹ̶¨Î»Öá£ËùÒÔ£¬inode
ºÜ¶¨Î»¡£ÎªÁËÄܹ»ÕÒµ½ inode £¬Î¬»¤ÁËÒ»¸öÓÉ inode Ë÷ÒýµÄ inode map(inode
Ó³Éä)¡£±íÏî i Ö¸Ïò´ÅÅÌÖÐµÄµÚ i ¸ö inode ¡£Õâ¸öÓ³Éä±£´æÔÚ´ÅÅÌÖУ¬µ«ÊÇÒ²±£´æÔÚ»º´æÖУ¬Òò´Ë£¬Ê¹ÓÃ×îÆµ·±µÄ²¿·Ö´ó²¿·Öʱ¼ä¶¼ÔÚÄÚ´æÖС£

µ½Ä¿Ç°ÎªÖ¹£¬ËùÓÐдÈë×î³õ¶¼»º´æÔÚÄÚ´æÖУ¬²¢ÇÒ×·¼ÓÔÚÈÕ־ĩ⣬ËùÓлº´æµÄдÈë¶¼¶¨ÆÚÔÚµ¥¸ö¶ÎÖÐдÈë´ÅÅÌ¡£ËùÒÔ£¬ÏÖÔÚ´ò¿ªÎļþÒ²¾ÍÒâζ×ÅÓÃÓ³É䶨λÎļþµÄË÷Òý½Úµã¡£Ò»µ©
inode ±»¶¨Î»ºó£¬´ÅÅÌ¿éµÄµØÖ·¾ÍÄܹ»±»ÕÒµ½¡£ËùÓÐÕâЩ¿é±¾Éí¶¼½«Î»ÓÚÈÕÖ¾ÖÐij´¦µÄ·Ö¶ÎÖС£
ÕæÊµÇé¿öϵĴÅÅÌÈÝÁ¿ÊÇÓÐÏ޵ģ¬ËùÒÔ×îÖÕÈÕÖ¾»áÕ¼ÂúÕû¸ö´ÅÅ̿ռ䣬ÕâÖÖÇé¿öϾͻá³öÏÖûÓÐеĴÅÅ̿鱻дÈëµ½ÈÕÖ¾ÖС£ÐÒÔ˵ÄÊÇ£¬Ðí¶àÏÖÓжοÉÄܾßÓв»ÔÙÐèÒªµÄ¿é¡£ÀýÈ磬Èç¹ûÒ»¸öÎļþ±»¸²¸ÇÁË£¬ÄÇôËüµÄ
inode ½«±»Ö¸ÏòеĿ飬µ«ÊǾɵĴÅÅÌ¿éÈÔÔÚÏÈǰдÈëµÄ¶ÎÖÐÕ¼¾Ý×ſռ䡣
ΪÁË´¦ÀíÕâ¸öÎÊÌ⣬LFS ÓÐÒ»¸öÇåÀí(clean)Ị̈߳¬Ëü»áÑ»·É¨ÃèÈÕÖ¾²¢¶ÔÈÕÖ¾½øÐÐѹËõ¡£Ê×ÏÈ£¬Í¨¹ý²é¿´ÈÕÖ¾ÖеÚÒ»²¿·ÖµÄÐÅÏ¢À´²é¿´ÆäÖдæÔÚÄÄЩË÷Òý½ÚµãºÍÎļþ¡£Ëü»á¼ì²éµ±Ç°
inode µÄÓ³ÉäÀ´²é¿´ inode ·ñÔÚÔÚµ±Ç°¿éÖУ¬ÊÇ·ñÈÔÔÚ±»Ê¹Óá£Èç¹û²»ÊÇ£¬¸ÃÐÅÏ¢½«±»¶ªÆú¡£Èç¹ûÈÔÈ»ÔÚʹÓã¬ÄÇô
inode ºÍ¿é¾Í»á½øÈëÄÚ´æµÈ´ýд»Øµ½ÏÂÒ»¸ö¶ÎÖС£È»ºóÔÀ´µÄ¶Î±»±ê¼ÇΪ¿ÕÏУ¬ÒÔ±ãÈÕÖ¾¿ÉÒÔÓÃÀ´´æ·ÅеÄÊý¾Ý¡£ÓÃÕâÖÖ·½·¨£¬ÇåÀíÏ̱߳éÀúÈÕÖ¾£¬´ÓºóÃæÒÆ×߾ɵĶΣ¬È»ºó½«ÓÐЧµÄÊý¾Ý·ÅÈëÄÚ´æµÈ´ýдµ½ÏÂÒ»¸ö¶ÎÖС£ÓÉ´ËÒ»À´Õû¸ö´ÅÅÌ»áÐγÉÒ»¸ö´óµÄ»·Ðλº³åÇø£¬Ð´Ï߳̽«ÐµĶÎдÔÚÇ°Ãæ£¬¶øÇåÀíÏß³ÌÔòÇåÀíºóÃæµÄ¶Î¡£

ÈÕÖ¾Îļþϵͳ
ËäÈ»ÈÕÖ¾½á¹¹ÏµÍ³µÄÉè¼ÆºÜÓÅÑÅ£¬µ«ÊÇÓÉÓÚËüÃǺÍÏÖÓеÄÎļþϵͳ²»ÏàÆ¥Å䣬Òò´Ë»¹Ã»Óй㷺ʹÓᣲ»¹ý£¬´ÓÈÕÖ¾Îļþ½á¹¹ÏµÍ³ÑÜÉú³öÀ´Ò»ÖÖеÄÈÕ־ϵͳ£¬½Ð×öÈÕÖ¾Îļþϵͳ£¬Ëü»á¼Ç¼ϵͳÏÂÒ»²½½«Òª×öʲôµÄÈÕÖ¾¡£Î¢ÈíµÄ
NTFS Îļþϵͳ¡¢Linux µÄ ext3 ¾ÍʹÓÃÁË´ËÈÕÖ¾¡£OS X ½«ÈÕ־ϵͳ×÷Ϊ¿É¹©Ñ¡ÏΪÁË¿´ÇåËüÊÇÈçºÎ¹¤×÷µÄ£¬ÎÒÃÇÏÂÃæÌÖÂÛÒ»¸öÀý×Ó£¬±ÈÈç
ÒÆ³ýÎļþ £¬Õâ¸ö²Ù×÷ÔÚ UNIX ÖÐÐèÒªÈý¸ö²½ÖèÍê³É£º
ÔÚĿ¼ÖÐɾ³ýÎļþ
ÊÍ·Å inode µ½¿ÕÏÐ inode ³Ø
½«ËùÓдÅÅÌ¿é¹é»¹¸ø¿ÕÏдÅÅ̳ء£
ÐéÄâÎļþϵͳ
UNIX ²Ù×÷ϵͳʹÓÃÒ»ÖÖ ÐéÄâÎļþϵͳ(Virtual File System, VFS) À´³¢ÊÔ½«¶àÖÖÎļþϵͳ¹¹³ÉÒ»¸öÓÐÐòµÄ½á¹¹¡£¹Ø¼üµÄ˼ÏëÊdzéÏó³öËùÓÐÎļþϵͳ¶¼¹²ÓеIJ¿·Ö£¬²¢½«Õⲿ·Ö´úÂë·ÅÔÚÒ»²ã£¬ÕâÒ»²ãÔÙµ÷ÓþßÌåÎļþϵͳÀ´¹ÜÀíÊý¾Ý¡£ÏÂÃæÊÇÒ»¸ö
VFS µÄϵͳ½á¹¹

»¹ÊÇÄǾ侵äµÄ»°£¬ÔÚ¼ÆËã»úÊÀ½çÖУ¬Èκνâ¾ö²»Á˵ÄÎÊÌâ¶¼¿ÉÒÔ¼Ó¸ö´úÀíÀ´½â¾ö¡£ËùÓкÍÎļþÏà¹ØµÄϵͳµ÷ÓÃÔÚ×î³õµÄ´¦ÀíÉ϶¼Ö¸ÏòÐéÄâÎļþϵͳ¡£ÕâЩÀ´×ÔÓû§½ø³ÌµÄµ÷Ó㬶¼ÊDZê×¼µÄ
POSIX ϵͳµ÷Ó㬱ÈÈç open¡¢read¡¢write ºÍ seek µÈ¡£VFS ¶ÔÓû§½ø³ÌÓÐÒ»¸ö
Éϲ㠽ӿڣ¬Õâ¸ö½Ó¿Ú¾ÍÊÇÖøÃûµÄ POSIX ½Ó¿Ú¡£
ÎļþϵͳµÄ¹ÜÀíºÍÓÅ»¯
Äܹ»Ê¹Îļþϵͳ¹¤×÷ÊÇÒ»»ØÊ£¬Äܹ»Ê¹Îļþϵͳ¸ßЧ¡¢Îȶ¨µÄ¹¤×÷ÊÇÁíÒ»»ØÊ£¬ÏÂÃæÎÒÃǾÍÀ´Ì½ÌÖÒ»ÏÂÎļþϵͳµÄ¹ÜÀíºÍÓÅ»¯¡£
´ÅÅ̿ռä¹ÜÀí
Îļþͨ³£´æÔÚ´ÅÅÌÖУ¬ËùÒÔÈçºÎ¹ÜÀí´ÅÅ̿ռäÊÇÒ»¸ö²Ù×÷ϵͳµÄÉè¼ÆÕßÐèÒª¿¼ÂǵÄÎÊÌâ¡£ÔÚÎļþÉϽøÐдæÓÐÁ½ÖÖ²ßÂÔ£º¡¸·ÖÅä
n ¸ö×Ö½ÚµÄÁ¬Ðø´ÅÅ̿ռ䣻»òÕß°ÑÎļþ²ð·Ö³É¶à¸ö²¢²»Ò»¶¨Á¬ÐøµÄ¿é¡¹¡£ÔÚ´æ´¢¹ÜÀíϵͳÖУ¬Ö÷ÒªÓзֶιÜÀíºÍ
·ÖÒ³¹ÜÀí Á½ÖÖ·½Ê½¡£
ÕýÈçÎÒÃÇËù¿´µ½µÄ£¬°´Á¬Ðø×Ö½ÚÐòÁд洢ÎļþÓÐÒ»¸öÃ÷ÏÔµÄÎÊÌ⣬µ±ÎļþÀ©´óʱ£¬ÓпÉÄÜÐèÒªÔÚ´ÅÅÌÉÏÒÆ¶¯Îļþ¡£ÄÚ´æÖзֶÎÒ²ÓÐͬÑùµÄÎÊÌâ¡£²»Í¬µÄÊÇ£¬Ïà¶ÔÓÚ°ÑÎļþ´Ó´ÅÅ̵ÄÒ»¸öλÖÃÒÆ¶¯µ½ÁíÒ»¸öλÖã¬ÄÚ´æÖжεÄÒÆ¶¯²Ù×÷Òª¿ìºÜ¶à¡£Òò´Ë£¬¼¸ºõËùÓеÄÎļþϵͳ¶¼°ÑÎļþ·Ö¸î³É¹Ì¶¨´óСµÄ¿éÀ´´æ´¢¡£
¿é´óС
Ò»µ©°ÑÎļþ·ÖΪ¹Ì¶¨´óСµÄ¿éÀ´´æ´¢£¬¾Í»á³öÏÖÎÊÌ⣬¿éµÄ´óСÊǶàÉÙ£¿°´ÕÕ¡¸´ÅÅÌ×éÖ¯·½Ê½£¬ÉÈÇø¡¢´ÅµÀºÍÖùÃæÏÔÈ»¶¼¿ÉÒÔ×÷Ϊ·ÖÅ䵥λ¡¹¡£ÔÚ·ÖҳϵͳÖУ¬·ÖÒ³´óСҲÊÇÖ÷ÒªÒòËØ¡£
ÓµÓдóµÄ¿é³ß´çÒâζ×Åÿ¸öÎļþ£¬ÉõÖÁ 1 ×Ö½ÚÎļþ£¬¶¼ÒªÕ¼ÓÃÒ»¸öÖùÃæ¿Õ¼ä£¬Ò²¾ÍÊÇ˵СÎļþÀË·ÑÁË´óÁ¿µÄ´ÅÅ̿ռ䡣ÁíÒ»·½Ã棬С¿éÒâζ×Ŵ󲿷ÖÎļþ½«»á¿çÔ½¶à¸ö¿é£¬Òò´ËÐèÒª¶à´ÎËÑË÷ºÍÐýתÑÓ³Ù²ÅÄܶÁÈ¡ËüÃÇ£¬´Ó¶ø½µµÍÁËÐÔÄÜ¡£Òò´Ë£¬Èç¹û·ÖÅäµÄ¿éÌ«´ó»áÀ˷ѿռ䣻·ÖÅäµÄ¿é̫С»áÀË·Ñʱ¼ä¡£
¼Ç¼¿ÕÏпé
Ò»µ©Ö¸¶¨ÁË¿é´óС£¬ÏÂÒ»¸öÎÊÌâ¾ÍÊÇÔõÑù¸ú×Ù¿ÕÏп顣ÓÐÁ½ÖÖ·½·¨±»¹ã·º²ÉÓã¬ÈçÏÂͼËùʾ

µÚÒ»ÖÖ·½·¨ÊDzÉÓôÅÅÌ¿éÁ´±í£¬Á´±íµÄÿ¸ö¿éÖаüº¬¼«¿ÉÄܶàµÄ¿ÕÏдÅÅÌ¿éºÅ¡£¶ÔÓÚ 1 KB µÄ¿éºÍ 32
λµÄ´ÅÅÌ¿éºÅ£¬¿ÕÏбíÖÐÿ¸ö¿é°üº¬ÓÐ 255 ¸ö¿ÕÏеĿéºÅ¡£¿¼ÂÇ 1 TB µÄÓ²ÅÌ£¬ÓµÓдó¸ÅÊ®ÒÚ¸ö´ÅÅ̿顣ΪÁ˴洢ȫ²¿µØÖ·¿éºÅ£¬Èç¹ûÿ¿é¿ÉÒÔ±£´æ
255 ¸ö¿éºÅ£¬ÔòÐèÒª½«½ü 400 Íò¸ö¿é¡£Í¨³££¬¿ÕÏпéÓÃÓÚ±£´æ¿ÕÏÐÁÐ±í£¬Òò´Ë´æ´¢»ù±¾ÉÏÊÇ¿ÕÏеġ£
ÁíÒ»ÖÖ¿ÕÏпռä¹ÜÀíµÄ¼¼ÊõÊÇλͼ(bitmap)£¬n ¸ö¿éµÄ´ÅÅÌÐèÒª n λλͼ¡£ÔÚλͼÖУ¬¿ÕÏпéÓÃ
1 ±íʾ£¬ÒÑ·ÖÅäµÄ¿éÓà 0 ±íʾ¡£¶ÔÓÚ 1 TB Ó²Å̵ÄÀý×Ó£¬ÐèÒª 10 ÒÚλ±íʾ£¬¼´ÐèÒª´óÔ¼ 130
000 ¸ö 1 KB ¿é´æ´¢¡£ºÜÃ÷ÏÔ£¬ºÍ 32 λÁ´±íÄ£ÐÍÏà±È£¬Î»Í¼ÐèÒªµÄ¿Õ¼ä¸üÉÙ£¬ÒòΪÿ¸ö¿éʹÓÃ
1 λ¡£Ö»Óе±´ÅÅÌ¿ìÂúµÄʱºò£¬Á´±íÐèÒªµÄ¿é²Å»á±ÈλͼÉÙ¡£
´ÅÅÌÅä¶î
ΪÁË·ÀֹһЩÓû§Õ¼ÓÃÌ«¶àµÄ´ÅÅ̿ռ䣬¶àÓû§²Ù×÷ͨ³£ÌṩһÖÖ´ÅÅÌÅä¶î(enforcing disk quotas)µÄ»úÖÆ¡£ÏµÍ³¹ÜÀíԱΪÿ¸öÓû§·ÖÅ䡸×î´óµÄÎļþºÍ¿é·ÖÅ䡹£¬²¢ÇÒ²Ù×÷ϵͳȷ±£Óû§²»»á³¬¹ýÆäÅä¶î¡£ÎÒÃÇÏÂÃæ»á̸µ½ÕâÒ»»úÖÆ¡£
ÔÚÓû§´ò¿ªÒ»¸öÎļþʱ£¬²Ù×÷ϵͳ»áÕÒµ½ÎļþÊôÐԺʹÅÅ̵ØÖ·£¬²¢°ÑËüÃÇËÍÈëÄÚ´æÖеĴò¿ªÎļþ±í¡£ÆäÖÐÒ»¸öÊôÐÔ¸æËßÎļþËùÓÐÕßÊÇË¡£ÈκÎÓйØÎļþµÄÔö¼Ó¶¼»á¼Çµ½ËùÓÐÕßµÄÅä¶îÖС£

µÚ¶þÕűí°üº¬ÁËÿ¸öÓû§µ±Ç°´ò¿ªÎļþµÄÅä¶î¼Ç¼£¬¼´Ê¹ÊÇÆäËûÈË´ò¿ª¸ÃÎļþÒ²Ò»Ñù¡£ÈçÉÏͼËùʾ£¬¸Ã±íµÄÄÚÈÝÊÇ´Ó±»´ò¿ªÎļþµÄËùÓÐÕߵĴÅÅÌÅä¶îÎļþÖÐÌáÈ¡³öÀ´µÄ¡£µ±ËùÓÐÎļþ¹Ø±Õʱ£¬¸Ã¼Ç¼±»Ð´»ØÅä¶îÎļþ¡£
µ±ÔÚ´ò¿ªÎļþ±íÖн¨Á¢Ò»Ð±íÏîʱ£¬»á²úÉúÒ»¸öÖ¸ÏòËùÓÐÕßÅä¶î¼Ç¼µÄÖ¸Õ롣ÿ´ÎÏòÎļþÖÐÌí¼ÓÒ»¸ö¿éʱ£¬ÎļþËùÓÐÕßËùÓÃÊý¾Ý¿éµÄ×ÜÊýÒ²ËæÖ®Ôö¼Ó£¬²¢»áͬʱÔö¼ÓÓ²ÏÞÖÆºÍÈíÏÞÖÆµÄ¼ì²é¡£¿ÉÒÔ³¬³öÈíÏÞÖÆ£¬µ«Ó²ÏÞÖÆ²»¿ÉÒÔ³¬³ö¡£µ±ÒÑ´ïµ½Ó²ÏÞÖÆÊ±£¬ÔÙÍùÎļþÖÐÌí¼ÓÄÚÈݽ«Òý·¢´íÎó¡£Í¬Ñù£¬¶ÔÎļþÊýĿҲ´æÔÚÀàËÆµÄ¼ì²é¡£
Îļþϵͳ±¸·Ý
×öÎļþ±¸·ÝºÜºÄ·Ñʱ¼ä¶øÇÒÒ²ºÜÀ˷ѿռ䣬Õâ»áÒýÆðÏÂÃæ¼¸¸öÎÊÌâ¡£Ê×ÏÈ£¬ÊÇÒª¡¸±¸·ÝÕû¸öÎļþ»¹Êǽö±¸·ÝÒ»²¿·ÖÄØ¡¹£¿Ò»°ãÀ´Ëµ£¬Ö»ÊDZ¸·ÝÌØ¶¨Ä¿Â¼¼°ÆäϵÄÈ«²¿Îļþ£¬¶ø²»ÊDZ¸·ÝÕû¸öÎļþϵͳ¡£
Æä´Î£¬¶ÔÉÏ´ÎδÐ޸ĹýµÄÎļþÔÙ½øÐб¸·ÝÊÇÒ»ÖÖÀË·Ñ£¬Òò¶ø²úÉúÁËÒ»ÖÖÔöÁ¿×ª´¢(incremental dumps)
µÄ˼Ïë¡£×î¼òµ¥µÄÔöÁ¿×ª´¢µÄÐÎʽ¾ÍÊÇÖÜÆÚÐÔµÄ×öÈ«ÃæµÄ±¸·Ý£¬¶øÃ¿ÌìÖ»¶ÔÔöÁ¿×ª´¢Íê³Éºó·¢Éú±ä»¯µÄÎļþ×öµ¥¸ö±¸·Ý¡£
ÉÔ΢ºÃÒ»µãµÄ·½Ê½ÊÇÖ»±¸·Ý×î½üÒ»´Îת´¢ÒÔÀ´¸ü¸Ä¹ýµÄÎļþ¡£µ±È»£¬ÕâÖÖ×ö·¨¼«´óµÄËõ¼õÁËת´¢Ê±¼ä£¬µ«»Ö¸´ÆðÀ´È´¸ü¸´ÔÓ£¬ÒòΪ¡¸×î½üµÄÈ«Ãæ×ª´¢ÏÈҪȫ²¿»Ö¸´£¬Ëæºó°´ÄæÐò½øÐÐÔöÁ¿×ª´¢¡¹¡£ÎªÁË·½±ã»Ö¸´£¬ÈËÃÇÍùÍùʹÓøü¸´ÔÓµÄת´¢Ä£Ê½¡£
µÚÈý£¬¼ÈÈ»´ýת´¢µÄÍùÍùÊǺ£Á¿Êý¾Ý£¬ÄÇôÔÚ½«ÆäдÈë´Å´øÖ®Ç°¶ÔÎļþ½øÐÐѹËõ¾ÍºÜÓбØÒª¡£µ«ÊÇ£¬Èç¹ûÔÚ±¸·Ý¹ý³ÌÖгöÏÖÁËÎļþË𻵵ÄÇé¿ö£¬¾Í»áµ¼ÖÂÆÆ»µÑ¹ËõËã·¨£¬´Ó¶øÊ¹Õû¸ö´Å´øÎÞ·¨¶ÁÈ¡¡£ËùÒÔÔÚ±¸·ÝǰÊÇ·ñ½øÐÐÎļþѹËõÐèÉ÷ÖØ¿¼ÂÇ¡£
µÚËÄ£¬¶ÔÕýÔÚʹÓõÄÎļþϵͳ×ö±¸·ÝÊǺÜÄѵġ£Èç¹ûÔÚת´¢¹ý³ÌÖÐÒªÌí¼Ó£¬É¾³ýºÍÐÞ¸ÄÎļþºÍĿ¼£¬Ôòת´¢½á¹û¿ÉÄܲ»Ò»Ö¡£Òò´Ë£¬ÒòΪת´¢¹ý³ÌÖÐÐèÒª»¨·ÑÊý¸öСʱµÄʱ¼ä£¬ËùÒÔÓбØÒªÔÚÍíÉϽ«ÏµÍ³ÍÑ»ú½øÐб¸·Ý£¬È»¶øÕâÖÖ·½Ê½µÄ½ÓÊ̶ܳȲ¢²»¸ß¡£ËùÒÔ£¬ÈËÃÇÐÞ¸ÄÁËת´¢Ëã·¨£¬¼ÇÏÂÎļþϵͳµÄ˲ʱ¿ìÕÕ£¬¼´¸´ÖƹؼüµÄÊý¾Ý½á¹¹£¬È»ºóÐèÒª°Ñ½«À´¶ÔÎļþºÍĿ¼Ëù×öµÄÐ޸ĸ´ÖƵ½¿éÖУ¬¶ø²»Êǵ½´¦¸üÐÂËûÃÇ¡£
´ÅÅÌת´¢µ½±¸·Ý´ÅÅÌÉÏÓÐÁ½ÖÖ·½°¸£º¡¸ÎïÀíת´¢ºÍÂ߼ת´¢¡¹¡£ÎïÀíת´¢(physical dump) ÊÇ´Ó´ÅÅ̵Ä
0 ¿é¿ªÊ¼£¬ÒÀ´Î½«ËùÓдÅÅ̿鰴ÕÕ˳ÐòдÈëµ½Êä³ö´ÅÅÌ£¬²¢ÔÚ¸´ÖÆ×îºóÒ»¸ö´ÅÅÌʱֹͣ¡£ÕâÖÖ³ÌÐòµÄÍòÎÞһʧÐÔÊÇÆäËû³ÌÐòËù²»¾ß±¸µÄ¡£
µÚ¶þ¸öÐèÒª¿¼ÂǵÄÊÇ¡¸»µ¿éµÄת´¢¡¹¡£ÖÆÔì´óÐÍ´ÅÅ̶øÃ»ÓÐ覴ÃÊDz»¿ÉÄܵģ¬ËùÒÔÒ²»á´æÔÚһЩ»µ¿é(bad
blocks)¡£ÓÐʱ½øÐеͼ¶¸ñʽ»¯ºó£¬»µ¿é»á±»¼ì²â³öÀ´²¢½øÐбê¼Ç£¬ÕâÖÖÇé¿öµÄ½â¾ö°ì·¨ÊÇÓôÅÅÌĩβµÄһЩ¿ÕÏпéËùÌæ»»¡£
È»¶ø£¬Ò»Ð©¿éÔÚ¸ñʽ»¯ºó»á±ä»µ£¬ÔÚÕâÖÖÇé¿öϲÙ×÷ϵͳ¿ÉÒÔ¼ì²âµ½ËüÃÇ¡£Í¨³£Çé¿öÏ£¬Ëü¿ÉÒÔͨ¹ý´´½¨Ò»¸öÓÉËùÓлµ¿é×é³ÉµÄÎļþÀ´½â¾öÎÊÌ⣬ȷ±£ËüÃDz»»á³öÏÖÔÚ¿ÕÏгØÖв¢ÇÒÓÀÔ¶²»»á±»·ÖÅä¡£¡¸ÄÇô´ËÎļþÊÇÍêÈ«²»¿É¶ÁµÄ¡¹¡£Èç¹û´ÅÅÌ¿ØÖÆÆ÷½«ËùÓеϵ¿éÖØÐÂÓ³É䣬ÎïÀíת´¢»¹ÊÇÄܹ»Õý³£¹¤×÷µÄ¡£
Windows ϵͳÓзÖÒ³Îļþ(paging files) ºÍ ÐÝÃßÎļþ(hibernation
files) ¡£ËüÃÇÔÚÎļþ»¹Ôʱ²»·¢»Ó×÷Óã¬Í¬Ê±Ò²²»Ó¦¸ÃÔÚµÚһʱ¼ä½øÐб¸·Ý¡£
ÎļþϵͳµÄÒ»ÖÂÐÔ
Ó°Ïì¿É¿¿ÐÔµÄÒ»¸öÒòËØÊÇÎļþϵͳµÄÒ»ÖÂÐÔ¡£Ðí¶àÎļþϵͳ¶ÁÈ¡´ÅÅ̿顢Ð޸ĴÅÅ̿顢ÔÙ°ÑËüÃÇд»Ø´ÅÅÌ¡£Èç¹ûϵͳÔÚËùÓпéдÈë֮ǰ±ÀÀ££¬Îļþϵͳ¾Í»á´¦ÓÚÒ»ÖÖ²»Ò»ÖÂ(inconsistent)µÄ״̬¡£Èç¹ûijЩÉÐδд»ØµÄ¿éÊÇË÷Òý½Úµã¿é£¬Ä¿Â¼¿é»ò°üº¬¿ÕÏÐÁбíµÄ¿é£¬Ôò´ËÎÊÌâÊǺÜÑÏÖØµÄ¡£
ΪÁË´¦ÀíÎļþϵͳһÖÂÐÔÎÊÌ⣬´ó²¿·Ö¼ÆËã»ú¶¼»áÓÐÓ¦ÓóÌÐòÀ´¼ì²éÎļþϵͳµÄÒ»ÖÂÐÔ¡£ÀýÈ磬UNIX ÓÐ
fsck£»Windows ÓÐ sfc£¬Ã¿µ±Òýµ¼ÏµÍ³Ê±£¨ÓÈÆäÊÇÔÚ±ÀÀ£ºó£©£¬¶¼¿ÉÒÔÔËÐиóÌÐò¡£
¿ÉÒÔ½øÐÐÁ½ÖÖÒ»ÖÂÐÔ¼ì²é£º¡¸¿éµÄÒ»ÖÂÐÔ¼ì²éºÍÎļþµÄÒ»ÖÂÐÔ¼ì²é¡¹¡£ÎªÁ˼ì²é¿éµÄÒ»ÖÂÐÔ£¬Ó¦ÓóÌÐò»á½¨Á¢Á½ÕÅ±í£¬Ã¿¸ö°üº¬Ò»¸ö¼ÆÊýÆ÷µÄ¿é£¬×î³õÉèÖÃΪ
0 ¡£µÚÒ»¸ö±íÖеļÆÊýÆ÷¸ú×ٸÿéÔÚÎļþÖгöÏֵĴÎÊý£¬µÚ¶þÕűíÖеļÆÊýÆ÷¼Ç¼ÿ¸ö¿éÔÚ¿ÕÏÐÁÐ±í¡¢¿ÕÏÐλͼÖгöÏֵįµÂÊ¡£
ÎļþϵͳÐÔÄÜ
·ÃÎÊ´ÅÅ̵ÄЧÂÊÒª±ÈÄÚ´æÂúµÄ¶à£¬ÊÇʱºòÓÖ¼À³öÕâÕÅͼÁË

´ÓÄÚ´æ¶ÁÒ»¸ö 32 λ×Ö´ó¸ÅÊÇ 10ns£¬´ÓÓ²ÅÌÉ϶ÁµÄËÙÂÊ´ó¸ÅÊÇ 100MB/S£¬¶Ôÿ¸ö 32 λ×ÖÀ´Ëµ£¬Ð§ÂÊ»áÂýÁËËı¶£¬ÁíÍ⣬»¹Òª¼ÓÉÏ
5 - 10 ms µÄѰµÀʱ¼äµÈÆäËûËðºÄ£¬Èç¹ûÖ»·ÃÎÊÒ»¸ö×Ö£¬ÄÚ´æÒª±È´ÅÅÌ¿ì°ÙÍòÊýÁ¿¼¶¡£ËùÒÔ´ÅÅÌÓÅ»¯ÊǺÜÓбØÒªµÄ£¬ÏÂÃæÎÒÃÇ»áÌÖÂÛ¼¸ÖÖÓÅ»¯·½Ê½
¸ßËÙ»º´æ
×î³£ÓõļõÉÙ´ÅÅÌ·ÃÎÊ´ÎÊýµÄ¼¼ÊõÊÇʹÓà ¿é¸ßËÙ»º´æ(block cache) »òÕß »º³åÇø¸ßËÙ»º´æ(buffer
cache)¡£¸ßËÙ»º´æÖ¸µÄÊÇһϵÁеĿ飬ËüÃÇÔÚÂß¼ÉÏÊôÓÚ´ÅÅÌ£¬µ«Êµ¼ÊÉÏ»ùÓÚÐÔÄܵĿ¼ÂDZ»±£´æÔÚÄÚ´æÖС£
¹ÜÀí¸ßËÙ»º´æÓв»Í¬µÄËã·¨£¬³£ÓõÄËã·¨ÊÇ£º¼ì²éÈ«²¿µÄ¶ÁÇëÇ󣬲鿴ÔÚ¸ßËÙ»º´æÖÐÊÇ·ñÓÐËùÐèÒªµÄ¿é¡£Èç¹û´æÔÚ£¬¿ÉÖ´ÐжÁ²Ù×÷¶øÎÞÐë·ÃÎÊ´ÅÅÌ¡£Èç¹û¼ì²é¿é²»ÔÙ¸ßËÙ»º´æÖУ¬ÄÇôÊ×ÏȰÑËü¶ÁÈë¸ßËÙ»º´æ£¬ÔÙ¸´ÖƵ½ËùÐèµÄµØ·½¡£Ö®ºó£¬¶Ôͬһ¸ö¿éµÄÇëÇó¶¼Í¨¹ý¸ßËÙ»º´æÀ´Íê³É¡£
¸ßËÙ»º´æµÄ²Ù×÷ÈçÏÂͼËùʾ

ÓÉÓÚÔÚ¸ßËÙ»º´æÖÐÓÐÐí¶à¿é£¬ËùÒÔÐèҪijÖÖ·½·¨¿ìËÙÈ·¶¨ËùÐèµÄ¿éÊÇ·ñ´æÔÚ¡£³£Ó÷½·¨Êǽ«É豸ºÍ´ÅÅ̵ØÖ·½øÐÐÉ¢ÁвÙ×÷£¬È»ºó£¬ÔÚÉ¢ÁбíÖвéÕÒ½á¹û¡£¾ßÓÐÏàͬɢÁÐÖµµÄ¿éÔÚÒ»¸öÁ´±íÖÐÁ¬½ÓÔÚÒ»Æð£¨Õâ¸öÊý¾Ý½á¹¹ÊDz»ÊǺÜÏñ
HashMap?£©£¬ÕâÑù¾Í¿ÉÒÔÑØ×ųåÍ»Á´²éÕÒÆäËû¿é¡£
Èç¹û¸ßËÙ»º´æÒÑÂú£¬´ËʱÐèÒªµ÷ÈëеĿ飬ÔòÒª°ÑÔÀ´µÄijһ¿éµ÷³ö¸ßËÙ»º´æ£¬Èç¹ûÒªµ÷³öµÄ¿éÔÚÉϴε÷ÈëºóÒѾ±»Ð޸Ĺý£¬ÔòÐèÒª°ÑËüд»Ø´ÅÅÌ¡£
¿éÌáǰ¶Á
µÚ¶þ¸öÃ÷ÏÔÌá¸ßÎļþϵͳµÄÐÔÄÜÊÇ£¬ÔÚÐèÒªÓõ½¿é֮ǰ£¬ÊÔͼÌáǰ½«ÆäдÈë¸ßËÙ»º´æ£¬´Ó¶øÌá¸ßÃüÖÐÂÊ¡£Ðí¶àÎļþ¶¼ÊÇ˳Ðò¶ÁÈ¡¡£Èç¹ûÇëÇóÎļþϵͳÔÚij¸öÎļþÖÐÉú³É¿é
k£¬ÎļþϵͳִÐÐÏà¹Ø²Ù×÷²¢ÇÒÔÚÍê³ÉÖ®ºó£¬»á¼ì²é¸ßËÙ»º´æ£¬ÒÔ±ãÈ·¶¨¿é k + 1 ÊÇ·ñÒѾÔÚ¸ßËÙ»º´æ¡£Èç¹û²»ÔÚ£¬Îļþϵͳ»áΪ
k + 1 °²ÅÅÒ»¸öÔ¤¶ÁÈ¡£¬ÒòΪÎļþÏ£ÍûÔÚÓõ½¸Ã¿éµÄʱºòÄܹ»Ö±½Ó´Ó¸ßËÙ»º´æÖжÁÈ¡¡£
µ±È»£¬¿éÌáǰ¶ÁÈ¡²ßÂÔÖ»ÊÊÓÃÓÚʵ¼Ê˳Ðò¶ÁÈ¡µÄÎļþ¡£¶ÔËæ»ú·ÃÎʵÄÎļþ£¬Ìáǰ¶ÁË¿ºÁ²»Æð×÷Óá£ÉõÖÁ»¹»áÔì³É×è°¡£
¼õÉÙ´ÅÅ̱ÛÔ˶¯
¸ßËÙ»º´æºÍ¿éÌáǰ¶Á²¢²»ÊÇÌá¸ßÎļþϵͳÐÔÄܵÄΨһ·½·¨¡£ÁíÒ»ÖÖÖØÒªµÄ¼¼ÊõÊÇ¡¸°ÑÓпÉÄÜ˳Ðò·ÃÎʵĿé·ÅÔÚÒ»Æð£¬µ±È»×îºÃÊÇÔÚͬһ¸öÖùÃæÉÏ£¬´Ó¶ø¼õÉÙ´ÅÅ̱۵ÄÒÆ¶¯´ÎÊý¡¹¡£µ±Ð´Ò»¸öÊä³öÎļþʱ£¬Îļþϵͳ¾Í±ØÐë°´ÕÕÒªÇóÒ»´ÎÒ»´ÎµØ·ÖÅä´ÅÅ̿顣Èç¹ûÓÃλͼÀ´¼Ç¼¿ÕÏп飬²¢ÇÒÕû¸öλͼÔÚÄÚ´æÖУ¬ÄÇôѡÔñÓëǰһ¿é×î½üµÄ¿ÕÏпéÊǺÜÈÝÒ׵ġ£Èç¹ûÓÿÕÏÐ±í£¬²¢ÇÒÁ´±íµÄÒ»²¿·Ö´æÔÚ´ÅÅÌÉÏ£¬Òª·ÖÅä½ôÁڵĿÕÏпé¾Í»áÀ§ÄѺܶࡣ
´ÅÅÌË鯬ÕûÀí
ÔÚ³õʼ°²×°²Ù×÷ϵͳºó£¬Îļþ¾Í»á±»²»¶ÏµÄ´´½¨ºÍÇå³ý£¬ÓÚÊÇ´ÅÅÌ»á²úÉúºÜ¶àµÄË鯬£¬ÔÚ´´½¨Ò»¸öÎļþʱ£¬ËüʹÓõĿé»áÉ¢²¼ÔÚÕû¸ö´ÅÅÌÉÏ£¬½µµÍÐÔÄÜ¡£É¾³ýÎļþºó£¬»ØÊÕ´ÅÅ̿飬¿ÉÄÜ»áÔì³É¿ÕѨ¡£
´ÅÅÌÐÔÄÜ¿ÉÒÔͨ¹ýÈçÏ·½Ê½»Ö¸´£ºÒƶ¯ÎļþʹËüÃÇÏ໥°¤×Å£¬²¢°ÑËùÓеÄÖÁÉÙÊǴ󲿷ֵĿÕÏпռä·ÅÔÚÒ»¸ö»ò¶à¸ö´óµÄÁ¬ÐøÇøÓòÄÚ¡£Windows
ÓÐÒ»¸ö³ÌÐò defrag ¾ÍÊÇ×öÕâ¸öʶùµÄ¡£Windows Óû§»á¾³£Ê¹ÓÃËü£¬SSD ³ýÍâ¡£
´ÅÅÌË鯬ÕûÀí³ÌÐò»áÔÚÈÃÎļþϵͳÉϺܺõØÔËÐС£Linux Îļþϵͳ£¨ÌرðÊÇ ext2 ºÍ ext3£©ÓÉÓÚÆäÑ¡Ôñ´ÅÅÌ¿éµÄ·½Ê½£¬ÔÚ´ÅÅÌË鯬ÕûÀíÉÏÒ»°ã²»»áÏñ
Windows Ò»ÑùÀ§ÄÑ£¬Òò´ËºÜÉÙÐèÒªÊÖ¶¯µÄ´ÅÅÌË鯬ÕûÀí¡£¶øÇÒ£¬¹Ì̬ӲÅ̲¢²»ÊÜ´ÅÅÌË鯬µÄÓ°Ï죬ÊÂʵÉÏ£¬ÔÚ¹Ì̬ӲÅÌÉÏ×ö´ÅÅÌË鯬ÕûÀí·´
ÏÂÃæÎÒÃÇÀ´Ì½ÌÖһϠI/O Á÷³ÌÎÊÌâ¡£

I/O É豸
ʲôÊÇ I/O É豸£¿I/O É豸ÓÖ½Ð×öÊäÈë/Êä³öÉ豸£¬ËüÊÇÈËÀàÓÃÀ´ºÍ¼ÆËã»ú½øÐÐͨÐŵÄÍⲿӲ¼þ¡£ÊäÈë/Êä³öÉ豸Äܹ»Ïò¼ÆËã»ú·¢ËÍÊý¾Ý£¨Êä³ö£©²¢´Ó¼ÆËã»ú½ÓÊÕÊý¾Ý£¨ÊäÈ룩¡£
I/O É豸(I/O devices)¿ÉÒÔ·Ö³ÉÁ½ÖÖ£º¿éÉ豸(block devices) ºÍ ×Ö·ûÉ豸(character
devices)¡£
¿éÉ豸
¿éÉ豸ÊÇÒ»¸öÄÜ´æ´¢¹Ì¶¨´óС¿éÐÅÏ¢µÄÉ豸£¬ËüÖ§³Ö¡¸ÒԹ̶¨´óСµÄ¿é£¬ÉÈÇø»òȺ¼¯¶ÁÈ¡ºÍ£¨¿ÉÑ¡£©Ð´ÈëÊý¾Ý¡¹¡£Ã¿¸ö¿é¶¼ÓÐ×Ô¼ºµÄÎïÀíµØÖ·¡£Í¨³£¿éµÄ´óСÔÚ
512 - 65536 Ö®¼ä¡£ËùÓд«ÊäµÄÐÅÏ¢¶¼»áÒÔÁ¬ÐøµÄ¿éΪµ¥Î»¡£¿éÉ豸µÄ»ù±¾ÌØÕ÷ÊÇÿ¸ö¿é¶¼½ÏΪ¶ÔÁ¢£¬Äܹ»¶ÀÁ¢µÄ½øÐжÁд¡£³£¼ûµÄ¿éÉ豸ÓÐ
¡¸Ó²ÅÌ¡¢À¶¹â¹âÅÌ¡¢USB ÅÌ¡¹
Óë×Ö·ûÉ豸Ïà±È£¬¿éÉ豸ͨ³£ÐèÒª½ÏÉÙµÄÒý½Å¡£

¿éÉ豸µÄȱµã
»ùÓÚ¸ø¶¨¹Ì̬´æ´¢Æ÷µÄ¿éÉ豸±È»ùÓÚÏàͬÀàÐ͵Ĵ洢Æ÷µÄ×Ö½ÚѰַҪÂýһЩ£¬ÒòΪ±ØÐëÔÚ¿éµÄ¿ªÍ·¿ªÊ¼¶ÁÈ¡»òдÈë¡£ËùÒÔ£¬Òª¶ÁÈ¡¸Ã¿éµÄÈκβ¿·Ö£¬±ØÐëѰÕÒµ½¸Ã¿éµÄ¿ªÊ¼£¬¶ÁÈ¡Õû¸ö¿é£¬Èç¹û²»Ê¹Óøÿ飬Ôò½«Æä¶ªÆú¡£ÒªÐ´Èë¿éµÄÒ»²¿·Ö£¬±ØÐëѰÕÒµ½¿éµÄ¿ªÊ¼£¬½«Õû¸ö¿é¶ÁÈëÄڴ棬ÐÞ¸ÄÊý¾Ý£¬ÔÙ´ÎѰÕÒµ½¿éµÄ¿ªÍ·´¦£¬È»ºó½«Õû¸ö¿éд»ØÉ豸¡£
×Ö·ûÉ豸
ÁíÒ»Àà I/O É豸ÊÇ×Ö·ûÉ豸¡£×Ö·ûÉ豸ÒÔ×Ö·ûΪµ¥Î»·¢ËÍ»ò½ÓÊÕÒ»¸ö×Ö·ûÁ÷£¬¶ø²»¿¼ÂÇÈκοé½á¹¹¡£×Ö·ûÉ豸ÊDz»¿ÉѰַµÄ£¬Ò²Ã»ÓÐÈκÎѰµÀ²Ù×÷¡£³£¼ûµÄ×Ö·ûÉ豸ÓÐ
¡¸´òÓ¡»ú¡¢ÍøÂçÉ豸¡¢Êó±ê¡¢ÒÔ¼°´ó¶àÊýÓë´ÅÅ̲»Í¬µÄÉ豸¡¹¡£

É豸¿ØÖÆÆ÷
É豸¿ØÖÆÆ÷ÊÇ´¦Àí CPU ´«ÈëºÍ´«³öÐźŵÄϵͳ¡£É豸ͨ¹ý²åÍ·ºÍ²å×ùÁ¬½Óµ½¼ÆËã»ú£¬²¢ÇÒ²å×ùÁ¬½Óµ½É豸¿ØÖÆÆ÷¡£É豸¿ØÖÆÆ÷´ÓÁ¬½ÓµÄÉ豸´¦½ÓÊÕÊý¾Ý£¬²¢½«Æä´æ´¢ÔÚ¿ØÖÆÆ÷ÄÚ²¿µÄÒ»Ð©ÌØÊâÄ¿µÄ¼Ä´æÆ÷(special
purpose registers) Ò²¾ÍÊDZ¾µØ»º³åÇøÖС£
ÿ¸öÉ豸¿ØÖÆÆ÷¶¼»áÓÐÒ»¸öÓ¦ÓóÌÐòÓëÖ®¶ÔÓ¦£¬É豸¿ØÖÆÆ÷ͨ¹ýÓ¦ÓóÌÐòµÄ½Ó¿Úͨ¹ýÖжÏÓë²Ù×÷ϵͳ½øÐÐͨÐÅ¡£É豸¿ØÖÆÆ÷ÊÇÓ²¼þ£¬¶øÉ豸Çý¶¯³ÌÐòÊÇÈí¼þ¡£
ÄÚ´æÓ³Éä I/O
ÿ¸ö¿ØÖÆÆ÷¶¼»áÓм¸¸ö¼Ä´æÆ÷ÓÃÀ´ºÍ CPU ½øÐÐͨÐÅ¡£Í¨¹ýдÈëÕâЩ¼Ä´æÆ÷£¬²Ù×÷ϵͳ¿ÉÒÔÃüÁîÉ豸·¢ËÍÊý¾Ý£¬½ÓÊÕÊý¾Ý¡¢¿ªÆô»òÕ߹رÕÉ豸µÈ¡£Í¨¹ý´ÓÕâЩ¼Ä´æÆ÷ÖжÁÈ¡ÐÅÏ¢£¬²Ù×÷ϵͳÄܹ»ÖªµÀÉ豸µÄ״̬£¬ÊÇ·ñ×¼±¸½ÓÊÜÒ»¸öÐÂÃüÁîµÈ¡£
ΪÁË¿ØÖƼĴæÆ÷£¬Ðí¶àÉ豸¶¼»áÓÐÊý¾Ý»º³åÇø(data buffer)£¬À´¹©ÏµÍ³½øÐжÁд¡£
ÄÇôÎÊÌâÀ´ÁË£¬CPU ÈçºÎÓëÉ豸¼Ä´æÆ÷ºÍÉ豸Êý¾Ý»º³åÇø½øÐÐͨÐÅÄØ£¿´æÔÚÁ½¸ö¿ÉÑ¡µÄ·½Ê½¡£µÚÒ»ÖÖ·½·¨ÊÇ£¬Ã¿¸ö¿ØÖƼĴæÆ÷¶¼±»·ÖÅäÒ»¸ö
I/O ¶Ë¿Ú(I/O port)ºÅ£¬ÕâÊÇÒ»¸ö 8 λ»ò 16 λµÄÕûÊý¡£ËùÓÐ I/O ¶Ë¿ÚµÄ¼¯ºÏÐγÉÁËÊܱ£»¤µÄ
I/O ¶Ë¿Ú¿Õ¼ä£¬ÒÔ±ãÆÕͨÓû§³ÌÐòÎÞ·¨·ÃÎÊËü£¨Ö»ÓвÙ×÷ϵͳ¿ÉÒÔ·ÃÎÊ£©¡£Ê¹ÓÃÌØÊâµÄ I/O Ö¸ÁîÏñÊÇ
IN REG,PORT
CPU ¿ÉÒÔ¶ÁÈ¡¿ØÖƼĴæÆ÷ PORT µÄÄÚÈݲ¢½«½á¹û·ÅÔÚ CPU ¼Ä´æÆ÷ REG ÖС£ÀàËÆµÄ£¬Ê¹ÓÃ
OUT PORT,REG
CPU ¿ÉÒÔ½« REG µÄÄÚÈÝдµ½¿ØÖƼĴæÆ÷ÖС£´ó¶àÊýÔçÆÚ¼ÆËã»ú£¬°üÀ¨¼¸ºõËùÓдóÐÍÖ÷»ú£¬Èç IBM
360 ¼°ÆäËùÓкóÐø»úÐÍ£¬¶¼ÊÇÒÔÕâÖÖ·½Ê½¹¤×÷µÄ¡£
µÚ¶þ¸ö·½·¨ÊÇ PDP-11 ÒýÈëµÄ£¬Ëü½«¡¸ËùÓпØÖƼĴæÆ÷Ó³Éäµ½ÄÚ´æ¿Õ¼ä¡¹ÖС£
Ö±½ÓÄÚ´æ·ÃÎÊ
ÎÞÂÛÒ»¸ö CPU ÊÇ·ñ¾ßÓÐÄÚ´æÓ³Éä I/O£¬Ëü¶¼ÐèҪѰַÉ豸¿ØÖÆÆ÷ÒÔ±ãÓëËüÃǽ»»»Êý¾Ý¡£CPU ¿ÉÒÔ´Ó
I/O ¿ØÖÆÆ÷ÿ´ÎÇëÇóÒ»¸ö×Ö½ÚµÄÊý¾Ý£¬µ«ÊÇÕâô×ö»áÀË·Ñ CPU ʱ¼ä£¬ËùÒÔ¾³£»áÓõ½Ò»ÖÖ³ÆÎªÖ±½ÓÄÚ´æ·ÃÎÊ(Direct
Memory Access) µÄ·½°¸¡£ÎªÁ˼ò»¯£¬ÎÒÃǼÙÉè CPU ͨ¹ýµ¥Ò»µÄϵͳ×ÜÏß·ÃÎÊËùÓеÄÉ豸ºÍÄڴ棬¸Ã×ÜÏßÁ¬½Ó
CPU ¡¢ÄÚ´æºÍ I/O É豸£¬ÈçÏÂͼËùʾ

ÏÖ´ú²Ù×÷ϵͳʵ¼Ê¸üΪ¸´ÔÓ£¬µ«ÊÇÔÀíÊÇÏàͬµÄ¡£Èç¹ûÓ²¼þÓÐDMA ¿ØÖÆÆ÷£¬ÄÇô²Ù×÷ϵͳֻÄÜʹÓà DMAÓÐʱÕâ¸ö¿ØÖÆÆ÷»á¼¯³Éµ½´ÅÅÌ¿ØÖÆÆ÷ºÍÆäËû¿ØÖÆÆ÷ÖУ¬µ«ÕâÖÖÉè¼ÆÐèÒªÔÚÿ¸öÉ豸É϶¼×°ÓÐÒ»¸ö·ÖÀëµÄ
DMA ¿ØÖÆÆ÷¡£µ¥¸öµÄ DMA ¿ØÖÆÆ÷¿ÉÓÃÓÚÏò¶à¸öÉ豸´«Ê䣬ÕâÖÖ´«ÊäÍùÍùͬʱ½øÐС£
DMA ¹¤×÷ÔÀí
Ê×ÏÈ CPU ͨ¹ýÉèÖà DMA ¿ØÖÆÆ÷µÄ¼Ä´æÆ÷¶ÔËü½øÐбà³Ì£¬ËùÒÔ DMA ¿ØÖÆÆ÷ÖªµÀ½«Ê²Ã´Êý¾Ý´«Ë͵½Ê²Ã´µØ·½¡£DMA
¿ØÖÆÆ÷»¹ÒªÏò´ÅÅÌ¿ØÖÆÆ÷·¢³öÒ»¸öÃüÁ֪ͨËü´Ó´ÅÅ̶ÁÊý¾Ýµ½ÆäÄÚ²¿µÄ»º³åÇø²¢¼ìÑéУÑéºÍ¡£µ±ÓÐЧÊý¾ÝλÓÚ´ÅÅÌ¿ØÖÆÆ÷µÄ»º³åÇøÖÐʱ£¬DMA
¾Í¿ÉÒÔ¿ªÊ¼ÁË¡£
DMA ¿ØÖÆÆ÷ͨ¹ýÔÚ×ÜÏßÉÏ·¢³öÒ»¸ö¶ÁÇëÇóµ½´ÅÅÌ¿ØÖÆÆ÷¶ø·¢Æð DMA ´«ËÍ£¬ÕâÊǵڶþ²½¡£Õâ¸ö¶ÁÇëÇó¾ÍÏñÆäËû¶ÁÇëÇóÒ»Ñù£¬´ÅÅÌ¿ØÖÆÆ÷²¢²»ÖªµÀ»òÕß²¢²»¹ØÐÄËüÊÇÀ´×Ô
CPU »¹ÊÇÀ´×Ô DMA ¿ØÖÆÆ÷¡£Í¨³£Çé¿öÏ£¬ÒªÐ´µÄÄÚ´æµØÖ·ÔÚ×ÜÏߵĵØÖ·ÏßÉÏ£¬ËùÒÔµ±´ÅÅÌ¿ØÖÆÆ÷ȥƥÅäÏÂÒ»¸ö×Öʱ£¬ËüÖªµÀ½«¸Ã×Öдµ½Ê²Ã´µØ·½¡£Ð´µ½ÄÚ´æ¾ÍÊÇÁíÍâÒ»¸ö×ÜÏßÑ»·ÁË£¬ÕâÊǵÚÈý²½¡£µ±Ð´²Ù×÷Íê³Éʱ£¬´ÅÅÌ¿ØÖÆÆ÷ÔÚ×ÜÏßÉÏ·¢³öÒ»¸öÓ¦´ðÐźŵ½
DMA ¿ØÖÆÆ÷£¬ÕâÊǵÚËIJ½¡£
È»ºó£¬DMA ¿ØÖÆÆ÷»áÔö¼ÓÄÚ´æµØÖ·²¢¼õÉÙ×Ö½ÚÊýÁ¿¡£Èç¹û×Ö½ÚÊýÁ¿ÈÔÈ»´óÓÚ 0 £¬¾Í»áÑ»·²½Öè 2 -
²½Öè 4 £¬Ö±µ½×Ö½Ú¼ÆÊý±äΪ 0 ¡£´Ëʱ£¬DMA ¿ØÖÆÆ÷»á´ò¶Ï CPU ²¢¸æËßËü´«ÊäÒѾÍê³ÉÁË¡£
ÖØÎÂÖжÏ
ÔÚһ̨¸öÈ˼ÆËã»úÌåϵ½á¹¹ÖУ¬ÖжϽṹ»áÈçÏÂËùʾ

µ±Ò»¸ö I/O É豸Íê³ÉËüµÄ¹¤×÷ºó£¬Ëü¾Í»á²úÉúÒ»¸öÖжϣ¨Ä¬ÈϲÙ×÷ϵͳÒѾ¿ªÆôÖжϣ©£¬Ëüͨ¹ýÔÚ×ÜÏßÉÏÉùÃ÷ÒÑ·ÖÅäµÄÐźÅÀ´ÊµÏÖ´ËÄ¿µÄ¡£Ö÷°åÉϵÄÖжϿØÖÆÆ÷оƬ»á¼ì²âµ½Õâ¸öÐźţ¬È»ºóÖ´ÐÐÖжϲÙ×÷¡£
¾«È·ÖжϺͲ»¾«È·ÖжÏ
ʹ»úÆ÷´¦ÓÚÁ¼ºÃ״̬µÄÖжϳÆÎª¾«È·ÖжÏ(precise interrupt)¡£ÕâÑùµÄÖжϾßÓÐËĸöÊôÐÔ£º
PC £¨³ÌÐò¼ÆÊýÆ÷£©±£´æÔÚÒ»¸öÒÑÖªµÄµØ·½
PC ËùÖ¸ÏòµÄÖ¸Áî֮ǰËùÓеÄÖ¸ÁîÒѾÍêȫִÐÐ
PC ËùÖ¸ÏòµÄÖ¸ÁîÖ®ºóËùÓеÄÖ¸ÁûÓÐÖ´ÐÐ
PC ËùÖ¸ÏòµÄÖ¸ÁîµÄÖ´ÐÐ״̬ÊÇÒÑÖªµÄ
²»Âú×ãÒÔÉÏÒªÇóµÄÖжϳÆÎª ²»¾«È·ÖжÏ(imprecise interrupt)£¬²»¾«È·ÖжÏÈÃÈ˺ÜÍ·ÌÛ¡£ÉÏͼÃèÊöÁ˲»¾«È·ÖжϵÄÏÖÏó¡£Ö¸ÁîµÄÖ´ÐÐʱÐòºÍÍê³É¶È¾ßÓв»È·¶¨ÐÔ£¬¶øÇÒ»Ö¸´ÆðÀ´Ò²·Ç³£Âé·³¡£
IO Èí¼þÔÀí
I/O Èí¼þÄ¿±ê
É豸¶ÀÁ¢ÐÔ
I/O Èí¼þÉè¼ÆÒ»¸öºÜÖØÒªµÄÄ¿±ê¾ÍÊÇÉ豸¶ÀÁ¢ÐÔ(device independence)¡£ÕâÒâζ×Å¡¸ÎÒÃÇÄܹ»±àд·ÃÎÊÈκÎÉ豸µÄÓ¦ÓóÌÐò£¬¶ø²»ÓÃÊÂÏÈÖ¸¶¨Ìض¨µÄÉ豸¡¹¡£

´íÎó´¦Àí
³ýÁËÉ豸¶ÀÁ¢ÐÔÍ⣬I/O Èí¼þʵÏֵĵڶþ¸öÖØÒªµÄÄ¿±ê¾ÍÊÇ´íÎó´¦Àí(error handling)¡£Í¨³£Çé¿öÏÂÀ´Ëµ£¬´íÎóÓ¦¸Ã½»¸øÓ²¼þ²ãÃæÈ¥´¦Àí¡£Èç¹ûÉ豸¿ØÖÆÆ÷·¢ÏÖÁ˶Á´íÎóµÄ»°£¬Ëü»á¾¡¿ÉÄܵÄÈ¥ÐÞ¸´Õâ¸ö´íÎó¡£Èç¹ûÉ豸¿ØÖÆÆ÷´¦Àí²»ÁËÕâ¸öÎÊÌ⣬ÄÇôÉ豸Çý¶¯³ÌÐòÓ¦¸Ã½øÐд¦Àí£¬É豸Çý¶¯³ÌÐò»áÔٴγ¢ÊÔ¶ÁÈ¡²Ù×÷£¬ºÜ¶à´íÎó¶¼ÊÇżȻÐԵģ¬Èç¹ûÉ豸Çý¶¯³ÌÐòÎÞ·¨´¦ÀíÕâ¸ö´íÎ󣬲Żá°Ñ´íÎóÏòÉÏÅ×µ½Ó²¼þ²ãÃæ£¨Éϲ㣩½øÐд¦Àí£¬ºÜ¶àʱºò£¬Éϲ㲢²»ÐèÒªÖªµÀϲãÊÇÈçºÎ½â¾ö´íÎóµÄ¡£
ͬ²½ºÍÒì²½´«Êä
I/O Èí¼þʵÏֵĵÚÈý¸öÄ¿±ê¾ÍÊÇ Í¬²½(synchronous) ºÍ Òì²½(asynchronous£¬¼´ÖжÏÇý¶¯)´«Êä¡£ÕâÀïÏÈ˵һÏÂͬ²½ºÍÒì²½ÊÇÔõô»ØÊ°ɡ£
ͬ²½´«ÊäÖÐÊý¾Ýͨ³£ÒÔ¿é»òÖ¡µÄÐÎʽ·¢ËÍ¡£·¢ËÍ·½ºÍ½ÓÊÕ·½ÔÚÊý¾Ý´«Êä֮ǰӦ¸Ã¾ßÓÐͬ²½Ê±ÖÓ¡£¶øÔÚÒì²½´«ÊäÖУ¬Êý¾Ýͨ³£ÒÔ×Ö½Ú»òÕß×Ö·ûµÄÐÎʽ·¢ËÍ£¬Òì²½´«ÊäÔò²»ÐèҪͬ²½Ê±ÖÓ£¬µ«ÊÇ»áÔÚ´«Êä֮ǰÏòÊý¾ÝÌí¼ÓÆæÅ¼Ð£Ñéλ¡£´ó²¿·ÖÎïÀíIO(physical
I/O) ÊÇÒì²½µÄ¡£ÎïÀí I/O ÖÐµÄ CPU ÊǺܴÏÃ÷µÄ£¬CPU ´«ÊäÍê³Éºó»áת¶ø×öÆäËûÊÂÇ飬ËüºÍÖжÏÐÄÁéÏàͨ£¬µÈµ½ÖжϷ¢Éúºó£¬CPU
²Å»á»Øµ½´«ÊäÕâ¼þÊÂÇéÉÏÀ´¡£
»º³å
I/O Èí¼þµÄ×îºóÒ»¸öÎÊÌâÊÇ»º³å(buffering)¡£Í¨³£Çé¿öÏ£¬´ÓÒ»¸öÉ豸·¢³öµÄÊý¾Ý²»»áÖ±½Óµ½´ï×îºóµÄÉ豸¡£Æä¼ä»á¾¹ýһϵÁеÄУÑé¡¢¼ì²é¡¢»º³åµÈ²Ù×÷²ÅÄܵ½´ï¡£
¹²ÏíºÍ¶ÀÕ¼
I/O Èí¼þÒýÆðµÄ×îºóÒ»¸öÎÊÌâ¾ÍÊǹ²ÏíÉ豸ºÍ¶ÀÕ¼É豸µÄÎÊÌâ¡£ÓÐЩ I/O É豸Äܹ»±»Ðí¶àÓû§¹²Í¬Ê¹Óá£Ò»Ð©É豸±ÈÈç´ÅÅÌ£¬Èöà¸öÓû§Ê¹ÓÃÒ»°ã²»»á²úÉúʲôÎÊÌ⣬µ«ÊÇijЩÉ豸±ØÐë¾ßÓжÀÕ¼ÐÔ£¬¼´Ö»ÔÊÐíµ¥¸öÓû§Ê¹ÓÃÍê³Éºó²ÅÄÜÈÃÆäËûÓû§Ê¹Óá£
Ò»¹²ÓÐÈýÖÖ¿ØÖÆ I/O É豸µÄ·½·¨
ʹÓóÌÐò¿ØÖÆ I/O
ʹÓÃÖжÏÇý¶¯ I/O
ʹÓà DMA Çý¶¯ I/O
I/O ²ã´Î½á¹¹
I/O Èí¼þͨ³£×éÖ¯³ÉËĸö²ã´Î£¬ËüÃǵĴóÖ½ṹÈçÏÂͼËùʾ

ÏÂÃæÎÒÃǾßÌåµÄÀ´Ì½ÌÖÒ»ÏÂÉÏÃæµÄ²ã´Î½á¹¹
Öжϴ¦Àí³ÌÐò
ÔÚ¼ÆËã»úϵͳÖУ¬ÖжϾÍÏñÅ®ÈËµÄÆ¢ÆøÒ»ÑùÎÞʱÎ޿̶¼ÔÚ²úÉú£¬ÖжϵijöÏÖÍùÍùÊÇÈÃÈ˺ܲ»Ë¬µÄ¡£Öжϴ¦Àí³ÌÐòÓÖ±»³ÆÎªÖжϷþÎñ³ÌÐò
»òÕßÊÇ ISR(Interrupt Service Routines)£¬ËüÊÇ×î¿¿½üÓ²¼þµÄÒ»²ã¡£Öжϴ¦Àí³ÌÐòÓÉÓ²¼þÖжϡ¢Èí¼þÖжϻòÕßÊÇÈí¼þÒì³£Æô¶¯²úÉúµÄÖжϣ¬ÓÃÓÚʵÏÖÉ豸Çý¶¯³ÌÐò»òÊܱ£»¤µÄ²Ù×÷ģʽ£¨ÀýÈçϵͳµ÷Óã©Ö®¼äµÄת»»¡£
Öжϴ¦Àí³ÌÐò¸ºÔð´¦ÀíÖжϷ¢ÉúʱµÄËùÓвÙ×÷£¬²Ù×÷Íê³Éºó×èÈû£¬È»ºóÆô¶¯ÖжÏÇý¶¯³ÌÐòÀ´½â¾ö×èÈû¡£Í¨³£»áÓÐÈýÖÖ֪ͨ·½Ê½£¬ÒÀÀµÓÚ²»Í¬µÄ¾ßÌåʵÏÖ
ÐźÅÁ¿ÊµÏÖÖУºÔÚÐźÅÁ¿ÉÏʹÓà up ½øÐÐ֪ͨ£»
¹Ü³ÌʵÏÖ£º¶Ô¹Ü³ÌÖеÄÌõ¼þ±äÁ¿Ö´ÐÐ signal ²Ù×÷
»¹ÓÐһЩÇé¿öÊÇ·¢ËÍһЩÏûÏ¢
É豸Çý¶¯³ÌÐò
ÿ¸öÁ¬½Óµ½¼ÆËã»úµÄ I/O É豸¶¼ÐèÒªÓÐÄ³Ð©ÌØ¶¨É豸µÄ´úÂë¶ÔÆä½øÐпØÖÆ¡£ÕâЩÌṩ I/O É豸µ½É豸¿ØÖÆÆ÷ת»»µÄ¹ý³ÌµÄ´úÂë³ÆÎª
É豸Çý¶¯³ÌÐò(Device driver)¡£
É豸¿ØÖÆÆ÷µÄÖ÷Òª¹¦ÄÜÓÐÏÂÃæÕâЩ
½ÓÊÕºÍʶ±ðÃüÁÉ豸¿ØÖÆÆ÷¿ÉÒÔ½ÓÊÜÀ´×Ô CPU µÄÖ¸Á²¢½øÐÐʶ±ð¡£É豸¿ØÖÆÆ÷ÄÚ²¿Ò²»áÓмĴæÆ÷£¬ÓÃÀ´´æ·ÅÖ¸ÁîºÍ²ÎÊý
½øÐÐÊý¾Ý½»»»£ºCPU¡¢¿ØÖÆÆ÷ºÍÉ豸֮¼ä»á½øÐÐÊý¾ÝµÄ½»»»£¬CPU ͨ¹ý×ÜÏß°ÑÖ¸Áî·¢Ë͸ø¿ØÖÆÆ÷£¬»ò´Ó¿ØÖÆÆ÷Öв¢ÐеضÁ³öÊý¾Ý£»¿ØÖÆÆ÷½«Êý¾ÝдÈëÖ¸¶¨É豸¡£
µØÖ·Ê¶±ð£ºÃ¿¸öÓ²¼þÉ豸¶¼ÓÐ×Ô¼ºµÄµØÖ·£¬É豸¿ØÖÆÆ÷Äܹ»Ê¶±ðÕâЩ²»Í¬µÄµØÖ·£¬À´´ïµ½¿ØÖÆÓ²¼þµÄÄ¿µÄ£¬´ËÍ⣬Ϊʹ
CPU ÄÜÏò¼Ä´æÆ÷ÖÐдÈë»òÕß¶ÁÈ¡Êý¾Ý£¬ÕâЩ¼Ä´æÆ÷¶¼Ó¦¾ßÓÐΨһµÄµØÖ·¡£
²î´í¼ì²â£ºÉ豸¿ØÖÆÆ÷»¹¾ßÓжÔÉ豸´«µÝ¹ýÀ´µÄÊý¾Ý½øÐмì²âµÄ¹¦ÄÜ¡£
ÔÚÕâÖÖÇé¿öÏ£¬É豸¿ØÖÆÆ÷»á×èÈû£¬Ö±µ½ÖжÏÀ´½â³ý×èÈû״̬¡£»¹ÓÐÒ»ÖÖÇé¿öÊDzÙ×÷ÊÇ¿ÉÒÔÎÞÑÓ³ÙµÄÍê³É£¬ËùÒÔÇý¶¯³ÌÐò²»ÐèÒª×èÈû¡£ÔÚµÚÒ»ÖÖÇé¿öÏ£¬²Ù×÷ϵͳ¿ÉÄܱ»Öжϻ½ÐÑ£»µÚ¶þÖÖÇé¿öϲÙ×÷ϵͳ²»»á±»ÐÝÃß¡£
É豸Çý¶¯³ÌÐò±ØÐëÊÇ¿ÉÖØÈëµÄ£¬ÒòΪÉ豸Çý¶¯³ÌÐò»á×èÈûºÍ»½ÐÑÈ»ºóÔÙ´Î×èÈû¡£Çý¶¯³ÌÐò²»ÔÊÐí½øÐÐϵͳµ÷Ó㬵«ÊÇËüÃÇͨ³£ÐèÒªÓëÄÚºËµÄÆäÓಿ·Ö½øÐн»»¥¡£
ÓëÉ豸ÎÞ¹ØµÄ I/O Èí¼þ
I/O Èí¼þÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÎÒÃÇÉÏÃæ½éÉܹýµÄ»ùÓÚÌØ¶¨É豸µÄ£¬»¹ÓÐÒ»ÖÖÊÇÉ豸ÎÞ¹ØÐԵģ¬É豸ÎÞ¹ØÐÔÒ²¾ÍÊDz»ÐèÒªÌØ¶¨µÄÉ豸¡£É豸Çý¶¯³ÌÐòÓëÉ豸Î޹صÄÈí¼þÖ®¼äµÄ½çÏÞÈ¡¾öÓÚ¾ßÌåµÄϵͳ¡£ÏÂÃæÏÔʾµÄ¹¦ÄÜÓÉÉ豸Î޹صÄÈí¼þʵÏÖ

ÓëÉ豸Î޹صÄÈí¼þµÄ»ù±¾¹¦ÄÜÊǶÔËùÓÐÉ豸ִÐй«¹²µÄ I/O ¹¦ÄÜ£¬²¢ÇÒÏòÓû§²ãÈí¼þÌṩһ¸öͳһµÄ½Ó¿Ú¡£
»º³å
ÎÞÂÛÊǶÔÓÚ¿éÉ豸»¹ÊÇ×Ö·ûÉ豸À´Ëµ£¬»º³å¶¼ÊÇÒ»¸ö·Ç³£ÖØÒªµÄ¿¼Á¿±ê×¼¡£»º³å¼¼ÊõÓ¦Óù㷺£¬µ«ËüÒ²ÓÐȱµã¡£Èç¹ûÊý¾Ý±»»º³å´ÎÊýÌ«¶à£¬»áÓ°ÏìÐÔÄÜ¡£
´íÎó´¦Àí
ÔÚ I/O ÖУ¬³ö´íÊÇÒ»ÖÖÔÙÕý³£²»¹ýµÄÇé¿öÁË¡£µ±³ö´í·¢Éúʱ£¬²Ù×÷ϵͳ±ØÐ뾡¿ÉÄÜ´¦ÀíÕâЩ´íÎó¡£ÓÐһЩ´íÎóÊÇÖ»ÓÐÌØ¶¨µÄÉ豸²ÅÄÜ´¦Àí£¬ÓÐһЩÊÇÓÉ¿ò¼Ü½øÐд¦Àí£¬ÕâЩ´íÎóºÍÌØ¶¨µÄÉ豸Î޹ء£
I/O ´íÎóµÄÒ»ÀàÊdzÌÐòÔ±±à³Ì´íÎ󣬱ÈÈ绹ûÓдò¿ªÎļþǰ¾Í¶ÁÁ÷£¬»òÕß²»¹Ø±ÕÁ÷µ¼ÖÂÄÚ´æÒç³öµÈµÈ¡£ÕâÀàÎÊÌâÓɳÌÐòÔ±´¦Àí£»ÁíÍâÒ»ÀàÊÇʵ¼ÊµÄ
I/O ´íÎó£¬ÀýÈçÏòÒ»¸ö´ÅÅÌ»µ¿éдÈëÊý¾Ý£¬ÎÞÂÛÔõôд¶¼Ð´Èë²»ÁË¡£ÕâÀàÎÊÌâÓÉÇý¶¯³ÌÐò´¦Àí£¬Çý¶¯³ÌÐò´¦Àí²»Á˽»¸øÓ²¼þ´¦Àí£¬Õâ¸öÎÒÃÇÉÏÃæÒ²Ëµ¹ý¡£
É豸Çý¶¯³ÌÐòͳһ½Ó¿Ú
ÎÒÃÇÔÚ²Ù×÷ϵͳ¸ÅÊöÖÐ˵µ½£¬²Ù×÷ϵͳһ¸ö·Ç³£ÖØÒªµÄ¹¦ÄܾÍÊÇÆÁ±ÎÁËÓ²¼þºÍÈí¼þµÄ²îÒìÐÔ£¬ÎªÓ²¼þºÍÈí¼þÌṩÁËͳһµÄ±ê×¼£¬Õâ¸ö±ê×¼»¹ÌåÏÖÔÚΪÉ豸Çý¶¯³ÌÐòÌṩͳһµÄ½Ó¿Ú£¬ÒòΪ²»Í¬µÄÓ²¼þºÍ³§É̱àдµÄÉ豸Çý¶¯³ÌÐò²»Í¬£¬ËùÒÔÈç¹ûΪÿ¸öÇý¶¯³ÌÐò¶¼µ¥¶ÀÌṩ½Ó¿ÚµÄ»°£¬ÕâÑùû·¨¸ã£¬ËùÒÔ±ØÐëͳһ¡£
·ÖÅäºÍÊÍ·Å
һЩÉ豸ÀýÈç´òÓ¡»ú£¬ËüÖ»ÄÜÓÉÒ»¸ö½ø³ÌÀ´Ê¹Óã¬Õâ¾ÍÐèÒª²Ù×÷ϵͳ¸ù¾Ýʵ¼ÊÇé¿öÅжÏÊÇ·ñÄܹ»¶ÔÉ豸µÄÇëÇó½øÐмì²é£¬ÅжÏÊÇ·ñÄܹ»½ÓÊÜÆäËûÇëÇó£¬Ò»ÖֱȽϼòµ¥Ö±½ÓµÄ·½Ê½ÊÇÔÚÌØÊâÎļþÉÏÖ´ÐÐ
open²Ù×÷¡£Èç¹ûÉ豸²»¿ÉÓã¬ÄÇôֱ½Ó open »áµ¼ÖÂʧ°Ü¡£»¹ÓÐÒ»ÖÖ·½Ê½ÊDz»Ö±½Óµ¼ÖÂʧ°Ü£¬¶øÊÇÈÃÆä×èÈû£¬µÈµ½ÁíÍâÒ»¸ö½ø³ÌÊÍ·Å×ÊÔ´ºó£¬ÔÚ½øÐÐ
open ´ò¿ª²Ù×÷¡£ÕâÖÖ·½Ê½¾Í°ÑÑ¡ÔñȨ½»¸øÁËÓû§£¬ÓÉÓû§ÅжÏÊÇ·ñÓ¦¸ÃµÈ´ý¡£
É豸Î޹صĿé
²»Í¬µÄ´ÅÅÌ»á¾ßÓв»Í¬µÄÉÈÇø´óС£¬µ«ÊÇÈí¼þ²»»á¹ØÐÄÉÈÇø´óС£¬Ö»¹Ü´æ´¢¾ÍÊÇÁË¡£Ò»Ð©×Ö·ûÉ豸¿ÉÒÔÒ»´ÎÒ»¸ö×ֽڵĽ»¸¶Êý¾Ý£¬¶øÆäËûµÄÉ豸ÔòÒԽϴóµÄµ¥Î»½»¸¶Êý¾Ý£¬ÕâЩ²îÒìÒ²¿ÉÒÔÒþ²ØÆðÀ´¡£
Óû§¿Õ¼äµÄ I/O Èí¼þ
ËäÈ»´ó²¿·Ö I/O Èí¼þ¶¼ÔÚÄں˽ṹÖУ¬µ«ÊÇ»¹ÓÐһЩÔÚÓû§¿Õ¼äʵÏÖµÄ I/O Èí¼þ£¬·²ÊÂûÓоø¶Ô¡£Ò»Ð©
I/O Èí¼þºÍ¿â¹ý³ÌÔÚÓû§¿Õ¼ä´æÔÚ£¬È»ºóÒÔÌṩϵͳµ÷Óõķ½Ê½ÊµÏÖ¡£
ÅÌ
ÅÌ¿ÉÒÔ˵ÊÇÓ²¼þÀïÃæ±È½Ï¼òµ¥µÄ¹¹ÔìÁË£¬Í¬Ê±Ò²ÊÇ×îÖØÒªµÄ¡£ÏÂÃæÎÒÃÇ´ÓÅÌ̸Æð£¬ÁÄÁÄËüµÄÎïÀí¹¹Ôì
ÅÌÓ²¼þ
ÅÌ»áÓкܶàÖÖÀàÐÍ¡£ÆäÖÐ×î¼òµ¥µÄ¹¹Ôì¾ÍÊÇ´ÅÅÌ(magnetic hard disks)£¬ Ò²±»³ÆÎª hard
disk,HDDµÈ¡£´ÅÅÌͨ³£Óë°²×°ÔڴűÛÉϵĴÅÍ·Åä¶Ô£¬´ÅÍ·¿É½«Êý¾Ý¶ÁÈ¡»òÕß½«Êý¾ÝдÈë´ÅÅÌ£¬Òò´Ë´ÅÅ̵ĶÁдËٶȶ¼Í¬Ñù¿ì¡£ÔÚ´ÅÅÌÖУ¬Êý¾ÝÊÇËæ»ú·ÃÎʵģ¬ÕâÒ²¾Í˵Ã÷¿ÉÒÔͨ¹ýÈÎÒâµÄ˳ÐòÀ´´æ´¢ºÍ¼ìË÷µ¥¸öÊý¾Ý¿é£¬ËùÒÔÄã¿ÉÒÔÔÚÈÎÒâλÖ÷ÅÖôÅÅÌÀ´ÈôÅÍ·¶ÁÈ¡£¬´ÅÅÌÊÇÒ»ÖÖ·ÇÒ×ʧÐÔµÄÉ豸£¬¼´Ê¹¶ÏµçÒ²ÄÜÓÀ¾Ã±£Áô¡£
´ÅÅÌ
ΪÁË×éÖ¯ºÍ¼ìË÷Êý¾Ý£¬»á½«´ÅÅÌ×éÖ¯³ÉÌØ¶¨µÄ½á¹¹£¬ÕâÐ©ÌØ¶¨µÄ½á¹¹¾ÍÊÇ¡¸´ÅµÀ¡¢ÉÈÇøºÍÖùÃæ¡¹

´ÅÅ̱»×éÖ¯³ÉÖùÃæÐÎʽ£¬Ã¿¸öÅÌÓÃÖáÏàÁ¬£¬Ã¿Ò»¸öÖùÃæ°üº¬Èô¸É´ÅµÀ£¬Ã¿¸ö´ÅµÀÓÉÈô¸ÉÉÈÇø×é³É¡£ÈíÅÌÉÏ´óԼÿ¸ö´ÅµÀÓÐ
8 - 32 ¸öÉÈÇø£¬Ó²ÅÌÉÏÿÌõ´ÅµÀÉÏÉÈÇøµÄÊýÁ¿¿É´ï¼¸°Ù¸ö£¬´ÅÍ·´óÔ¼ÊÇ 1 - 16 ¸ö¡£
¶ÔÓÚ´ÅÅÌÇý¶¯³ÌÐòÀ´Ëµ£¬Ò»¸ö·Ç³£ÖØÒªµÄÌØÐÔ¾ÍÊÇ¿ØÖÆÆ÷ÊÇ·ñÄܹ»Í¬Ê±¿ØÖÆÁ½¸ö»òÕß¶à¸öÇý¶¯Æ÷½øÐдŵÀѰַ£¬Õâ¾ÍÊÇÖØµþѰµÀ(overlapped
seek)¡£¶ÔÓÚ¿ØÖÆÆ÷À´Ëµ£¬ËüÄܹ»¿ØÖÆÒ»¸ö´ÅÅÌÇý¶¯³ÌÐòÍê³ÉѰµÀ²Ù×÷£¬Í¬Ê±ÈÃÆäËûÇý¶¯³ÌÐòµÈ´ýѰµÀ½áÊø¡£¿ØÖÆÆ÷Ò²¿ÉÒÔÔÚÒ»¸öÇý¶¯³ÌÐòÉϽøÐжÁд²ÝŶ×ö£¬Óë´ËͬʱÈÃÁíÍâµÄÇý¶¯Æ÷½øÐÐѰµÀ²Ù×÷£¬µ«ÊÇÈíÅÌ¿ØÖÆÆ÷²»ÄÜÔÚÁ½¸öÇý¶¯Æ÷ÉϽøÐжÁд²Ù×÷¡£
RAID
RAID ³ÆÎª ´ÅÅÌÈßÓàÕóÁУ¬¼ò³Æ ´ÅÅÌÕóÁС£ÀûÓÃÐéÄ⻯¼¼Êõ°Ñ¶à¸öÓ²Å̽áºÏÔÚÒ»Æð£¬³ÉΪһ¸ö»ò¶à¸ö´ÅÅÌÕóÁÐ×飬ĿµÄÊÇÌáÉýÐÔÄÜ»òÊý¾ÝÈßÓà¡£
RAID Óв»Í¬µÄ¼¶±ð
RAID 0 - ÎÞÈÝ´íµÄÌõ´ø»¯´ÅÅÌÕóÁÐ
RAID 1 - ¾µÏñºÍË«¹¤
RAID 2 - ÄÚ´æÊ½¾À´íÂë
RAID 3 - ±ÈÌØ½»´íÆæÅ¼Ð£Ñé
RAID 4 - ¿é½»´íÆæÅ¼Ð£Ñé
RAID 5 - ¿é½»´í·Ö²¼Ê½ÆæÅ¼Ð£Ñé
RAID 6 - P + QÈßÓà
´ÅÅ̸ñʽ»¯
´ÅÅÌÓÉÒ»¶ÑÂÁµÄ¡¢ºÏ½ð»ò²£Á§µÄÅÌÆ¬×é³É£¬´ÅÅ̸ձ»´´½¨³öÀ´ºó£¬Ã»ÓÐÈκÎÐÅÏ¢¡£´ÅÅÌÔÚʹÓÃǰ±ØÐë¾¹ýµÍ¼¶¸ñʽ»¯(low-levvel
format)£¬ÏÂÃæÊÇÒ»¸öÉÈÇøµÄ¸ñʽ

ǰµ¼ÂëÏ൱ÓÚÊDZêʾÉÈÇøµÄ¿ªÊ¼Î»Öã¬Í¨³£ÒÔλģʽ¿ªÊ¼£¬Ç°µ¼Â뻹°üÀ¨ÖùÃæºÅ¡¢ÉÈÇøºÅµÈһЩÆäËûÐÅÏ¢¡£½ôËæÇ°µ¼ÂëºóÃæµÄÊÇÊý¾ÝÇø£¬Êý¾Ý²¿·ÖµÄ´óСÓɵͼ¶¸ñʽ»¯³ÌÐòÀ´È·¶¨¡£´ó²¿·Ö´ÅÅÌʹÓÃ
512 ×Ö½ÚµÄÉÈÇø¡£Êý¾ÝÇøºóÃæÊÇ ECC£¬ECC µÄÈ«³ÆÊÇ ¡¸error correction code¡¹
£¬Êý¾Ý¾À´íÂ룬ËüÓëÆÕͨµÄ´íÎó¼ì²â²»Í¬£¬ECC »¹¿ÉÒÔÓÃÓÚ»Ö¸´¶Á´íÎó¡£ECC ½×¶ÎµÄ´óСÓɲ»Í¬µÄ´ÅÅÌÖÆÔìÉÌʵÏÖ¡£ECC
´óСµÄÉè¼Æ±ê׼ȡ¾öÓÚ¡¸Éè¼ÆÕßÔ¸ÒâÎþÉü¶àÉÙ´ÅÅ̿ռäÀ´Ìá¸ß¿É¿¿ÐÔ¡¹£¬ÒÔ¼°³ÌÐò¿ÉÒÔ´¦ÀíµÄ ECC µÄ¸´Ôӳ̶ȡ£Í¨³£Çé¿öÏÂ
ECC ÊÇ 16 룬³ý´ËÖ®Í⣬ӲÅÌÒ»°ã¾ßÓÐÒ»¶¨ÊýÁ¿µÄ±¸ÓÃÉÈÇø£¬ÓÃÓÚÌæ»»ÖÆÔìȱÏݵÄÉÈÇø¡£
´ÅÅ̱۵÷¶ÈËã·¨
ÏÂÃæÎÒÃÇÀ´Ì½ÌÖһϹØÓÚÓ°Ïì´ÅÅ̶ÁдµÄËã·¨£¬Ò»°ãÇé¿öÏ£¬Ó°Ïì´ÅÅÌ¿ì¶ÁдµÄʱ¼äÓÉÏÂÃæ¼¸¸öÒòËØ¾ö¶¨
ѰµÀʱ¼ä - ѰµÀʱ¼äÖ¸µÄ¾ÍÊǽ«´ÅÅ̱ÛÒÆ¶¯µ½ÐèÒª¶ÁÈ¡´ÅÅÌ¿éÉϵÄʱ¼ä
ÐýתÑÓ³Ù - µÈ´ýºÏÊʵÄÉÈÇøÐýתµ½´ÅÍ·ÏÂËùÐèµÄʱ¼ä
ʵ¼ÊÊý¾ÝµÄ¶ÁÈ¡»òÕßдÈëʱ¼ä
ÕâÈýÖÖʱ¼ä²ÎÊýÒ²ÊÇ´ÅÅÌѰµÀµÄ¹ý³Ì¡£Ò»°ãÇé¿öÏ£¬Ñ°µÀʱ¼ä¶Ô×Üʱ¼äµÄÓ°Ïì×î´ó£¬ËùÒÔ£¬ÓÐЧµÄ½µµÍѰµÀʱ¼äÄܹ»Ìá¸ß´ÅÅ̵ĶÁÈ¡ËÙ¶È¡£
Èç¹û´ÅÅÌÇý¶¯³ÌÐòÿ´Î½ÓÊÕÒ»¸öÇëÇó²¢°´ÕÕ½ÓÊÕ˳ÐòÍê³ÉÇëÇó£¬ÕâÖÖ´¦Àí·½Ê½Ò²¾ÍÊÇ ÏÈÀ´ÏÈ·þÎñ(First-Come,
First-served, FCFS) £¬ÕâÖÖ·½Ê½ºÜÄÑÓÅ»¯Ñ°µÀʱ¼ä¡£ÒòΪÿ´Î¶¼»á°´ÕÕ˳Ðò´¦Àí£¬²»¹Ü˳ÐòÈçºÎ£¬ÓпÉÄÜÕâ´Î¶ÁÍêºóÐèÒªµÈ´ýÒ»¸ö´ÅÅÌÐýתһÖܲÅÄܼÌÐø¶ÁÈ¡£¬¶øÆäËûÖùÃæÄܹ»ÂíÉϽøÐжÁÈ¡£¬ÕâÖÖÇé¿öÏÂÿ´ÎÇëÇóÒ²»áÅŶӡ£
ͨ³£Çé¿öÏ£¬´ÅÅÌÔÚ½øÐÐѰµÀʱ£¬ÆäËû½ø³Ì»á²úÉúÆäËûµÄ´ÅÅÌÇëÇó¡£´ÅÅÌÇý¶¯³ÌÐò»áά»¤Ò»ÕÅ±í£¬±íÖлá¼Ç¼×ÅÖùÃæºÅµ±×÷Ë÷Òý£¬Ã¿¸öÖùÃæÎ´Íê³ÉµÄÇëÇó»áÐγÉÁ´±í£¬Á´±íÍ·´æ·ÅÔÚ±íµÄÏàÓ¦±íÏîÖС£
Ò»ÖÖ¶ÔÏÈÀ´ÏÈ·þÎñµÄËã·¨¸ÄÁ¼µÄ·½°¸ÊÇʹÓà ×î¶Ì·¾¶ÓÅÏÈ(SSF) Ëã·¨£¬ÏÂÃæÃèÊöÁËÕâ¸öËã·¨¡£
¼ÙÈçÎÒÃÇÔڶԴŵÀ 6 ºÅ½øÐÐѰַʱ£¬Í¬Ê±·¢ÉúÁË¶Ô 11 , 2 , 4, 14, 8, 15, 3
µÄÇëÇó£¬Èç¹û²ÉÓÃÏÈÀ´ÏÈ·þÎñµÄÔÔò£¬ÈçÏÂͼËùʾ

ÎÒÃÇ¿ÉÒÔ¼ÆËãһϴÅÅ̱ÛËù¿çÔ½µÄ´ÅÅÌÊýÁ¿Îª 5 + 9 + 2 + 10 + 6 + 7 + 12
= 51£¬Ï൱ÓÚÊÇ¿çÔ½ÁË 51 ´ÎÅÌÃæ£¬Èç¹ûʹÓÃ×î¶Ì·¾¶ÓÅÏÈ£¬ÎÒÃÇÀ´¼ÆËãһϿçÔ½µÄÅÌÃæ

¿çÔ½µÄ´ÅÅÌÊýÁ¿Îª 4 + 1 + 1 + 4 + 3 + 3 + 1 = 17 £¬Ïà±È 51 ×ã×ãÊ¡ÁËÁ½±¶µÄʱ¼ä¡£
µ«ÊÇ£¬×î¶Ì·¾¶ÓÅÏȵÄËã·¨Ò²²»ÊÇÍêÃÀÎÞȱµÄ£¬ÕâÖÖËã·¨ÕÕÑù´æÔÚÎÊÌ⣬ÄǾÍÊÇÓÅÏȼ¶ ÎÊÌ⣬
ÕâÀïÓÐÒ»¸öÔÐÍ¿ÉÒԲο¼¾ÍÊÇÎÒÃÇÈÕ³£Éú»îÖеĵçÌÝ£¬µçÌÝʹÓÃÒ»ÖÖµçÌÝËã·¨(elevator algorithm)
À´½øÐе÷¶È£¬´Ó¶øÂú×ãе÷ЧÂʺ͹«Æ½ÐÔÕâÁ½¸öÏ໥³åÍ»µÄÄ¿±ê¡£µçÌÝÒ»°ã»á±£³ÖÏòÒ»¸ö·½ÏòÒÆ¶¯£¬Ö±µ½ÔÚÄǸö·½ÏòÉÏûÓÐÇëÇóΪֹ£¬È»ºó¸Ä±ä·½Ïò¡£
µçÌÝËã·¨ÐèҪά»¤Ò»¸ö¶þ½øÖÆÎ»£¬Ò²¾ÍÊǵ±Ç°µÄ·½Ïòλ£ºUP(ÏòÉÏ)»òÕßÊÇ DOWN(ÏòÏÂ)¡£µ±Ò»¸öÇëÇó´¦ÀíÍê³Éºó£¬´ÅÅÌ»òµçÌݵÄÇý¶¯³ÌÐò»á¼ì²é¸Ã룬Èç¹û´ËλÊÇ
UP 룬´ÅÅ̱ۻòÕßµçÌݲÖÒÆµ½ÏÂÒ»¸ö¸ü¸ßµøÎ´Íê³ÉµÄÇëÇó¡£Èç¹û¸ßλûÓÐδÍê³ÉµÄÇëÇó£¬ÔòÈ¡Ïà·´·½Ïò¡£µ±·½ÏòλÊÇ
DOWNʱ£¬Í¬Ê±´æÔÚÒ»¸öµÍλµÄÇëÇ󣬴ÅÅ̱ۻáתÏò¸Ãµã¡£Èç¹û²»´æÔڵϰ£¬ÄÇôËüÖ»ÊÇÍ£Ö¹²¢µÈ´ý¡£
ÎÒÃǾٸöÀý×ÓÀ´ÃèÊöһϵçÌÝËã·¨£¬±ÈÈç¸÷¸öÖùÃæµÃµ½·þÎñµÄ˳ÐòÊÇ 4£¬7£¬10£¬14£¬9£¬6£¬3£¬1
£¬ÄÇôËüµÄÁ÷³ÌͼÈçÏÂ

ËùÒÔµçÌÝËã·¨ÐèÒª¿çÔ½µÄÅÌÃæÊýÁ¿ÊÇ 3 + 3 + 4 + 5 + 3 + 3 + 1 = 22
µçÌÝË㷨ͨ³£Çé¿öϲ»Èç SSF Ëã·¨¡£
´íÎó´¦Àí
Ò»°ã»µ¿éÓÐÁ½ÖÖ´¦Àí°ì·¨£¬Ò»ÖÖÊÇÔÚ¿ØÖÆÆ÷ÖнøÐд¦Àí£»Ò»ÖÖÊÇÔÚ²Ù×÷ϵͳ²ãÃæ½øÐд¦Àí¡£
ÕâÁ½ÖÖ·½·¨¾³£Ì滻ʹÓ㬱ÈÈçÒ»¸ö¾ßÓÐ 30 ¸öÊý¾ÝÉÈÇøºÍÁ½¸ö±¸ÓÃÉÈÇøµÄ´ÅÅÌ£¬ÆäÖÐÉÈÇø 4 ÊÇÓÐ覴õġ£

¿ØÖÆÆ÷ÄÜ×öµÄÊÂÇé¾ÍÊǽ«±¸ÓÃÉÈÇøÖ®Ò»ÖØÐÂÓ³Éä¡£

»¹ÓÐÒ»ÖÖ´¦Àí·½Ê½Êǽ«ËùÓеÄÉÈÇø¶¼ÏòÉÏÒÆ¶¯Ò»¸öÉÈÇø

ÉÏÃæÕâÕâÁ½ÖÖÇé¿öÏ¿ØÖÆÆ÷¶¼±ØÐëÖªµÀÄĸöÉÈÇø£¬¿ÉÒÔͨ¹ýÄÚ²¿µÄ±íÀ´¸ú×ÙÕâÒ»ÐÅÏ¢£¬»òÕßͨ¹ýÖØÐ´Ç°µ¼ÂëÀ´¸ø³öÖØÐÂÓ³ÉäµÄÉÈÇøºÅ¡£Èç¹ûÊÇÖØÐ´Ç°µ¼Â룬ÄÇÃ´Éæ¼°Òƶ¯µÄ·½Ê½±ØÐëÖØÐ´ºóÃæËùÓеÄǰµ¼Â룬µ«ÊÇ×îÖÕ»áÌṩÁ¼ºÃµÄÐÔÄÜ¡£
Îȶ¨´æ´¢Æ÷
´ÅÅ̾³£»á³öÏÖ´íÎ󣬵¼ÖºõÄÉÈÇø»á±ä³É»µÉÈÇø£¬Çý¶¯³ÌÐòÒ²ÓпÉÄܹҵô¡£RAID ¿ÉÒÔ¶ÔÉÈÇø³ö´í»òÕßÊÇÇý¶¯Æ÷±ÀÀ£Ìá³ö±£»¤£¬È»¶ø
RAID È´²»ÄܶԻµÊý¾ÝÖеÄд´íÎóÌṩ±£»¤£¬Ò²²»ÄܶÔд²Ù×÷ÆÚ¼äµÄ±ÀÀ£Ìṩ±£»¤£¬ÕâÑù¾Í»áÆÆ»µÔʼÊý¾Ý¡£
ÎÒÃÇÆÚÍû´ÅÅÌÄܹ»×¼È·ÎÞÎóµÄ¹¤×÷£¬µ«ÊÇÊÂʵÇé¿öÊDz»¿ÉÄܵ쬵«ÊÇÎÒÃÇÄܹ»ÖªµÀµÄÊÇ£¬Ò»¸ö´ÅÅÌ×Óϵͳ¾ßÓÐÈçÏÂÌØÐÔ£ºµ±Ò»¸öдÃüÁî·¢¸øËüʱ£¬´ÅÅÌҪôÕýÈ·µØÐ´Êý¾Ý£¬ÒªÃ´Ê²Ã´Ò²²»×ö£¬ÈÃÏÖÓеÄÊý¾ÝÍêÕûÎÞÎóµÄ±£Áô¡£ÕâÑùµÄϵͳ³ÆÎª
Îȶ¨´æ´¢Æ÷(stable storage)¡£ Îȶ¨´æ´¢Æ÷µÄÄ¿±ê¾ÍÊDz»Ï§Ò»Çдú¼Û±£Ö¤´ÅÅ̵ÄÒ»ÖÂÐÔ¡£
Îȶ¨´æ´¢Æ÷ʹÓÃÁ½¸öÒ»¶ÔÏàͬµÄ´ÅÅÌ£¬¶ÔÓ¦µÄ¿éһͬ¹¤×÷ÐγÉÒ»¸öÎÞ²î±ðµÄ¿é¡£Îȶ¨´æ´¢Æ÷ΪÁËʵÏÖÕâ¸öÄ¿µÄ£¬¶¨ÒåÁËÏÂÃæÈýÖÖ²Ù×÷£º
Îȶ¨Ð´(stable write)
Îȶ¨¶Á(stable read)
±ÀÀ£»Ö¸´(crash recovery)
ʱÖÓ
ʱÖÓ(Clocks) Ò²±»³ÆÎª¶¨Ê±Æ÷(timers)£¬Ê±ÖÓ/¶¨Ê±Æ÷¶ÔÈκγÌÐòϵͳÀ´Ëµ¶¼ÊDZز»¿ÉÉٵġ£Ê±ÖÓ¸ºÔðά»¤Ê±¼ä¡¢·ÀÖ¹Ò»¸ö½ø³Ì³¤ÆÚÕ¼ÓÃ
CPU ʱ¼äµÈÆäËû¹¦ÄÜ¡£Ê±ÖÓÈí¼þ(clock software) Ò²ÊÇÒ»ÖÖÉ豸Çý¶¯µÄ·½Ê½¡£ÏÂÃæÎÒÃǾÍÀ´¶ÔʱÖÓ½øÐнéÉÜ£¬Ò»°ã¶¼ÊÇÏÈÌÖÂÛÓ²¼þÔÙ½éÉÜÈí¼þ£¬²ÉÓÃÓÉϵ½Éϵķ½Ê½£¬Ò²ÊǸæËßÄ㣬µ×²ãÊÇ×îÖØÒªµÄ¡£
ʱÖÓÓ²¼þ
ÔÚ¼ÆËã»úÖÐÓÐÁ½ÖÖÀàÐ͵ÄʱÖÓ£¬ÕâЩʱÖÓÓëÏÖʵÉú»îÖÐʹÓõÄʱÖÓÍêÈ«²»Ò»Ñù¡£
±È½Ï¼òµ¥µÄÒ»ÖÖʱÖÓ±»Á¬½Óµ½ 110 V »ò 220 V µÄµçÔ´ÏßÉÏ£¬ÕâÑùÿ¸öµçѹÖÜÆÚ»á²úÉúÒ»¸öÖжϣ¬´ó¸ÅÊÇ
50 - 60 HZ¡£ÕâЩʱÖÓ¹ýÈ¥Ò»Ö±Õ¼¾ÝÖ§ÅäµØÎ»¡£
ÁíÍâµÄÒ»ÖÖʱÖÓÓɾ§ÌåÕñµ´Æ÷¡¢¼ÆÊýÆ÷ºÍ¼Ä´æÆ÷×é³É£¬Ê¾ÒâͼÈçÏÂËùʾ

ÕâÖÖʱÖÓ³ÆÎª¿É±à³ÌʱÖÓ £¬¿É±à³ÌʱÖÓÓÐÁ½ÖÖģʽ£¬Ò»ÖÖÊÇ Ò»¼üʽ(one-shot mode)£¬µ±Ê±ÖÓÆô¶¯Ê±£¬»á°Ñ´æ´¢Æ÷ÖеÄÖµ¸´ÖƵ½¼ÆÊýÆ÷ÖУ¬È»ºó£¬Ã¿´Î¾§ÌåµÄÕñµ´Æ÷µÄÂö³å¶¼»áʹ¼ÆÊýÆ÷
-1¡£µ±¼ÆÊýÆ÷±äΪ 0 ʱ£¬»á²úÉúÒ»¸öÖжϣ¬²¢Í£Ö¹¹¤×÷£¬Ö±µ½Èí¼þÔÙÒ»´ÎÏÔʾÆô¶¯¡£»¹ÓÐÒ»ÖÖģʽʱ ·½²¨(square-wave
mode) ģʽ£¬ÔÚÕâÖÖģʽÏ£¬µ±¼ÆÊýÆ÷±äΪ 0 ²¢²úÉúÖжϺ󣬴洢¼Ä´æÆ÷µÄÖµ»á×Ô¶¯¸´ÖƵ½¼ÆÊýÆ÷ÖУ¬ÕâÖÖÖÜÆÚÐÔµÄÖжϳÆÎªÒ»¸öʱÖÓÖÜÆÚ¡£
ʱÖÓÈí¼þ
ʱÖÓÓ²¼þËù×öµÄ¹¤×÷Ö»ÊǸù¾ÝÒÑÖªµÄʱ¼ä¼ä¸ô²úÉúÖжϣ¬¶øÆäËûµÄ¹¤×÷¶¼ÊÇÓÉʱÖÓÈí¼þÀ´Íê³É£¬Ò»°ã²Ù×÷ϵͳµÄ²»Í¬£¬Ê±ÖÓÈí¼þµÄ¾ßÌåʵÏÖÒ²²»Í¬£¬µ«ÊÇÒ»°ã¶¼»á°üÀ¨ÒÔÏÂÕ⼸µã
ά»¤Ò»ÌìµÄʱ¼ä
×èÖ¹½ø³ÌÔËÐеÄʱ¼ä³¬¹ýÆäÖ¸¶¨Ê±¼ä
ͳ¼Æ CPU µÄʹÓÃÇé¿ö
´¦ÀíÓû§½ø³ÌµÄ¾¯¸æÏµÍ³µ÷ÓÃ
Ϊϵͳ¸÷¸ö²¿·ÖÌṩ¿´ÃŹ·¶¨Ê±Æ÷
Íê³É¸ÅÒªÆÊÎö£¬¼àÊÓºÍÐÅÏ¢ÊÕ¼¯
Èí¶¨Ê±Æ÷
ʱÖÓÈí¼þÒ²±»³ÆÎª¿É±à³ÌʱÖÓ£¬¿ÉÒÔÉèÖÃËüÒÔ³ÌÐòÐèÒªµÄÈκÎËÙÂÊÒý·¢Öжϡ£Ê±ÖÓÈí¼þ´¥·¢µÄÖжÏÊÇÒ»ÖÖÓ²Öжϣ¬µ«ÊÇijЩӦÓóÌÐò¶ÔÓÚÓ²ÖжÏÀ´ËµÊDz»¿É½ÓÊܵġ£
Õâʱºò¾ÍÐèÒªÒ»ÖÖÈí¶¨Ê±Æ÷(soft timer) ±ÜÃâÁËÖжϣ¬ÎÞÂÛºÎʱµ±ÄÚºËÒòΪijÖÖÔÒòÄØÔÚÔËÐÐʱ£¬Ëü·µ»ØÓû§Ì¬Ö®Ç°¶¼»á¼ì²éʱÖÓÀ´Á˽âÈí¶¨Ê±Æ÷ÊÇ·ñµ½ÆÚ¡£Èç¹ûÈí¶¨Ê±Æ÷µ½ÆÚ£¬ÔòÖ´Ðб»µ÷¶ÈµÄʼþÒ²ÎÞÐèÇл»µ½ÄÚºË̬£¬ÒòΪ±¾ÉíÒѾ´¦ÓÚÄÚºË̬ÖС£ÕâÖÖ·½Ê½±ÜÃâÁËÆµ·±µÄÄÚºË̬ºÍÓû§Ì¬Ö®Ç°µÄÇл»£¬Ìá¸ßÁ˳ÌÐòÔËÐÐЧÂÊ¡£
Èí¶¨Ê±Æ÷ÒòΪ²»Í¬µÄÔÒòÇл»½øÈëÄÚºË̬µÄËÙÂʲ»Í¬£¬ÔÒòÖ÷ÒªÓÐ
ϵͳµ÷ÓÃ
TLB δÃüÖÐ
ȱҳÒì³£
I/O ÖжÏ
CPU ±äµÃ¿ÕÏÐ
ËÀËøÎÊÌâÒ²ÊDzÙ×÷ϵͳ·Ç³£ÖØÒªµÄÒ»ÀàÎÊÌâ

×ÊÔ´
´ó²¿·ÖµÄËÀËø¶¼ºÍ×ÊÔ´Óйأ¬ÔÚ½ø³Ì¶ÔÉ豸¡¢Îļþ¾ßÓжÀÕ¼ÐÔ£¨ÅÅËûÐÔ£©Ê±»á²úÉúËÀËø¡£ÎÒÃǰÑÕâÀàÐèÒªÅÅËûÐÔʹÓõĶÔÏó³ÆÎª×ÊÔ´(resource)¡£×ÊÔ´Ö÷Òª·ÖΪ
¡¸¿ÉÇÀÕ¼×ÊÔ´ºÍ²»¿ÉÇÀÕ¼×ÊÔ´¡¹
¿ÉÇÀÕ¼×ÊÔ´ºÍ²»¿ÉÇÀÕ¼×ÊÔ´
×ÊÔ´Ö÷ÒªÓпÉÇÀÕ¼×ÊÔ´ºÍ²»¿ÉÇÀÕ¼×ÊÔ´¡£¿ÉÇÀÕ¼×ÊÔ´(preemptable resource) ¿ÉÒÔ´ÓÓµÓÐËüµÄ½ø³ÌÖÐÇÀÕ¼¶ø²»»áÔì³ÉÆäËûÓ°Ï죬ÄÚ´æ¾ÍÊÇÒ»ÖÖ¿ÉÇÀÕ¼ÐÔ×ÊÔ´£¬Èκνø³Ì¶¼Äܹ»ÇÀÏÈ»ñµÃÄÚ´æµÄʹÓÃȨ¡£
²»¿ÉÇÀÕ¼×ÊÔ´(nonpreemtable resource) Ö¸µÄÊdzý·ÇÒýÆð´íÎó»òÕßÒì³££¬·ñÔò½ø³ÌÎÞ·¨ÇÀÕ¼Ö¸¶¨×ÊÔ´£¬ÕâÖÖ²»¿ÉÇÀÕ¼µÄ×ÊÔ´±ÈÈçÓйâÅÌ£¬ÔÚ½ø³ÌÖ´Ðе÷¶ÈµÄ¹ý³ÌÖУ¬ÆäËû½ø³ÌÊDz»Äܵõ½¸Ã×ÊÔ´µÄ¡£
ËÀËø
Èç¹ûÒª¶ÔËÀËø½øÐÐÒ»¸ö¶¨ÒåµÄ»°£¬ÏÂÃæµÄ¶¨Òå±È½ÏÌùÇÐ
¡¸Èç¹ûÒ»×é½ø³ÌÖеÄÿ¸ö½ø³Ì¶¼ÔڵȴýÒ»¸öʼþ£¬¶øÕâ¸öʼþÖ»ÄÜÓɸÃ×éÖеÄÁíÒ»¸ö½ø³Ì´¥·¢£¬ÕâÖÖÇé¿ö»áµ¼ÖÂËÀËø¡¹¡£
×ÊÔ´ËÀËøµÄÌõ¼þ
Õë¶ÔÎÒÃÇÉÏÃæµÄÃèÊö£¬×ÊÔ´ËÀËø¿ÉÄܳöÏÖµÄÇé¿öÖ÷ÒªÓÐ
»¥³âÌõ¼þ£ºÃ¿¸ö×ÊÔ´¶¼±»·ÖÅ䏸ÁËÒ»¸ö½ø³Ì»òÕß×ÊÔ´ÊÇ¿ÉÓõÄ
±£³ÖºÍµÈ´ýÌõ¼þ£ºÒѾ»ñÈ¡×ÊÔ´µÄ½ø³Ì±»ÈÏΪÄܹ»»ñȡеÄ×ÊÔ´
²»¿ÉÇÀÕ¼Ìõ¼þ£º·ÖÅä¸øÒ»¸ö½ø³ÌµÄ×ÊÔ´²»ÄÜÇ¿ÖÆµÄ´ÓÆäËû½ø³ÌÇÀÕ¼×ÊÔ´£¬ËüÖ»ÄÜÓÉÕ¼ÓÐËüµÄ½ø³ÌÏÔʾÊÍ·Å
Ñ»·µÈ´ý£ºËÀËø·¢Éúʱ£¬ÏµÍ³ÖÐÒ»¶¨ÓÐÁ½¸ö»òÕßÁ½¸öÒÔÉϵĽø³Ì×é³ÉÒ»¸öÑ»·£¬Ñ»·ÖеÄÿ¸ö½ø³Ì¶¼ÔڵȴýÏÂÒ»¸ö½ø³ÌÊͷŵÄ×ÊÔ´¡£
·¢ÉúËÀËøÊ±£¬ÉÏÃæµÄÇé¿ö±ØÐëͬʱ»á·¢Éú¡£Èç¹ûÆäÖÐÈÎÒâÒ»¸öÌõ¼þ²»»á³ÉÁ¢£¬ËÀËø¾Í²»»á·¢Éú¡£¿ÉÒÔͨ¹ýÆÆ»µÆäÖÐÈÎÒâÒ»¸öÌõ¼þÀ´ÆÆ»µËÀËø£¬ÏÂÃæÕâÐ©ÆÆ»µÌõ¼þ¾ÍÊÇÎÒÃÇ̽ÌÖµÄÖØµã
ËÀËøÄ£ÐÍ
Holt ÔÚ 1972 ÄêÌá³ö¶ÔËÀËø½øÐн¨Ä££¬½¨Ä£µÄ±ê×¼ÈçÏ£º
Ô²Ðαíʾ½ø³Ì
·½Ðαíʾ×ÊÔ´
´Ó×ÊÔ´½Úµãµ½½ø³Ì½Úµã±íʾ×ÊÔ´ÒѾ±»½ø³ÌÕ¼Óã¬ÈçÏÂͼËùʾ

ÔÚÉÏͼÖбíʾµ±Ç°×ÊÔ´ R ÕýÔÚ±» A ½ø³ÌËùÕ¼ÓÃ
Óɽø³Ì½Úµãµ½×ÊÔ´½ÚµãµÄÓÐÏòͼ±íʾµ±Ç°½ø³ÌÕýÔÚÇëÇó×ÊÔ´£¬²¢ÇҸýø³ÌÒѾ±»×èÈû£¬´¦ÓڵȴýÕâ¸ö×ÊÔ´µÄ״̬

ÔÚÉÏͼÖУ¬±íʾµÄº¬ÒåÊǽø³Ì B ÕýÔÚÇëÇó×ÊÔ´ S ¡£Holt ÈÏΪ£¬ËÀËøµÄÃèÊöÓ¦¸ÃÈçÏÂ

ÕâÊÇÒ»¸öËÀËøµÄ¹ý³Ì£¬½ø³Ì C µÈ´ý×ÊÔ´ T µÄÊÍ·Å£¬×ÊÔ´ T È´ÒѾ±»½ø³Ì D Õ¼Ó㬽ø³Ì D µÈ´ýÇëÇóÕ¼ÓÃ×ÊÔ´
U £¬×ÊÔ´ U È´ÒѾ±»Ïß³Ì C Õ¼Ó㬴ӶøÐγɻ·¡£
ÓÐËÄÖÖ´¦ÀíËÀËøµÄ²ßÂÔ£º
ºöÂÔËÀËø´øÀ´µÄÓ°Ï죨¾ª´ôÁË£©
¼ì²âËÀËø²¢»Ø¸´ËÀËø£¬ËÀËø·¢Éúʱ¶ÔÆä½øÐмì²â£¬Ò»µ©·¢ÉúËÀËøºó£¬²ÉÈ¡Ðж¯½â¾öÎÊÌâ
ͨ¹ý×Ðϸ·ÖÅä×ÊÔ´À´±ÜÃâËÀËø
ͨ¹ýÆÆ»µËÀËø²úÉúµÄËĸöÌõ¼þÖ®Ò»À´±ÜÃâËÀËø
ÏÂÃæÎÒÃÇ·Ö±ð½éÉÜÒ»ÏÂÕâËÄÖÖ·½·¨
ÍÒÄñËã·¨
×î¼òµ¥µÄ½â¾ö°ì·¨¾ÍÊÇʹÓÃÍÒÄñËã·¨(ostrich algorithm)£¬°ÑÍ·ÂñÔÚɳ×ÓÀ¼Ù×°ÎÊÌâ¸ù±¾Ã»Óз¢Éú¡£Ã¿¸öÈË¿´´ýÕâ¸öÎÊÌâµÄ·´Ó¦¶¼²»Í¬¡£Êýѧ¼ÒÈÏΪËÀËøÊDz»¿É½ÓÊܵ쬱ØÐëͨ¹ýÓÐЧµÄ²ßÂÔÀ´·ÀÖ¹ËÀËøµÄ²úÉú¡£¹¤³ÌʦÏëÒªÖªµÀÎÊÌâ·¢ÉúµÄƵ´Î£¬ÏµÍ³ÒòΪÆäËûÔÒò±ÀÀ£µÄ´ÎÊýºÍËÀËø´øÀ´µÄÑÏÖØºó¹û¡£Èç¹ûËÀËø·¢ÉúµÄƵ´ÎºÜµÍ£¬¶ø¾³£»áÓÉÓÚÓ²¼þ¹ÊÕÏ¡¢±àÒëÆ÷´íÎóµÈÆäËû²Ù×÷ϵͳÎÊÌâµ¼ÖÂϵͳ±ÀÀ££¬ÄÇô´ó¶àÊý¹¤³Ìʦ²»»áÐÞ¸´ËÀËø¡£
ËÀËø¼ì²âºÍ»Ö¸´
µÚ¶þÖÖ¼¼ÊõÊÇËÀËøµÄ¼ì²âºÍ»Ö¸´¡£ÕâÖÖ½â¾ö·½Ê½²»»á³¢ÊÔÈ¥×èÖ¹ËÀËøµÄ³öÏÖ¡£Ïà·´£¬ÕâÖÖ½â¾ö·½°¸»áÏ£ÍûËÀËø¾¡¿ÉÄܵijöÏÖ£¬ÔÚ¼à²âµ½ËÀËø³öÏÖºó£¬¶ÔÆä½øÐлָ´¡£ÏÂÃæÎÒÃǾÍÀ´Ì½ÌÖÒ»ÏÂËÀËøµÄ¼ì²âºÍ»Ö¸´µÄ¼¸ÖÖ·½Ê½
ÿÖÖÀàÐÍÒ»¸ö×ÊÔ´µÄËÀËø¼ì²â·½Ê½
ÿÖÖ×ÊÔ´ÀàÐͶ¼ÓÐÒ»¸ö×ÊÔ´ÊÇʲôÒâ˼£¿ÎÒÃǾ³£Ìáµ½µÄ´òÓ¡»ú¾ÍÊÇÕâÑùµÄ£¬×ÊÔ´Ö»ÓдòÓ¡»ú£¬µ«ÊÇÉ豸¶¼²»»á³¬¹ýÒ»¸ö¡£
¿ÉÒÔͨ¹ý¹¹ÔìÒ»ÕÅ×ÊÔ´·ÖÅä±íÀ´¼ì²âÕâÖÖ´íÎ󣬱ÈÈçÎÒÃÇÉÏÃæÌáµ½µÄ

Èç¹ûÕâÕÅͼ°üº¬ÁËÒ»¸ö»òÒ»¸öÒÔÉϵĻ·£¬ÄÇôËÀËø¾Í´æÔÚ£¬´¦ÓÚÕâ¸ö»·ÖÐÈÎÒâÒ»¸ö½ø³Ì¶¼ÊÇËÀËøµÄ½ø³Ì¡£
ÿÖÖÀàÐͶà¸ö×ÊÔ´µÄËÀËø¼ì²â·½Ê½
Èç¹ûÓжàÖÖÏàͬµÄ×ÊÔ´´æÔÚ£¬¾ÍÐèÒª²ÉÓÃÁíÒ»ÖÖ·½·¨À´¼ì²âËÀËø¡£¿ÉÒÔͨ¹ý¹¹ÔìÒ»¸ö¾ØÕóÀ´¼ì²â´Ó P1 ->
Pn Õâ n ¸ö½ø³ÌÖеÄËÀËø¡£
ÏÖÔÚÎÒÃÇÌṩһÖÖ»ùÓÚ¾ØÕóµÄËã·¨À´¼ì²â´Ó P1 µ½ Pn Õâ n ¸ö½ø³ÌÖеÄËÀËø¡£¼ÙÉè×ÊÔ´ÀàÐÍΪ m£¬E1
´ú±í×ÊÔ´ÀàÐÍ1£¬E2 ±íʾ×ÊÔ´ÀàÐÍ 2 £¬Ei ´ú±í×ÊÔ´ÀàÐÍ i (1 <= i <=
m)¡£E ±íʾµÄÊÇ ÏÖÓÐ×ÊÔ´ÏòÁ¿(existing resource vector)£¬´ú±íÿÖÖÒÑ´æÔÚµÄ×ÊÔ´×ÜÊý¡£
ÏÖÔÚÎÒÃǾÍÐèÒª¹¹ÔìÁ½¸öÊý×飺C ±íʾµÄÊǵ±Ç°·ÖÅ侨Õó(current allocation matrix)
£¬R ±íʾµÄÊÇ ÇëÇó¾ØÕó(request matrix)¡£Ci ±íʾµÄÊÇ Pi ³ÖÓÐÿһÖÖÀàÐÍ×ÊÔ´µÄ×ÊÔ´Êý¡£ËùÒÔ£¬Cij
±íʾ Pi ³ÖÓÐ×ÊÔ´ j µÄÊýÁ¿¡£Rij ±íʾ Pi ËùÐèÒª»ñµÃµÄ×ÊÔ´ j µÄÊýÁ¿

Ò»°ãÀ´Ëµ£¬ÒÑ·ÖÅä×ÊÔ´ j µÄÊýÁ¿¼ÓÆðÀ´ÔÙºÍËùÓпɹ©Ê¹ÓõÄ×ÊÔ´ÊýÏà¼Ó = ¸ÃÀà×ÊÔ´µÄ×ÜÊý¡£
ËÀËøµÄ¼ì²â¾ÍÊÇ»ùÓÚÏòÁ¿µÄ±È½Ï¡£Ã¿¸ö½ø³ÌÆð³õ¶¼ÊÇûÓб»±ê¼Ç¹ýµÄ£¬Ëã·¨»á¿ªÊ¼¶Ô½ø³Ì×ö±ê¼Ç£¬½ø³Ì±»±ê¼Çºó˵Ã÷½ø³Ì±»Ö´ÐÐÁË£¬²»»á½øÈëËÀËø£¬µ±Ëã·¨½áÊøÊ±£¬ÈκÎûÓб»±ê¼Ç¹ýµÄ½ø³Ì¶¼»á±»Åж¨ÎªËÀËø½ø³Ì¡£
ÉÏÃæÎÒÃÇ̽ÌÖÁËÁ½ÖÖ¼ì²âËÀËøµÄ·½Ê½£¬ÄÇôÏÖÔÚÄãÖªµÀÔõô¼ì²âºó£¬ÄãºÎʱȥ×öËÀËø¼ì²âÄØ£¿Ò»°ãÀ´Ëµ£¬ÓÐÁ½¸ö¿¼Á¿±ê×¼£º
ÿµ±ÓÐ×ÊÔ´ÇëÇóʱ¾ÍÈ¥¼ì²â£¬ÕâÖÖ·½Ê½»áÕ¼Óðº¹óµÄ CPU ʱ¼ä¡£
ÿ¸ô k ·ÖÖÓ¼ì²âÒ»´Î£¬»òÕßµ± CPU ʹÓÃÂʽµµÍµ½Ä³¸ö±ê×¼ÏÂÈ¥¼ì²â¡£¿¼Âǵ½ CPU ЧÂʵÄÔÒò£¬Èç¹ûËÀËø½ø³Ì´ïµ½Ò»¶¨ÊýÁ¿£¬¾ÍûÓжàÉÙ½ø³Ì¿ÉÒÔÔËÐУ¬ËùÒÔ
CPU »á¾³£¿ÕÏС£
´ÓËÀËøÖлָ´
ÉÏÃæÎÒÃÇ̽ÌÖÁËÈçºÎ¼ì²â½ø³ÌËÀËø£¬ÎÒÃÇ×îÖÕµÄÄ¿µÄ¿Ï¶¨ÊÇÏëÈóÌÐòÄܹ»Õý³£µÄÔËÐÐÏÂÈ¥£¬ËùÒÔÕë¶Ô¼ì²â³öÀ´µÄËÀËø£¬ÎÒÃÇÒª¶ÔÆä½øÐлָ´£¬ÏÂÃæÎÒÃÇ»á̽ÌÖ¼¸ÖÖËÀËøµÄ»Ö¸´·½Ê½
ͨ¹ýÇÀÕ¼½øÐлָ´
ÔÚijЩÇé¿öÏ£¬¿ÉÄÜ»áÁÙʱ½«Ä³¸ö×ÊÔ´´ÓËüµÄ³ÖÓÐÕß×ªÒÆµ½ÁíÒ»¸ö½ø³Ì¡£±ÈÈçÔÚ²»Í¨ÖªÔ½ø³ÌµÄÇé¿öÏ£¬½«Ä³¸ö×ÊÔ´´Ó½ø³ÌÖÐÇ¿ÖÆÈ¡×߸øÆäËû½ø³ÌʹÓã¬Ê¹ÓÃÍêºóÓÖËͻء£ÕâÖÖ»Ö¸´·½Ê½Ò»°ã±È½ÏÀ§ÄѶøÇÒÓÐЩ¼òµ¥´Ö±©£¬²¢²»¿ÉÈ¡¡£
ͨ¹ý»Ø¹ö½øÐлָ´
Èç¹ûϵͳÉè¼ÆÕߺͻúÆ÷²Ù×÷Ô±ÖªµÀÓпÉÄÜ·¢ÉúËÀËø£¬ÄÇô¾Í¿ÉÒÔ¶¨ÆÚ¼ì²éÁ÷³Ì¡£½ø³ÌµÄ¼ì²âµãÒâζ׎ø³ÌµÄ״̬¿ÉÒÔ±»Ð´Èëµ½ÎļþÒÔ±ãºóÃæ½øÐлָ´¡£¼ì²âµã²»½ö°üº¬´æ´¢Ó³Ïñ(memory
image)£¬»¹°üº¬×ÊԴ״̬(resource state)¡£Ò»ÖÖ¸üÓÐЧµÄ½â¾ö·½Ê½ÊDz»Òª¸²¸ÇÔÓеļì²âµã£¬¶øÊÇÿ³öÏÖÒ»¸ö¼ì²âµã¶¼Òª°ÑËüдÈëµ½ÎļþÖУ¬ÕâÑùµ±½ø³ÌÖ´ÐÐʱ£¬¾Í»áÓÐһϵÁеļì²éµãÎļþ±»ÀÛ»ýÆðÀ´¡£
ΪÁ˽øÐлָ´£¬Òª´ÓÉÏÒ»¸ö½ÏÔçµÄ¼ì²éµãÉÏ¿ªÊ¼£¬ÕâÑùËùÐèÒª×ÊÔ´µÄ½ø³Ì»á»Ø¹öµ½ÉÏÒ»¸öʱ¼äµã£¬ÔÚÕâ¸öʱ¼äµãÉÏ£¬ËÀËø½ø³Ì»¹Ã»ÓлñÈ¡ËùÐèÒªµÄ×ÊÔ´£¬¿ÉÒÔÔÚ´Ëʱ¶ÔÆä½øÐÐ×ÊÔ´·ÖÅä¡£
ɱËÀ½ø³Ì»Ö¸´
×î¼òµ¥ÓÐЧµÄ½â¾ö·½°¸ÊÇÖ±½ÓɱËÀÒ»¸öËÀËø½ø³Ì¡£µ«ÊÇɱËÀÒ»¸ö½ø³Ì¿ÉÄÜÕÕÑùÐв»Í¨£¬Õâʱºò¾ÍÐèҪɱËÀ±ðµÄ×ÊÔ´½øÐлָ´¡£
ÁíÍâÒ»ÖÖ·½Ê½ÊÇÑ¡ÔñÒ»¸ö»·ÍâµÄ½ø³Ì×÷ΪÎþÉüÆ·À´ÊͷŽø³Ì×ÊÔ´¡£
ËÀËø±ÜÃâ
ÎÒÃÇÉÏÃæÌÖÂÛµÄÊÇÈçºÎ¼ì²â³öÏÖËÀËøºÍÈçºÎ»Ö¸´ËÀËø£¬ÏÂÃæÎÒÃÇ̽ÌÖ¼¸ÖÖ¹æ±ÜËÀËøµÄ·½Ê½
µ¥¸ö×ÊÔ´µÄÒøÐмÒËã·¨
ÒøÐмÒËã·¨ÊÇ Dijkstra ÔÚ 1965 ÄêÌá³öµÄÒ»ÖÖµ÷¶ÈËã·¨£¬Ëü±¾ÉíÊÇÒ»ÖÖËÀËøµÄµ÷¶ÈËã·¨¡£ËüµÄÄ£ÐÍÊÇ»ùÓÚÒ»¸ö³ÇÕòÖеÄÒøÐмң¬ÒøÐмÒÏò³ÇÕòÖеĿͻ§³ÐŵÁËÒ»¶¨ÊýÁ¿µÄ´û¿î¶î¶È¡£Ëã·¨Òª×öµÄ¾ÍÊÇÅжÏÇëÇóÊÇ·ñ»á½øÈëÒ»ÖÖ²»°²È«µÄ״̬¡£Èç¹ûÊÇ£¬¾Í¾Ü¾øÇëÇó£¬Èç¹ûÇëÇóºóϵͳÊǰ²È«µÄ£¬¾Í½ÓÊܸÃÇëÇó¡£
ÀàËÆµÄ£¬»¹Óжà¸ö×ÊÔ´µÄÒøÐмÒËã·¨£¬¶ÁÕß¿ÉÒÔ×ÔÐÐÁ˽⡣
ÆÆ»µËÀËø
ËÀËø±¾ÖÊÉÏÊÇÎÞ·¨±ÜÃâµÄ£¬ÒòΪËüÐèÒª»ñµÃδ֪µÄ×ÊÔ´ºÍÇëÇ󣬵«ÊÇËÀËøÊÇÂú×ãËĸöÌõ¼þºó²Å³öÏֵģ¬ËüÃÇ·Ö±ðÊÇ
»¥³â
±£³ÖºÍµÈ´ý
²»¿ÉÇÀÕ¼
Ñ»·µÈ´ý
ÎÒÃÇ·Ö±ð¶ÔÕâËĸöÌõ¼þ½øÐÐÌÖÂÛ£¬°´ÀíËµÆÆ»µÆäÖеÄÈÎÒâÒ»¸öÌõ¼þ¾ÍÄܹ»ÆÆ»µËÀËø
ÆÆ»µ»¥³âÌõ¼þ
ÎÒÃÇÊ×ÏÈ¿¼ÂǵľÍÊÇ¡¸ÆÆ»µ»¥³âʹÓÃÌõ¼þ¡¹¡£Èç¹û×ÊÔ´²»±»Ò»¸ö½ø³Ì¶ÀÕ¼£¬ÄÇôËÀËø¿Ï¶¨²»»á²úÉú¡£Èç¹ûÁ½¸ö´òÓ¡»úͬʱʹÓÃÒ»¸ö×ÊÔ´»áÔì³É»ìÂÒ£¬´òÓ¡»úµÄ½â¾ö·½Ê½ÊÇʹÓÃ
¼ÙÍÑ»ú´òÓ¡»ú(spooling printer) £¬ÕâÏî¼¼Êõ¿ÉÒÔÔÊÐí¶à¸ö½ø³Ìͬʱ²úÉúÊä³ö£¬ÔÚÕâÖÖÄ£ÐÍÖУ¬Êµ¼ÊÇëÇó´òÓ¡»úµÄΨһ½ø³ÌÊÇ´òÓ¡»úÊØ»¤½ø³Ì£¬Ò²³ÆÎªºǫ́½ø³Ì¡£ºǫ́½ø³Ì²»»áÇëÇóÆäËû×ÊÔ´¡£ÎÒÃÇ¿ÉÒÔÏû³ý´òÓ¡»úµÄËÀËø¡£
ºǫ́½ø³Ìͨ³£±»±àдΪÄܹ»Êä³öÍêÕûµÄÎļþºó²ÅÄÜ´òÓ¡£¬¼ÙÈçÁ½¸ö½ø³Ì¶¼Õ¼ÓÃÁ˼ÙÍÑ»ú¿Õ¼äµÄÒ»°ë£¬¶øÕâÁ½¸ö½ø³Ì¶¼Ã»ÓÐÍê³ÉÈ«²¿µÄÊä³ö£¬¾Í»áµ¼ÖÂËÀËø¡£
Òò´Ë£¬¾¡Á¿×öµ½¾¡¿ÉÄÜÉٵĽø³Ì¿ÉÒÔÇëÇó×ÊÔ´¡£
ÆÆ»µ±£³ÖµÈ´ýµÄÌõ¼þ
µÚ¶þÖÖ·½Ê½ÊÇÈç¹ûÎÒÃÇÄÜ×èÖ¹³ÖÓÐ×ÊÔ´µÄ½ø³ÌÇëÇóÆäËû×ÊÔ´£¬ÎÒÃǾÍÄܹ»Ïû³ýËÀËø¡£Ò»ÖÖʵÏÖ·½Ê½ÊÇÈÃËùÓеĽø³Ì¿ªÊ¼Ö´ÐÐǰÇëÇóÈ«²¿µÄ×ÊÔ´¡£Èç¹ûËùÐèµÄ×ÊÔ´¿ÉÓ㬽ø³Ì»áÍê³É×ÊÔ´µÄ·ÖÅä²¢ÔËÐе½½áÊø¡£Èç¹ûÓÐÈκÎÒ»¸ö×ÊÔ´´¦ÓÚÆµ·±·ÖÅäµÄÇé¿ö£¬ÄÇôûÓзÖÅäµ½×ÊÔ´µÄ½ø³Ì¾Í»áµÈ´ý¡£
ºÜ¶à½ø³Ì¡¸ÎÞ·¨ÔÚÖ´ÐÐÍê³Éǰ¾ÍÖªµÀµ½µ×ÐèÒª¶àÉÙ×ÊÔ´¡¹£¬Èç¹ûÖªµÀµÄ»°£¬¾Í¿ÉÒÔʹÓÃÒøÐмÒËã·¨£»»¹ÓÐÒ»¸öÎÊÌâÊÇÕâÑù¡¸ÎÞ·¨ºÏÀíÓÐЧÀûÓÃ×ÊÔ´¡¹¡£
»¹ÓÐÒ»ÖÖ·½Ê½Êǽø³ÌÔÚÇëÇóÆäËû×ÊԴʱ£¬ÏÈÊÍ·ÅËùÕ¼ÓõÄ×ÊÔ´£¬È»ºóÔÙ³¢ÊÔÒ»´Î»ñȡȫ²¿µÄ×ÊÔ´¡£
ÆÆ»µ²»¿ÉÇÀÕ¼Ìõ¼þ
ÆÆ»µ²»¿ÉÇÀÕ¼Ìõ¼þÒ²ÊÇ¿ÉÒԵġ£¿ÉÒÔͨ¹ýÐéÄ⻯µÄ·½Ê½À´±ÜÃâÕâÖÖÇé¿ö¡£
ÆÆ»µÑ»·µÈ´ýÌõ¼þ
ÏÖÔÚ¾ÍÊ£×îºóÒ»¸öÌõ¼þÁË£¬Ñ»·µÈ´ýÌõ¼þ¿ÉÒÔͨ¹ý¶àÖÖ·½·¨À´ÆÆ»µ¡£Ò»ÖÖ·½Ê½ÊÇÖÆ¶¨Ò»¸ö±ê×¼£¬Ò»¸ö½ø³ÌÔÚÈκÎʱºòÖ»ÄÜʹÓÃÒ»ÖÖ×ÊÔ´¡£Èç¹ûÐèÒªÁíÍâÒ»ÖÖ×ÊÔ´£¬±ØÐëÊͷŵ±Ç°×ÊÔ´¡£¶ÔÓÚÐèÒª½«´óÎļþ´Ó´Å´ø¸´ÖƵ½´òÓ¡»úµÄ¹ý³Ì£¬´ËÏÞÖÆÊDz»¿É½ÓÊܵġ£
ÁíÒ»ÖÖ·½Ê½Êǽ«ËùÓеÄ×ÊԴͳһ±àºÅ£¬ÈçÏÂͼËùʾ

½ø³Ì¿ÉÒÔÔÚÈκÎʱ¼äÌá³öÇëÇ󣬵«ÊÇËùÓеÄÇëÇó¶¼±ØÐë°´ÕÕ×ÊÔ´µÄ˳ÐòÌá³ö¡£Èç¹û°´ÕÕ´Ë·ÖÅ乿ÔòµÄ»°£¬ÄÇô×ÊÔ´·ÖÅäÖ®¼ä²»»á³öÏÖ»·¡£

¾¡¹Üͨ¹ýÕâÖÖ·½Ê½À´Ïû³ýËÀËø£¬µ«ÊDZàºÅµÄ˳Ðò²»¿ÉÄÜÈÃÿ¸ö½ø³Ì¶¼»á½ÓÊÜ¡£
ÆäËûÎÊÌâ
ÏÂÃæÎÒÃÇÀ´Ì½ÌÖÒ»ÏÂÆäËûÎÊÌ⣬°üÀ¨ ¡¸Í¨ÐÅËÀËø¡¢»îËøÊÇʲô¡¢¼¢¶öÎÊÌâºÍÁ½½×¶Î¼ÓËø¡¹
Á½½×¶Î¼ÓËø
ËäÈ»ºÜ¶àÇé¿öÏÂËÀËøµÄ±ÜÃâºÍÔ¤·À¶¼ÄÜ´¦Àí£¬µ«ÊÇЧ¹û²¢²»ºÃ¡£Ëæ×Åʱ¼äµÄÍÆÒÆ£¬Ìá³öÁ˺ܶàÓÅÐãµÄËã·¨ÓÃÀ´´¦ÀíËÀËø¡£ÀýÈçÔÚÊý¾Ý¿âϵͳÖУ¬Ò»¸ö¾³£·¢ÉúµÄ²Ù×÷ÊÇÇëÇóËø×¡Ò»Ð©¼Ç¼£¬È»ºó¸üÐÂËùÓÐËø¶¨µÄ¼Ç¼¡£µ±Í¬Ê±Óжà¸ö½ø³ÌÔËÐÐʱ£¬¾Í»áÓÐËÀËøµÄ·çÏÕ¡£
Ò»ÖÖ½â¾ö·½Ê½ÊÇʹÓà Á½½×¶ÎÌá½»(two-phase locking)¡£¹ËÃû˼Òå·ÖΪÁ½¸ö½×¶Î£¬Ò»½×¶ÎÊǽø³Ì³¢ÊÔÒ»´ÎËø¶¨ËüÐèÒªµÄËùÓмǼ¡£Èç¹û³É¹¦ºó£¬²Å»á¿ªÊ¼µÚ¶þ½×¶Î£¬µÚ¶þ½×¶ÎÊÇÖ´Ðиüв¢ÊÍ·ÅËø¡£µÚÒ»½×¶Î²¢²»×öÕæÕýÓÐÒâÒåµÄ¹¤×÷¡£
Èç¹ûÔÚµÚÒ»½×¶Îij¸ö½ø³ÌËùÐèÒªµÄ¼Ç¼ÒѾ±»¼ÓËø£¬ÄÇô¸Ã½ø³Ì»áÊÍ·ÅËùÓÐËø¶¨µÄ¼Ç¼²¢ÖØÐ¿ªÊ¼µÚÒ»½×¶Î¡£´ÓijÖÖÒâÒåÉÏÀ´Ëµ£¬ÕâÖÖ·½·¨ÀàËÆÓÚÔ¤ÏÈÇëÇóËùÓбØÐèµÄ×ÊÔ´»òÕßÊÇÔÚ½øÐÐһЩ²»¿ÉÄæµÄ²Ù×÷֮ǰÇëÇóËùÓеÄ×ÊÔ´¡£
²»¹ýÔÚÒ»°ãµÄÓ¦Óó¡¾°ÖУ¬Á½½×¶Î¼ÓËøµÄ²ßÂÔ²¢²»Í¨Óá£Èç¹ûÒ»¸ö½ø³ÌȱÉÙ×ÊÔ´¾Í»á°ë;Öжϲ¢ÖØÐ¿ªÊ¼µÄ·½Ê½ÊDz»¿É½ÓÊܵġ£
ͨÐÅËÀËø
ÎÒÃÇÉÏÃæÒ»Ö±ÌÖÂÛµÄÊÇ×ÊÔ´ËÀËø£¬×ÊÔ´ËÀËøÊÇÒ»ÖÖËÀËøÀàÐÍ£¬µ«²¢²»ÊÇΨһÀàÐÍ£¬»¹ÓÐͨÐÅËÀËø£¬Ò²¾ÍÊÇÁ½¸ö»ò¶à¸ö½ø³ÌÔÚ·¢ËÍÏûϢʱ³öÏÖµÄËÀËø¡£½ø³Ì
A ¸ø½ø³Ì B ·¢ÁËÒ»ÌõÏûÏ¢£¬È»ºó½ø³Ì A ×èÈûÖ±µ½½ø³Ì B ·µ»ØÏìÓ¦¡£¼ÙÉèÇëÇóÏûÏ¢¶ªÊ§ÁË£¬ÄÇô½ø³Ì
A ÔÚÒ»Ö±µÈׯظ´£¬½ø³Ì B Ò²»á×èÈûµÈ´ýÇëÇóÏûÏ¢µ½À´£¬Õâʱºò¾Í²úÉúËÀËø¡£
¾¡¹Ü»á²úÉúËÀËø£¬µ«ÊÇÕâ²¢²»ÊÇÒ»¸ö×ÊÔ´ËÀËø£¬ÒòΪ A ²¢Ã»ÓÐÕ¼¾Ý B µÄ×ÊÔ´¡£ÊÂʵÉÏ£¬Í¨ÐÅËÀËø²¢Ã»ÓÐÍêÈ«¿É¼ûµÄ×ÊÔ´¡£¸ù¾ÝËÀËøµÄ¶¨ÒåÀ´Ëµ£ºÃ¿¸ö½ø³ÌÒòΪµÈ´ýÆäËû½ø³ÌÒýÆðµÄʼþ¶ø²úÉú×èÈû£¬Õâ¾ÍÊÇÒ»ÖÖËÀËø¡£Ïà½ÏÓÚ×î³£¼ûµÄͨÐÅËÀËø£¬ÎÒÃǰÑÉÏÃæÕâÖÖÇé¿ö³ÆÎªÍ¨ÐÅËÀËø(communication
deadlock)¡£
ͨÐÅËÀËø²»ÄÜͨ¹ýµ÷¶ÈµÄ·½Ê½À´±ÜÃ⣬µ«ÊÇ¿ÉÒÔʹÓÃͨÐÅÖÐÒ»¸ö·Ç³£ÖØÒªµÄ¸ÅÄîÀ´±ÜÃ⣺³¬Ê±(timeout)¡£ÔÚͨÐŹý³ÌÖУ¬Ö»ÒªÒ»¸öÐÅÏ¢±»·¢³öºó£¬·¢ËÍÕ߾ͻáÆô¶¯Ò»¸ö¶¨Ê±Æ÷£¬¶¨Ê±Æ÷»á¼Ç¼ÏûÏ¢µÄ³¬Ê±Ê±¼ä£¬Èç¹û³¬Ê±Ê±¼äµ½Á˵«ÊÇÏûÏ¢»¹Ã»Óзµ»Ø£¬¾Í»áÈÏΪÏûÏ¢ÒѾ¶ªÊ§²¢ÖØÐ·¢ËÍ£¬Í¨¹ýÕâÖÖ·½Ê½£¬¿ÉÒÔ±ÜÃâͨÐÅËÀËø¡£
µ«ÊDz¢·ÇËùÓÐÍøÂçͨÐÅ·¢ÉúµÄËÀËø¶¼ÊÇͨÐÅËÀËø£¬Ò²´æÔÚ×ÊÔ´ËÀËø£¬ÏÂÃæ¾ÍÊÇÒ»¸öµäÐ͵Ä×ÊÔ´ËÀËø¡£
µ±Ò»¸öÊý¾Ý°ü´ÓÖ÷»ú½øÈë·ÓÉÆ÷ʱ£¬»á±»·ÅÈëÒ»¸ö»º³åÇø£¬È»ºóÔÙ´«Êäµ½ÁíÍâÒ»¸ö·ÓÉÆ÷£¬ÔÙµ½ÁíÒ»¸ö£¬ÒÔ´ËÀàÍÆÖ±µ½Ä¿µÄµØ¡£»º³åÇø¶¼ÊÇ×ÊÔ´²¢ÇÒÊýÁ¿ÓÐÏÞ¡£ÈçÏÂͼËùʾ£¬Ã¿¸ö·ÓÉÆ÷¶¼ÓÐ
10 ¸ö»º³åÇø£¨Êµ¼ÊÉÏÓкࣩܶ¡£

¼ÙÈç·ÓÉÆ÷ A µÄËùÓÐÊý¾ÝÐèÒª·¢Ë͵½ B £¬B µÄËùÓÐÊý¾Ý°üÐèÒª·¢Ë͵½ D£¬È»ºó D µÄËùÓÐÊý¾Ý°üÐèÒª·¢Ë͵½
A ¡£Ã»ÓÐÊý¾Ý°ü¿ÉÒÔÒÆ¶¯£¬ÒòΪÔÚÁíÒ»¶ËûÓлº³åÇø¿ÉÓã¬Õâ¾ÍÊÇÒ»¸öµäÐ͵Ä×ÊÔ´ËÀËø¡£
»îËø
ijЩÇé¿öÏ£¬µ±½ø³ÌÒâʶµ½Ëü²»ÄÜ»ñÈ¡ËùÐèÒªµÄÏÂÒ»¸öËøÊ±£¬¾Í»á³¢ÊÔÀñòµÄÊÍ·ÅÒѾ»ñµÃµÄËø£¬È»ºóµÈ´ý·Ç³£¶ÌµÄʱ¼äÔٴγ¢ÊÔ»ñÈ¡¡£¿ÉÒÔÏëÏñÒ»ÏÂÕâ¸ö³¡¾°£ºµ±Á½¸öÈËÔÚÏÁ·Ïà·êµÄʱºò£¬¶¼Ïë¸ø¶Ô·½È÷£¬ÏàͬµÄ²½µ÷»áµ¼ÖÂË«·½¶¼ÎÞ·¨Ç°½ø¡£
ÏÖÔÚ¼ÙÏëÓÐÒ»¶Ô²¢ÐеĽø³ÌÓõ½ÁËÁ½¸ö×ÊÔ´¡£ËüÃÇ·Ö±ð³¢ÊÔ»ñÈ¡ÁíÒ»¸öËøÊ§°Üºó£¬Á½¸ö½ø³Ì¶¼»áÊÍ·Å×Ô¼º³ÖÓеÄËø£¬ÔٴνøÐг¢ÊÔ£¬Õâ¸ö¹ý³Ì»áÒ»Ö±½øÐÐÖØ¸´¡£ºÜÃ÷ÏÔ£¬Õâ¸ö¹ý³ÌÖÐûÓнø³Ì×èÈû£¬µ«Êǽø³ÌÈÔÈ»²»»áÏòÏÂÖ´ÐУ¬ÕâÖÖ×´¿öÎÒÃdzÆÖ®Îª
»îËø(livelock)¡£
¼¢¶ö
ÓëËÀËøºÍ»îËøµÄÒ»¸ö·Ç³£ÏàËÆµÄÎÊÌâÊÇ ¼¢¶ö(starvvation)¡£ÏëÏóÒ»ÏÂÄãʲôʱºò»á¶ö£¿Ò»¶Îʱ¼ä²»³Ô¶«Î÷ÊDz»ÊÇ»á¶ö£¿¶ÔÓÚ½ø³ÌÀ´½²£¬×îÖØÒªµÄ¾ÍÊÇ×ÊÔ´£¬Èç¹ûÒ»¶Îʱ¼äûÓлñµÃ×ÊÔ´£¬ÄÇô½ø³Ì»á²úÉú¼¢¶ö£¬ÕâЩ½ø³Ì»áÓÀÔ¶µÃ²»µ½·þÎñ¡£
ÎÒÃǼÙÉè´òÓ¡»úµÄ·ÖÅä·½°¸ÊÇÿ´Î¶¼»á·ÖÅ䏸×îСÎļþµÄ½ø³Ì£¬ÄÇôҪ´òÓ¡´óÎļþµÄ½ø³Ì»áÓÀÔ¶µÃ²»µ½·þÎñ£¬µ¼Ö½ø³Ì¼¢¶ö£¬½ø³Ì»áÎÞÏÞÖÆµÄÍÆºó£¬ËäÈ»ËüûÓÐ×èÈû¡£
µ¹ÊǶà´ËÒ»¾Ù£¬²»½öûÓÐÌá¸ßÐÔÄÜ£¬·´¶øÄ¥ËðÁ˹Ì̬ӲÅÌ¡£ËùÒÔË鯬ÕûÀíÖ»»áËõ¶Ì¹Ì̬ӲÅ̵ÄÊÙÃü¡£ |