Ëü²»½ö¹ØºõϵͳµÄÆô¶¯ºÍ³õʼ»¯£¬¸üÉîÈ뵽ϵͳµÄ×ÊÔ´¹ÜÀí¡¢ÈÎÎñµ÷¶ÈºÍ½ø³Ì¼äͨÐŵȶà¸ö²ãÃæ
±¾ÎÄÖ¼ÔÚÈ«Ãæ½âÎöLinuxÆô¶¯½ø³ÌµÄ¹ý³Ì£¬½ÒʾÆä±³ºóµÄ¸´ÔÓ»úÖÆ£¬ÒÔ¼°ÈçºÎͨ¹ý¸ßЧ¹ÜÀí½ø³ÌÀ´ÌáÉýϵͳÐÔÄÜ
Ò»¡¢LinuxÆô¶¯½ø³ÌµÄ¸ÅÊö LinuxϵͳµÄÆô¶¯½ø³Ì£¬Í¨³£±»³ÆÎª¡°Æô¶¯ÐòÁС±»ò¡°Òýµ¼¹ý³Ì¡±£¬ÊÇ´Óϵͳ¿ª»úµ½Óû§µÇ¼×ÀÃæµÄÕû¸öÁ÷³Ì
ÕâÒ»Á÷³ÌÉæ¼°¶à¸ö½×¶Î£¬°üÀ¨Ó²¼þ×Լ죨POST£©¡¢¼ÓÔØÒýµ¼¼ÓÔØ³ÌÐò£¨Bootloader£©¡¢¹ÒÔØ¸ùÎļþϵͳ¡¢Æô¶¯init½ø³Ì¡¢ÒÔ¼°×îÖÕµÄÓû§µÇ¼
ÿһ²½¶¼½ôÃÜÏàÁ¬£¬¹²Í¬¹¹³ÉÁËLinuxϵͳ´Ó¾²Ö¹µ½»îÔ¾µÄ»ªÀö±äÉí
¶þ¡¢Æô¶¯½ø³ÌµÄÏêϸ½×¶Î 1. Ó²¼þ×Լ죨POST£© µ±°´Ï¼ÆËã»úµçÔ´°´Å¥Ê±£¬ÏµÍ³Ê×ÏȽøÐÐÓ²¼þ×Ô¼ì
ÕâÒ»²½ÖèÓɼÆËã»úµÄBIOS£¨»ù±¾ÊäÈëÊä³öϵͳ£©»òUEFI£¨Í³Ò»¿ÉÀ©Õ¹¹Ì¼þ½Ó¿Ú£©¸ºÔð£¬ËüÃÇ»á¼ì²éÓ²¼þ×é¼þµÄ״̬£¬È·±£Ò»ÇÐÕý³£ºó£¬½«¿ØÖÆÈ¨½»¸øÒýµ¼¼ÓÔØ³ÌÐò
2. ¼ÓÔØÒýµ¼¼ÓÔØ³ÌÐò£¨Bootloader£© Òýµ¼¼ÓÔØ³ÌÐòÊÇ´æ´¢ÔÚÓ²ÅÌ»ò¹Ì̬ӲÅÌÉϵÄÒ»¸öС³ÌÐò£¬¸ºÔð¼ÓÔØÄں˵½ÄÚ´æÖÐ
ÔÚLinuxϵͳÖУ¬³£¼ûµÄÒýµ¼¼ÓÔØ³ÌÐò°üÀ¨GRUB£¨GRand Unified Bootloader£©ºÍLILO£¨Linux Loader£©
GRUB²»½öÖ§³Ö¶à²Ù×÷ϵͳÒýµ¼£¬»¹ÌṩÁ˷ḻµÄÅäÖÃÑ¡ÏÔÊÐíÓû§ÔÚÆô¶¯Ê±Ñ¡ÔñÄں˰汾¡¢ÐÞ¸ÄÆô¶¯²ÎÊýµÈ
3. Äں˳õʼ»¯ Ò»µ©Äں˱»¼ÓÔØµ½ÄÚ´æÖУ¬Ëü½«¿ªÊ¼³õʼ»¯¹ý³Ì
Õâ°üÀ¨ÉèÖÃÓ²¼þ¡¢ÅäÖÃÄÚ´æ¹ÜÀí¡¢³õʼ»¯É豸Çý¶¯³ÌÐòµÈ
Äں˻¹¸ºÔðÆô¶¯µÚÒ»¸öÓû§¿Õ¼ä½ø³Ì£¬¼´init½ø³Ì£¬ÕâÊÇËùÓÐÓû§½ø³ÌµÄ׿ÏÈ
4. ¹ÒÔØ¸ùÎļþϵͳ ÔÚÄں˳õʼ»¯Íê³Éºó£¬Ëü±ØÐëÕÒµ½²¢¹ÒÔØ¸ùÎļþϵͳ£¨/£©
¸ùÎļþϵͳ°üº¬ÁËLinuxϵͳÔËÐÐËùÐèµÄËùÓйؼüÎļþºÍĿ¼£¬°üÀ¨ÏµÍ³ÅäÖÃÎļþ¡¢¿âÎļþ¡¢ÒÔ¼°Óû§Êý¾Ý
¹ÒÔØ¸ùÎļþϵͳºó£¬ÏµÍ³²ÅÄܼÌÐøÆô¶¯init½ø³Ì
5. Æô¶¯init½ø³Ì init½ø³Ì£¨Ò²³ÆÎªPID 1£¬¼´½ø³Ì±êʶ·ûΪ1µÄ½ø³Ì£©ÊÇLinuxϵͳµÄµÚÒ»¸öÓû§¿Õ¼ä½ø³Ì
ËüµÄÈÎÎñÊÇÆô¶¯ÏµÍ³ÉÏµÄÆäËû½ø³Ì£¬²¢¹ÜÀíϵͳÔËÐÐʱµÄ¸÷ÖÖÈÎÎñ
ÔÚÔçÆÚµÄLinuxϵͳÖУ¬init½ø³Ìͨ³£ÓÉSysVinit»òBSD init¹ÜÀí£¬µ«ÏÖ´úLinux·¢Ðаæ¶à²ÉÓøüÏȽøµÄ³õʼ»¯ÏµÍ³£¬Èçsystemd»òUpstart
systemd²»½öÌṩÁ˸ü¿ìµÄÆô¶¯ËÙ¶È£¬»¹ÔöÇ¿ÁËϵͳµÄ²¢Ðд¦ÀíÄÜÁ¦£¬Ê¹µÃ¶à¸ö·þÎñ¿ÉÒÔͬʱÆô¶¯£¬´ó´óÌá¸ßÁËϵͳÆô¶¯Ð§ÂÊ
´ËÍ⣬systemd»¹ÒýÈëÁËÄ¿±ê£¨targets£©ºÍµ¥Ôª£¨units£©µÄ¸ÅÄʹµÃ·þÎñ¹ÜÀí¸ü¼ÓÁé»îºÍÇ¿´ó
6. ÔËÐм¶±ðÓëÓû§µÇ¼ ÔÚinit½ø³ÌÆô¶¯ºó£¬Ëü»á¸ù¾ÝϵͳµÄÔËÐм¶±ð£¨runlevel£©À´Æô¶¯ÏàÓ¦µÄ·þÎñºÍÊØ»¤½ø³Ì
ÔËÐм¶±ð¶¨ÒåÁËϵͳµÄ²Ù×÷ģʽ£¬Èç¶àÓû§Ä£Ê½¡¢µ¥Óû§Ä£Ê½¡¢Í¼ÐνçÃæÄ£Ê½µÈ
Ëæ×ÅsystemdµÄÆÕ¼°£¬´«Í³µÄÔËÐм¶±ð¸ÅÄîÖð½¥±»Ä¿±ê£¨targets£©ËùÈ¡´ú£¬Èçmulti-user.target¡¢graphical.targetµÈ
µ±Óû§µÇ¼µ½ÏµÍ³Ê±£¬ÎÞÂÛÊÇͨ¹ýÃüÁîÐнçÃæ»¹ÊÇͼÐνçÃæ£¬¶¼»áÆô¶¯Ò»¸öshell½ø³Ì£¨Èçbash¡¢zshµÈ£©£¬ÎªÓû§Ìṩ½»»¥Ê½µÄÃüÁîÖ´Ðл·¾³
ÖÁ´Ë£¬LinuxϵͳµÄÆô¶¯¹ý³Ì²ÅËãÕæÕýÍê³É
Èý¡¢½ø³Ì¹ÜÀíÓëÓÅ»¯ Æô¶¯½ø³ÌÖ»ÊÇLinuxϵͳ¹ÜÀíµÄÒ»²¿·Ö£¬½ø³Ì¹ÜÀíͬÑùÖØÒª
¸ßЧµÄ½ø³Ì¹ÜÀí²»½ö¿ÉÒÔÌá¸ßϵͳÐÔÄÜ£¬»¹ÄÜÈ·±£ÏµÍ³µÄÎȶ¨ÐԺͰ²È«ÐÔ
1. ½ø³Ì²é¿´Óë¼à¿Ø LinuxÌṩÁ˶àÖÖ¹¤¾ßÀ´²é¿´ºÍ¼à¿Ø½ø³Ì״̬£¬Èçps¡¢top¡¢htop¡¢vmstatµÈ
ÕâЩ¹¤¾ß¿ÉÒÔ°ïÖúϵͳ¹ÜÀíÔ±Á˽⵱ǰϵͳµÄ½ø³Ì·Ö²¼¡¢CPUºÍÄÚ´æÊ¹ÓÃÇé¿ö£¬ÒÔ¼°ÏµÍ³¸ºÔصÈÐÅÏ¢
2. ½ø³ÌÓÅÏȼ¶Óëµ÷¶È LinuxʹÓÃniceºÍreniceÃüÁîÀ´µ÷Õû½ø³ÌµÄÓÅÏȼ¶£¨Ò²³ÆÎªniceÖµ£©
niceÖµ·¶Î§´Ó-20£¨×î¸ßÓÅÏȼ¶£©µ½19£¨×îµÍÓÅÏȼ¶£©
ͨ¹ýµ÷ÕûniceÖµ£¬ÏµÍ³¹ÜÀíÔ±¿ÉÒÔÓÅ»¯ÏµÍ³×ÊÔ´µÄʹÓã¬È·±£¹Ø¼üÈÎÎñ»ñµÃ×ã¹»µÄCPUʱ¼ä
´ËÍ⣬LinuxµÄµ÷¶ÈÆ÷£¨scheduler£©¸ºÔð¾ö¶¨Äĸö½ø³ÌÓ¦¸ÃÔÚÏÂÒ»¸öʱ¼äƬÄÚÔËÐÐ
ÏÖ´úLinuxÄÚºËÖеÄCFS£¨Completely Fair Scheduler£©ÊµÏÖÁ˹«Æ½µ÷¶È²ßÂÔ£¬È·±£ËùÓнø³Ì¶¼ÄÜ»ñµÃºÏÀíµÄCPUʱ¼ä
3. ½ø³Ì¼äͨÐÅ£¨IPC£© LinuxÖ§³Ö¶àÖÖ½ø³Ì¼äͨÐÅ»úÖÆ£¬Èç¹ÜµÀ£¨pipe£©¡¢ÏûÏ¢¶ÓÁУ¨message queue£©¡¢¹²ÏíÄڴ棨shared memory£©ºÍÐźÅÁ¿£¨semaphore£©µÈ
ÕâЩ»úÖÆÊ¹µÃ½ø³ÌÖ®¼ä¿ÉÒÔ¸ßЧµØ½»»»Êý¾Ý£¬ÊµÏÖÐͬ¹¤×÷
4. ½ø³Ì¹ÜÀí²ßÂÔ ÎªÁËÓÅ»¯ÏµÍ³ÐÔÄÜ£¬ÏµÍ³¹ÜÀíÔ±¿ÉÒÔ²ÉÈ¡ÒÔϲßÂÔ£º - ÏÞÖÆ×ÊԴʹÓãºÊ¹ÓÃulimitÃüÁîÏÞÖÆ½ø³Ì¿ÉÒÔʹÓõÄ×ÊÔ´£¬ÈçCPUʱ¼ä¡¢ÄÚ´æ´óС¡¢ÎļþÃèÊö·ûÊýÁ¿µÈ
- ʹÓÃcgroupºÍnamespace£ºcgroup£¨¿ØÖÆ×飩ÔÊÐíϵͳ¹ÜÀíÔ±½«½ø³Ì·Ö×飬²¢ÎªÃ¿¸ö×é·ÖÅä×ÊÔ´ÏÞÖÆ
namespace£¨ÃüÃû¿Õ¼ä£©ÔòÌṩÁ˽ø³Ì¸ôÀëµÄ»úÖÆ£¬Ê¹µÃ²»Í¬ÃüÃû¿Õ¼äÄڵĽø³ÌÏ໥¶ÀÁ¢
- ¶¨ÆÚÇåÀí½©Ê¬½ø³Ì£º½©Ê¬½ø³ÌÊÇÖ¸ÒѾÖÕÖ¹µ«ÈÔÕ¼ÓÃϵͳ×ÊÔ´µÄ½ø³Ì
ʹÓÃÈç`ps aux | grep Z`µÄÃüÁî¿ÉÒÔ²éÕÒ½©Ê¬½ø³Ì£¬²¢Í¨¹ýÆä¸¸½ø³Ì»òÖØÆôϵͳÀ´ÇåÀíËüÃÇ
ËÄ¡¢½áÓï Æô¶¯½ø³ÌÊÇLinuxϵͳÔËÐÐµÄÆðµã£¬Ò²ÊÇϵͳ¹ÜÀíµÄ¹Ø¼ü
ͨ¹ýÉîÈëÀí½âLi