2Àå. ¼ÒÇÁÆ®¿þ¾îÀÇ ±âÃÊ

ÇÁ·Î±×·¥À̶õ ƯÁ¤ÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ÄÄÇ»ÅÍ ¸í·É¾îµéÀÇ ÁýÇÕÀÌ´Ù. ÇÁ·Î±×·¥Àº ¾î¼Àºí¸®¾î ¿Í °°ÀÌ Àú±Þ ÄÄÇ»ÅÍ ¾ð¾î·Î ÀÛ¼ºÇÒ ¼öµµ ÀÖ°í, C ÇÁ·Î±×·¡¹Ö ¾ð¾îó·³ ±â°è¿Í ¹«°üÇÑ °í±Þ ¾ð¾î·Î ÀÛ¼ºÇÒ ¼öµµ ÀÖ´Ù. ¿î¿µÃ¼Á¦´Â »ç¿ëÀÚ°¡ ½ºÇÁ·¹µå½ÃÆ®³ª ¿öµå ÇÁ·Î¼¼¼­¿Í °°Àº ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇØÁִ Ưº°ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÀÌ Àå¿¡¼­´Â ÇÁ·Î±×·¡¹ÖÀÇ ±âº» ¿øÄ¢°ú ¿î¿µÃ¼Á¦ÀÇ ¸ñÇ¥¿Í ±â´É¿¡ ´ëÇÑ °³¿ä¸¦ Á¦½ÃÇÏ°íÀÚ ÇÑ´Ù.


2.1 ÄÄÇ»ÅÍ ¾ð¾î(Computer Language)

2.1.1 ¾î¼Àºí¸®¾î(Assembly Language)

CPU°¡ ¸Þ¸ð¸®¿¡¼­ °¡Á®¿Í ½ÇÇàÇÏ´Â ¸í·É¾î´Â »ç¶÷ÀÌ ÀüÇô ÀÌÇØÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù. À̵éÀº ÄÄÇ»ÅÍ°¡ Á¤È®È÷ ¹«¾ùÀ» ÇؾßÇÒ Áö ¸»ÇØÁÖ´Â ±â°è¾î ÄÚµåÀÌ´Ù. ÀÎÅÚ 80486 CPU¿¡¼­ ½ÊÀ°Áø ¼ö 0x89E5´Â ESP ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» EBP ·¹Áö½ºÅÍ·Î º¹»çÇ϶ó´Â ¸í·ÉÀÌ´Ù. ÃÊâ±â ÄÄÇ»ÅÍ ¸¦ À§ÇØ °³¹ßµÈ ÃÖÃÊÀÇ ¼ÒÇÁÆ®¿þ¾î µµ±¸ Áß Çϳª´Â ¾î¼Àºí·¯¿´´Ù. ¾î¼Àºí·¯´Â »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â ÇüÅÂÀÇ ¼Ò½º ÆÄÀÏÀ» ¾î¼ÀºíÇÏ¿© ±â°è¾î Äڵ带 ¸¸µå´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¾î¼Àºí¸®¾î´Â ·¹Áö½ºÅÍ¿Í ÀÚ·á¿¡ ´ëÇÑ ¿¬»êÀ» ¸í½ÃÀûÀ¸·Î ´Ù·ç¸ç, ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸£´Ù. ÀÎÅÚ x86 ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿ë ¾î¼Àºí¸®¾î¿Í ¾ËÆÄ AXP ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿ë ¾î¼Àºí¸®¾î´Â ¿ÏÀüÈ÷ ´Ù¸£ ´Ù. ´ÙÀ½ ¾ËÆÄ AXP¿ë ¾î¼Àºí¸® ÄÚµå´Â ÇÁ·Î±×·¥ÀÌ ¼öÇàÇÒ ¼ö ÀÖ´Â ¿¬»êÀÇ ¿¹¸¦ º¸¿©ÁØ´Ù.

	ldr r16, (r15)	; Line 1
	ldr r17, 4(r15)	; Line 2
	beq r16, r17, 100	; Line 3
	str r17, (r15)	; Line 4
100:				; Line 5

ù¹ø° ¹®Àå(Line 1)Àº ·¹Áö½ºÅÍ15°¡ °¡Áø ÁÖ¼Ò¿¡ ÀÖ´Â °ªÀ» ·¹Áö½ºÅÍ16À¸·Î ÀоîµéÀδÙ. ±× ´ÙÀ½ ¸í·ÉÀº ¸Þ¸ð¸® ´ÙÀ½ À§Ä¡ÀÇ ³»¿ëÀ» ·¹Áö½ºÅÍ17·Î ÀоîµéÀδÙ. ¼¼ ¹ø° ÁÙ¿¡¼­´Â ·¹Áö ½ºÅÍ16°ú ·¹Áö½ºÅÍ17ÀÇ ³»¿ëÀ» ºñ±³ÇÏ¿©, ÀÌ °ªÀÌ °°À¸¸é ·¹À̺í100À¸·Î ºÐ±âÇÑ´Ù. µÎ ·¹Áö ½ºÅÍ¿¡ µé¾îÀÖ´Â °ªÀÌ °°Áö ¾Ê´Ù¸é, ÇÁ·Î±×·¥Àº ³× ¹ø° ÁÙ·Î °è¼Ó ÁøÇàÇÏ¿© ·¹Áö½ºÅÍ17ÀÇ ³»¿ëÀ» ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù. µÎ ·¹Áö½ºÅÍ°¡ °°Àº °ªÀ» °®°í ÀÖ´Ù¸é, ±× °ªÀ» ÀúÀåÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¾î¼Àºí¸® ¼öÁØÀÇ ÇÁ·Î±×·¥Àº µûºÐÇÏ°í, ÀÛ¼ºÇϴµ¥ ÀܲҰ¡ ¸¹ÀÌ ÇÊ¿äÇϸç, ¿À·ù¸¦ ¹ü Çϱ⠽±´Ù. ¸®´ª½º Ä¿³Î Áß¿¡¼­ ¾î¼Àºí¸®¾î·Î ÀÛ¼ºµÈ ºÎºÐÀº ±ØÈ÷ ÀϺο¡ Áö³ªÁö ¾Ê´Â´Ù. ÀÌ µéÀº ´Ü½Ã È¿À²¼ºÀ» À§ÇØ ¾î¼Àºí¸®¾î·Î ÀÛ¼ºµÇ¾úÀ¸¸ç, ƯÁ¤ ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­¿¡ °íÀ¯ÇÏ´Ù.


2.1.2 C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ÄÄÆÄÀÏ·¯(Compiler)

