ÄÁÅÙÃ÷»ó¼¼º¸±â

±×¸²À¸·Î ¹è¿ì´Â ¸®´ª½º ±¸Á¶
±×¸²À¸·Î ¹è¿ì´Â ¸®´ª½º ±¸Á¶
  • ÀúÀÚŸÄÉ¿ìÄ¡ »çÅä·ç Àú/¼­¼öȯ ¿ª
  • ÃâÆÇ»çÇѺû¹Ìµð¾î
  • ÃâÆÇÀÏ2023-09-11
  • µî·ÏÀÏ2023-11-28
º¸À¯ 3, ´ëÃâ 1, ¿¹¾à 0, ´©Àû´ëÃâ 15, ´©Àû¿¹¾à 1

Ã¥¼Ò°³

¼±¹è°¡ ¿·¿¡¼­ ÇϳªÇϳª ¾Ë·ÁÁÖµí Ä£ÀýÈ÷ ¼³¸íÇØÁÖ´Â
½Ç½À°ú ±×¸²À¸·Î ¹è¿ì´Â ¸®´ª½º Áö½ÄÀÇ ¸ðµç °Í


* Go ¾ð¾î¿Í Python, Bash ½ºÅ©¸³Æ® ½Ç½À ÄÚµå Á¦°ø
* ÀÌ µµ¼­´Â ¡º½Ç½À°ú ±×¸²À¸·Î ¹è¿ì´Â ¸®´ª½º ±¸Á¶¡»ÀÇ °³Á¤ÆÇÀÔ´Ï´Ù.

¸®´ª½º Ä¿³Î Ã¥ÀÇ µÎ²²¿Í ±íÀÌ¿¡ Áú·Á Áß°£¿¡ Æ÷±âÇß´ø °æÇèÀÌ ÀÖ´Â ¿£Áö´Ï¾î¶ó¸é, ¡º±×¸²À¸·Î ¹è¿ì´Â ¸®´ª½º ±¸Á¶¡»·Î ´Ù½Ã Çѹø µµÀüÇØ º¸±æ ÃßõÇÕ´Ï´Ù. ÀÌ Ã¥Àº ÄÄÇ»ÅÍ ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â OS³ª Çϵå¿þ¾î¸¦ Á÷Á¢ µ¿ÀÛÇØ º¸¸ç ¸®´ª½º °³³äÀ» Á¾ÇÕÀûÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ´Ù¾çÇÑ ½Ç½ÀÀ» Á¦°øÇÕ´Ï´Ù. ¶ÇÇÑ ¸®´ª½º°¡ ¹«¾ùÀÎÁö, ¸®´ª½º¿¡ Æ÷ÇÔµÈ ´Ù¾çÇÑ ÇÁ·Î±×·¥¿¡´Â ¾î¶°ÇÑ °ÍÀÌ ÀÖ´ÂÁö, ¸®´ª½º ÇÁ·Î±×·¥ÀÇ Çʿ伺 µîÀ» ±×¸²À¸·Î Ä£ÀýÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.

Go, PythonÀ¸·Î ÀÛ¼ºµÈ ½Ç½À ÄÚµå¿Í ±× ½ÇÇà °á°ú¸¦ ±×·¡ÇÁ·Î ³ªÅ¸³»¾î ¸®´ª½ºÀÇ È帧À» ½±°Ô ÆľÇÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÝ´Ï´Ù. ÇÁ·Î¼¼½º °ü¸®, ¸Þ¸ð¸® °ü¸®»Ó¸¸ ¾Æ´Ï¶ó µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ Æ÷ÇÔÇÑ ÀåÄ¡ Á¢±Ù ¹æ¹ý, Çö´ë ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀ» ´Ù·ç´Â µ¥ ºüÁú ¼ö ¾ø´Â °¡»óÈ­, ÄÁÅ×À̳Ê, cgroup µîÀÇ ³»¿ë±îÁö ´Ù·ì´Ï´Ù. ÀÌ ÇÑ ±ÇÀ¸·Î ¸®´ª½º Áö½ÄÀÇ Àü¹ÝÀûÀÎ ³»¿ë°ú ±âº» °³³äºÎÅÍ ÆÄ°íµé¾î¾ß ºñ·Î¼Ò ¹è¿ï ¼ö ÀÖ´Â ½ÉÈ­ ³»¿ë±îÁö ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. ´Ù¾çÇÑ ±×¸²°ú ½Ç½ÀÀ¸·Î ¸®´ª½º OSÀÇ ÇÙ½É °³³ä°ú ±â¼úÀ» ±íÀÌ ÀÖ°Ô ¹è¿öº¾´Ï´Ù.

