반응형

후,, 컴터가 맛이가서 3번 복구하고 와서 이제서야 포스팅을 시작하네요 ... 본론으로 바로 들어가겟습니다 

존칭 생략합니다.



각 모드에는 아래의 표와 같은 특징이 있으며, '컨트롤 레지스터'와 '인터럽트'라는 특수한 이벤트를 통해 각 모드를 전환할 수 있다.

 운영모드

설명 

리얼모드 

-프로세서의 초기 상태로서 16비트 모드로 동작하며 8086 프로세서와 호환되는 모드

-최대 1MB(2^20)의 주소 공간을 지원 

보호모드 

-32비트 모드로 동작하며 세그먼트,페이징,보호,멀티태스킹 등의 기능을 제공하는 모드

-4GB92^32)의 주소 공간을 지원 

IA-32e 모드 

-32비트 호환모드와 64비트 모드의 두 가지 서브모드로 구성 

-16EB(2^64)의 주소공간을 지원하는 모드

시스템 관리 모드 

-전원 관리나 하드웨어 제어 같은 특수 기능을 제공하는 모드 

가상 8086 모드 

-보호 모드 내부에서 가상의 환경을 설정하여 리얼 모드 처럼 동작하는 모드 

x86-64 프로세서는 위와 같이 총 다섯가지 운영모드를 지원하지만, 다섯 가지 운영 모드를 모두 구현해야 0S를 만들 수 있는 것은 아니다. 목적에 따라 몇몇 운영모드는 구현하지 않거나 필요하면 구현하는 방식으로 진행할 수 있다.


여기서 64비트 OS가 반드시 지원해야 하는 세가지 모드는 '리얼 모드', '보호 모드' IA-32e 모드 중 64bit 서브모드'이다.

~> 시스템 관리모드나 가상 8086모드는 특수한 상황에서 사용되므로 OS에서 해당 기능을 사용하지 않는다면 구현하지 않아도 된다.


리얼모드

프로세서가 어떤 상태 또는 모드에 있든 전원이 켜지거나 리셋되면 프로세서는 리얼 모드로 진입한다. 리얼 모드는 과거의 16비트 프로세서와 동일하게 동작하며, 이후 BIOS(Basic Input Output System)의 여러 기능을 사용할 수 있다. 

~> BIOS는 디스크 읽기 및 쓰기 기능부터 그래픽 모드로 전환하는 기능까지 여러 가지 기능을 제공하며, 이를 사용하면 별도의 디바이스 드라이버를 제작하지 않고도 원하는 작업을 수행할 수 있다. 

리얼 모드는 디바이스 드라이버를 제작하지 않아도 되는 장점이 있지만, 상당히 부담스러운 부분이 존재한다.(리얼 모드에서 하는 작업은 OS이미지를 디스크에서 메모리로 복사여 보호모드로 변경하는 것 밖에 없지만 대부분 작업을 어셈블리어로 처리해야 하기 때문에, 하지만 이부분만 지난다면 C언어로 작업할 수 있다)


보호모드

IA-32e 모드로 전환하려면 반드시 거쳐야 하는 모드로, 32비트 윈도우나 리눅스 OS가 동작하는 기본 모드.최대 4G(2^32) 주소 공간을 제공하며 OS의 필수 기능으로 자리 잡은 보호, 멀티태스킹, 세그먼테이션, 페이징 등의 기능을 하드웨어 적으로 지원한다.(여러 기능을 제공하는 만큼 상당히 복잡하고, 레지스터와 자료구조가 다양하다.. 아마 나도 이부분을 건드리면서 암에 걸릴지도 모르겟다..)

~> 보호 모드에서 사용하는 레지스터는 대부분 IA-32e 모드에서도 같이 사용하므로 보호모드를 이해하는 것이 매우 중요하다.


IA-32e모드

서브 모드로 32 비트 호환 모드와 64비트 모드가 있고, 우리가 투자해야할 많은 시간이 이곳에 존재한다. 


~>프로세서가 32비트 호환모드 일 때는 보호모드에 있는 것 처럼 동작하므로 32비트 코드를 그대로 실행할 수 있다. 이는 간단히 서브모드만 변경함으로써 보호모드 코드를 실행할 수 있다는 것을 의미한다.


운영 모드 사이의 관계와 전환

특정 모드에서 다른 모드로 전환하는 작업은 현재 동작 중인 모드에 따라 차이가 있다. 아래 그림과 같고, 화살표가 연결되지 않은 모드 끼리는 다이렉트로 전환이 불가능하며, 무리하게 시도하면 리셋이나 예외가 발생할 수 있다.(그림 장인 정신으로 그려 보았다... 혹시 문제가 있다면 글 남겨주길 바란다)

조건에는 컨트롤 레지스터와 인터럽트 발생만 표시되어 있지만, 기본적으로 각 모드에 필요한 '자료 구조'는 미리 설정 되어 있어야 한다.

다음 포스팅에서는 프로세서 레지스터를 다시 한번 살펴보고(다른 포스팅에서 짧게나마 설명했었다), 메모리 모델에 대해서 알아보도록 하겠다.



반응형
,