Be myself :: 7. 페이징

달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

1 개요

페이징 기법을 이해하면 RAM이 512Mbyte 밖에 안되는데 32비트 시스템에서 4G에 해당하는 메모리를 각 프로세스마다 할당되는지 이해 할 수 있을 것이다.

*선형주소: 프로그램상에서 만들어진 주소
물리주소: 실제 하드웨어인 RAM의 핀에 전기신호를 주어 위치를 지정하는 주소

2 페이징 구현

2-1 A20게이트

16비트 리얼 모드에선 오프셋 값으로 물리주소를 지정하는데, 0xFFFF:FFFF의 경우 물리주소로 나타내면 0x10FFEF이다. 이를 이진수로 나타내면 100001111111111101111이다. 과거 8086CPU에서 어드레스 라인이 0번에서 19번으로 20개가 존재했기 때문에 위의 주소에서 최상위 비트 1은 제외되었었다. 하지만 80286이 도입되면서 어드레스 라인이 24개가 되어 21번째 피트가 제외될 필요가 없게 되었다. 하지만 과거 8086CPU의 호환성 문제 때문에 A20에 키보드 컨트롤러를 AND게이트로 묶어 활용하게 되었다. 키보드 컨트롤러가 1이면 20번째 비트는 사용가능하고, 0이면 사용 불가능하다. 만약 A20게이트가 0이라면 홀수의 주소밖에 사용 할 수 없기 때문에 32비트로 완벽히 전환하려면 보통 A20게이트를 키고 프로그램을 짠다.

2-2 페이징 구현

페이징 구현의 과정을 그림을 통해 설명하겠다. 페이지 디렉토리의 크기는 1KB이고 총 1024개의 디렉토리 엔트리로 이루어 져 있다. 페이지 테이블의 크기도 1KB이고 총 1024개의 테이블 엔트리로 이루어져 있다. 1개의 페이지 디렉토리와 1개의 페이지 테이블로 총 4KB의 값을 표현할 수 있으므로 전체 표현 가능한 주소의 크기는 페이지 디렉토리 1KB X 페이지 테이블 1KB X 총 4KB페이지 = 4G 라는 값이 성립된다.

'컴퓨터구조&OS > OS' 카테고리의 다른 글

6. 유저모드 Task switching  (0) 2014.05.05
5. 보호  (0) 2014.05.05
4. Task switching  (0) 2014.05.05
3. 인터럽트 처리  (0) 2014.05.05
2. Protected 모드로의 전환  (0) 2014.05.05
Posted by flack3r
|