¾î¼Àºí¸®¾î·Î Å« ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀº ¾î·Á¿ï »Ó¸¸ ¾Æ´Ï¶ó ½Ã°£µµ ¸¹ÀÌ ÇÊ¿äÇÏ´Ù. °Ô ´Ù°¡ ¿À·ù¸¦ ¹üÇϱ⠽±°í, ƯÁ¤ ÇÁ·Î¼¼¼­¿¡¸¸ ±¹ÇѵǹǷΠÀ̽ļºµµ ¾ø´Ù. ±×·¡¼­ C°°ÀÌ ±â °è¿¡ ¹«°üÇÑ ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ÁÁ´Ù. C´Â ÇÁ·Î±×·¥À» ó¸®ÇÒ ³í¸®ÀûÀÎ ÀÚ·á¿Í ³í ¸®ÀûÀÎ ¾Ë°í¸®ÁòÀ¸·Î Ç¥ÇöÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÄÄÆÄÀÏ·¯¶ó°í Çϴ Ư¼öÇÑ ÇÁ·Î±×·¥Àº ÀÌ C ÇÁ·Î±×·¥À» Àо ¾î¼Àºí¸®·Î º¯È¯ÇÏ¿©, ƯÁ¤ ±â°è¿¡ ÇØ´çÇÏ´Â Äڵ带 ¸¸µé¾î³½´Ù. ÁÁÀº ÄÄ ÆÄÀÏ·¯´Â ÈǸ¢ÇÑ ¾î¼Àºí¸® ÇÁ·Î±×·¡¸Ó°¡ ÀÛ¼ºÇÑ °Í¿¡ °¡±õ°Ô È¿À²ÀûÀÎ ¾î¼Àºí¸® Äڵ带 ¸¸ µé¾î³½´Ù. ¸®´ª½º Ä¿³ÎÀÇ ´ëºÎºÐÀº C¾ð¾î·Î µÇ¾î ÀÖ´Ù. ´ÙÀ½ C ÄÚµå´Â ¾Õ¿¡ ¿¹·Î µç ¾î¼Àºí ¸® ÄÚµå¿Í ¶È°°Àº ¿¬»êÀ» ¼öÇàÇÑ´Ù.

	if (x != y)
		x = y;

ÀÌ´Â º¯¼ö xÀÇ °ª°ú º¯¼ö yÀÇ °ªÀÌ ´Ù¸£¸é x¿¡ yÀÇ °ªÀ» º¹»çÇÒ °ÍÀÌ´Ù. C ÄÚµå´Â °¢±â ´Ù ¸¥ ÀÏÀ» ¼öÇàÇÏ´Â ¿©·¯°³ÀÇ ·çƾµé·Î ÀÌ·ç¾îÁø´Ù. ·çƾÀº ¾î¶² °ªÀ̳ª, C¾ð¾î¿¡¼­ Áö¿øÇÏ´Â ÀÚ·áÇüÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º Ä¿³Î°°ÀÌ Å« ÇÁ·Î±×·¥Àº ¸¹Àº ¼öÀÇ C ¸ðµâ·Î ÀÌ·ç¾îÁö¸ç, °¢ ¸ðµâÀº ÀڽŸ¸ÀÇ ÀڷᱸÁ¶¿Í ·çƾµé·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÀÌ·± C ¼Ò½º ÄÚµå ¸ðµâÀÌ ¸ð¿©¼­ ÆÄÀÏ ½Ã½ºÅÛÀ» ´Ù·ç´Â °Í°°Àº ³í¸®ÀûÀÎ ±â´ÉÀ» ÇÏ°Ô µÈ´Ù.

C´Â ¿©·¯ °¡Áö º¯¼öÇüÀ» Áö¿øÇÑ´Ù. º¯¼ö¶õ ½Éº¼ À̸§À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® »óÀÇ ÇÑ À§Ä¡ÀÌ´Ù. ÇÁ·Î±×·¡¸Ó´Â ÀÌ·± º¯¼ö°¡ ¸Þ¸ð¸® »óÀÇ ¾îµð¿¡ ÀÖ´ÂÁö ½Å°æ ¾µ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ ÀÏÀº ¹Ø¿¡¼­ ¼³¸íÇÒ ¸µÄ¿°¡ ¾Ë¾Æ¼­ ÇØÁØ´Ù. º¯¼ö´Â °¢°¢ Á¤¼ö, ½Ç¼ö, Æ÷ÀÎÅÍ µîÀÇ ´Ù¸¥ Á¾·ù ÀÇ ÀڷḦ °¡Áú ¼ö ÀÖ´Ù.

Æ÷ÀÎÅÍ´Â ¾î¶² ÀÚ·áÀÇ ¸Þ¸ð¸® »óÀÇ À§Ä¡ÀÎ ÁÖ¼Ò¸¦ °ªÀ¸·Î °¡Áö´Â º¯¼öÀÌ´Ù. ¾î¶² º¯¼ö x°¡ ¸Þ¸ð¸® »óÀÇ ÁÖ¼Ò 0x80010000¿¡ ÀÖ´Ù°í ÇÏÀÚ. ¿©±â¼­ x¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö - ÀÌ°ÍÀ» px¶ó°í ÇÏÀÚ - ¸¦ ¸¸µé ¼ö ÀÖ°í, ÀÌ px´Â 0x80010030 ¹øÁö¿¡ ÀÖ´Ù°í ÇÏÀÚ. ±×·¯¸é pxÀÇ °ªÀº º¯¼ö xÀÇ ÁÖ¼ÒÀÎ 0x80010000ÀÌ°Ô µÈ´Ù.

C¿¡¼­´Â ¼­·Î °ü·ÃµÈ º¯¼ö ¿©·¯°³¸¦ ¹­¾î ÇϳªÀÇ ÀڷᱸÁ¶·Î ¹­À» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î,

	struct {
		int i;
		char b;
	} my_struct;

´Â i¶ó´Â Á¤¼ö(32ºñÆ® ÀÚ·á°ø°£À» Â÷ÁöÇÑ´Ù)¿Í, b¶ó´Â ¹®ÀÚ(8ºñÆ® ÀÚ·á), ÀÌ µÎ °³ÀÇ ¿ø¼Ò¸¦ °¡Áø my_struct¶ó´Â ÀڷᱸÁ¶¸¦ Á¤ÀÇÇÑ´Ù.


2.1.3 ¸µÄ¿(Linker)

