"만들면서 배우는 OS 커널의 구조와 원리/김범준 저" 책이 집에 있어서 보고 있는데
  
  오늘 공부하면서 아리송했던 내용들이 이해하기 쉽게 써져있네요.

  참고하시면 좋을듯합니다.

  간략하게 정리하자면...
  1. Real Mode와 Protected Mode
  - Real Mode란 컴퓨터에 전원이 들어온 후 CPU가 처음 움직이기 시작하면서 활동하는 모드이다. 예전의 MS-DOS의 시스템같은... 현재는 거의 사용하지 않고있음.
  - 그런데 Real Mode를 아직까지 사용하고 있는 이유는 예전에 사용되던 8086 CPU용의 DOS 프로그램을 현재에도 사용할 수 있도록 하는 호환성 문제 때문이다. 486을 사용하든지 Pentium을 사용하든지 Real Mode로 동작하고 있을때에는 CPU가 모두 하드웨어적으로 8086이 되어 있다고 생가하고 프로그램을 작성해야 한다.
- 따라서 모든 커널은 컴퓨터의 전원이 들어온 후 리얼모드에서 여러가지 하드웨어적인 세팅을 마친후 Protected Mode로 CPU를 전환한다.

  2. 세그먼트와 오프셋
  - 일반적으로 0x07C00번지는 0x07C0:0000, 0x0000:7C00, 0x0700:0C00 등 많은 방법으로 표현할 수 있습니다. 여기서 0x07C00번지를 물리주소라고 부르고, 0x07C0:0000등을 논리주소라도 합니다.
  - 변환시킬때에는 세그먼트에 있는 값에 16을 곱하여 오프셋을 더한다.
    예) 0x07C0:000 이라하면..
         0X7C00 + 0x000 = 0x7C00 = 0x07C00
  - 위에서 설명한 것은 Real Mode에서의 주소지정방식입니다.
  - 즉, 우리가 웹페이지로 봐왔던 부분은 인텔 CPU가 Real Mode에서 주소를 지정하는 방식에 대해서 확인을 한것이고, Protected Mode에서는 리눅스는 리눅스 나름대로 윈도우는 윈도우 나름대로의 주소지정 방식을 사용한다는 내용인것 같네요.

  3. GDT (Global Descriptor Table)
  - Protected Mode에서 주소지정을 하기 위해서는 Real Mode -> Protected Mode로 전환하기 전에 미리 하나의 테이블(GDT)을 준비해야 합니다. 이 테이블은 어떤 형식이 있는 데이터의 나열이고, RAM영역 중 어디든지 기입해 놓을 수 있습니다.
    이렇게 기입해 놓은 테이블은 Protected Mode로 변환 후 컴퓨터의 전원이 내려질때까지 그 자리에 있어야 합니다.
    이 테이블에는 각 세그먼트 영역에 대해 이것들을 어떻게 사용할 것인지에 대해 설명해 놓습니다. 이것은 "커널이 이제부터 메모리를 어떻게 사용하겠다"라고 하는 설계서와 흡사한 것입니다.

4. IDT (Interrupt Descriptor Table)
   - Protected Mode에서 인터럽트를 구현하기 위해서는 테이블이 하나 필요한데 이 테이블이 IDT라고 합니다.
   - IDT도 GDT와 마찬가지로 RAM상에 저장되며, 메모리 중 어느 곳에라도 저장이 가능합니다. 이 테이블은 256개의 GDT의 디스크립터와 비슷하게 생긴 디스크립터로 구성되어 있습니다.
   - GDT의 디스크립터는 메모리의 세그먼트 영역을 포함하고 있었지만, IDT는 해당 인터럽트가 발생하였을 때 어느 루틴을 실행시켜야 하는지에 대한 정보를 담고있습니다.

  이상 4부분에 대해서 아리송했던 점을 책에서 발췌해서 정리해봤습니다.
  좋은 참고가 되셨으면...
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2198
185 volume 1. LIDT ~ LODS 입니다. 늦어서 죄송합니다;; 선준규 2007.03.10 2786
184 Vol.1의 CMPS ~ CVTPD2PS 입니다. 늦어서 죄송합니다. file 지현구 2007.03.10 64215
183 분담 5(PREFETCHh ~ RCL/RCR/ROL/ROR) 입니다. 늦어서 죄송합니다 file 지현구 2007.03.10 6260
182 저한테 저번주에 할당되어 있던 Instruction올립니다. 남용우 2007.03.09 3767
181 vol2의 분담3과 vol1 명령어입니다. 이종우 2007.03.09 3810
180 명령어 정리 - 늦어서 죄송.. 송형주 2007.03.09 14527
179 Instruction 정리. 남현우 2007.03.09 4745
178 EM64T Instruction 정리자료 Final 버전입니다. [1] file 김정수 2007.03.08 3804
177 분담 6 맥주 2007.03.08 3957
176 저번주에 할당되어 있던 Instruction도 올려주세요!!! 김정수 2007.03.07 4544
175 분담 4를 해석한 자료 올립니다. file 강형석 2007.03.07 3130
174 lilo 공부하실때 참고 할만한 자료 입니다. [5] 강형석 2007.03.07 3034
173 asm 강좌 문서 file 맥주 2007.03.06 4147
172 분담2 MOVLHPS ~ MOVUPD 까지입니다 선준규 2007.03.06 4851
171 메신저 주소 공유합시다!! [8] 김정수 2007.03.04 3672
» "만들면서 배우는 OS 커널의 구조와 원리/김범준 저"에 오늘 공부했던 내용에 대해 쉽게 적혀있네요. [4] 김정수 2007.03.04 5380
169 EM64T_Guide [2] file 이종우 2007.03.04 3502
168 x86 아키텍쳐에 관한 동영상 강좌 링크입니다. [6] 남현우 2007.03.04 4413
167 3월 3일 LKSAS 두번째 모임 즐거웠습니다. [7] file 김정수 2007.03.04 5046
166 제송.... 제가 이번에 스터디 그룹에 참여하는데 아직 공부할 부분을 할당받지 못했는데요... [2] 강형석 2007.03.02 5261
XE Login