일 때문에 2주 못 나가니까 타격이 크네요..
그래도 책은 보고 있는데 의문점이 생겼습니다.
16bit는 무조건 RealMode인가요?
32bit로 할 경우 Protected Mode로 동작한다던데.
간단하게 생각해서 16bit는 무조건 RealMode이고 32bit는 ProtectedMode 인가요?
댓글 2
.
일 때문에 2주 못 나가니까 타격이 크네요..
그래도 책은 보고 있는데 의문점이 생겼습니다.
16bit는 무조건 RealMode인가요?
32bit로 할 경우 Protected Mode로 동작한다던데.
간단하게 생각해서 16bit는 무조건 RealMode이고 32bit는 ProtectedMode 인가요?
.
real mode에서는 segment register 에 segment의 base address값을 직접 넣지만, proteced mode 에서는 base address를 table로 따로 관리하고 이것에 대한 index를 넣게됩니다.
이때 이 따로 관리되는 table을 GDT(global discripter table)이라 합니다.
16bit 아키텍쳐에서도 리얼모드와 보호모드가 있고 (16bit머신의 보호모드는 배우지 않았고 16bit기계는 아에 다루지 않았습니다.)
32bit 아키텍쳐에서도 리얼모드와 보호모드가 있는데
우리가 배우는 것은 32bit 머신이므로 32bit의 리얼모드와 보호모드에 대해서만 알면 됩니다.
또 인텔에서 제공하는 리얼모드는 결국 하위호환성을 충족시키기 위해 있는 것이므로
32bit머신에서 리얼모드상에 있을때 16bit 머신을 쓰는것과 동일하게 느껴진다는 것이 요입니다.
일반적으로 인텔머신은 리얼모드로 시작되고 따라서 처음 실행되는 프로그램인 부트 로더는 16bit용 명령어로 짜여져 있습니다. 부트로더는 하드디스크를 읽어서 운영체제를 메모리로 로딩하고 운영체제로 점프합니다.
운영체제는 처음에는 16bit 명령어를 조금 쓰다가 해당 32bit 머신의 기능을 좀더 잘 활용하기 위해
해당 머신이 제공하는 보호모드로 전환해주는 것입니다. 그리고 이때부터는 32bit용 명령어를 쓰게 됩니다.
자세한 내용은 http://ko.wikipedia.org/wiki/X86_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98
위키를 참조하시면 도움이 될듯 합니다.
덧글의 내용에 사실과 다른 사항이 있으면 정정해주세요...