¸µÄ¿´Â ¿©·¯°³ÀÇ ¿ÀºêÁ§Æ® ¸ðµâ°ú ¶óÀ̺귯¸®¸¦ ¿¬°áÇÏ¿© ÇϳªÀÇ ¿Ï°áµÈ ÇÁ·Î±×·¥À» ¸¸µé¾î ³»´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¿ÀºêÁ§Æ® ¸ðµâÀº ¾î¼Àºí·¯³ª ÄÄÆÄÀÏ·¯°¡ ¸¸µé¾î ³½ ±â°è¾î ÄÚµå Ãâ·Â¹° ·Î, ±â°è¾î ÄÚµå¿Í ÀÚ·á, ±×¸®°í ¸µÄ¿°¡ ´Ù¸¥ ¸ðµâ°ú °áÇÕÇÏ¿© ÇϳªÀÇ ÇÁ·Î±×·¥À» ¸¸µé¾î ³» ´Âµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. ¿¹¸¦ µé¾î ¾î¶² ÇÁ·Î±×·¥¿¡¼­, ÇÊ¿äÇÑ µ¥ÀÌÅͺ£À̽º ÇÔ¼ö¸¦ ¸ðµÎ ¾î¶² ÇϳªÀÇ ¸ðµâÀÌ °¡Áö°í ÀÖ°í, ¸í·ÉÇà ÀÎÀÚ¸¦ ó¸®ÇÏ´Â ÇÔ¼ö¸¦ ´Ù¸¥ ¸ðµâÀÌ °¡Áö°í ÀÖ´Ù°í ÇÏÀÚ. ¸µÄ¿´Â ÇϳªÀÇ ¿ÀºêÁ§Æ® ¸ðµâ¿¡¼­ ½ÇÁ¦·Î ´Ù¸¥ ¸ðµâ¿¡ ÀÖ´Â ÀڷᱸÁ¶³ª ·çƾ À» ÂüÁ¶ÇÏ°í ÀÖÀ» ¶§, ÀÌµé ¸ðµâ »çÀÌÀÇ ÂüÁ¶¸¦ ¸ÂÃß¾î ÁØ´Ù. ¸®´ª½º Ä¿³ÎÀº ¸¹Àº ¿ä¼ÒÀÇ ¿À ºêÁ§Æ® ¸ðµâµéÀ» ¸µÅ©ÇÏ¿© ¸¸µç, ÇϳªÀÇ °Å´ëÇÑ ÇÁ·Î±×·¥ÀÌ´Ù.


2.2 ¿î¿µÃ¼Á¦(Operating System)¶õ ¹«¾ùÀΰ¡?

¼ÒÇÁÆ®¿þ¾î°¡ ¾ø´Ù¸é ÄÄÇ»ÅÍ´Â ±×Àú ¿­À̳ª ³»´Â ÀüÀÚÁ¦Ç° µ¢¾î¸®¿¡ Áö³ªÁö ¾Ê´Â´Ù. Çϵå¿þ ¾î¸¦ ÄÄÇ»ÅÍÀÇ ½ÉÀåÀ̶ó°í ÇÑ´Ù¸é, ¼ÒÇÁÆ®¿þ¾î´Â ÄÄÇ»ÅÍÀÇ ¿µÈ¥À̶ó ÇÒ ¼ö ÀÖ´Ù. ¿î¿µÃ¼Á¦´Â »ç¿ëÀÚ°¡ ÀÀ¿ëÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ½Ã½ºÅÛ ÇÁ·Î±×·¥µéÀ» ¸ð¾Æ³õÀº °ÍÀÌ´Ù. ¿î¿µÃ¼Á¦´Â ½ÇÁ¦ Çϵå¿þ¾î¸¦ Ãß»óÈ­ÇÏ¿© ½Ã½ºÅÛÀÇ »ç¿ëÀÚ¿Í ÀÀ¿ëÇÁ·Î±×·¥¿¡°Ô °¡»ó ±â°è (virtual machine)¸¦ Á¦°øÇÑ´Ù. ±×·¡¼­ ½ÇÁ¦·Î ¿î¿µÃ¼Á¦°¡ ½Ã½ºÅÛÀÇ Æ¯¼ºÀ» Á¦°øÇØÁÖ´Â °Íó·³ ´À²¸Áø´Ù. ´ëºÎºÐÀÇ PC´Â Çϳª ÀÌ»óÀÇ ¿î¿µÃ¼Á¦¸¦ µ¹¸± ¼ö ÀÖÀ¸¸ç, °¢ ¿î¿µÃ¼Á¦´Â ¸Å¿ì ´Ù ¸¥ ¸ð½À°ú ´À³¦À» °®°í ÀÖ´Ù. ¸®´ª½º´Â ¿î¿µÃ¼Á¦¸¦ ±¸¼ºÇÏ´Â ¿©·¯°³ÀÇ ±â´ÉÀûÀ¸·Î ºÐ¸®µÈ Á¶°¢µé·Î ¸¸µé¾îÁø´Ù. ¸®´ª½º¿¡¼­ ¸í¹éÇÏ°Ô ±¸ºÐµÇ´Â ºÎºÐÀº Ä¿³ÎÀÌÁö¸¸, ¶óÀ̺귯¸®³ª ½©ÀÌ ¾ø´Ù¸é Ä¿³ÎÀº ¹«¿ëÁö¹°ÀÌ´Ù.

¿î¿µÃ¼Á¦°¡ ¹«¾ùÀÎÁö ÀÌÇظ¦ ÇÒ ¼ö ÀÖµµ·Ï, ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ ¸í·ÉÀ» ÃÆÀ» ¶§ ¾î¶² ÀÏÀÌ ³ª´ÂÁö »ý°¢Çغ¸ÀÚ.

$ ls
Mail		c		images		perl
docs		tcl
$

¿©±â¼­ $´Â ·Î±×ÀÎ ½©(ÀÌ °æ¿ì¿¡´Â bash)ÀÌ ³»º¸³»´Â ÇÁ·ÒÇÁÆ®ÀÌ´Ù. ÀÌ´Â »ç¿ëÀÚ°¡ ¾î¶² ¸í ·ÉÀ» ³»¸®±â¸¦ ±â´Ù¸®°í ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ls¶ó°í ÃÄ ³ÖÀ¸¸é Å°º¸µå µå¶óÀ̹ö´Â ¹«½¼ ±ÛÀÚ°¡ ÀԷµǾú´ÂÁö ÀνÄÇÏ°í ÀνÄÇÑ ±ÛÀÚµéÀ» ½©¿¡ ³Ñ°ÜÁØ´Ù. ½©Àº ±×·± À̸§À» °¡Áø ½Ç Çà À̹ÌÁö°¡ ÀÖ´ÂÁö ã°í, ¿©±â¼­´Â /bin/ls¶ó´Â À̹ÌÁö¸¦ ã°Ô µÈ´Ù. Ä¿³Î ¼­ºñ½º¸¦ È£Ãâ ÇÏ¿© ls¶ó´Â ½ÇÇà À̹ÌÁö¸¦ °¡»ó ¸Þ¸ð¸®¿¡ ¿Ã¸®°í, À̸¦ ½ÇÇàÇÏ°Ô µÈ´Ù. ls À̹ÌÁö´Â Ä¿³ÎÀÇ ÆÄÀÏ ¼­ºê½Ã½ºÅÛÀÇ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¾î¶² ÆÄÀϵéÀÌ ÀÖ´ÂÁö ã´Â´Ù. ÆÄÀÏ ½Ã½ºÅÛÀº ij½ÃµÈ ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸¸¦ ÀÌ¿ëÇϰųª, µð½ºÅ© µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ »ç¿ëÇÏ¿© µð½ºÅ©¿¡¼­ ÀÌ Á¤º¸ ¸¦ Àоî¿Ã ¼öµµ ÀÖ´Ù. ¶Ç´Â ÆÄÀÏ ½Ã½ºÅÛÀÌ ³×Æ®¿÷ ÆÄÀÏ ½Ã½ºÅÛ(Network File System, NFS)À» ÅëÇÏ¿© ¿ø°ÝÀ¸·Î ¸¶¿îÆ®µÈ °æ¿ì, ¾×¼¼½ºÇØ¾ß ÇÏ´Â ¿ø°Ý ÆÄÀϵéÀÇ ¼¼ºÎÁ¤º¸¸¦ ã±â À§ÇØ ³× Æ®¿÷ µå¶óÀ̹ö¸¦ ÀÌ¿ëÇÏ¿© ¿ø°Ý ±â°è¿Í Á¤º¸¸¦ ±³È¯ÇÒ ¼öµµ ÀÖ´Ù. ¾î¶² ¹æ¹ýÀ¸·Î Á¤º¸¸¦ ã ¾Ò´ø °£¿¡, ls´Â ±× Á¤º¸¸¦ Ãâ·ÂÇÏ°í, ºñµð¿À µå¶óÀ̹ö´Â À̸¦ È­¸é¿¡ Ç¥½ÃÇÑ´Ù.

