À̱ÛÀº ³ª¿ì´©¸®ÀÇ techead ´ÔÀÇ ±ÛÀÔ´Ï´Ù.
¸®´ª½º´Â ÀÚÀ¯·Ó°Ô º¹»ç ¹× ¹èÆ÷°¡ °¡´ÉÇÑ Unix°è¿ÀÇ ¿î¿µÃ¼Á¦ÀÌ´Ù. °ªºñ½Ñ »ó¿ë Unix´Â Àü»êÇаú ÀçÇÐÁßÀÎ ÇлýÀÌ ¾Æ´Ï¸é Á¢ÇϱⰡ ¾î·Á¿î ±î´ß¿¡ ÀÚ½ÅÀÇ PC¿¡¼ Unix¸¦ »ç¿ëÇϱ⸦ ¿øÇÏ´Â ¸¹Àº °¡³ÇÑ Çлýµé¿¡°Ô ¸®´ª½º´Â Áö½ÄÀÇ ¿å±¸¸¦ ÃæÁ·½ÃÄÑÁÙ¼ö ÀÖ´Â ´õ¾øÀÌ ÁÁÀº ¼±¹°ÀÌ µÇ¾ú´Ù. °Ô´Ù°¡ ¸®´ª½º´Â ¸ðµç source°¡ °ø°³µÇ¾î ÀÖ¾î ¿î¿µÃ¼Á¦¸¦ Á¦ÀÛÇϱ⸦ ¿øÇϰųª UnixÀÇ ³»ºÎ¸¦ µé¿©´Ùº¸±æ ¿øÇÏ´Â ÀÌ¿¡°Ô´Â ±ºÄ§µµ´Â hacking´ë»óÀÌ µÇ´Â°ÍÀÌ´Ù.
¸®´ª½º´Â ÇöÀç ¸¹Àº ¿¬±¸¼Ò, ±â°ü, ȸ»ç¿¡ ¼³Ä¡, ¿î¿ëµÇ°í ÀÖÀ¸¸ç ±× ¼º´ÉÀÌ ÀÔÁõµÇ¾ú´Ù. ±×¸®°í Internet¿¡ ¹°·ÁÀÖ´Â ´Ù¼öÀÇ hostµéÀÌ ¸®´ª½º ½Ã½ºÅÛÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.
º»¼ÀÇ ±¸¼ºÀº ´ëºÎºÐÀÇ Unix¿î¿µÃ¼Á¦¼Àû°ú ±¸¼ºÀÌ ºñ½ÁÇÏ´Ù. Å« Ư¡À¸·Î´Â ´ëºÎºÐÀÇ Unix¿î¿µÃ¼Á¦¼Àû¿¡¼ ³ªÅ¸³ª´Â °³³äÀûÀÎ ¼³¸íº¸´Ù´Â ¸®´ª½º Ä¿³Î code¸¦ ÇÑÁÙÇÑÁÙ ºÐ¼®ÇØ °¡´Â °ÍÀ¸·Î ±¸¼ºÇÏ¿´´Ù. µû¶ó¼ ½ÇÀüÀÌ ºÎÁ·ÇÑ Å¸ ¼ÀûÀÇ ³»¿ëÀ» ÀÌÇØÇϴµ¥ µµ¿òÀ» ÁÖ¸®¶ó ¹Ï´Â´Ù.
º»¼ÀÇ ¸ñÀûÀº ¸¹Àº ½Ã½ºÅÛ ÇÁ·Î±×·¡¸ÓµéÀÌ ¿î¿µÃ¼Á¦´Â ´©±¸Ã³·³ Ÿ°í³ Àç´ÉÀÌ ÀÖ´Â »ç¶÷µéÀ̳ª ¸¸µé¼ö ÀÖ´Â °ÍÀ̶ó´Â ¸·¿¬ÇÑ µÎ·Á¿ò¿¡¼ ¹þ¾î³¯¼ö ÀÖµµ·Ï ÀڽۨÀ» ºÒ¾î³Ö¾îÁÜÀ¸·Î½á ¹Ì·¡¿¡ ³ª¿Ã »õ·Î¿î ¿î¿µÃ¼Á¦¸¦ ¸¸µå´Âµ¥ º¸´Ù ¸¹Àº À̵éÀÌ µ¿ÂüÇÒ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.
º»¼´Â ÄÄÇ»ÅÍÃʺ¸ÀÚ°¡ º¸±â¿¡´Â ³ÇØÇÑ ³»¿ëÀÌ´Ù. µû¶ó¼ ÀÌ Ã¥À» º¸´Â À̵鿡°Ô´Â ´ÙÀ½¿¡ ¿°ÅÇÑ °ÍµéÀÌ ¹Ýµå½Ã ¼±ÇàµÇ¾î¾ß ÇÒ°ÍÀÌ´Ù.
¡¤ ±âº»ÀûÀÎ ÄÄÇ»ÅÍ¿ë¾î¿¡ ´ëÇÑ ÀÌÇظ¦ ÇÏ°í ÀÖÀ»°Í.
¡¤ C ¾ð¾îÀÇ ±âº»¹®¹ýÀ» ÀÌÇØÇÏ°í ÀÖÀ»°Í.
¡¤ assembly ¾ð¾îÀÇ ±âº»¹®¹ýÀ» ÀÌÇØÇÏ°í ÀÖÀ»°Í.
ÀÌ ¿Ü¿¡µµ º»ÀÎÀº ´ÙÀ½°ú °°Àº °ÍÀ» ±ÇÇÑ´Ù.
¡¤ DOS»ó¿¡¼¶óµµ system programingÀ» Çغ»ÀûÀÌ ÀÖÀ»°Í.
¡¤ UnixÀÇ user¼öÁØ¿¡¼ÀÇ ÀÌÇØ¿Í Unix programing¿¡ ´ëÇÑ ±âº»ÀûÀÎ ÀÌÇØ°¡ ÀÖÀ»°Í.
º»ÀÎÀº ÀÌ°ÍÀ» °®ÃßÁö ¸øÇÑä ½ÃÀÛÇÏ¿© ¸¹Àº ½ÃÇàÂø¿À¸¦ °ÅÃÆ´Ù.
¡¤ 32bit º¸È£¸ðµå °ü·Ã¼ÀûÀ» ÇѹøÂë ÀоÀÚ.
¾Æ¸¶µµ º»¼¸¦ Àд °úÁ¤¿¡¼ °¡Àå Å« ºÎ´ãÀº º¸È£¸ðµåÀÇ ÀÌÇØÀÏ°ÍÀÌ´Ù. ÇÏÁö¸¸
º»¼¿¡¼ º¸È£¸ðµåÀÇ ½ÇÀüÀ» ÃæºÐÈ÷ °æÇèÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù.
¿©´À Ã¥µé°ú´Â ´Ù¸£°Ô Âü°í¼Àû(bibliagraphy)À» ÇÑ °÷¿¡ ¸ð¾ÆµÎÁö ¾Ê°í, °ü·ÃµÈ ³»¿ëÀÌ ³ª¿Ã¶§¸¶´Ù ÁÖ¼®À¸·Î ´Þ¾ÆµÎ¾ú´Ù. ¿î¿µÃ¼Á¦¸¦ ºÐ¼®Çϱâ À§Çؼ´Â hardware¹× software¿¡ ´ëÇÑ ¸¹Àº Áö½Ä°ú ÀÚ·á°¡ ¿ä±¸µÈ´Ù. ´ç¿¬ÇÑ ¼Ò¸®Áö¸¸, ±×°ÍÀ» ÀÌ Çѱǿ¡¼ ¸ðµÎ ¼³¸íÇÒ¼ö
´Â ¾ø´Ù.
±×¸®°í º»¼¿¡¼´Â ¿µ¾î·Î µÈ ÄÄÇ»ÅÍ¿ë¾î¸¦ ¹ßÀ½´ë·Î ¿ì¸®±Û·Î Àû°Å³ª, ¹«¸®ÇÏ°Ô ¿ì¸®¸»·Î ¹Ù²Ù·Á°í ¾Ö¾²Áö ¾Ê°í ¿µ¾î¸¦ ±×´ë·Î »ç¿ëÇÑ °æ¿ì°¡ ¸¹´Ù. ÀÌ°ÍÀº º»ÀÎÀÌ ÄÄÇ»ÅÍ°ü·Ã¼ÀûÀ» º¸¸é¼ ÀÚÁÖ ´À²¼´ø È¥µ·°ú ¾î»öÇÔ¶§¹®¿¡ ¾î·Æ°Ô °áÁ¤µÈ °ÍÀ̴ϸ¸Å, º»ÀÎÀÇ ¾Ö±¹½ÉÀ» ÀǽÉÇÏÁö´Â ¸»±â ¹Ù¶õ´Ù.
Ä¿³Î sourceÁß¿¡ ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÀÌ µÇÁö¾Ê´Â °÷Àº Ã¥³»¿ëÀÇ °£°á¼ºÀ» ÀÌÀ¯·Î ºÐ¼®´ë»ó¿¡¼ Á¦¿Ü½ÃÄ×´Ù.
#ifdef 0
........
#endif
13Àå¿¡´Â kernelÀüü¿¡¼ °øÅëÀûÀ¸·Î ÀÚÁÖ »ç¿ëµÇ´Â ÁÖ¿äÇÔ¼öµéÀ» C library referenceÇü
Å·Π±¸¼ºÇØ µÎ¾ú´Ù. ÁÖ·Î scheduling°ú ¸Þ¸ð¸®, ±×¸®°í file system¿¡ °üÇÑ ºÎºÐµéÀÌ´Ù.
º»ÀÎÀÇ ÂªÀº Áö½ÄÀ¸·Î ÀÎÇØ ºÎÁ·ÇÑ Á¡ÀÌ ¸¹À» °ÍÀ¸·Î ¾È´Ù. Ã¥ÀÇ ³»¿ëÁß¿¡ ¹®Á¦°¡ ¹ß°ßµÇ¸é ¾ðÁ¦µçÁö ÁöÀûÇØÁֱ⠹ٶõ´Ù. ¸®´ª½º Ä¿³ÎÀÇ ºÐ¼®Àº ±Ã±ØÀûÀ¸·Î º»ÀÎÀ» Æ÷ÇÔÇÑ ÄÄÇ»ÅÍ¿Í ¸®´ª½º¸¦ »ç¶ûÇÏ´Â À̵éÀÌ ÇÔ²² ÀÌ·èÇØ ³ª°¡´Â °ÍÀÌ´Ù.
º»ÀÎÀÌ Ã³À½ ¸®´ª½º¸¦ ¼³Ä¡ÇÏ¸é¼ ´çȤ½º·¯¿ö ÇÒ¶§, ¾È¸éÀÌ ÀüÇô ¾ø´Â º»ÀÎÀÇ ÁýÀ» ã¾Æ¿Í ¸®´ª½º¸¦ ¼³Ä¡ÇØ ÁØ ÀÌÀξƾ¾¿¡°Ô °¡Àå ¸ÕÀú °¨»çµå¸®°í ½Í´Ù. ÀÌÀξƾ¾´Â º»Àο¡°ÔPCÅë½ÅÀÇ ¸·°ÇÑ Èû°ú Á¤º¸È »çȸ°¡ ¹«¾ùÀΰ¡¸¦ óÀ½ ´À³¢°Ô ÇØ ÁØ ÀºÀÎÀ̱⵵ ÇÏ´Ù. ÀÌ ºÐ¿Ü¿¡µµ PCÅë½ÅÀ» ÅëÇÑ º»ÀÎÀÇ Áú¹®¿¡ ´äÇØÁֽŠ¸¹Àº ºÐµé°ú ŸÀÎÀ» À§ÇØ ÀÚ·á½Ç¿¡ ÀڷḦ ¿Ã¸®´Âµ¥ Áö±Ýµµ ÀÚ½ÅÀÇ ¼ÒÁßÇÑ ½Ã°£°ú °æºñ¸¦ µéÀÌ°í ÀÖÀ» À̵鿡°Ô °¨»çµå¸°´Ù. À̵éÀÌ ¹Ù·Î ¿ì¸®³ª¶ó Á¤º¸È»çȸ¸¦ À̲ø¾î°¡´Â ÁÖ¿ªµéÀ̶ó°í ¹Ï´Â´Ù.
1995. 9.
³ª¿ì¿ì¸® ID : techead
1Àå
1.1 ¸®´ª½º¶õ..
1.2 DOS kernel
1.3 ¸®´ª½º kernel
1.4 kernel ¼³Ä¡
1.5 Makefile
1.6 Kernel Image
1.7 º¸È£¸ðµå
1.8 kernel hackingÀ» À§ÇÑ À¯Æ¿¸®Æ¼
2Àå
2.1 LILO
2.1.1 LILO¶õ..
2.1.2 LILO ¼³Ä¡
2.2 ¸®´ª½º ºÎÆðúÁ¤
2.2.1 ºÎÆýÃÀÛ
2.2.2 first.S ¼öÇà°úÁ¤
2.2.3 second.S ¼öÇà°úÁ¤
2.2.4 LILO ÀÛ¾÷ÀÌ ³¡³ ÈÄÀÇ ¸Þ¸ð¸® »óÅÂ.
2.3 DOS ºÎÆÃÀÇ °æ¿ì
2.4 Ä¿³Î ÄÚµå ½ÃÀÛ
2.4.1 bootsect.S (floppy·Î ºÎÆýà »ç¿ë) ¼öÇà°úÁ¤
2.4.2 setup.S ÄÚµå ¼öÇà°úÁ¤
2.4.3 head.S ÄÚµå ¼öÇà°úÁ¤
2.5.1 iBCS emulator
2.5.2 device Á¤º¸¸¦ À§ÇÑ º¯¼öÁöÁ¤
2.5.3 memory Á¤º¸¸¦ À§ÇÑ º¯¼öÁöÁ¤
2.5.4 PAGE ALIGN
2.5.5 initialize page
2.5.6 bus¹æ½Ä check
2.5.7 trap_init
2.5.8 init_IRQ
2.5.9 sched_init (kernel/sched.c)
2.5.10 parse_options
2.5.11 kmalloc_init
2.5.12 chr_dev_init
2.5.13 blk_dev_init
2.5.14 calibrate_delay
2.5.15 inode_init (fs/inode.c), file_table_init (fs/filetable.c)
2.5.16 mem_init
2.5.17 buffer_init
2.5.18 time_init
2.5.19 floppy_init
2.5.20 sock_init
3Àå
3.1 fork system call
3.2 init process
4Àå
4.1 buffer_init
4.2 getblk
4.2.1 hash table
4.2.2. LRU ¾Ë°í¸®Áò
4.2.3 lock
4.2.4 sync
4.2.5 getblk code
4.3 brelse ÇÔ¼ö
4.4 bread ÇÔ¼ö
4.5 breada ÇÔ¼ö
5Àå
5.2 filesystem ±¸Á¶
5.3 super block
5.4 group descriptor
5.5 block bitmap°ú inode bitmap
5.6 inode table
5.7 directory block
5.9 file »èÁ¦
5.10 inode±¸Á¶Ã¼(fs.h)¿Í ext2_inode±¸Á¶Ã¼(ext2_fs.h)
5.11 symbolic link¿Í hard link
5.11.1 symbolic link
5.11.2 hard link
5.12 open system call
5.13 mount
5.13.1 °³¿ä
5.13.2 mount system call
5.14 kernelÀÇ inode °ü¸®
5.15 /proc
6Àå
6.1 ¼ ·Ð
6.2 timer interrupt handler ÇÔ¼ö
6.2.1 tms ±¸Á¶Ã¼¿Í itimerval, timeval ±¸Á¶Ã¼
6.2.2 do_timer ÇÔ¼ö
6.4 TASK Àüȯ
6.5 debug register
6.6 process »óÅÂ
6.7.1 sleep ÇÔ¼ö
6.7.2 wakeup ÇÔ¼ö
7Àå
7.1 kmalloc ÇÔ¼ö (mm/kmalloc.c)
7.1.1 secondary_page_list
7.1.2 kmalloc code ¼öÇà°úÁ¤
7.2 paging
7.2.1 segmention
7.2.2 paging °³¿ä
7.2.3 ¸®´ª½º¿¡¼ÀÇ paging »ç¿ë
7.4 ¿µ¿ª(vm_area)
7.4.1 mmap system call
7.4.2 do_mmap ÇÔ¼öÄÚµåÁß¿¡¼
7.5 exec system call
7.5.1 do_execÇÔ¼ö ÄÚµåÁß¿¡¼
7.5.2 load_aout_binary
7.5.3 stack set
7.6. page fault
7.6.1 do_no_page ÇÔ¼ö
7.6.2 do_wp_page ÇÔ¼ö
7.7. LDT(local descriptor table)
7.8 swap¿µ¿ª
7.8.1 swap¿µ¿ª »ý¼º
7.8.2 swap-out Àü·«
7.9 vmalloc ÇÔ¼ö (mm/vmalloc.c)
8Àå
8.1 ÃʱâÈ
8.2 system call routine
8.3 STACK
8.3.1 kernel stack page
8.3.2 stackÀÇ »ç¿ë
9Àå
9.3 gendisk ±¸Á¶Ã¼
10Àå
10.1 ¼ ·Ð
10.2 hard disk driver
10.2.1 ll_rw_blk ÇÔ¼ö
10.2.2 make_request ÇÔ¼ö
10.2.3 add_request ÇÔ¼ö
10.2.4 hd_out ÇÔ¼ö
10.2.5 hard disk interrupt handler
10.3 line printer driver
11Àå
11.1 Terminal Modes
11.1.1 Data type
11.1.2. Input mode
11.2 keyboard¿¡¼ÀÇ Key ÀԷ°úÁ¤
11.3 keyboard handler ¼öÇà°úÁ¤
11.4 kbd_bh ÇÔ¼ö ¼öÇà°úÁ¤
12Àå
12.1 ¼ ·Ð
12.2 tty_init ÇÔ¼ö
12.4.1 tty_open ÇÔ¼ö
12.4.2 con_open ÇÔ¼ö (console.c)
12.4.3 copy_to_cooked ÇÔ¼ö (tty_io.c)
12.4.4 tty_read ÇÔ¼ö
12.4.5 read_chan ÇÔ¼ö
12.4.6 tty_write ÇÔ¼ö
12.4.7 write_chan ÇÔ¼ö
12.5 console driver
12.5.1 con_init ÇÔ¼ö
12.5.2 change_console ÇÔ¼ö
12.5.3 con_write ÇÔ¼ö
12.5.4 library¿¡¼ÀÇ getchar ÇÔ¼ö
12.6 serial line ÃʱâÈ
13Àå
13.1 signal ¹ß»ý
13.2 core. file
ºÎ·Ï A DLL¿¡ ´ëÇÑ ¼Ò°³