Ã¥À» ÅëÇØ OS¿Í Çϵå¿þ¾î¿¡ ´ëÇÑ ÀÌÇصµ¸¦ ³ôÀÌ°í ³ª¸é ´ÙÀ½°ú °°Àº ÀÏÀÌ °¡´ÉÇÕ´Ï´Ù.

- ½Ã½ºÅÛ ¿î¿ë¿¡ È°¿ë
- º¸´Ù ³ªÀº ÇÁ·Î±×·¡¹Ö¿¡ È°¿ë
- º»°ÝÀûÀÎ Ä¿³Î °³¹ß ½ÃÀÛ

ÀúÀÚ¼Ò°³

2005³âºÎÅÍ 2017³â±îÁö ÈÄÁöÂê ÁÖ½Äȸ»ç¿¡¼­ ¿£ÅÍ ÇÁ¶óÀÌÁî ¸®´ª½º, Æ¯È÷ Ä¿³Î °³¹ß°ú Áö¿øÀ» ´ã´çÇÏ¿´´Ù. 2017³â »çÀ̺¸¿ìÁî ÁÖ½Äȸ»ç ±â¼ú °í¹®¿¡ ÃëÀÓÇؼ­ 2018³âºÎÅÍ cybozu.comÀÇ »õ·Î¿î ÀÎÇÁ¶ó ÀúÀå¼Ò °³¹ßÀ» ´ã´çÇÏ°í ÀÖ´Ù.

¸ñÂ÷

CHAPTER 0 ½ÃÀÛÇϸ鼭

CHAPTER 1 ¸®´ª½º °³¿ä

1.1 ÇÁ·Î±×·¥ ¹× ÇÁ·Î¼¼½º
1.2 Ä¿³Î
1.3 ½Ã½ºÅÛ ÄÝ
_½Ã½ºÅÛ ÄݠȣÃâ È®ÀÎÇØ º¸±â
_½Ã½ºÅÛ ÄÝÀ» Ã³¸®Çϴ ½Ã°£ ºñÀ²
Column ¸ð´ÏÅ͸µ, °æ°í ¾Ë¸² ¹× ´ë½Ã º¸µå
_½Ã½ºÅÛ ÄÝ ¼Ò¿ä ½Ã°£ 
1.4 ¶óÀ̺귯¸®
_Ç¥ÁØ C ¶óÀ̺귯¸®
_½Ã½ºÅÛ ÄÝ ·¡ÆÛ ÇÔ¼ö
_Á¤Àû ¶óÀ̺귯¸®¿Í °øÀ¯ ¶óÀ̺귯¸®
Column Á¤Àû ¸µÅ©°¡ µ¹¾Æ¿Ô´Ù

CHAPTER 2 ÇÁ·Î¼¼½º °ü¸®(±âÃÊÆí)

2.1 ÇÁ·Î¼¼½º »ý¼º
_°°Àº ÇÁ·Î¼¼½º¸¦ µÎ °³·Î ºÐ¿­½ÃÅ°´Â fork() ÇÔ¼ö
_´Ù¸¥ ÇÁ·Î±×·¥À» ±âµ¿Çϴ execve() ÇÔ¼ö
_ASLR·Î º¸¾È °­È­
2.2 ÇÁ·Î¼¼½ºÀÇ ºÎ¸ð ÀڽĠ°ü°è
Column fork() ÇÔ¼ö¿Í execve() ÇÔ¼ö ÀÌ¿ÜÀÇ ÇÁ·Î¼¼½º »ý¼º ¹æ¹ý
2.3 ÇÁ·Î¼¼½º »óÅÂ
2.4 ÇÁ·Î¼¼½º Á¾·á
2.5 Á»ºñ ÇÁ·Î¼¼½º¿Í °í¾Æ ÇÁ·Î¼¼½º
2.6 ½Ã±×³Î
Column ¹Ýµå½Ã Á×À̴ SIGKILL ½Ã±×³Î°ú Àý´ë·Î Á×Áö ¾Ê´Â ÇÁ·Î¼¼½º 
2.7 ¼Ð ÀÛ¾÷ °ü¸® ±¸Çö
_¼¼¼Ç
_ÇÁ·Î¼¼½º ±×·ì
2.8 µ¥¸ó