¾ê±â°¡ Á» º¹ÀâÇØÁø °Í °°Áö¸¸, ¾î·µç ÀÌ·± °£´ÜÇÑ ¸í·ÉÀ» ÅëÇؼ­µµ, ¿î¿µÃ¼Á¦´Â »ç½Ç»ó ¼­ ·Î Çùµ¿ÇÏ´Â ¿©·¯ ±â´ÉµéÀÌ ¸ð¿©¼­ »ç¿ëÀÚ¿¡°Ô ½Ã½ºÅÛÀÇ ÀÏ°üµÈ ¸ð½ÀÀ» º¸¿©Áشٴ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.


2.2.1 ¸Þ¸ð¸® °ü¸®(Memory Management)

ÀÚ¿ø - ¿¹¸¦ µé¾î ¸Þ¸ð¸® - ÀÌ ¹«ÇÑÈ÷ ÀÖ´Ù¸é ¿î¿µÃ¼Á¦°¡ ÇÏ´Â ÀÏÀÇ »ó´ç ºÎºÐÀº ÇÊ¿ä¾ø´Â ÀÏÀÌ µÉ °ÍÀÌ´Ù. ¸ðµç ¿î¿µÃ¼Á¦ÀÇ ±âº»±â ÁßÀÇ Çϳª´Â ÀûÀº ¾çÀÇ ½ÇÁ¦ ¸Þ¸ð¸®(physical memory)¸¦ ¸¹ÀÌ ÀÖ´Â °Íó·³ º¸ÀÌ°Ô ÇÏ´Â °ÍÀÌ´Ù. °ÑÀ¸·Î º¸±â¿¡ ¸¹¾Æ º¸ÀÌ´Â ÀÌ ¸Þ¸ð¸®¸¦ °¡»ó ¸Þ¸ð¸®(virtual memory)¶ó°í ºÎ¸¥´Ù. ÀÌ ¾ÆÀ̵ð¾î´Â ½Ã½ºÅÛ ³»¿¡¼­ ½ÇÇàÁßÀÎ ¼ÒÇÁÆ®¿þ¾î ¸¦ ¼Ó¿©¼­ ¸Þ¸ð¸®°¡ ¸¹ÀÌ ÀÖ´Â °Íó·³ ¹Ï°Ô ¸¸µå´Â °ÍÀÌ´Ù. ½Ã½ºÅÛÀº ¸Þ¸ð¸®¸¦ ½±°Ô ´Ù·ê ¼ö ÀÖµµ·Ï ÆäÀÌÁö(page)·Î ÂÉ°³°í, ½Ã½ºÅÛÀÌ ½ÇÇàµÇ¸é¼­ À̵é ÆäÀÌÁö¸¦ Çϵåµð½ºÅ©·Î ½º¿Ò (swap)ÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾î´Â ¸ÖƼÇÁ·Î¼¼½ÌÀ̶ó´Â ¶Ç ´Ù¸¥ Æ®¸¯ ¶§¹®¿¡ ÀÌ »ç½ÇÀ» ±ú´ÝÁö ¸øÇÑ ´Ù.


2.2.2 ÇÁ·Î¼¼½º(Process)

ÇÁ·Î¼¼½º¶õ ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥À̸ç, °¢ ÇÁ·Î¼¼½º´Â °¢±â ÇϳªÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ±¸ºÐ µÈ °³Ã¼ÀÌ´Ù. ÇöÀç »ç¿ëÇÏ´Â ¸®´ª½º ½Ã½ºÅÛ¿¡ µ¿ÀÛÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º¸¦ »ìÆ캻´Ù¸é, »ó´çÈ÷ ¸¹Àº ¼öÀÇ ÇÁ·Î¼¼½º°¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ps¶ó°í ŸÀÌÇÎÇÏ¸é ½Ã½ºÅÛ¿¡ ÀÖ´Â ÇÁ·Î¼¼ ½ºµéÀ» º¸¿©Áִµ¥, ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Â´Ù.

$ ps
  PID	TTY STAT	TIME	COMMAND
  158	pRe	1	0:00	-bash
  174	pRe	1	0:00	sh /usr/X11R6/bin/startx
  175	pRe	1	0:00	xinit /usr/X11R6/lib/X11/xinit/xinitrc --
  178	pRe	1 N	0:00	bowman
  182	pRe	1 N	0:01	rxvt -geometry 120x35 -fg white -bg black
  184	pRe	1 <	0:00	xclock -bg grey -geometry -1500-1500 -padding 0
  185	pRe	1 <	0:00	xload -bg grey -geometry -0-0 -label xload
  187	pp6	1	9:26	/bin/bash
  202	pRe	1 N	0:00	rxvt -geometry 120x35 -fg white -bg black
  203	ppc	2	0:00	/bin/bash
 1796	pRe	1 N	0:00	rxvt -geometry 120x35 -fg white -bg black
 1797	v06	1	0:00	/bin/bash
 3056	pp6	3 <	0:02	emacs intro/introduction.tex
 3270	pp6	3	0:00	ps
$

¸¸¾à ½Ã½ºÅÛ¿¡ CPU°¡ ¿©·¯°³ ÀÖ´Ù¸é °¢ ÇÁ·Î¼¼½º´Â °¢±â ´Ù¸¥ CPU¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖÀ» °Í ÀÌ´Ù (ÃÖ¼ÒÇÑ ÀÌ·ÐÀûÀ¸·Î´Â ±×·¸´Ù). ÇÏÁö¸¸ ºÒÇàÈ÷µµ CPU´Â º¸Åë Çϳª¹Û¿¡ ¾ø±â ¶§¹®¿¡ ¿î ¿µÃ¼Á¦´Â °¢°¢ÀÇ ÇÁ·Î¼¼½º¸¦ µ¹¾Æ°¡¸ç ªÀº ½Ã°£ ½ÇÇàÇÏ´Â ¶Ç ´Ù¸¥ Æ®¸¯À» »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ ÂªÀº ½Ã°£À» ŸÀÓ ½½¶óÀ̽º(time-slice)¶ó°í ÇÑ´Ù. ÀÌ·± Æ®¸¯À» ¸ÖƼÇÁ·Î¼¼½Ì(multi- processing) ¶Ç´Â ½ºÄÉÁ층(scheduling)À̶ó°í ºÎ¸£¸ç, ÀÌ´Â °¢ ÇÁ·Î¼¼½º°¡ ÀڽŸ¸ÀÌ À¯ÀÏÇÑ ÇÁ ·Î¼¼½ºÀÎ °Íó·³ »ý°¢Çϵµ·Ï ¼ÓÀÌ´Â °ÍÀÌ´Ù. ÇÁ·Î¼¼½º °£¿¡´Â ¼­·Î º¸È£°¡ µÇ±â ¶§¹®¿¡ ÇÑ ÇÁ·Î¼¼½º°¡ ¹Ú»ìÀÌ ³ª°Å³ª ¿Àµ¿ÀÛÀ» Çصµ ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù. ¿î¿µÃ¼Á¦ ´Â °¢ ÇÁ·Î¼¼½º¿¡°Ô ÀڽŸ¸ÀÌ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â ºÐ¸®µÈ ÁÖ¼Ò°ø°£À» ÁÜÀ¸·Î½á ÀÌ ±â´ÉÀ» ´Þ ¼ºÇÑ´Ù.


