2³â°£ÀÇ ÄÚµå ºÐ¼®, 1³â°£ÀÇ ÁýÇÊ·Î Áý´ë¼ºÇÑ ÃÖÃÊÀÇ ARM ¸®´ª½º Ä¿³Î ºÐ¼®¼!
¸®´ª½º Ä¿³Î ÄÚµå ºÐ¼®ÀÇ Çõ¸íÀûÀÎ ¹æ¹ýÀ» Á¦°øÇÑ´Ù!
¸®´ª½º Ä¿³Î ÄÚµå ºÐ¼®À» À§ÇÑ °¡Àå ½Ç¿ëÀûÀÎ Áöħ¼!
ÀÌ Ã¥Àº ÀúÀÚµéÀÌ 3³â°£ ¸®´ª½º Ä¿³ÎÀ» ºÐ¼®ÇÑ °æÇè°ú ÀڷḦ ¹ÙÅÁÀ¸·Î ÁýÇʵǾú´Ù. ¾î¶² Ã¥¿¡¼µµ ´Ù·ç¾îÁÖÁö ¾Ê¾Ò´ø ³»¿ë, ¼ö¹Ú °ÑÇÓ±â½ÄÀ¸·Î ¾Ë¾Æº¸¾Ò´ø ³»¿ë¿¡ ´ëÇØ Ã¶ÀúÇÏ°Ô ÇÔ¼ö È帧À» µû¶ó°¡¸ç ºÐ¼®ÇÏ°í ÀÖ´Ù. ¾î·Á¿ï ¹ýÇÑ ÀÌ·¯ÇÑ °úÁ¤À» ÀúÀÚµéÀº ¡®line by line ºÐ¼®¡¯À̶ó´Â Á÷±¸·Î ½ÂºÎÇÔÀ¸·Î½á ±âÁ¸ÀÇ À̷м¿¡ ´ä´äÇÔÀ» ´À²¼´ø µ¶Àڵ鿡°Ô ÁöÀû Äè°¨À» ¾È°ÜÁÙ °ÍÀÌ´Ù.
±âÁ¸ÀÇ À̷м¿Í ´Þ¸® ARM¿ë ¸®´ª½º Ä¿³ÎÀ» ´Ù·ç°í ÀÖ´Â ÀÌ Ã¥Àº ¸®´ª½º Ä¿³Î°ú ARM¿¡ ´ëÇÑ Á¤È®ÇÑ Áö½ÄÀ» ½×À» ¼ö ÀÖµµ·Ï »ó¼¼ÇÑ ÄÚµå ºÐ¼®°ú dzºÎÇÑ ±×¸²À¸·Î ±¸¼ºÇÏ¿´°í, µ¶ÀÚ´Â ÀÌ Ã¥À» ÅëÇØ ÁÖ±âÀûÀ¸·Î ¸±¸®ÁîµÇ´Â ÃֽŠ¸®´ª½º Ä¿³ÎÀ» ºÐ¼®ÇÒ ¼ö ÀÖ´Â È¿À²ÀûÀÎ ¹æ¹ýÀ» ÀÚ¿¬½º·´°Ô ¹è¿ï ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ Ã¥Àº ¸®´ª½º Ä¿³ÎÀÇ ºÎÆà ½ÃÀÛ¿¡¼ºÎÅÍ ³¡±îÁö¸¦ ¼ø¼´ë·Î ¼³¸íÇÏ°í ÀÖ¾î ¸®´ª½º Ä¿³ÎÀ» Ä¿³Î ¼Ò½º Äڵ带 ÅëÇØ Á¦´ë·Î ºÐ¼®Çغ¸°íÀÚ ÇÏ´Â µ¶ÀÚ¿¡°Ô ÀûÇÕÇÏ´Ù. ¸®´ª½º Äڵ带 ÇÑ ¹ø Á¤µµ ºÐ¼®Çغ¸°í´Â ½Í¾ú´Âµ¥ ¹æ´ëÇÑ ¾ç°ú ¸Á¸Á´ëÇظ¦ Ç¥·ùÇÒ °Í °°Àº ´À³¦¿¡ ¾öµÎ¸¦ ¸ø ³»½Ã´ø ºÐ, ¸®´ª½ºÀÇ ½ÇÁ¦ µ¿ÀÛ °úÁ¤ÀÌ ±Ã±ÝÇϼ̴ø ºÐ, ½ÇÁ¦ OS ·¹º§ÀÇ Áö½Ä¿¡ ¸ñ¸»¶óÇϽôø ºÐ, ÀÌ·¯ÇÑ µ¶Àڵ鿡°Ô ÀÌ Ã¥ÀÌ ºû°ú ¼Ò±Ý°ú °°Àº Á¸Àç°¡ µÇ±â¸¦ ¹Ù¶õ´Ù.
ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ÁÖ¿ä ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
- Ä¿³Î ¼Ò½º ºôµå ½Ã½ºÅÛ
- ARM ÇÁ·Î¼¼¼ÀÇ ±¸Á¶
- È¿°úÀûÀÎ ºÐ¼® ȯ°æ ±¸Ãà
- ¾î¼Àºí¸® ·¹º§ÀÇ ºÎÆà °úÁ¤
- Ä¿³Î ºÐ¼® ½Ã ÀÚÁÖ »ç¿ëµÇ´Â API, ARM ¸í·É¾î, GAS Å°¿öµå
- ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ ´ÙÀ½ Çڵ鷯°¡ È£ÃâµÇ±â±îÁöÀÇ ÀÚ¼¼ÇÑ °úÁ¤
PART I ARM ¸®´ª½º Ä¿³Î - Ä¿³Î ºÐ¼®À» À§ÇØ ¾î¶² Áغñ°¡ ÇÊ¿äÇÒ±î?Chapter 1 Ä¿³Î¿¡ ´ëÇÑ ¼Ò°³ ±×¸®°í 2.6°ú 3.2ÀÇ Â÷ÀÌ 0021.1 Ä¿³ÎÀÇ Åº»ý°ú ¿ªÇÒ ±×¸®°í ³»ºÎ ±¸Á¶ 0021.1.1 ¸®´©½º¿¡ ÀÇÇØ Åº»ýÇÑ ¸®´ª½º 0021.1.2 ´Ù¾çÇÑ ¼ºê½Ã½ºÅÛÀÌ ¸ð¿© µ¿ÀÛÇÏ´Â ¸ð³ë¸®µñ Ä¿³Î 0031.1.3 Àü ¼¼°è¿¡¼ °¡Àå À¯¸íÇÑ ¹ü¿ë ¿î¿µÃ¼Á¦ 0051.2 Ä¿³Î 2.6°ú 3.2ÀÇ Â÷ÀÌ 006Chapter 2 Ä¿³Î ºôµù ½Ã½ºÅÛ 0082.1 Ä¿³Î ÃʱâÈ 0082.2 Ä¿³Î ¼³Á¤ 0092.3 Ä¿³Î ºôµù 0112.4 Ä¿³Î ¼³Ä¡ 019Chapter 3 ARM ÇÁ·Î¼¼¼ ¾Ë¾Æº¸±â 0213.1 ÇÁ·Î¼¼¼ °³¿ä¿Í Ư¡ 0213.2 ÇÁ·Î¼¼¼ ¾ÆÅ°ÅØó¿Í ÄÚ¾î 0223.3 ÇÁ·Î¼¼¼ ¸í¸í¹ý 0233.4 ÇÁ·Î¼¼¼ ³»ºÎ ±¸Á¶ 0243.5 ÇÁ·Î¼¼¼ ¸ðµå¿Í ·¹Áö½ºÅÍ 0263.6 ÇÁ·Î¼¼¼ ÀͼÁ¼Ç 0283.7 Çϵå¿þ¾î È®Àå ±â´É 0303.7.1 ij½Ã 0303.7.2 ¸Þ¸ð¸® °ü¸® ÀåÄ¡ 0313.7.3 ÄÚÇÁ·Î¼¼¼ 031Chapter 4 ºÐ¼® ȯ°æ ±¸ÃàÇϱâ 0324.1 ¸®´ª½º Ä¿³Î ¼Ò½º ´Ù¿î·ÎµåÇÏ¿© ¼³Ä¡Çϱâ 0324.1.1 Ä¿³Î ¼Ò½º ´Ù¿î·ÎµåÇϱâ 0324.1.2 ¼Ò½º ¼³Ä¡Çϱâ 0344.2 ctags + cscope ¼³Ä¡Çϱâ 0354.2.1 ctags·Î ¼Ò½º ÄÚµå ÅÂ±× ¸¸µé±â 0354.2.2 cscope ÅÂ±× µ¥ÀÌÅͺ£À̽º ¸¸µé±â 0374.3 vim Ç÷¯±×ÀÎ ´Ù¿î·Îµå ¹× ȯ°æ¼³Á¤ 0384.3.1 vim Ç÷¯±×ÀÎ ´Ù¿î·ÎµåÇϱâ 0394.3.2 vim + plugin ȯ°æ±¸¼º 0434.3.3 vim ȯ°æ¼³Á¤Çϱâ 0444.4 ¼Ò½º ºÐ¼® ȯ°æ Åø µÑ·¯º¸±â 047PART II Ä¿³ÎÀÇ ½ÃÀÛ - start_kernelÀº ¾î¶»°Ô È£ÃâµÉ±î?Chapter 5 Ä¿³Î ¾ÐÃà ÇØÁ¦ ÁغñÇϱâ 0565.1 ºÎÆ®·Î´õ¿¡ À̾î ù ½ºÅ¸Æ® ²÷±â - start ·¹À̺í 0575.2 BSS ¿µ¿ª ÃʱâÈÇϱâ - not_relocated ·¹À̺í 0595.3 ij½Ã È°¼ºÈÇϱâ - cache_on ·¹À̺í 0625.4 ÆäÀÌÁö µð·ºÅ͸® ¿£Æ®¸® ÃʱâÈÇϱâ - _ _setup_mmu ·¹À̺í 0655.5 I-Cache È°¼ºÈ ¹× ij½Ã Á¤Ã¥ Àû¿ëÇϱâ - _ _common_mmu_cache_on ·¹À̺í 069Chapter 6 ¾ÐÃàµÈ Ä¿³Î À̹ÌÁöÀÎ zImage·ÎºÎÅÍ Ä¿³Î À̹ÌÁö º¹¿øÇϱâ 0706.1 µ¤¾î¾²Áö ¾Ê°Ô Ä¿³Î ¾ÐÃà Ç®±â - wont_overwrite, decompress_kernel ·¹À̺í 0716.2 ¾ÐÃà ÇØÁ¦µÈ Ä¿³Î È£ÃâÇϱâ - call_kernel ·¹À̺í 0726.3 ij½ÃŬ¸° ¹× Ç÷¯½Ã - cache_clean_flush ·¹À̺í 0736.4 ij½Ã ºñÈ°¼ºÈÇϱâ - cache_off ·¹À̺í 075Chapter 7 start_kernel() È£ÃâÇϱâ 0767.1 ÃʱâÈ Á¶¸ÁÇϱâ - stext ·¹À̺í 0767.2 ÇÁ·Î¼¼¼ Á¤º¸ ã±â - _ _look_processor_type 0817.2.1 _ _lookup_processor_type ·¹À̺í 0817.2.2 _ _proc_info_begin°ú _ _proc_info_end¿¡ ÀúÀåµÈ Á¤º¸ 0837.2.3 MMU ºñÈ°¼ºÈ »óÅ¿¡¼ °¡»ó ÁÖ¼Ò¸¦ ¹°¸® ÁÖ¼Ò·Î º¯°æÇϱâ 0857.2.4 proc_info_list ±¸Á¶Ã¼¸¦ ã¾Æ ÇÁ·Î¼¼¼ Á¤º¸ ºñ±³Çϱâ 0877.3 ³» ¸Ó½Å ŸÀÔ Ã£±â - _ _lookup_machine_type 0887.3.1 _ _lookup_machine_type ·¹À̺í 0887.3.2 _ _arch_info_begin°ú _ _arch_info_end¿¡ ÀúÀåµÈ machine_desc Á¤º¸¿Í Á¢±Ù ¹æ¹ý 0907.3.3 machine_desc ±¸Á¶Ã¼¸¦ ã¾Æ ¸Ó½Å Á¤º¸ ºñ±³Çϱâ 0917.4 ºÎÆ®·Î´õ¿¡¼ ¿Â atags - _ _vet_atags ·¹À̺í 0927.5 °¡»ó ¸Þ¸ð¸®¸¦ »ç¿ëÇϱâ À§ÇØ ±âÃÊ °ø»çÇϱâ - _ _create_page_table ·¹À̺í 0957.6 Äھ ¼³Á¤ÇÏÀÚ - v6_setup ·¹À̺í 1017.7 MMU¸¦ ÄÑ°í °¡»ó ÁÖ¼Ò »ç¿ëÇϱâ - _ _enable_mmu / _ _turn_mmu_on ·¹À̺í 1027.8 start_kernel·Î Á¡ÇÁ - _ _mmap_switched ·¹À̺í 107PART III Ä¿³ÎÀÇ ½ÇÇà - Ä¿³ÎÀÇ ½ÃÀÛ°ú ³¡Àº ¾îµðÀΰ¡?Chapter 8 smp_setup_processor_id() ~ lock_kernel() 1128.1 smp_setup_processor_id(), lockdep_init(), debug_objects_early_init() 1138.1.1 smp_setup_processor_id() 1138.1.2 lockdep_init() 1138.1.3 debug_objects_early_init() 1158.2 ½ºÅà ¿À¹öÇÃ·Î¿ì °¨ÁöÇϱâ - boot_init_stack_canary() 1178.3 ÇÁ·Î¼¼½º¸¦ ±×·ìÈÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÏ´Â cgroup ÃʱâÈÇϱâ ? cgroup_init_early() 1188.3.1 cgroupfs_root¿Í cgroupÀÇ °ü°è ÃʱâÈÇϱâ - init_cgroup_root() 1238.3.2 ¼ºê½Ã½ºÅÛ ÃʱâÈÇϱâ - cgroup_init_subsys() 1238.4 irq¸¦ ºñÈ°¼ºÈÇϱâ - local_irq_disable() 1258.5 early_boot_irqs_off(), early_init_irq_lock_class() 1258.6 ºò Ä¿³Î ¶ô - lock_kernel() 127Chapter 9 Ŭ·° À̺¥Æ®¿¡ ´ëÇÑ Çڵ鷯 µî·ÏÇϱâ 1349.1 ÇÔ¼öÀÇ ¼±¾ð°ú Á¤ÀÇ - tick_init() 1349.2 À̺¥Æ® ó¸® Çڵ鷯 µî·ÏÇϱâ - clockevents_register_notifier() 1369.2.1 clockevents_lock¿¡ ´ëÇÑ ½ºÇÉ ¶ô °É±â 1379.2.2 clockevents_chainÀÌ »ý¼ºµÇ´Â ¿ø¸® 1399.2.3 clockevents_chain¿¡ tick_notifier¸¦ µî·ÏÇÏ´Â ¹æ¹ý 1409.2.4 clockevents_lock¿¡ ´ëÇÑ ½ºÇÉ ¶ôÀ» ÇØÁ¦ÇÏ´Â ¿ø¸® 142Chapter 10 CPU ºñÆ®¸Ê¿¡ ¼öÇà ÁßÀÎ CPU µî·Ï°ú HIGHMEM °ü¸®¸¦ À§ÇÑ ÃʱâÈ 14410.1 ÇÖÇ÷¯±× Á¤º¸¸¦ ´ã°í ÀÖ´Â ºñÆ®¸Ê¿¡ init_task¸¦ ¼öÇàÇÏ´Â CPU Ãß°¡Çϱâ - boot_cpu_init() 14410.2 ÇÏÀÌ ¸Þ¸ð¸® °ü¸®Çϱâ - page_address_init() 146Chapter 11 Àüü Á¶¸ÁÇϱâ - setup_arch() 149Chapter 12 unwind_init() ~ early_trap_init() 15212.1 ½ºÅà ¿ªÃßÀûÇϱâ - unwind_init() 15212.2 ¸Ó½Å Á¤º¸¸¦ ´ã°í ÀÖ´Â machine_desc ±¸Á¶Ã¼ ±¸Çϱâ - setup_machine() 15312.3 ATAG Á¤º¸ ó¸®Çϱâ ? setup_arch() 15412.4 ºÎÆà ÆĶó¹ÌÅÍ Ã³¸®Çϱâ - parse_cmdline() 15612.5 ¸®¼Ò½º Æ®¸® ±¸¼ºÇϱâ - request_standard_resources() 15812.6 cpu possible ºñÆ®¸Ê ÃʱâÈÇϱâ - smp_init_cpus() 16412.7 ARM ¿¹¿Ü ¸ðµå¸¶´Ù ½ºÅà ÁöÁ¤ÇØÁÖ±â - cpu_init() 16512.8 ÀͼÁ¼Ç Çڵ鸵À» À§ÇØ ÃʱâÈÇϱâ - early_trap_init() 16712.9 ÀÎÅÍ·´Æ® Çڵ鷯 ÇÔ¼ö »ìÆ캸±â 17412.9.1 IRQ Çڵ鷯 È£ÃâÇϱâ - asm_do_IRQ() 17712.9.2 ÀÎÅÍ·´Æ® ÀÌÀüÀ¸·Î µ¹¾Æ°¡±â - ret_to_user ·¹À̺í 179Chapter 13 ÇÁ·Î¼¼¼ ¼Â¾÷Çϱâ ? setup_processor() 18113.1 setup_processor() ±¸Á¶ ¾Ë¾Æº¸±â 18113.2 CPU ID ã±â - read_cpuid_id() 18313.3 ÇÁ·Î¼¼¼ Á¤º¸ ã±â - lookup_processor_type() 18413.4 ÇÁ·Î¼¼¼ ¾ÆÅ°ÅØó Á¤º¸ ã±â - cpu_architecture() 18513.5 ÇÁ·Î¼¼¼ ij½Ã ŸÀÔ Ã£±â - cacheid_init() 18913.6 ÇÁ·Î¼¼¼ ÃʱâÈ ÇÔ¼ö È£ÃâÇϱâ - cpu_proc_init() 193Chapter 14 ¸Þ¸ð¸® ÆäÀÌ¡ ÁغñÇϱâ - paging_init() 19614.1 paging_init() Àüü ±¸Á¶ »ìÆ캸±â 19614.2 ¸Þ¸ð¸® ŸÀÔ Å×ÀÌºí ¼³Á¤ÇØÁÖ±â - build_mem_type_table() 19814.3 ¸Þ¸ð¸® Á¤º¸ Á¡°ËÇϱâ ? sanity_check_meminfo() 20114.4 ÆäÀÌÁö Å×À̺í ÁغñÇϱâ - prepare_page_table() 20314.4.1 prepare_page_table() 20314.4.2 ¸®´ª½ºÀÇ ÆäÀÌ¡ ±¸Á¶ 20514.4.3 ÆäÀÌÁö µð·ºÅ͸® ¿£Æ®¸® ±¸Çϱâ 20614.4.4 pmd_clear() 20814.5 µð¹ÙÀ̽º ¿µ¿ª ¸ÅÇÎ ÁغñÇϱâ - devicemaps_init() 21014.6 ÇÏÀÌ ¸Þ¸ð¸® »ç¿ë ÁغñÇϱâ - kmap_init() 21514.7 Á¦·Î ÆäÀÌÁö ÃʱâÈÇϱâ 21614.7.1 ¸Þ¸ð¸® ÇÒ´çÇϱâ - _ _ alloc_bootmem_nopanic() 21714.7.2 ÁöÁ¤µÈ ³ëµå¿¡¼ fallbackÀ» »ç¿ëÇÏ¿© ¸Þ¸ð¸® ÇÒ´ç¹Þ±â - alloc_bootmem_core() 21814.7.3 °¡»ó ÁÖ¼Ò¸¦ page ±¸Á¶Ã¼·Î º¯È¯Çϱâ - virt_to_page() 22014.8 D-CacheÀÇ ÀÏ°ü¼º À¯ÁöÇϱâ ? flush_dcache_page() 221Chapter 15 ºÎÆ® ŸÀÓ ½Ã ¸Þ¸ð¸® ÇÒ´çÀÚ ÃʱâÈÇϱâ - bootmem_init() 22315.1 bootmemÀÇ ÇÔ¼ö È帧°ú ÀڷᱸÁ¶µé 22415.2 bootmem_init() ±¸Á¶ ¾Ë¾Æº¸±â 22915.3 ·¥µð½ºÅ© À§Ä¡ ã±â - check_initrd() 23015.4 ³ëµåÀÇ ¹ðÅ© Á¤º¸¸¦ ÆäÀÌÁö µð·ºÅ͸®¿¡ ¹Ý¿µÇϱâ - bootmem_init_node() 23115.4.1 map_memory_bank() 23315.4.2 bootmem_bootmap_pages() 23615.4.3 find_bootmap_pfn() 23815.4.4 node_set_online() 23915.4.5 NODE_DATA() ¸ÅÅ©·Î 24015.4.6 init_bootmem_node() 24215.4.7 free_bootmem_node() 24415.4.8 reserve_bootmem_node() 24515.5 0¹ø ³ëµå Á¦¿Ü½ÃÅ°±â - reserve_node_zero() 24615.6 ·¥µð½ºÅ© ³ëµå Á¦¿Ü½ÃÅ°±â - bootmem_reserve_initrd() 24815.7 °¡¿ë ÆäÀÌÁö ¾ø´Ù°í ¼³Á¤Çϱâ - bootmem_free_node() 24815.8 free_area ¿µ¿ª ÃʱâÈ 25115.8.1 free_area ±¸Á¶Ã¼ 25115.8.2 free_area_init_node() 25315.8.3 free_area_init_core() 25415.8.4 init_currently_empty_zone() 25615.8.5 memmap_init() 257Chapter 16 mm_init_owner() ~ preempt_disable() 26416.1 ¸Þ¸ð¸® ¼ÒÀ¯ÀÚ ¼³Á¤Çϱâ ? mm_init_owner() 26416.2 ¸í·É¾î ¶óÀÎ ÀúÀåÇصαâ ? setup_command_line() 26516.3 per-cpu µ¥ÀÌÅÍ ÃʱâÈÇϱâ - setup_per_cpu_areas() 26616.4 CPU °³¼ö ±¸Çϱâ - setup_nr_cpu_ids() 26916.5 SMP »óÀÇ ºÎÆà ÇÁ·Î¼¼½º µî·ÏÇϱâ - smp_prepare_boot_cpu() 27016.6 ½ºÄÉÁÙ·¯¸¦ »ç¿ëÇϱâ À§ÇØ ÀڷᱸÁ¶ ÃʱâÈÇϱâ ? sched_init() 27216.6.1 ±×·ì ½ºÄÉÁÙ¸µ ½Ã »ç¿ëµÇ´Â task_groupÀÇ sched_entity ±¸Á¶Ã¼¿Í runqueue ±¸Á¶Ã¼¸¦ À§ÇÑ ¸Þ¸ð¸® ÇÒ´ç 27316.6.2 root_domain, rt_bandwidth, task_group °ü·Ã ÀڷᱸÁ¶ ÃʱâÈ 27616.6.3 ½Ã½ºÅÛÀÇ ¸ðµç possible cpuÀÇ ·±Å¥ ÃʱâÈ 27816.6.4 ÇöÀç ŽºÅ©ÀÇ ½ºÄÉÁÙ¸µ °ü·Ã °ª ÃʱâÈ ¹× ·Îµå¹ë·±½ÌÀ» À§ÇÑ ÀÎÅÍ·´Æ® Çڵ鷯 µî·Ï 28016.7 Ä¿³Î ¼±Á¡ Çã¿ëÇϱâ¿Í ¼±Á¡ ¸·±â ? preempt_enable()/preempt_disable() 281Chapter 17 ºô·ÁÁÙ ÈÄ¿øÀÚ ±¸¼ºÇϱâ 28317.1 build_all_zonelists()¿¡¼ ´Ù·ç´Â ÀڷᱸÁ¶µé 28317.2 build_all_zonelists() ±¸Á¶ ¾Ë¾Æº¸±â 28517.3 Á¸ÀÇ ¸®½ºÆ® ¹æ½Ä °áÁ¤Çϱâ - set_zonelist_order() 28717.4 Æú¹é ¸®½ºÆ®¿Í Æú¹é ºñÆ®¸Ê ±¸¼ºÇϱâ - _ _build_all_zonelists() 29017.4.1 build_zonelists() 29117.4.2 build_zonelists_in_node_order() 29317.4.3 build_zonelists_in_zone_order() 29617.4.4 build_thisnode_zonelists() 29717.4.5 build_zonelist_cache() 29717.5 Æú¹é ¸®½ºÆ® Á¤º¸ Ãâ·ÂÇϱâ - mminit_verify_zonelist() 29917.6 ÆäÀÌÁö ÇÒ´ç ¿äûÀ» ó¸®ÇÒ ³ëµå Á¤Çϱâ - cpuset_init_current_mems_allowed() 30017.7 ÇÁ¸® ÆäÀÌÁö °³¼ö ±¸Çϱâ - nr_free_pagecache_pages() 30017.8 ÆäÀÌÁö ¸ðºô¸®Æ¼ 304Chapter 18 page_alloc_init() ~ pidhash_init() 30818.1 ÇÖÇ÷¯±× CPU¸¦ À§ÇÑ page ó¸®Çϱâ - page_alloc_init() 30918.2 console ÆĶó¹ÌÅÍ Ã³¸®Çϱâ - parse_early_param() 31118.3 Ưº°ÇÑ ÆĶó¹ÌÅÍ Ã³¸®Çϱâ - parse_args() 31318.4 ÀÎÅÍ·´Æ® È°¼ºÈ ¿©ºÎ È®ÀÎÇϱâ - irqs_disabled() 31718.5 Ä¿³Î ¿¹¿Ü Å×À̺í Á¤ÀÇÇϱâ - sort_main_extable() 31818.6 RCU ¸ÞÄ¿´ÏÁò ÃʱâÈÇϱâ - rcu_init() 32018.7 IRQ¸¦ »ç¿ëÇϱâ À§ÇÑ ÁغñÇϱâ - early_irq_init() 32318.8 ÀÎÅÍ·´Æ® ÃʱâÈÇϱâ - init_IRQ() 32818.9 ÇÁ·Î¼¼½º Á¤º¸¸¦ ºü¸£°Ô ã±â À§ÇÑ ±¸Á¶ ¸¸µé±â ? pidhash_init() 331Chapter 19 init_timers() ~ page_cgroup_init() 33319.1 ŸÀÌ¸Ó ÃʱâÈÇϱâ ? init_timers() 33419.1.1 timer_cpu_notify() 33519.1.2 register_cpu_notifier() 33619.1.3 open_softirq() 33719.2 High Resolution ŸÀÌ¸Ó ÃʱâÈÇϱâ ? hrtimers_init() 33819.3 softirqÀÇ Äݹé ÇÔ¼ö µî·ÏÇϱâ - softirq_init() 34119.4 xtime ¼³Á¤Çϱâ - timekeeping_init() 34519.5 Çϵå¿þ¾î ŸÀÌ¸Ó ÃʱâÈÇϱâ - time_init() 34819.6 clock ŸÀÓ ÃʱâÈÇϱâ - sched_clock_init() 35019.7 CPUÀÇ ÀÎÅÍ·´Æ® È°¼ºÈÇϱâ - local_irq_enable() 35219.8 ·çÆ® ÆÄÀϽýºÅÛÀ¸·Î »ç¿ëµÇ´Â init ·¥µð½ºÅ© °Ë»çÇϱâ 35319.9 µ¿Àû ¸Þ¸ð¸® ÇÒ´çÀ» À§ÇÑ ÃʱâÈ ÀÛ¾÷Çϱâ - vmalloc_init() 35319.10 µ§Æ®¸®¿Í ¾ÆÀ̳ëµå ij½Ã¿¡ ´ëÇÑ ÃʱâÈ ¹Ì¸® ¼öÇàÇϱâ - vfs_caches_init_early() 35519.11 cpuset ¼ºê½Ã½ºÅÛ ÃʱâÈÇϱâ - cpuset_init_early() 35819.12 memory ¼ºê½Ã½ºÅÛ ÃʱâÈÇϱâ - page_cgroup_init() 360Chapter 20 bootmem ÇÒ´çÀÚ¸¦ Á¾·áÇÏ°í ¹öµð ½Ã½ºÅÛÀ¸·Î ±³Ã¼ 36320.1 mem_init() ÇÔ¼öÀÇ È£Ãâ °ü°è¿Í ÀڷᱸÁ¶ÀÇ »ó°ü °ü°è 36320.2 mem_init() ±¸Á¶ ¾Ë¾Æº¸±â 36420.3 Á¸ÀçÇÏÁö ¾Ê´Â ¸Þ¸ð¸® ºñÆ®¸Ê¿¡ ±â·ÏÇϱâ - free_unused_memmap_node() 36620.4 ÀÏ¹Ý ÇÁ¸® ÆäÀÌÁö ¹öµð ½Ã½ºÅÛÀ¸·Î ÀÌ°üÇϱâ - free_all_bootmem_node() 36820.4.1 register_page_bootmem_info_node() 36820.4.2 free_all_bootmem_core() 37020.4.3 _ _free_pages_bootmem() 37220.4.4 _ _free_pages() 37620.4.5 free_hot_cold_page() 37620.4.6 _ _free_pages_ok() 37820.5 ÇÏÀÌ ¸Þ¸ð¸® ÇÁ¸® ÆäÀÌÁö ¹öµð½Ã½ºÅÛÀ¸·Î ÀÌ°üÇϱâ - free_area() 383Chapter 21 CPU ÇÖÇ÷¯±× Áö¿øÀ» À§ÇÑ ÃʱâÈ 38521.1 cpu_hotplug ¸â¹ö º¯¼ö ÃʱâÈÇϱâ - cpu_hotplug_init() 38521.2 CPUÀÇ ¿Â¶óÀÎ ¡æ ¿ÀÇÁ¶óÀÎÀ¸·Î º¯°æ ½Ã ó¸® 386Chapter 22 ½½·¦ ¸Þ¸ð¸® ÇÒ´çÀÚ È°¼ºÈÇϱâ - kmem_cache_init() 38922.1 ½½·¦ ÇÒ´çÀÚ °³³ä°ú ±¸Á¶Ã¼µé 38922.2 ½½·¦ ÇÒ´çÀÚÀÇ Áß¿ä ±¸Á¶Ã¼ - kmem_cache¿Í kmem_list3 39122.3 kmem_cache_init() ±¸Á¶ ¾Ë¾Æº¸±â 39422.4 initkmem_list3[ ], cache_cache.nodelists[ ] ÃʱâÈ 39922.5 kmem_list3 ¹è¿¿¡ ¿¬°áÇÏ°í cache Ãà¼Ò½Ã°£ Á¤Çϱâ - set_up_list3s() 40122.6 cacheÀÇ È®Àå ¹× Ãà¼Ò¿¡¼ »ç¿ëµÉ ÆäÀÌÁö ¿À´õ ±¸Çϱâ - cache_estimate() 40222.7 malloc_sizes¿Í cache_names 40622.8 cache »ý¼ºÇϱâ - kmem_cache_create() 40822.8.1 kmem_cache_zalloc() 41022.8.2 calculate_slab_order() 41122.8.3 setup_cpu_cache() 41222.8.4 enable_cpucache() 41422.9 arraycache_init, kmem_list3 cache »ý¼º 41422.10 Á¤ÀûÀ¸·Î ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®¸¦ kmalloc()À» ÅëÇØ ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®·Î ´ëüÇϱâ 417Chapter 23 kmem_trace_init() ~ security_init() 42023.1 ID allocator ij½Ã »ý¼ºÇϱâ ? idr_init_cache() 42123.2 pageset ÃʱâÈÇϱâ - setup_per_cpu_pageset() 42123.3 ÀÎÅ͸®ºê ³ëµå ÁöÁ¤Çϱâ - numa_policy_init() 42723.4 ŸÀÌ¸Ó ÃʱâÈ ¸¶¹«¸®Çϱâ - late_time_init() 43123.5 BogoMIPS ÃøÁ¤Çϱâ - calibrate_delay() 43123.6 ÇÁ·Î¼¼½º ½Äº°ÀÚ(ID) ÇÒ´çÀ» À§ÇÑ ºñÆ®¸Ê ¸¸µé±â - pidmap_init() 43323.7 ¿ì¼±¼øÀ§ Æ®¸®ÀÇ ÀڷᱸÁ¶ ÃʱâÈÇϱâ - prio_tree_init() 43523.8 anon_vma ½½·¦ ij½Ã »ý¼ºÇϱâ - anon_vma_init() 43523.9 °´Ã¼¿¡ »ç¿ëÀÚº°·Î ÀÚ°Ý ºÎ¿©Çϱâ ? cred_init() 43723.10 fork()¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÀڷᱸÁ¶ ÃʱâÈÇϱâ - fork_init() 43823.11 ÇÁ·Î¼¼½º »ý¼ºÀ» À§ÇÑ Ä³½Ã ÃʱâÈÇϱâ - proc_caches_init() 43923.12 ¹öÆÛ Ä³½Ã ÃʱâÈÇϱâ - buffer_init() 44223.13 º¸¾È Å° ÁغñÇϱâ ? key_init() 445Chapter 24 VFS¿¡¼ »ç¿ëµÇ´Â ´Ù¾çÇÑ Ä³½Ãµé ÃʱâÈÇϱâ - vfs_caches_init() 449Chapter 25 radix_tree_init() ~ ftrace_init() 46825.1 ·¡µñ½º Æ®¸® °ü·ÃµÈ ÀڷᱸÁ¶ ÃʱâÈÇϱâ - radix_tree_init() 46925.2 ½Ã±×³ÎÀ» »ç¿ëÇÒ ÁغñÇϱâ ? signals_init() 47025.3 proc ÆÄÀϽýºÅÛÀ» µî·ÏÇÏ°í ¸¶¿îÆ®Çϱâ - proc_root_init() 47125.4 ÃʱâÈÇÏÁö ¸øÇÑ ¼ºê½Ã½ºÅÛ µî·ÏÇϱâ - cgroup_init() 47225.5 top_cpusetÀ» Àç¼³Á¤ÇÏ°í cpuset ÆÄÀϽýºÅÛ µî·ÏÇϱâ - cpuset_init() 47425.6 ŽºÅ© Åë°è Á¤º¸ ÀÎÅÍÆäÀ̽º ÃʱâÈÇϱâ - taskstats_init_early() 47525.7 Áö¿¬ Á¤º¸ °ü¸®¸¦ À§ÇÑ Áغñ - delayacct_init() 47725.7.1 µô·¹ÀÌ ¾îÄ«¿îÆà 47725.7.2 dealyacct_init() 47725.7.3 task_delay_info ±¸Á¶Ã¼¿Í delayacct_tsk_init() 47825.8 ¾²±â ¹öÆÛÀÇ ÀÏ°ü¼º °Ë»çÇϱâ - check_bugs() 481Chapter 26 ¸Þ¸ð¸®¿Í ¹éÅ· ½ºÅä¾î ½ÌÅ©Çϱâ - ÆäÀÌÁö ¶óÀÌÆ®¹é 48326.1 ÆäÀÌÁö ¶óÀÌÆ®¹é ¸ÞÄ¿´ÏÁò 48426.2 ÆäÀÌÁö ¶óÀÌÆ®¹é È°¼ºÈÇϱâ - pdflush_init() 48526.3 pdflush ½º·¹µå 48726.4 ÆäÀÌÁö ¶óÀÌÆ®¹é ÇÔ¼ö ÁöÁ¤Çϱâ - pdflush_operation() 48926.5 ¾î¶»°Ô ÁÖ±âÀû ÆäÀÌÁö ¶óÀÌÆ®¹é, °Á¦Àû ÆäÀÌÁö ¶óÀÌÆ®¹é Äݹé ÇÔ¼ö°¡ È£ÃâµÇ³ª? 49026.5.1 ÁÖ±âÀû ÆäÀÌÁö ¶óÀÌÆ®¹é ÇÔ¼ö - wb_kupdate() 49026.5.2 °Á¦Àû ÆäÀÌÁö ¶óÀÌÆ®¹é ÇÔ¼ö - background_writeout() 49326.6 ÁÖ±âÀû ÆäÀÌÁö ¶óÀÌÆ®¹é ÃʱâÈÇϱâ - page_writeback_init() 494Chapter 27 Ä¿³Î ºÎÆÃÀÇ ¸¶Áö¸· ÇÔ¼ö ±¸Á¶ ¾Ë¾Æº¸±â - rest_init() 496Chapter 28 ÇÔ¼ö¸¦ ½ÇÇàÇÒ Ä¿³Î ½º·¹µå »ý¼ºÇϱâ - kernel_thread() 49928.1 kernel_thread() ±¸Á¶ ¾Ë¾Æº¸±â 49928.2 ÇÁ·Î¼¼¼¸¦ »ý¼ºÇÏ´Â °ÔÀÌÆ®¿þÀÌ - do_fork() 50028.3 ºÎ¸ð ÇÁ·Î¼¼½º º¹»çÇϱâ - copy_process() 504Chapter 29 »õ·Î »ý¼ºÇÑ Å½ºÅ© ±ú¿ì±â 51429.1 wake_up_new_task() ±¸Á¶ ¾Ë¾Æº¸±â 51429.2 ŽºÅ©ÀÇ ·±Å¥ °¡Á®¿À±â - task_rq_lock() 51729.3 ŽºÅ©ÀÇ ¿ì¼±¼øÀ§ °³¼±Çϱâ - effective_prio() 518Chapter 30 Ä¿³Î »ç¿ëÇÒ ÁغñÇϱâ - kernel_init() 52230.1 ÇöÀç ÇÁ·Î¼¼½º¸¦ ´Ù¸¥ CPU·Î ÀÌÁÖ½ÃÅ°±â - sched_init_smp() 52330.2 ½Ã½ºÅÛ Àü¹ÝÀûÀ¸·Î ÃʱâÈ ¸¶¹«¸®Çϱâ - do_basic_setup() 52630.2.1 rcu_sched_grace_period()¸¦ ½ÇÇàÇÒ ½º·¹µå »ý¼ºÇϱâ - rcu_init_sched() 52730.2.2 events ¿öÅ© Å¥ »ý¼ºÇϱâ - init_workqueues() 52830.2.3 cpuset ¼ºê½Ã½ºÅÛÀÇ top_cpuset ÃʱâÈÇϱâ - cpuset_init_smp() 53530.2.4 khelper ¿öÅ© Å¥ »ý¼ºÇϱâ - usermodehelper_init() 53630.2.5 ¸®´ª½ºÀÇ µð¹ÙÀ̽º ¸ðµ¨ ÃʱâÈÇϱâ - driver_init() 53830.2.6 irq Á¤º¸¸¦ proc ÆÄÀϽýºÅÛ¿¡ µî·ÏÇϱâ - init_irq_proc() 54830.2.7 Ä¿³ÎÀÌ ¸ð¸£´Â ¼ºê½Ã½ºÅÛ È£ÃâÇϱâ - do_initcalls() 54930.3 ÃʱâÈ ´ÙÀ½À» ÁغñÇϱâ ? init_post() 554Chapter 31 Ä¿³Î ½º·¹µå µ¥¸ó 55631.1 Ä¿³Î ½º·¹µå µ¥¸ó - kthreadd() 55631.2 ½Ã±×³Î ¹«½ÃÇϱâ - ignore_signals() 55931.3 ³ªÀ̽º °ª ¼³Á¤Çϱâ - set_user_nice() 56231.4 ŽºÅ©¸¦ ½ÇÇà½Ãų CPU ã±â - set_cpus_allowed_ptr() 56731.5 ¸®½ºÆ®¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ½ÇÁ¦ ±¸Á¶Ã¼ À§Ä¡ ã±â - list_entry() 56931.6 Ä¿³Î ½º·¹µå »ý¼ºÇϱâ - create_kthread() 572Chapter 32 find_task_by_pid_ns() ~ cpu_idle() 57532.1 PID·Î ŽºÅ© ã±â - find_task_by_pid_ns() 57632.2 BKL ÇØÁ¦Çϱâ - unlock_kernel() 57932.3 ½ºÄÉÁÙ¸µ Ŭ·¡½º¸¦ idle·Î º¯°æÇϱâ - init_idle_bootup_task() 58032.4 RCU ¸ÞÄ¿´ÏÁòÀÌ È°¼ºÈµÇ¾úÀ½À» ¾Ë¸®±â - rcu_scheduler_starting() 58032.5 Ä¿³Î ¼±Á¡ È°¼ºÈÇϱâ - preempt_enable_no_resched() 58132.6 ÇÁ·Î¼¼½º ½ºÄÉÁÙ¸µ ¼öÇàÇϱâ - schedule() 58232.6.1 schedule()ÀÇ ÁøÂ¥ ¾Ë¸ÍÀÌ - _ _schedule() 58232.7 ¸®´ª½º ºÎÆà ´ëÀåÁ¤ÀÇ ³¡ - cpu_idle() 584Appendix A ¾î¼Àºí·¯, gas Å°¿öµå Á¤¸® 588A.1 ARM ¸í·É¾î ±âº» 588A.1.1 ºÐ±â ¸í·É¾î 588A.1.2 »ê¼ú ¿¬»ê ¸í·É¾î 588A.1.3 ³í¸® ¿¬»ê ¸í·É¾î 588A.1.4 ºñ±³ ¿¬»ê ¸í·É¾î 589A.1.5 µ¥ÀÌÅÍ Àü¼Û ¸í·É¾î 589A.1.6 »óÅ ·¹Áö½ºÅÍ ¸í·É¾î 589A.1.7 ÄÚÇÁ·Î¼¼¼ ¸í·É¾î 590A.1.8 ±âŸ ¸í·É¾î 591A.2 Á¶°ÇºÎ ½ÇÇà 591A.3 gas Áö½Ã¾î 592Appendix B Ä¿³Î ºÐ¼® ½Ã ÀÚÁÖ ³ª¿À´Â API 594B.1 ÀÌÁß ¿¬°á ¸®½ºÆ® 594B.2 ºñÆ® ¿¬»ê API 595Appendix C °¡º±°Ô ¾Ë¾Æº¸´Â ext2 ÆÄÀϽýºÅÛ 596C.1 ÆÄÀÏÀ» ³ªÅ¸³»´Â ±¸Á¶: inode 596C.2 i_mode Çʵ带 ÀÌ·ç´Â ºñÆ® ±¸Á¶ 597C.3 ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖ´Â Çʵå - i_block[] 598C.4 µð½ºÅ©¿¡ ÀúÀåµÇ´Â ±¸Á¶ 600C.4.1 ÆÄƼ¼ÇÀÌ °¡Áö´Â ±¸Á¶ 600C.4.2 Block Group ±¸Á¶ 601C.4.3 Inode Table ±¸Á¶ 603C.4.4 µð·ºÅ͸®, ÆÄÀÏ, Inode Table, Data Block °£ÀÇ °ü°è 604Appendix D ¸®´ª½º ½º·¹µå ¸ðµ¨ 608D.1 ½º·¹µå ¸ðµ¨ 608D.2 ¸®´ª½º ½º·¹µå ±¸Çö 609Appendix E ¸µÄ¿ ½ºÅ©¸³Æ® ÆÄÀÏÀÇ ±¸Á¶ 612E.1 ARM ¸µÄ¿ ½ºÅ©¸³Æ® ÆÄÀÏ ±¸¼º 613E.2 ¸µÄ¿ ½ºÅ©¸³Æ® ±¸¼ºµµ 615Appendix F ÄÚµå ¸®½ºÆ® 623Appendix G ±×¸² ¸®½ºÆ® 632Appendix H ¾Ë¾Æº¾½Ã´Ù! ¸®½ºÆ® 639ã¾Æº¸±â 642