1Àå ÄÄÇ»ÅÍÀÇ ±¸Á¶¿Í ¿ª»ç
1. ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö°ú ¿î¿µÃ¼Á¦
½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ̶õ?
¿î¿µÃ¼Á¦¶õ?
2. ÇÁ·Î±×·¡¸Ó ÀÔÀå¿¡¼ ¹Ù¶óº» ÄÄÇ»ÅÍÀÇ ±¸Á¶¿Í ¿ª»ç
Æù ³ëÀ̸¸ ±¸Á¶(Von Neumann Machine)¿Í ISA(Instruction Set Architecture)
ÀÎÅÚ 8008, 8086 ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼
8086ÀÇ ·¹Áö½ºÅ͵é
8086 ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍÀÇ »ç¿ë
80286°ú 80386 ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼ÀÇ ÃâÇö
80386¿¡¼ÀÇ ·¹Áö½ºÅ͵é
ÄÄÇ»ÅÍ ¾ÆÅ°ÅØó(Architecture)¿Í ÄÄÇ»ÅÍ ¿À°¡´ÏÁ¦À̼Ç(Organization)
80486 ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼
ÆæƼ¾ö(Pentium) ÇÁ·Î¼¼¼¿Í ½´ÆÛ ½ºÄ®¶ó
2Àå µ¥ÀÌÅÍÀÇ Ç¥Çö°ú ¸Þ¸ð¸® ±¸Á¶
1. 2Áø¹ý, 16Áø¹ýÀÇ Ç¥Çö¹ý°ú ºñÆ®, ¹ÙÀÌÆ®
2. Á¤¼öÀÇ Ç¥Çö
3. ½Ç¼öÀÇ Ç¥Çö
4. ¹®ÀÚÀÇ Ç¥Çö
5. ¹ÙÀÌÆ® ¼ø¼(Little Endian°ú Big Endian)
6. ¸Þ¸ð¸®ÀÇ ±¸Á¶
7. CPU¿Í ¸Þ¸ð¸®°£ÀÇ ¿¬°á
8086¿¡¼ ¦¼ö ¹øÁö, Ȧ¼ö ¹øÁö
80386, 80486, ±×¸®°í Pentium¿¡¼ÀÇ µ¥ÀÌÅÍ Àü¼Û
3Àå ±â°è¾îÀÇ ±¸¼º
1. ±â°è¾î¿¡ ´ëÇÑ ÀÌÇØ¿Í Çʿ伺
2. °í±Þ ¾ð¾î, ±â°è¾î, ±×¸®°í ¾î¼Àºí¸® ¾ð¾îÀÇ ¿¹
3. ¸í·ÉÀÇ ±¸¼º°ú ½ÇÇà
4. ±â°è¾îÀÇ ±¸¼º(¸í·É¾î Çü½Ä: Instruction Format)
Instruction Prefixes
ÀÛµ¿ ÄÚµå(Opcode: Operand Code)
¹øÁö ÁöÁ¤ ¹æ½Ä°ú MODR/M ±×¸®°í SIB
¹øÁö ÁöÁ¤ ¹æ½Ä
4Àå ÇÁ·Î½ÃÀú¿Í ½ºÅà ±¸Á¶
1. ½ºÅÃÀ» »ç¿ëÇÑ º¹±Í ÁÖ¼ÒÀÇ ÀúÀå
2. ½ºÅÃÀ» »ç¿ëÇÑ ·ÎÄà º¯¼öÀÇ ÀúÀå
3. ½ºÅÃÀ» »ç¿ëÇÑ ÆĶó¹ÌÅÍ Àü´Þ
4. ÆĶó¹ÌÅÍ Àü´ÞÀÇ ¿©·¯ °¡Áö ¹æ¹ý(Calling Conventions)
__cdecl
__stdcall
__fastcall
5. ½ºÅà ÇÁ·¹ÀÓÀ» ÀÌ¿ëÇÑ ½ºÅà ¹éÆ®·¹À̽Ì
6. ÇÁ·Î½ÃÀú¿¡¼ ¸®ÅÏ °ª Àü´ÞÇϱâ
7. Windows¿¡¼ÀÇ ½ºÅà ±¸Á¶
5Àå ÇÁ·Î¼¼½º¿Í ¾²·¹µå
1. ÇÁ·Î¼¼½º¿Í ¾²·¹µåÀÇ °³³ä
ÇÁ·Î¼¼½º(Process)
¾²·¹µå(Thread)
2. ÇÁ·Î¼¼½ºÀÇ ±¸Á¶
WinDBG¸¦ »ç¿ëÇÑ ÇÁ·Î¼¼½º ±¸Á¶Ã¼ »ìÆ캸±â
ÇÁ·Î±×·¥¿¡¼ EPROCESS Æ÷ÀÎÅÍ ¾ò±â
ÇÁ·Î¼¼½º¸¦ ±¸¼ºÇÏ´Â ¿ä¼Òµé
3. ¾²·¹µåÀÇ ±¸Á¶
WinDBG¸¦ »ç¿ëÇÑ ¾²·¹µå ±¸Á¶Ã¼ »ìÆ캸±â
ÇÁ·Î±×·¥¿¡¼ ETHREAD Æ÷ÀÎÅÍ ¾ò±â
±¸Á¶ÈµÈ ¿¹¿Ü ó¸®(Structured Exception Handling)
4. ¾îÇø®ÄÉÀ̼ǿ¡¼ ÇÁ·Î¼¼½º¿Í ¾²·¹µå °ü·Ã Á¤º¸ ¾ò±â
6Àå ¾²·¹µåÀÇ ½ºÄÉÁÙ¸µ
1. ¾²·¹µåÀÇ »óÅÂ
2. ¿ì¼± ¼øÀ§ ¾Ë°í¸®Áò
Windows¿¡¼ÀÇ ¿ì¼± ¼øÀ§ ½ºÄÉÁÙ¸µ ±¸Çö
ÇÁ·Î¼¼½º ¿ì¼± ¼øÀ§¿Í ¾²·¹µå ¿ì¼± ¼øÀ§
3. Performance monitor ÇÁ·Î±×·¥À» ÀÌ¿ëÇÑ ½ÇÇè
4. ¼±Á¡Çü ½ºÄÉÁÙ¸µ(Preemptive Scheduling)
¼±Á¡µÇ¾îÁö´Â °æ¿ì
Windows¿¡¼ÀÇ ¼±Á¡Çü ½ºÄÉÁÙ¸µ ±¸Çö
IRQL°ú Ä¿³Î·¹º§ µ¿±âÈ
7Àå ¾²·¹µåÀÇ µ¿±âÈ
1. ¾²·¹µå µ¿±âÈÀÇ Çʿ伺
2. À¯Àú¸ðµå¿¡¼ÀÇ µ¿±âÈ ÇÔ¼öµé
Å©¸®Æ¼Äà ¼½¼Ç(Critical Section)
¹ÂÅؽº(Mutex)
¼¼¸¶Æ÷¾î(Semaphore)
À̺¥Æ®(Event)
3. Ä¿³Î µ¿±âÈ °´Ã¼¿Í ±× ±¸Á¶
Ä¿³Î µ¿±âÈ °´Ã¼
µð½ºÆÐÃÄ(Dispatcher)¿Í ´ë±â ºí·Ï(WaitBlock)
8Àå ¸Þ¸ð¸® °ü¸®
1. °¡»ó ÁÖ¼Ò(Virtual Address)
2. °¡»ó ÁÖ¼Ò(Virtual Address)ÀÇ ±¸Çö
ÆäÀÌ¡ ±â¹ý
°¡»ó ÁÖ¼Ò¿Í ÆäÀÌ¡ ½Ã½ºÅÛ
¼¼±×¸ÕÆ® ±â¹ý
´ÜÆíÈ(Fragmentation)
¼¼±×¸ÕÆ®¿Í ÆäÀÌ¡ ±â¹ýÀÇ º´ÇÕ
9Àå ¼¼±×¸ÕÅ×À̼Ç
1. °¡»ó ¸Þ¸ð¸®¿¡¼ ½ÇÁ¦ ¹°¸® ¸Þ¸ð¸®±îÁö
2. ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿Í ±× »ç¿ë
3. ¼¼±×¸ÕÅ×À̼Ç(Memory Segmentation)
4. ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍ
5. ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍÀÇ ³»¿ëµé
º£À̽º(Base) Çʵå
¸®¹ÌÆ®(Limit) Çʵå
¾×¼¼½º(Access) ºñÆ®
ÇÁ·¹Á¨Æ®(Present) ºñÆ®
µðÆúÆ®(Default) ºñÆ®
Granularity ºñÆ®
½Ã½ºÅÛ(System) ºñÆ®¿Í ŸÀÔ(Type) ºñÆ®
6. µð½ºÅ©¸³ÅÍ Å×À̺í°ú ¼¼±×¸ÕÆ® ¼¿·ºÅÍ
µð½ºÅ©¸³ÅÍ Å×À̺í
LDT(Local Descriptor Table)
¼¼±×¸ÕÆ® ¼¿·ºÅÍ
7. Windows¿¡¼ÀÇ ¼¼±×¸ÕÆ® µð½ºÅ©¸³ÅÍ¿Í ·¹Áö½ºÅÍ
¾îÇø®ÄÉÀ̼ǿ¡¼ÀÇ ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿Í ±× ³»¿ë
Ä¿³Î·¹º§¿¡¼ÀÇ ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿Í ±× ³»¿ë
10Àå ÆäÀÌ¡
1. ÆäÀÌ¡(Paging)
2. ¼±Çü ÁÖ¼Ò¿¡¼ ¹°¸® ÁÖ¼Ò±îÁö
CR3 ·¹Áö½ºÅÍ
ÆäÀÌÁö µð·ºÅ丮(Page Directory)
ÆäÀÌÁö Å×À̺í(Page Table)
½Ç½À
3. Windows¿¡¼ÀÇ ÆäÀÌÁö µð·ºÅ丮¿Í Å×À̺í
4. °øÀ¯ ¸Þ¸ð¸®¿Í °øÀ¯ ¸ðµâ
5. ¸Þ¸ð¸® °ø°£ÀÇ Àüȯ
6. 3GBYTEÀÇ À¯Àú ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â Windows
11Àå ÆäÀÌÁö °ü¸®
1. ¿ä±¸ ÆäÀÌÁö ó¸®
ÆäÀÌÁö ÆúÆ® ¿¹¿Ü Çڵ鷯
¼±ÆäÀÌ¡(Prepaging)
Paged Memory¿Í NonPaged Memory
2. ÆäÀÌÁö ±³Ã¼ Á¤Ã¥(Page Replacement Policy)
Áö¿ª¼º(Locality)
LRU(Least Recently Used) ¹æ½Ä
FIFO(First In, First Out) ¹æ½Ä
Page Frame Number Database
½Ç½À
3. ÀÛ¾÷¼¼Æ®(Working Set) °ü¸®
½º·¹½Ì(Thrashing) Çö»ó
ÀÛ¾÷¼¼Æ® °ü¸®
ÀÛ¾÷¼¼Æ®¸¦ Á¶ÀýÇϱâ À§ÇÑ Win32 API
12Àå ÇÁ·Î¼¼¼ ³»ÀÇ Ä³½¬ °ü¸®
1. ¿ø¸®
2. ij½¬ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò ¸ÅÇÎ ¹æ½Ä
Á÷Á¢ ¸ÅÇÎ(direct mapping)
¾î¼Ò½Ã¿¡ÀÌƼºê ¸ÅÇÎ(associative mapping)
¼Â ¾î¼Ò½Ã¿¡ÀÌƼºê ¸ÅÇÎ(set associative mapping)
3. ij½¬ ±³Ã¼ ¾Ë°í¸®Áò
4. ij½¬ ¾²±â Á¤Ã¥
Write through Á¤Ã¥
Write back Á¤Ã¥
5. Pentium Processor¿¡¼ÀÇ Ä³½¬ ±¸Á¶
13Àå À©µµ¿ìÁî¿¡¼ÀÇ Ä³½¬ °ü¸®
1. Windows¿¡¼ÀÇ ÆÄÀÏ Àбâ¿Í ±× °úÁ¤
2. ³»ºÎ ±¸Á¶
WindowsÀÇ System Cache ¿µ¿ª°ú View
VACB(Virtual Address Control Blocks)¿¡ ÀÇÇÑ View °ü¸®
14Àå À¯Àú·¹º§°ú Ä¿³Î·¹º§
1. Ư±Ç·¹º§(Privilege Levels)
2. Ä¿³Î¸ðµå(Ring 0)¿Í À¯Àú¸ðµå(Ring 3)
3. Windows¿¡¼ÀÇ À¯Àú·¹º§ ÄÚµå ¼¼±×¸ÕÆ®(CS)
4. Windows¿¡¼ÀÇ Ä¿³Î·¹º§ ÄÚµå ¼¼±×¸ÕÆ®(CS)
5. Ä¿³Î·¹º§¿¡¼¸¸ ½ÇÇàµÇ´Â CPU ¸í·É¾î
6. ¼¼±×¸ÕÆ®ÀÇ °»½Å°ú Ư±Ç·¹º§
7. ÄÚµå ¼¼±×¸ÕÆ®ÀÇ º¯°æ°ú Ư±Ç·¹º§ÀÇ º¯°æ
¼¼±×¸ÕÆ®°£ÀÇ JMP ¶Ç´Â CALL ¸í·É ½ÇÇà
8. ÀÎÅÍ·´Æ®¿Í Ư±Ç·¹º§
IDT(Interrupt Descriptor Table)
ÀÎÅÚ¿¡¼ Á¤ÀÇÇÏ°í ÀÖ´Â ÀÎÅÍ·´Æ® º¤Åͺ° ³»¿ë
ÀÎÅÍ·´Æ® ¹ß»ý°ú ½ºÅà º¯È
Windows APIÀÇ È帧
9. I/O Ư±Ç·¹º§ º¯°æ
TSS(Task State Segment) º¯°æÀ» ÅëÇÑ I/O ±ÇÇÑ º¯°æ
IOPL º¯°æÀ» ÅëÇÑ IO Ư±Ç·¹º§ º¯È¯Çϱâ
ºÎ·Ï
1. WinDBG ¼³Ä¡ ¹× °£´ÜÇÑ »ç¿ë¹ý
WinDBG ¼³Ä¡ ¹× ȯ°æ ¼³Á¤
ÇÊÀÚ°¡ ÀÚÁÖ »ç¿ëÇÏ´Â ¸í·É¾îµé
2. µå¶óÀ̹ö °³¹ß °æÇèÀÌ ¾ø´Â ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÏ¿©
µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ¸¸µå´Â ¹æ¹ý
µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ½ÇÇà½ÃÅ°±â À§ÇÑ ÄÚµåµé
µð¹ÙÀ̽º µå¶óÀ̹ö¿¡¼ »ç¿ëÇÏ´Â DbgPrint¿¡ ´ëÇÑ Ãâ·Â ³»¿ë º¸±â
3. µð½º¾î¼Àºí¸µ¿¡ ´ëÇÑ ÀÌÇØ
VC¸¦ ÀÌ¿ëÇÑ µð½º¾î¼Àºí¸µ ÄÚµå º¸±â
ÇÔ¼öÀÇ ½ÃÀÛ°ú ·ÎÄà º¯¼ö ±×¸®°í ÆĶó¹ÌÅ͵é
±¸Á¶Ã¼¿Í Æ÷ÀÎÅÍ¿¡ ´ëÇÑ Ã³¸®
Á¶°Ç¹® ifÀÇ ÄÚµå
switch¹®ÀÇ ÄÚµå
¹Ýº¹¹® forÀÇ ÄÚµå
IT »ê¾÷ ¹ßÀüÀ¸·Î °ü·ÃµÈ ¸¹Àº Á÷¾÷±ºÀÌ »ý°Ü³µ´Ù »ç¶óÁö´Â »óȲ¿¡¼ ƯÈ÷, ÇÁ·Î±×·¡¸Ó¶ó´Â Á÷¾÷À» °¡Áø ÀþÀºÀ̵éÀÌ ¸¹ÀÌ ´Ã¾î³ª°í ÀÖ´Â Ãß¼¼ÀÌ´Ù. ÇÏÁö¸¸, ¿ì¸®³» ÇÁ·Î±×·¡¸ÓµéÀº »Ñ¸®°¡ ¾ø´Â ±³À°À¸·Î ÀÎÇÏ¿© °³¹ß´Ü°è¿¡¼ ¸¹Àº ÇѰ踦 ´À³¢´Â °ÍÀÌ ´ëºÎºÐÀÌ´Ù. ÀÌ Ã¥Àº °í±Þ °³¹ßÀڵ鸸ÀÌ ¾Ë°í ÀÖ´ø °³¹ß ¿ø¸®¸¦ ¾Ë±â ½±°Ô ¼³¸íÇÏ¿© °æÀï·ÂÀÖ´Â ÇÁ·Î±×·¡¸Ó°¡ µÉ ¼ö ÀÖ´Â ±æÀ» ¿¾îµå¸± ¼ö Àִ åÀÌ´Ù.