Jörg Wunsch
<joerg@FreeBSD.ORG>
Àú.
16 Apr 1995.
±è½Â¿µ
<nobreak@kr.FreeBSD.org>
¿ª.
1998³â 11¿ù 23ÀÏ
ÀÎÅÚ 386 ȯ°æ¿¡¼ FreeBSDÀÇ ¸Þ¸ð¸®¸¦ »ç¿ëÀ» °£·«È÷ ¼³¸í ÇÕ´Ï´Ù.
ºÎÆ® ¼½ÅÍ´Â 0:0x7c00
¿¡ ¿Ã·ÁÁøÈÄ ¹Ù·Î 0x7c0:0
·Î Àç¹èÄ¡ µË´Ï´Ù.
(ÀÌ°ÍÀº ´ÜÁö ljmp
¸¦ ÇàÇÏ¿© %cs
¼¿·ºÅÍ(selector)¸¦ Á¶Á¤ÇÕ´Ï´Ù.)
±×¸®°í ù¹ø° 15 ¼½Å͸¦ 0x10000
¿¡ ÀûÀçÇÏ°í(biosboot MakefileÀÇ segment BOOTSEG)
½ºÅØÀÌ 0x1fff0
¾Æ·¡·Î ÀÛµ¿Çϵµ·Ï ¼³Á¤ÇÑÈÄ Äڵ峻ÀÇ boot2·Î Á¡ÇÁ ÇÕ´Ï´Ù.
Áï, ºÎÆ® ÄÚµå¿Í (¿©ºÐÀÇ) ÆÄƼ¼Ç Å×À̺íÀ» °Ç³Ê ¶Ù¾î %cs ¼¿·ºÅ͸¦ Á¶Á¤ÇÏ°Ô µË´Ï´Ù.
--- ¾ÆÁ÷ 16 ºñÆ® ¸ðµåÀÔ´Ï´Ù.
boot2´Â ºÎÆ® ÆÄÀÏÀ» ã°í a.out
Çì´õ¸¦ °Ë»çÇÕ´Ï´Ù. ÆÄÀÏ ¿£µå¸® Æ÷ÀÎÆ®(ÀϹÝÀûÀ¸·Î
0xf0100000
)¸¦ 0x00ffffff
·Î ¸¶½ºÅ·ÇÏ¿© ±×°÷¿¡ ºÎÆ® ÆÄÀÏÀ» ÀûÀçÇÕ´Ï´Ù.
±×·¯¹Ç·Î Åë»óÀûÀÎ ÀûÀç À§Ä¡´Â 1 MB (0x00100000
) ÀÔ´Ï´Ù. ºÎÆ® ÆÄÀÏÀ» ÀûÀçÇÏ´Â
°úÁ¤¿¡¼ ºÎÆ® ÄÚµå´Â ¹ÙÀÌ¿À½º(BIOS)¸¦ »ç¿ëÇϱâ À§ÇØ ¸®¾ó(real) ¸ðµå¿Í ÇÁ·ÎÅØƼµå(protected)
¸ðµå¸¦ ÀüȯÇÕ´Ï´Ù.
ºÎÆ® ÄÚµå ÀÚ½ÅÀº ÇÁ·ÎÅØƼµå ¸ðµåÇÏ¿¡¼ ¼¼±×¸ÕÆ® ¼¿·ºÅÍ %cs
, %ds/%es
¿¡
0x18
, 0x20
À» »ç¿ëÇÕ´Ï´Ù. ±×¸®°í ¸®¾ó ¸ðµå·ÎÀÇ ÀüȯÀ» À§ÇØ 0x28
À»
»ç¿ëÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î Ä¿³ÎÀÌ ½ÃÀ۵ɶ§ %cs
´Â 0x08
¸¦ %ds/%es/%ss
´Â
Àüü ÁÖ¼Ò ¿µ¿ªÀ» È®º¸ÇÏ´Â ¿©ºÐÀÇ µð½ºÅ©¸³Å͸¦ °¡¸£Å°´Â 0x10
À» °®½À´Ï´Ù.
Ä¿³ÎÀº ÀûÀçµÈ °÷¿¡¼ ½ÃÀ۵˴ϴÙ. ´Ù¸¥(»óÀ§) ÁÖ¼Ò¿¡ Ä¿³ÎÀÌ À§Ä¡ÇÏ¿´À»¶§ Ä¿³ÎÀº ÆäÀÌÁö Å×À̺í°ú µð·ºÅ丮°¡ ÀûÀýÈ÷ ¸ÂÃß¾î Áú¶§±îÁö PIC (Position Independent Code)¸¦ ½ÇÇàÇÏ°Ô µÇ´Âµ¥ À̶§ ÆäÀÌ¡ÀÌ °¡´ÉÇÏ°Ô µÇ°í ¸¶Áö¸·À¸·Î Ä¿³ÎÀº Ä¿³ÎÀÌ ¸µÅ©µÈ°÷¿¡¼ ½ÃÀÛ ÇÕ´Ï´Ù.
David Greenman
<dg@FreeBSD.ORG>
Àú.
16 Apr 1995.
±è½Â¿µ
<nobreak@kr.FreeBSD.org>
¿ª.
1998³â 11¿ù 22ÀÏ
¹°¸®Àû ÆäÀÌÁö´Â proc0 ÆäÀÌÁö µð·ºÅ丮, ÆäÀÌÁö Å×ÀÌºí ±×¸®°í upages¸¦ ´ã°íÀÖ´Â
Ä¿³Î BSS¸¦ Áï°¢ÀûÀ¸·Î µû¸¨´Ï´Ù. °¡»ó ¸Þ¸ð¸® ½Ã½ºÅÛÀÌ ÃʱâȵǾúÀ»¶§,
0x1000-0x9ffff
¿Í Ä¿³Î(text+data+bss+proc0 stuff+other misc)ÀÌÈÄÀÇ ¸Þ¸ð¸®´Â
ÀϹÝÀûÀÎ °¡»ó ¸Þ¸ð¸® ÆäÀÌÁö°¡ µÇ¸ç ºñ»ç¿ë ÆäÀÌÁö(global free page) ¸ñ·Ï¿¡ Ãß°¡µË´Ï´Ù.