2.2.3 µð¹ÙÀ̽º µå¶óÀ̹ö(Device Driver)

µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¸®´ª½º Ä¿³ÎÀÇ ÁÖ¿ä ºÎºÐÀ» ±¸¼ºÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ¿î¿µÃ¼Á¦ ÀÇ ´Ù¸¥ ºÎºÐµé°ú ¸¶Âù°¡Áö·Î Ư±ÇÃþ¿¡¼­ µ¿ÀÛÇϹǷÎ, À߸øµÉ °æ¿ì ½É°¢ÇÑ °á°ú¸¦ °¡Á®¿Â´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀÚ½ÅÀÌ Á¦¾îÇÏ´Â Çϵå¿þ¾î ÀåÄ¡¿Í ¿î¿µÃ¼Á¦ °£ÀÇ »óÈ£ÀÛ¿ëÀ» Á¦¾îÇÑ´Ù. ¿¹¸¦ µé¾î, ÆÄÀÏ ½Ã½ºÅÛÀº IDE µð½ºÅ©¿¡ ºí·°À» ±â·ÏÇÒ ¶§ ÀϹÝÀûÀÎ ºí·° ÀåÄ¡ ÀÎÅÍÆäÀ̽º ¸¦ »ç¿ëÇϴµ¥, µð¹ÙÀ̽º µå¶óÀ̹ö´Â ÀåÄ¡ÀÇ ¼¼¼¼ÇÑ ºÎºÐ±îÁö ì±â¸ç, ÀåÄ¡¸¶´Ù ´Ù¸¥ ÀϵéÀ» ½ÇÇàÇÑ´Ù. µð¹ÙÀ̽º µå¶óÀ̹ö´Â ±¸µ¿ÇÏ·Á´Â ÄÁÆ®·Ñ·¯ Ĩ¿¡ µû¶ó ´Ù¸£´Ù. ±×·¡¼­ NCR810 SCSI ÄÁÆ®·Ñ·¯°¡ ÀÖ´Ù¸é NCR810 SCSI µå¶óÀ̹ö°¡ ÇÊ¿äÇÑ °ÍÀÌ´Ù.


2.2.4 ÆÄÀÏ ½Ã½ºÅÛ(File System)

À¯´Ð½º¿Í ¸¶Âù°¡Áö·Î, ¸®´ª½º¿¡¼­µµ ½Ã½ºÅÛÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ±¸ºÐµÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¢±ÙÇÏ ´Âµ¥ ÀåÄ¡ ½Äº°ÀÚ(µå¶óÀÌºê ¹øÈ£³ª µå¶óÀ̺ê À̸§°°Àº)¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ´ë½Å ÆÄÀÏ ½Ã½º ÅÛ Àüü¸¦ ÇϳªÀÇ °èÃþÀûÀÎ Æ®¸® ±¸Á¶·Î ¿¬°áÇÏ¿© ÇϳªÀÇ °³Ã¼·Î º¸¿©ÁØ´Ù. ¸®´ª½º´Â °¢°¢ ÀÇ »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛÀ» /mnt/cdrom°°Àº ¸¶¿îÆ® µð·ºÅ丮¿¡ ¸¶¿îÆ®ÇÏ¿©, ÇϳªÀÇ ÆÄÀÏ ½Ã ½ºÅÛ Æ®¸® ±¸Á¶¿¡ Ãß°¡ÇÑ´Ù. ¿¹¸¦ µé¸é CD-ROMÀ» /mn/cdromÀ¸·Î ¸¶¿îÆ®ÇÏ´Â °ÍÀÌ´Ù. ¿© ·¯ °¡Áö ÆÄÀÏ ½Ã½ºÅÛÀ» Áö¿øÇÏ´Â °ÍÀº ¸®´ª½ºÀÇ °¡Àå Áß¿äÇÑ Æ¯Â¡ ÁßÀÇ ÇϳªÀÌ´Ù. ÀÌ´Â ¸® ´ª½º¸¦ ¸Å¿ì À¯¿¬ÇÏ°Ô ¸¸µé¸ç, ´Ù¸¥ ¿î¿µÃ¼Á¦¿Í Àß °øÁ¸ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ¸®´ª½º¿¡¼­ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀº EXT2 ÆÄÀϽýºÅÛÀ¸·Î, ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇÀÌ EXT2¸¦ Áö ¿øÇÑ´Ù.

ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÇÇØ »ç¿ëÀÚ´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ Çüųª ±× ÇϺÎÀÇ ¹°¸®ÀûÀÎ ÀåÄ¡ÀÇ Æ¯Â¡¿¡ »ó °ü¾øÀÌ ½Ã½ºÅÛÀÇ ÇÏµå µð½ºÅ©¿¡ ÀÖ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ÀνÄÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¸®´ª½º´Â MS-DOS³ª EXT2 µîÀÇ ¸¹Àº ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ» Åõ¸íÇÏ°Ô Áö¿øÇϸç, ¸¶¿îÆ®µÇ¾î ÀÖ´Â ¸ðµç ÆÄÀÏ°ú ÆÄÀÏ ½Ã½ºÅÛÀ» ÇϳªÀÇ ÅëÇÕµÈ °¡»ó ÆÄÀÏ ½Ã½ºÅÛ(Virtual File System, VFS)À¸·Î Á¦°øÇÑ ´Ù. µû¶ó¼­, »ç¿ëÀÚ¿Í ÇÁ·Î¼¼½º´Â ÀϹÝÀûÀ¸·Î ¾î¶² ÆÄÀÏÀÌ ¹«½¼ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¼ÓÇØ ÀÖ´ÂÁö ¾Ë ÇÊ¿ä ¾øÀÌ »ç¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù.