CHAPTER 3 ÇÁ·Î¼¼½º ½ºÄÉÁÙ·¯

3.1 ±âº» Áö½Ä: °æ°ú ½Ã°£°ú »ç¿ë ½Ã°£
3.2 ³í¸® CPU Çϳª¸¸ »ç¿ëÇϴ °æ¿ì
3.3 ³í¸® CPU ¿©·¯ °³¸¦ »ç¿ëÇϴ °æ¿ì
3.4 realº¸´Ù user+sys°¡ Ä¿Áö´Â °æ¿ì
3.5 Å¸ÀÓ ½½¶óÀ̽º
Column Å¸ÀÓ ½½¶óÀ̽º ±¸Á¶ 
3.6 ÄÁÅؽºÆ® ½ºÀ§Ä¡
3.7 Ã³¸® ¼º´É
3.8 ÇÁ·Î±×·¥ º´·Ä ½ÇÇàÀÇ Á߿伺

CHAPTER 4 ¸Þ¸ð¸® °ü¸® ½Ã½ºÅÛ

4.1 ¸Þ¸ð¸® °ü·Ã Á¤º¸ ¼öÁýÇϱâ
_used
_buff/cache
_sar ¸í·É¾î¸¦ »ç¿ëÇؼ­ ¸Þ¸ð¸® °ü·Ã Á¤º¸¸¦ ¼öÁýÇϱâ
4.2 ¸Þ¸ð¸® ÀçÈ°¿ë Ã³¸®
_ÇÁ·Î¼¼½º »èÁ¦¿Í ¸Þ¸ð¸® °­Á¦ ÇØÁ¦
4.3 °¡»ó ¸Þ¸ð¸®
_°¡»ó ¸Þ¸ð¸®°¡ ¾øÀ» ¶§ »ý±â´Â ¹®Á¦Á¡
_°¡»ó ¸Þ¸ð¸® ±â´É
_°¡»ó ¸Þ¸ð¸®·Î ¹®Á¦ ÇØ°áÇϱâ 
4.4 ÇÁ·Î¼¼½º¿¡ »õ·Î¿î ¸Þ¸ð¸® ÇÒ´ç
_¸Þ¸ð¸® ¿µ¿ª ÇÒ´ç: mmap () ½Ã½ºÅÛ ÄÝ
Column Meltdown Ãë¾àÁ¡ÀÇ °øÆ÷
_¸Þ¸ð¸® ÇÒ´ç: Demand paging
Column ÇÁ·Î±×·¡¹Ö ¾ð¾î ¹ø¿ª±â¿Í ¸Þ¸ð¸® °ü¸®
4.5 ÆäÀÌÁö Å×ÀÌºí °èÃþÈ­
_Huge Page
_Transparent Huge Page(THP)

CHAPTER 5 ÇÁ·Î¼¼½º °ü¸®(ÀÀ¿ëÆí)

5.1 ºü¸¥ ÇÁ·Î¼¼½º ÀÛ¼º Ã³¸®
_fork() ÇÔ¼ö °í¼ÓÈ­: Ä«ÇÇ ¿Â ¶óÀÌÆ®
_execve() ÇÔ¼öÀÇ °í¼ÓÈ­: Demand paging
5.2 ÇÁ·Î¼¼½º Åë½Å
_°øÀ¯ ¸Þ¸ð¸®
_½Ã±×³Î
_ÆÄÀÌÇÁ
_¼ÒÄÏ
5.3 ¹èŸÀû Á¦¾î
5.4 µ¹°í µµ´Â ¹èŸÀû Á¦¾î 
5.5 ¸ÖƼ ÇÁ·Î¼¼½º ¹× ¸ÖƼ ½º·¹µå
Column Ä¿³Î ½º·¹µå¿Í »ç¿ëÀÚ ½º·¹µå

CHAPTER 6 ÀåÄ¡ Á¢±Ù

