(1) 페이징기법과 주소변환의 의미
: 하나의 태스크마다 4GB의 가상 메모리를 사용한다. 하지만 궁극적으로 태스크는 물리 메모리에 저장되기 때문에 우리는 가상주소를 물리주소로 변환하고(주소변환) 실제 물리메모리의 어디에 적재되었는지 알아야 한다.

○ 리눅스는 페이징 기법을 사용하여 가상 메모리의 페이지를 물리 메모리의 빈 페이지 프레임에 적재시킨다.
  - 페이지 : 가상메모리를 일정한 고정크기로 분할하는 단위
  - 페이지프레임 : 물리메모리를 일정한 고정크기로 분할하는 단위

○ 가상메모리의 페이지들 가운데 현재 수행에 필요한 페이지만 물리메모리에 적재시킨다. (메모리 용량문제)
  - 태스크가 n개의 페이지 프레임 만큼의 메모리 공간이 필요하다면, 물리메모리의 비어있는 n개의 프레임 가운데 n개를 할당
    하고,
가상메모리의 n개 페이지를 적재한다.
  - 비어있는 프레임이 존재하지 않으면, 시스템 정책에 따라 할당된 페이지 프레임을 비운 후 적재한다.

○ 하나의 페이지는 어느 위치의 페이지 프레임이든 적재할 수 있다.
  - 실제 물리메모리상의 임의의 페이지 프레임에 적재되므로 페이지가 적재된 페이지 프레임의 위치와 임의의 물리공간에 저장
    되어 있는
데이터의 위치를 알 수 있는 방법이 필요하다. --> [페이지 테이블]


(2) 페이지 테이블

페이지 테이블을 페이지 개수만큼 엔트리로 분할하고, 각 엔트리에는 각 페이지가 적재된 페이지 프레임의 위치정보를 담는다.
  - 페이지 프레임의 위치정보는 페이지 프레임의 시작위치(Page Frame Number)이다.

○ 실제 물리주소를 알아내는 방법
  - 가상 주소는 CPU에서 생성되는 주소
    페이지 테이블의 엔트리를 찾기 위한 페이지 번호와 offset으로 나뉜다.
    32bit 주소 중에서 상위 20bit는 PN || 하위 12bit는 offset

      [Demand Paging]
      - 메모리 관리 방법 중 하나
      - 프로그램의 일부분만 메모리 (주기억 장치)에 로드하는 기법
      - 가상 메모리의 사용을 가능하게 했다.
      - 특징 : 작업들은 같은 크기로 나뉘어 보조기억장치에 저장됨.
                  페이지들은 요청 즉시 로드됨.
                  멀티태스킹 중 유휴(blocked or wait) 상태의 작업들을 보조 기억장치로 옮기고, 다른 작업들을
                  주기억 장치에서 실행


○ 한 페이지 테이블 사용시 변환 방법은 간단하나 메모리 공간이 많이 필요하다.
  - 페이지 테이블도 메모리에 위치한다(1개의 엔트리에 1개의 페이지 필요)

○ 메모리 공간의 낭비를 해결하기 위해
  - 인텔은 페이징을 2단계로, 리눅스는 페이징을 3단계로 쓴다. (2.6 kernel은 4단계로)


※ 출처 : http://idkkangjs.blog.me/30091117058

by 민트앤라떼 2011. 9. 27. 13:42