ºí·° µð¹ÙÀ̽º µå¶óÀ̹ö´Â ½ÇÁ¦ ºí·° ÀåÄ¡ÀÇ À¯Çü(IDE¿Í SCSI°°Àº)¿¡ µû¸¥ Â÷ÀÌÁ¡À» ¼û°ÜÁÖ ±â ¶§¹®¿¡, ÆÄÀÏ ½Ã½ºÅÛ¿¡ À־´Â ÀÌ ¹°¸®Àû ÀåÄ¡´Â ±×Àú ¿¬¼ÓµÈ µ¥ÀÌÅÍ ºí·°ÀÇ ¸ðÀ½ÀÏ »ÓÀÌ´Ù. ºí·°ÀÇ Å©±â´Â ÀåÄ¡¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, Ç÷ÎÇÇ ÀåÄ¡´Â °øÅëÀûÀ¸·Î 512¹ÙÀÌÆ®¸¦ »ç¿ëÇϴµ¥ ¹ÝÇØ, IDE ÀåÄ¡´Â 1024¹ÙÀÌÆ®¸¦ »ç¿ëÇÑ´Ù. ÀÌ Â÷ÀÌ´Â ½Ã½ºÅÛ »ç¿ëÀÚ ¿¡°Õ º¸ÀÌÁö ¾Ê´Â´Ù. EXT2 ÆÄÀÏ ½Ã½ºÅÛÀÌ ¾î¶² ÀåÄ¡¿¡ µé¾îÀÖµç °£¿¡ »ç¿ëÀÚ¿¡°Õ ¸ðµÎ ¶È°° ÀÌ º¸ÀδÙ.


2.3 Ä¿³Î ÀڷᱸÁ¶(Kernel Data Structure)

¿î¿µÃ¼Á¦´Â ½Ã½ºÅÛÀÇ ÇöÀç »óÅ¿¡ ´ëÇÑ ¸Å¿ì ¸¹Àº ¾çÀÇ Á¤º¸¸¦ °®°í ÀÖ¾î¾ß ÇÑ´Ù. ½Ã½ºÅÛ ³»ºÎ¿¡¼­ ¾î¶² ÀÏÀÌ ÀϾ¸é ÇöÀç »óŸ¦ ¹Ý¿µÇϱâ À§ÇØ À̵é ÀڷᱸÁ¶¸¦ º¯°æÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, ÇÑ »ç¿ëÀÚ°¡ ½Ã½ºÅÛ¿¡ ·Î±×ÀÎÇÏ¸é »õ·Î¿î ÇÁ·Î¼¼½º°¡ ¸¸µé¾îÁö°Ô µÇ´Âµ¥, Ä¿³ÎÀº ÀÌ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Â ÀڷᱸÁ¶¸¦ ¸¸µé°í, À̸¦ ½Ã½ºÅÛ ³»ÀÇ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ³ª Ÿ³»´Â ¸ðµç ÀڷᱸÁ¶¿Í ¿¬°áÇÏ¿©¾ß ÇÑ´Ù.

À̵é ÀڷᱸÁ¶ÀÇ ´ëºÎºÐÀº ½ÇÁ¦ ¸Þ¸ð¸® »ó¿¡ Á¸ÀçÇÏ´Â °ÍÀ̸ç, Ä¿³Î°ú Ä¿³ÎÀÇ ¼­ºê½Ã½ºÅÛ¸¸ ÀÌ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÀڷᱸÁ¶´Â µ¥ÀÌÅÍ¿Í Æ÷ÀÎÅ͸¦ Æ÷ÇÔÇϸç, ÀÌ Æ÷ÀÎÅÍ´Â ´Ù¸¥ ÀڷᱸÁ¶ ³ª ·çƾÀ» °¡¸®Å²´Ù. ¸®´ª½º Ä¿³ÎÀÌ »ç¿ëÇÏ´Â ÀڷᱸÁ¶¸¦ Çѹø¿¡ ¹¶Ãļ­ º¸¸é ¸Å¿ì È¥µ¿½º ·¯¿ï ¼öµµ ÀÖ´Ù. ¸ðµç ÀڷᱸÁ¶´Â °íÀ¯ÀÇ ¸ñÀûÀ» °®°í ÀÖÀ¸¸ç, ÀϺδ ¿©·¯ Ä¿³Î ¼­ºê½Ã½ºÅÛ ¿¡¼­ »ç¿ëÇÏÁö¸¸, ½ÇÁ¦·Î´Â óÀ½ º¸±âº¸´Ù´Â ´õ ´Ü¼øÇÏ´Ù.

¸®´ª½º Ä¿³ÎÀ» ÀÌÇØÇÏ´Â °ÍÀº ¸®´ª½º Ä¿³ÎÀÇ ÀڷᱸÁ¶¿Í Ä¿³Î¿¡ ÀÖ´Â ¿©·¯ ÇÔ¼öµéÀÌ À̸¦ ¾î¶»°Ô È°¿ëÇÏ´ÂÁö ÀÌÇØÇϴµ¥ ´Þ·Á ÀÖ´Ù. ÀÌ Ã¥Àº ¸®´ª½º Ä¿³ÎÀ» ÀڷᱸÁ¶¿¡ ±â¹ÝÇÏ¿© ¼³ ¸íÇÑ´Ù. °¢ Ä¿³Î ¼­ºê½Ã½ºÅÛÀ» ¿øÇÏ´Â ÀÏÀ» ¾î¶»°Ô ó¸®ÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â ¾Ë°í¸®Áò°ú, Ä¿³Î ÀÇ ÀڷᱸÁ¶¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¸¦ Áß½ÉÀ¸·Î ¼³¸íÇÑ´Ù.


2.3.1 ¿¬°á ¸®½ºÆ®(Linked List)

¸®´ª½º´Â ÀڷᱸÁ¶¸¦ ¼­·Î ¿¬°áÇϱâ À§ÇÏ¿© ¿©·¯ °¡Áö ¼ÒÇÁÆ®¿þ¾î °øÇÐÀû ±â¹ýÀ» »ç¿ëÇÑ´Ù. ¸¹Àº °æ¿ì ¸®´ª½º´Â ¿¬°áµÈ(linked), ¶Ç´Â ¿¬¼âµÈ(chained) ÀڷᱸÁ¶¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. °¢ ÀÚ·á ±¸Á¶°¡ ¾î¶² °Í - ¿¹¸¦ µé¾î ÇÁ·Î¼¼½º³ª ³×Æ®¿÷ ÀåÄ¡ - ÀÇ ÇÑ Á¸À糪 °æ¿ì¸¦ ³ªÅ¸³½´Ù¸é, Ä¿ ³ÎÀº ÀÌµé ¸ðµÎ¸¦ ã¾Æ³¾ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¿¬°á ¸®½ºÆ®¿¡¼­´Â ·çÆ® Æ÷ÀÎÅÍ°¡ ¸®½ºÆ®¿¡ Àִ ù ¹ø° ÀڷᱸÁ¶(¶Ç´Â ¿ø¼Ò)ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í, °¢ ÀڷᱸÁ¶´Â ¸®½ºÆ®ÀÇ ´ÙÀ½ ¿ø¼ÒÀÇ ÁÖ¼Ò¸¦ °¡Áø´Ù. ¸¶Áö¸· ¿ø¼ÒÀÇ ´ÙÀ½ ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¸®½ºÆ®ÀÇ ³¡ÀÓÀ» ³ªÅ¸³»±â À§ÇØ 0 ¶Ç´Â NULL °ªÀ» °¡Áø´Ù. ÀÌÁß ¿¬°á ¸®½ºÆ®(Doubly Linked List)¿¡¼­´Â °¢ ¿ø¼Ò°¡ ´ÙÀ½ ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ¿Í ÇÔ²², ÀÌÀü ¿ø¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͵µ °¡Áø´Ù. ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ »ç¿ë ÇÏ¸é ¸Þ¸ð¸® ¾×¼¼½º Ƚ¼ö°¡ ´õ ¸¹¾ÆÁö±ä ÇÏÁö¸¸, ¸®½ºÆ®ÀÇ Áß°£¿¡ ¿ø¼Ò¸¦ Ãß°¡Çϰųª »èÁ¦ ÇÏ´Â °ÍÀÌ ´õ ½±´Ù. ÀÌ´Â ¿î¿µÃ¼Á¦¿¡¼­ °¡Àå ÀüÇüÀûÀÎ Æ®·¹ÀÌµå ¿ÀÇÁ(trade off)1ÀÌ´Ù. ¸Þ¸ð¸® ¾×¼¼½º¸¦ ´õ ÇÒ °ÍÀΰ¡, ¾Æ´Ï¸é CPU »çÀÌŬÀ» ´õ ¾µ °ÍÀΰ¡.