6.1 µð¹ÙÀ̽º ÆÄÀÏ
_ij¸¯ÅÍ ÀåÄ¡
_ºí·Ï ÀåÄ¡
Column ·çÇÁ ÀåÄ¡
6.2 µð¹ÙÀ̽º µå¶óÀ̹ö 
_¸Þ¸ð¸® ¸Ê ÀÔÃâ·Â(MMIO)
_Æú¸µ
_ÀÎÅÍ·´Æ®
Column ÀϺη¯ Æú¸µÀ» »ç¿ëÇϴ °æ¿ì
6.3 µð¹ÙÀ̽º ÆÄÀϸíÀº ¹Ù²î±â ¸¶·Ã

CHAPTER 7 ÆÄÀÏ ½Ã½ºÅÛ 

7.1 ÆÄÀÏ Á¢±Ù ¹æ¹ý
7.2 ¸Þ¸ð¸® ¸Ê ÆÄÀÏ
7.3 ÀϹÝÀûÀΠÆÄÀÏ ½Ã½ºÅÛ
7.4 ÄõÅÍ(¿ë·® Á¦ÇÑ) 
7.5 ÆÄÀÏ ½Ã½ºÅÛ Á¤ÇÕ¼º À¯Áö
_Àú³Î¸µÀ» »ç¿ëÇÑ ¿À·ù ¹æÁö
_Ä«ÇÇ ¿Â ¶óÀÌÆ®·Î ¿À·ù ¹æÁö
_¹¹´Ï ¹¹´Ï Çصµ ¹é¾÷
7.6 Btrfs¿¡¼­ Á¦°øÇϴ ÆÄÀÏ ½Ã½ºÅÛÀÇ °í±Þ ±â´É
_½º³À¼¦
_¸ÖƼ º¼·ý
Column ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇϸé ÁÁÀº°¡?
7.7 µ¥ÀÌÅÍ ¼Õ»ó °¨Áö¿Í º¹±¸
7.8 ±âŸ ÆÄÀÏ ½Ã½ºÅÛ
_¸Þ¸ð¸® ±â¹ÝÀÇ ÆÄÀÏ ½Ã½ºÅÛ
_³×Æ®¿öÅ© ÆÄÀÏ ½Ã½ºÅÛ
_procfs
_sysfs

CHAPTER 8 ¸Þ¸ð¸® °èÃþ

8.1 Ä³½Ã ¸Þ¸ð¸®
_ÂüÁ¶ÀÇ Áö¿ª¼º
_°èÃþÇü Ä³½Ã ¸Þ¸ð¸®
_ij½Ã ¸Þ¸ð¸® Á¢±Ù ¼Óµµ ÃøÁ¤
Simultaneous Multi Threading (SMT)
Column º¯È¯ »öÀΠ¹öÆÛ(Translation Lookaside Buffer)
8.2 ÆäÀÌÁö Ä³½Ã
_ÆäÀÌÁö Ä³½Ã È¿°ú
8.3 ¹öÆ۠ij½Ã
8.4 ¾²±â Å¸À̹Ö
8.5 Á÷Á¢ ÀÔÃâ·Â
8.6 ½º¿Ò
8.7 Åë°è Á¤º¸

CHAPTER 9 ºí·Ï °èÃþ

9.1 Çϵ堵ð½ºÅ©ÀǠƯ¡
9.2 ºí·Ï °èÃþÀÇ ±âº» ±â´É
9.3 ºí·Ï ÀåÄ¡ÀÇ ¼º´É ÁöÇ¥ ¹× ÃøÁ¤ ¹æ¹ý
_ÇϳªÀÇ ÇÁ·Î¼¼½º¸¸ ÀÔÃâ·ÂÀ» È£ÃâÇϴ °æ¿ì
_¿©·¯ ÇÁ·Î¼¼½º°¡ º´·Ä·Î ÀÔÃâ·ÂÀ» È£ÃâÇϴ °æ¿ì 
Column ÃßÃøÇÏÁö ¸»°í, ÃøÁ¤Çضó
_¼º´É ÃøÁ¤ µµ±¸: fio
9.4 ºí·Ï °èÃþÀÌ Çϵ堵ð½ºÅ© ¼º´É¿¡ Áִ ¿µÇâ
_ÆÐÅÏ A ÃøÁ¤ °á°ú
_ÆÐÅÏ B ÃøÁ¤ °á°ú
Column ¹«¾ùÀ» À§ÇÑ ¼º´É ÃøÁ¤Àΰ¡
_±â¼ú Çõ½Å°ú °ü·ÃµÈ ºí·Ï °èÃþÀÇ º¯È­
9.5 ºí·Ï °èÃþÀÌ NVMe SSDÀÇ ¼º´É¿¡ ¹ÌÄ¡´Â ¿µÇâ
_ÆÐÅÏ A ÃøÁ¤ °á°ú
_ÆÐÅÏ B ÃøÁ¤ °á°ú
Column ½ÇÁ¦ ¼º´É ÃøÁ¤

