À̱ÛÀº ³ª¿ì´©¸®ÀÇ 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 start_kernel routine

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

2.6 Coprocessor ÃʱâÈ­

2.7 ¸®´ª½º version display

2.8 move to user mode

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 ÇÔ¼ö

4.6 System VÀÇ buffer cache

5Àå

5.1 ¸®´ª½º filesystem

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.8 file ã±â(file lookup)

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.3 scheduler(schedule ÇÔ¼ö)

6.4 TASK Àüȯ

6.5 debug register

6.6 process »óÅÂ

6.7 ±âŸ scheduling °ü·ÃÇÔ¼ö

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.3 fork system call ÄÚµå

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.1 ¹°¸® sector¿Í ³í¸® sector

9.2 setup system call

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.3 terminalÀÔ·Â Àü´Þ°úÁ¤

12.4 terminal device driver

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¿¡ ´ëÇÑ ¼Ò°³

A.1 DLLÀÇ »ý¼º

A.2 ldconfig¿Í ld.so

ºÎ·Ï B Ä¿³ÎÇÔ¼ö ¿ä¾à