2.3.2 Çؽà Å×À̺í(Hash Table)

¿¬°á ¸®½ºÆ®´Â ÀڷᱸÁ¶¸¦ ¹­´Â ¼Õ½¬¿î ¹æ¹ýÀÌÁö¸¸, ¿¬°á ¸®½ºÆ®¸¦ Ž»öÇÏ´Â °ÍÀº ºñÈ¿À²Àû ÀÏ ¼ö ÀÖ´Ù. ¾î¶² ƯÁ¤ ¿ø¼Ò¸¦ ãÀ¸·Á°í ÇÒ ¶§, ¿øÇÏ´Â °É ¹ß°ßÇÒ ¶§±îÁö ¸®½ºÆ® Àüü¸¦ Âß ÈȾ¾Æ¾ß Çϱ⠶§¹®ÀÌ´Ù. ÀÌ·± Á¦ÇÑÀ» ÇÇÇϱâ À§ÇØ ¸®´ª½º´Â ÇؽÌ(hashing)À̶ó´Â ±â¹ýÀ» »ç¿ëÇÑ´Ù. Çؽà Å×À̺íÀº Æ÷ÀÎÅÍÀÇ ¹è¿­, Áï Æ÷ÀÎÅÍÀÇ º¤ÅÍ(vector)ÀÌ´Ù. ¹è¿­, Áï º¤ÅÍ´Â ¾î ¶² °ÍµéÀÌ ¸Þ¸ð¸® »ó¿¡ Çϳª¾¿ À̾îÁ® ÀÖ´Â °ÍÀ» ¸»ÇÑ´Ù2. Áï Ã¥²ÈÀ̴ åÀÇ ¹è¿­À̶ó°í ÇÒ ¼ö ÀÖ´Ù. ¹è¿­Àº ¹è¿­¿¡¼­ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Â À妽º(index)¸¦ °¡Áö°í ¾×¼¼½ºÇÑ´Ù. Ã¥²ÈÀÌ ºñ À¯¸¦ Á¶±Ý ´õ È®ÀåÇÑ´Ù¸é, °¢°¢ÀÇ Ã¥À» '´Ù¼¸¹ø° Ã¥'°ú °°Àº ¹æ½ÄÀ¸·Î Ã¥²ÈÀÌ¿¡¼­ÀÇ À§Ä¡·Î Ç¥ÇöÇÏ´Â °ÍÀÌ´Ù.

Çؽà Å×À̺íÀº ÀڷᱸÁ¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÇ ¹è¿­À̸ç, À妽º´Â ÀڷᱸÁ¶ÀÇ ³»¿ëÀ¸·ÎºÎÅÍ ¸¸ µé¾îÁø´Ù. ¾î¶² ¸¶À»ÀÇ Àα¸ ºÐÆ÷¸¦ ³ªÅ¸³»´Â ÀڷᱸÁ¶°¡ ÀÖ´Ù¸é, À̸¦ Ç¥ÇöÇϴµ¥ »ç¶÷ÀÇ ³ªÀ̸¦ À妽º °ªÀ¸·Î ¾µ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ °æ¿ì ¾î¶² »ç¶÷ÀÇ ÀڷḦ ãÀ¸·Á°í ÇÑ´Ù¸é ±× »ç¶÷ÀÇ ³ªÀ̸¦ À妽º·Î ÇÏ¿© Àα¸ Çؽà Å×À̺í·ÎºÎÅÍ Æ÷ÀÎÅ͸¦ ¾ò°í, ±× Æ÷ÀÎÅ͸¦ µû¶ó°¡ ¸é ±× »ç¶÷ÀÇ »ó¼¼ÀÚ·á°¡ µé¾îÀÖ´Â ÀڷᱸÁ¶°¡ ³ª¿Ã °ÍÀÌ´Ù. ºÒÇàÈ÷µµ ¸¶À»¿¡´Â °°Àº ³ªÀÌ ¸¦ °¡Áø »ç¶÷ÀÌ ¸¹ÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ±×·± °æ¿ì¿¡´Â ±× Æ÷ÀÎÅÍ°¡ °°Àº ³ªÀ̸¦ °¡Áø »ç¶÷µéÀÇ ¿¬°á ¸®½ºÆ®¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ µÈ´Ù. ¹°·Ð ÀÌ ÂªÀº ¸®½ºÆ®¸¦ ã´Â °ÍÀÌ ÀڷᱸÁ¶ Àüü¸¦ µÚÁö´Â °Íº¸´Ù´Â ¿©ÀüÈ÷ ºü¸¦ °ÍÀÌ´Ù.

