ËüÃÇÈçͬ·±Ðǵãµã£¬ÔÚϵͳµÄʱ¿ÕÖд©Ëó£¬Ö´ÐÐ×Å´Ó¼òµ¥µÄËãÊõÔËËãµ½¸´ÔÓµÄÍøÂçͨÐÅ¡¢Êý¾Ý´¦ÀíµÈ¸÷ʽ¸÷ÑùµÄÈÎÎñ
Àí½â²¢ÉÆÓÃLinuxÖеĽø³Ì¹ÜÀí»úÖÆ£¬²»½öÊÇϵͳ¹ÜÀíÔ±ÌáÉýϵͳÐÔÄÜ¡¢±£ÕÏÎȶ¨ÐԵĹؼü£¬Ò²ÊÇÿλ¿ª·¢ÕßÉîÈëϵͳµ×²ã¡¢ÓÅ»¯Ó¦ÓÃÐÔÄܵıØÐÞ¿Î
±¾ÎĽ«´Ó½ø³ÌµÄ»ù±¾¸ÅÄî³ö·¢£¬ÉîÈë̽ÌÖLinux½ø³ÌµÄÉúÃüÖÜÆÚ¡¢µ÷¶È²ßÂÔ¡¢Í¨ÐÅ·½Ê½ÒÔ¼°¹ÜÀí¼¼ÇÉ£¬Ö¼ÔÚΪ¶ÁÕß½Ò¿ªLinux½ø³Ì¹ÜÀíµÄÉñÃØÃæÉ´
Ò»¡¢½ø³ÌµÄ»ù±¾¸ÅÄî ½ø³Ì£¬¼ò¶øÑÔÖ®£¬ÊDzÙ×÷ϵͳÖÐÖ´ÐÐÖеijÌÐòʵÀý
Ëü°üº¬Á˳ÌÐò¼ÆÊýÆ÷¡¢¶ÑÕ»¡¢Êý¾Ý¶ÎµÈÖ´ÐиóÌÐòËùÐèµÄËùÓÐ×ÊÔ´
ÿ¸ö½ø³Ì¶¼ÓÐ×Ô¼º¶ÀÁ¢µÄÄÚ´æ¿Õ¼äºÍϵͳ×ÊÔ´£¬Í¨¹ý½ø³ÌID£¨PID£©½øÐÐΨһ±êʶ
½ø³ÌÓë³ÌÐòµÄÇø±ðÔÚÓÚ£¬³ÌÐòÊǾ²Ì¬µÄÖ¸ÁºÏ£¬¶ø½ø³ÌÊÇÕâЩָÁîÔÚÌØ¶¨Êý¾Ý¼¯ÉϵĶ¯Ì¬Ö´Ðйý³Ì
ÔÚLinuxÖУ¬½ø³ÌµÄ¸ÅÄîÔ´ÓÚUnix£¬Ëü²ÉÓÃÁËÒ»ÖÖ³ÆÎª¡°½ø³ÌÊ÷¡±µÄ²ã´Î½á¹¹À´×éÖ¯½ø³Ì
ÿ¸ö½ø³Ì³ýÁË¿ÉÒÔ´´½¨×Ó½ø³ÌÍ⣬»¹ÓÐÒ»¸ö¸¸½ø³Ì
ÕâÖֽṹʹµÃϵͳÄܹ»ÇåÎúµØ×·×ٺ͹ÜÀí½ø³Ì¼äµÄ¹ØÏµ£¬±ãÓÚ×ÊÔ´µÄ·ÖÅäÓë»ØÊÕ
¶þ¡¢½ø³ÌµÄÉúÃüÖÜÆÚ ½ø³ÌµÄÉúÃüÖÜÆÚ´Ó±»´´½¨¿ªÊ¼£¬¾ÀúÔËÐС¢×èÈû¡¢¾ÍÐ÷¡¢ÖÕÖ¹µÈ״̬£¬×îÖÕÓɲÙ×÷ϵͳ»ØÊÕ×ÊÔ´
ÒÔÏÂÊǽø³ÌÉúÃüÖÜÆÚÖеÄÖ÷Òª½×¶Î£º 1.´´½¨£º½ø³Ì¿ÉÒÔͨ¹ýϵͳµ÷ÓÃÈçfork()¡¢`vfork()`»ò`clone()`µÈ´´½¨
`fork()`ÊÇ×î³£Óõķ½Ê½£¬Ëü»á´´½¨Ò»¸öÓ븸½ø³Ì¼¸ºõÍêÈ«ÏàͬµÄ×Ó½ø³Ì£¬³ýÁËPIDºÍ·µ»ØÂëµÈÉÙÊýÐÅÏ¢
2.ÔËÐУº±»µ÷¶ÈÆ÷Ñ¡Öк󣬽ø³Ì½øÈëÔËÐÐ״̬£¬Ö´ÐÐÆäÈÎÎñ
LinuxʹÓö༶·´À¡¶ÓÁе÷¶ÈËã·¨£¨MLFQ£©£¬½áºÏʱ¼äƬÂÖת»úÖÆ£¬¹«Æ½¸ßЧµØ·ÖÅäCPU×ÊÔ´
3.×èÈû£º½ø³ÌÒòµÈ´ýijЩʼþ£¨ÈçI/O²Ù×÷Íê³É¡¢Ðźŵ½´ï£©¶øÎÞ·¨¼ÌÐøÖ´ÐÐʱ£¬»á½øÈë×èÈû״̬
´Ëʱ£¬CPU×ÊÔ´±»ÊͷŸøÆäËû½ø³Ì
4.¾ÍÐ÷£ºµ±×èÈûÌõ¼þÂú×㣬½ø³Ì´Ó×èÈû״̬תΪ¾ÍÐ÷״̬£¬µÈ´ýµ÷¶ÈÆ÷ÔٴηÖÅäCPUʱ¼ä
5.ÖÕÖ¹£º½ø³ÌÍê³ÉÈÎÎñºó£¬Í¨¹ýexit()ϵͳµ÷ÓýøÈëÖÕֹ״̬
´Ëʱ£¬½ø³Ì²¢²»Á¢¼´Ïûʧ£¬¶øÊDZäΪ½©Ê¬×´Ì¬£¨Zombie£©£¬µÈ´ý¸¸½ø³Ì»ØÊÕÆä×ÊÔ´
¸¸½ø³Ìͨ¹ý`wait()`»ò`waitpid()`ϵͳµ÷ÓÃÍê³É×ÊÔ´»ØÊպ󣬽ø³Ì³¹µ×½áÊø
Èý¡¢½ø³Ìµ÷¶È²ßÂÔ LinuxµÄ½ø³Ìµ÷¶ÈÆ÷¸ºÔð¾ö¶¨ºÎʱÒÔ¼°ÒÔºÎÖÖ·½Ê½Ö´Ðнø³Ì£¬ÆäºËÐÄÄ¿±êÊÇ×î´ó»¯CPUÀûÓÃÂÊ£¬Í¬Ê±±£Ö¤Á¼ºÃµÄÏìӦʱ¼äºÍ¹«Æ½ÐÔ
Linux²ÉÓõĶ༶·´À¡¶ÓÁе÷¶ÈËã·¨£¨MLFQ£©½áºÏÁËʱ¼äƬÂÖתºÍÓÅÏȼ¶µ÷¶È£¬¾ßÌåÌØµã°üÀ¨£º - ʱ¼äƬÂÖת£ºÃ¿¸ö½ø³Ì±»·ÖÅäÒ»¸ö¹Ì¶¨µÄʱ¼äƬ£¬Ê±¼äƬÓÃÍêºó£¬¼´Ê¹½ø³ÌδִÐÐÍê±Ï£¬Ò²»á±»ÖÃÓÚ¶ÓÁÐβ²¿£¬µÈ´ýÏÂÒ»ÂÖµ÷¶È
ÕâÈ·±£ÁËËùÓнø³Ì¶¼ÄÜ»ñµÃCPUʱ¼ä£¬±ÜÃâ¼¢¶öÏÖÏó
- ÓÅÏȼ¶Ó붯̬µ÷Õû£º½ø³Ì¸ù¾ÝÆäÐÐΪ£¨ÈçÊÇ·ñƵ·±²úÉúI/O²Ù×÷£©±»¸³Ó費ͬµÄÓÅÏȼ¶
ϵͳ»á¸ù¾Ý½ø³ÌµÄÔËÐÐÇé¿ö¶¯Ì¬µ÷ÕûÆäÓÅÏȼ¶£¬ÒÔÓÅ»¯ÕûÌåÐÔÄÜ
- ½»»¥Ê½Óë·Ç½»»¥Ê½½ø³ÌÇø·Ö£º½»»¥Ê½½ø³Ì£¨ÈçÎı¾±à¼Æ÷£©Í¨³£±»¸³Óè¸ü¸ßµÄÓÅÏȼ¶£¬ÒÔ±£Ö¤Á¼ºÃµÄÓû§ÌåÑé
·Ç½»»¥Ê½½ø³Ì£¨ÈçÅú´¦ÀíÈÎÎñ£©ÔòÏà¶Ô´ÎÒª
ËÄ¡¢½ø³Ì¼äͨÐÅ£¨IPC£© ½ø³Ì¼äͨÐÅÊÇLinuxϵͳÖÐʵÏÖ½ø³ÌÐͬ¹¤×÷µÄÖØÒª»úÖÆ
³£¼ûµÄIPC·½Ê½°üÀ¨£º - ¹ÜµÀ£¨Pipes£©£ºÄäÃû¹ÜµÀÓÃÓÚ¸¸×Ó½ø³Ì¼äµÄµ¥ÏòͨÐÅ£¬¶øÃüÃû¹ÜµÀ£¨FIFO£©ÔòÔÊÐíÎÞÇ×Ôµ¹ØÏµµÄ½ø³Ì¼äͨÐÅ
- ÏûÏ¢¶ÓÁУºÌṩÁËÒ»ÖÖÓÐÐòµÄ¡¢ÀàÐÍ»¯µÄÏûÏ¢´«µÝ»úÖÆ£¬ÔÊÐí½ø³Ì·¢ËͺͽÓÊÕ¾ßÓÐÌØ¶¨ÀàÐ͵ÄÏûÏ¢
- ¹²ÏíÄڴ棺ÔÊÐí¶à¸ö½ø³Ì·ÃÎÊͬһ¿éÎïÀíÄÚ´æÇøÓò£¬ÊÇ×î¿ìµÄIPC·½Ê½£¬µ«ÐèÒª¶îÍâµÄͬ²½»úÖÆÒÔ±ÜÃâÊý¾Ý¾ºÕù
- ÐźÅÁ¿£ºÓÃÓÚ¿ØÖƶԹ²Ïí×ÊÔ´µÄ·ÃÎÊ£¬ÊµÏÖ½ø³Ì¼äµÄ»¥³âºÍͬ²½
- Ì×½Ó×Ö£¨Sockets£©£º²»½öÖ§³ÖÍøÂçͨÐÅ£¬Ò²Ö§³ÖͬһÖ÷»úÉϵĽø³Ì¼äͨÐÅ£¬ÊÇʵÏÖ·Ö²¼Ê½ÏµÍ³ºÍÍøÂç·þÎñµÄ»ù´¡
Îå¡¢½ø³Ì¹ÜÀí¼¼ÇÉ ÓÐЧµÄ½ø³Ì¹ÜÀí¶ÔÓÚά»¤ÏµÍ³ÐÔÄܺÍÎȶ¨ÐÔÖÁ¹ØÖØÒª
ÒÔÏÂÊÇһЩʵÓõĹÜÀí¼¼ÇÉ£º - ¼à¿Ø¹¤¾ß£ºÀûÓÃtop¡¢htop¡¢ps¡¢`vmstat`µÈ¹¤¾ßʵʱ¼à¿ØÏµÍ³×ÊԴʹÓÃÇé¿ö£¬°üÀ¨CPU¡¢ÄÚ´æ¡¢´ÅÅÌI/OµÈ£¬¼°Ê±·¢ÏÖ²¢½â¾öÐÔÄÜÆ¿¾±
- ÓÅÏȼ¶µ÷Õû£ºÍ¨¹ýniceºÍreniceÃüÁîµ÷Õû½ø³ÌµÄÓÅÏȼ¶£¬È·±£¹Ø¼üÈÎÎñ»ñµÃ×ã¹»µÄCPU×ÊÔ´
- ½ø³ÌÖÕÖ¹ÓëÖØÆô£ºÊ¹ÓÃkillÃüÁîÖÕÖ¹Òì³£»ò½©Ê¬½ø³Ì£¬±ØÒªÊ±½áºÏ`killall`ÅúÁ¿²Ù×÷
¶ÔÓÚ·þÎñ½ø³Ì£¬¿Éͨ¹ý`systemctl`»ò`service`ÃüÁî½øÐÐÆô¶¯¡¢Í£Ö¹ºÍÖØÆô
- ×Ô¶¯»¯¹ÜÀí£ºÅäÖÃcrontab¶¨Ê±ÈÎÎñ£¬×Ô¶¯»¯Ö´ÐÐϵͳά»¤½Å±¾£¬ÈçÈÕÖ¾ÇåÀí¡¢×ÊÔ´»ØÊյȣ¬¼õÉÙÈ˹¤¸ÉÔ¤
- ×ÊÔ´ÏÞÖÆ£ºÊ¹ÓÃulimitÃüÁîΪ½ø³ÌÉèÖÃ×ÊԴʹÓÃÉÏÏÞ£¬ÈçCPUʱ¼ä¡¢Îļþ´óС¡¢ÄÚ´æÊ¹Óõȣ¬·ÀÖ¹µ¥¸ö½ø³ÌºÄ¾¡ÏµÍ³×ÊÔ´
½áÓï LinuxÖеĽø³Ì¹ÜÀíÊÇÒ»ÃżÈÉîåäÓÖʵÓõÄѧÎÊ£¬Ëü¹ØºõϵͳµÄÿһ¸öϸ΢¶¯×÷£¬Ó°Ïì×Å´Ó¸öÈ˹¤×÷Õ¾µ½´óÐÍÊý¾ÝÖÐÐĵÄËùÓÐÓ¦Óó¡¾°
ÕÆÎÕ½ø³ÌµÄ»ù±¾¸ÅÄî¡¢ÉúÃüÖÜÆÚ¡¢µ÷¶È²ßÂÔ¡¢Í¨ÐÅ·½Ê½ÒÔ¼°¹ÜÀí¼¼ÇÉ£¬²»½öÄܹ»°ïÖúÎÒÃǸüºÃµØ