CHAPTER 10 °¡»óÈ­ ±â´É

10.1 °¡»óÈ­ ±â´ÉÀ̶õ ¹«¾ùÀΰ¡
10.2 °¡»óÈ­ ¼ÒÇÁÆ®¿þ¾î
10.3 ÀÌ Àå¿¡¼­ »ç¿ëÇϴ °¡»óÈ­ ¼ÒÇÁÆ®¿þ¾î
Column Áßø °¡»óÈ­
10.4 °¡»óÈ­¸¦ Áö¿øÇϴ CPU ±â´É
_QEMU£«KVM Á¶ÇÕ
Column CPU °¡»óÈ­ ±â´ÉÀÌ ¾ø´Â °æ¿ìÀÇ °¡»óÈ­ 
10.5 °¡»ó ¸Ó½ÅÀº È£½ºÆ® OS¿¡¼­ ¾î¶»°Ô º¸À̴°¡?
_È£½ºÆ® OS¿¡¼­ º» °Ô½ºÆ® OS
_¿©·¯ ¸Ó½ÅÀ» ½ÇÇàÇϴ °æ¿ì
Column IaaSÀÇ ¿ÀÅ佺ÄÉÀÏ ¸ÞÄ¿´ÏÁò
10.6 °¡»óÈ­ È¯°æÀÇ ÇÁ·Î¼¼½º ½ºÄÉÁÙ¸µ
_¹°¸® ±â±â¿¡¼­ ÇÁ·Î¼¼½º°¡ µ¿ÀÛÇϴ °æ¿ì
_Åë°è Á¤º¸
10.7 °¡»ó ¸Ó½Å ¹× ¸Þ¸ð¸® °ü¸®
_°¡»ó ¸Ó½ÅÀÌ »ç¿ëÇϴ ¸Þ¸ð¸®
10.8 °¡»ó ¸Ó½Å°ú ÀúÀå ÀåÄ¡
_°¡»ó ¸Ó½Å°ú ÀúÀå¼Ò ÀÔÃâ·Â
_ÀúÀå ÀåÄ¡ ¾²±â¿Í ÆäÀÌÁö Ä³½Ã
_¹Ý°¡»óÈ­ ÀåÄ¡¿Í virtio_blk
Column È£½ºÆ® OS¿Í °Ô½ºÆ® OSÀÇ ÀúÀå¼Ò ÀÔÃâ·Â ¼º´É ¿ªÀü Çö»ó
10.9 virtio_blk ±¸Á¶
Column PCI Æнº½º·ç

CHAPTER 11 ÄÁÅ×À̳ʠ

11.1 °¡»ó ¸Ó½Å°ú Â÷ÀÌÁ¡
11.2 ÄÁÅ×À̳ʠÁ¾·ù
11.3 ³×ÀÓ½ºÆäÀ̽º
_ÇÁ·Î¼¼½ºID ³×ÀÓ½ºÆäÀ̽º
_ÄÁÅ×À̳ʠÁ¤Ã¼
11.4 º¸¾È À§Ç輺

CHAPTER 12 cgroup

12.1 cgroupÀ¸·Î Á¦¾î °¡´ÉÇÑ ÀÚ¿ø
12.2 »ç¿ë ¿¹: CPU »ç¿ë ½Ã°£ Á¦¾î
Column cgroup ±â´ÉÀÌ ¸®´ª½º Ä¿³Î¿¡ Æ÷ÇԵȠ°úÁ¤
12.3 ÀÀ¿ë ¿¹
Column cgroup v2

CHAPTER 13 À̠å¿¡¼­ ¹è¿ì´Â ³»¿ë°ú È°¿ë¹ý