본문 바로가기
전공/시스템 프로그래밍

[시스템 프로그래밍 3-3] 32 bit X86 processor의 메모리 관리

by 뜨거운 개발자 2023. 3. 20.

x86 프로세스의 메모리 관리

  • 역시 리얼모드, 프로텍트 모드 등이 있다. (+ 버추얼 8086모드)

리얼모드에서 메모리 관리

8086 16비트 레지스터들과의 호환성이 있어야 하기 때문에 주소가 20비트 였고 레지스터는 16비트였지만 따라서 메모리가 1M까지 어드레싱 할 수 있었다.

32비트 프로세스에서 리얼모드를 사용하게 되면 이전과 호환성을 유지하기 위해서 cpu의 레지스터는 32비트를 그대로 가지고 있지만 8086에서 사용된 20비트 체계를 써야만 호환성이 유지가 되기 때문에 억지로 20비트 주소 버스를 사용할 수밖에 없었다.

  • 멀티태스킹 불가했다. 다만, 주변 기기와의 동작을 인터럽트 형태로 처리 하기 위해서 해당 프로그램을 일시적으로 중단 할 수 있었다.
  • 이 모드는 실제 물리주소에 접근을 하기 때문에 어플들이 메모리에 접근하는 걸 허용하였고 ms dos에서 이 방식을 사용했다.
  • Window95 와 98의 경우 이 모드로 부팅을 할 수가 있었다.

보호모드에서 메모리 관리

보호모드에서는 호환성 대신 32 비트 레지스터를 온전히 사용 가능하고 멀티태스킹이 가능했다.

또한 32비트 데이터 버스를 가지고 있었다. 주소 버스 역시 32비트였다.

최대 4GB 까지 사용 할 수 있었다.

각각의 프로그램들이 그 프로그램을 위한 메모리를 할당하였기 때문에 프로그램이 다른 메모리를 접근하는 문제를 막았다. (세그먼트 사용)

도스 이후에 나온 윈도우나 리눅스는 프로텍티드 모드에서 작동하였다.

버추얼 8086모드

보호모드 자체는 32비트에서 동작이 되지만 그 위에서 리얼모드로 시뮬레이션이 된다.

각각 그래서 1메가바이트씩 가지고 있다고 생각하고 동작을 한다.

윈도우에서 명령 윈도우를 열 수 있었다.

사실 상 아에 다른 컴퓨터에 있다고 동작을 해서 한 컴퓨터에서 여러개의 컴퓨터가 동작하는 것 처럼 해서 영향을 안 줬다.

만약 여기서 사용하는 프로그램이 진짜로 메모리를 접근을 했다면 문제가 생겼겠지만 실제 피지컬 어드레스처럼 생각은 하지만 실제로 가상 메모리 위에 올라가 있어서 그렇지는 않다.

이미 이전 게시물에서 충분히 다뤘기 때문에 쭉 읽었다면 이 글은 복습정도로 느껴지실 겁니다.

728x90