Çؽà Å×À̺íÀº ÀÚÁÖ »ç¿ëÇÏ´Â ÀڷᱸÁ¶·ÎÀÇ ¾×¼¼½º ¼Óµµ¸¦ ³ô¿©Áֱ⠶§¹®¿¡, ¸®´ª½º´Â ij½Ã ¸¦ ±¸ÇöÇϱâ À§ÇØ Çؽà Å×À̺íÀ» Á¾Á¾ »ç¿ëÇÑ´Ù. ij½Ã´Â »¡¸® ¾×¼¼½ºµÇ¾î¾ß ÇÏ´Â ¹Ù·Î ¾µ ¼ö ÀÖ´Â Á¤º¸À̸ç, ´ë°³ ÂüÁ¶ÇÒ ¼ö ¸ðµç Á¤º¸ÀÇ ÀϺθ¸À» °¡Áö°í ÀÖ´Ù. ÀڷᱸÁ¶¸¦ ij½Ã¿¡ ³Ö¾îµÎ´Â °ÍÀº Ä¿³ÎÀÌ ±× ÀڷᱸÁ¶¸¦ ÀÚÁÖ ¾×¼¼½ºÇϱ⠶§¹®ÀÌ´Ù. ij½Ã´Â °£´ÜÇÑ ¿¬°á ¸®½º Æ®³ª Çؽà Å×ÀÌºí¿¡ ºñÇÏ¿© »ç¿ëÇÏ°í °ü¸®ÇϱⰡ º¹ÀâÇÏ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ãÀ¸·Á´Â Àڷᱸ Á¶°¡ ij½Ã¿¡ ÀÖ´Ù¸é (À̸¦ ij½Ã È÷Æ®¶ó°í ºÎ¸¥´Ù) ¾ÆÁÖ ÁÁÀº ÀÏÀÌ´Ù. ±×·¯³ª ¸¸¾à ij½Ã¿¡ ¾ø À¸¸é °ü·ÃµÈ ÀڷᱸÁ¶¸¦ ¸ðµÎ µÚÁ®¾ß ÇÏ°í, ¿øÇÏ´Â ÀڷᱸÁ¶°¡ ½ÇÁ¦·Î ÀÖÀ¸¸é ±×°ÍÀ» ij½Ã ¿¡ Ãß°¡ÇÏ¿©¾ß ÇÑ´Ù. »õ·Î¿î ÀڷᱸÁ¶¸¦ ij½Ã¿¡ ³ÖÀ¸·Á¸é ¿¾³¯ °ÍÀº ¹ö·Á¾ß ÇÒ ¼öµµ ÀÖ´Ù. ¸®´ª½º´Â ¾î¶² °ÍÀ» ¹ö·Á¾ß ÇÒ Áö Á¤ÇØ¾ß Çϴµ¥, À̹ø¿¡ ¹ö¸° ÀÚ·á°¡ ¹Ù·Î ´ÙÀ½¿¡ ÇÊ¿äÇÑ °ÍÀÌ µÇ´Â À§Çèµµ ÀÖ´Ù.


2.3.3 Ãß»ó ÀÎÅÍÆäÀ̽º(Abstract Interface)

¸®´ª½º´Â Á¾Á¾ ÀÚ½ÅÀÇ ÀÎÅÍÆäÀ̽º¸¦ Ãß»óÈ­ÇÑ´Ù. ÀÎÅÍÆäÀ̽º¶õ ƯÁ¤ ¹æ¹ýÀ¸·Î µ¿ÀÛÇÏ´Â ·ç ƾ°ú ÀڷᱸÁ¶ÀÇ ¸ðÀ½ÀÌ´Ù. ¿¹¸¦ µé¾î, ¸ðµç ³×Æ®¿÷ µð¹ÙÀ̽º µå¶óÀ̹ö´Â ƯÁ¤ÇÑ ÀڷᱸÁ¶¸¦ ÀÌ¿ëÇÏ¿© Á¤ÇØÁø ·çƾµéÀ» Á¦°øÇØ¾ß ÇÑ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ÀåÄ¡¸¶´Ù ´Ù¸¥ ÄÚµå·Î µÈ ¾Æ·¡ °è Ãþ¿¡¼­ Á¦°øÇÏ´Â ¼­ºñ½º(¶Ç´Â ÀÎÅÍÆäÀ̽º)¸¦ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ÄÚµå °èÃþÀÌ ÀÖ°Ô µÈ´Ù. ³× Æ®¿÷ °èÃþÀº ÀϹÝÈ­ µÇ¾îÀÖ°í, ÀåÄ¡¸¶´Ù °íÀ¯ÇÑ ÄÚµå´Â Ç¥ÁØ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ¿© À̸¦ Áö¿øÇÑ´Ù.

Á¾Á¾ À̵é ÇÏÀ§ °èÃþÀº ºÎÆÃÇÒ ¶§ »óÀ§ °èÃþ¿¡ ÀÚ½ÅÀ» µî·ÏÇÑ´Ù. ÀÌ·¯ÇÑ µî·Ï °úÁ¤Àº ´ë°³ ¾î¶² ¿¬°á ¸®½ºÆ®¿¡ ÀڷᱸÁ¶¸¦ Ãß°¡ÇÏ´Â ÀÏÀ» ¼ö¹ÝÇÑ´Ù. ¿¹¸¦ µé¾î, Ä¿³Î¿¡ µé¾î ÀÖ´Â °¢°¢ ÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº ºÎÆÃÇÒ ¶§ ÀÚ½ÅÀ» Ä¿³Î¿¡ µî·ÏÇϸç, ¸ðµâÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â óÀ½À¸·Î ±× ÆÄÀÏ ½Ã½ºÅÛÀÌ »ç¿ëµÉ ¶§ µî·ÏµÈ´Ù. ¾î¶² ÆÄÀÏ ½Ã½ºÅÛÀÌ µî·ÏµÇ¾î ÀÖ´Â Áö¸¦ º¸·Á¸é /proc/filesystems¸¦ µé¿©´Ùº¸¸é µÈ´Ù. ¶§·Î µî·ÏµÈ ÀڷᱸÁ¶°¡ ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °¡Áö°í ÀÖ´Â °æ¿ìµµ ÀÖ´Ù. À̵é Æ÷ÀÎÅʹ ƯÁ¤ÇÑ ¾÷¹«¸¦ ¼öÇàÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ÇÔ¼öÀÇ ÁÖ¼Ò ÀÌ´Ù. ´Ù½Ã ÆÄÀÏ ½Ã½ºÅÛ µî·ÏÀ» ¿¹·Î µé¾îº¸¸é, °¢ ÆÄÀÏ ½Ã½ºÅÛÀÌ µî·ÏÇÒ ¶§ ¸®´ª½º Ä¿³Î¿¡ ³Ñ°ÜÁÖ´Â ÀڷᱸÁ¶¿¡´Â, ÆÄÀÏ ½Ã½ºÅÛÀÌ ¸¶¿îÆ®µÉ ¶§¸¶´Ù ºÒ¸®´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ °íÀ¯ÇÑ ·çƾ ÀÇ ÁÖ¼Ò°¡ µé¾îÀÖ´Ù.


¹ø¿ª : °í¾ç¿ì, ½Å¹®¼®
Á¤¸® : ÀÌÈ£


¿ªÁÖ 1) ¸Þ¸ð¸®¸¦ ´õ ¾×¼¼½ºÇÏ°í CPU »çÀÌŬÀ» Àû°Ô ¾µ °ÍÀΰ¡, ¶Ç´Â ¸Þ¸ð¸® ¾×¼¼½º¸¦ Àû °ÔÇÏ°í CPU »çÀÌŬÀ» ´õ ¾µ °ÍÀΰ¡ ÇÏ´Â °¥¸²±æ¿¡¼­ µÑ »çÀÌÀÇ Å¸ÇùÁ¡À» ã´Â °ÍÀ» ¸» ÇÑ´Ù. (flyduck)

¿ªÁÖ 2) ÀÌÈÄ¿¡ º¤ÅͶó´Â ¿ë¾î´Â ¹è¿­°ú °°Àº Àǹ̷Π¾²ÀδÙ. (flyduck)