글
(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
'L inux > Kernel' 카테고리의 다른 글
메모리 관리 - 페이지 할당 / 교체 (0) | 2011.09.27 |
---|---|
메모리 관리 - 리눅스 페이징 기법 (0) | 2011.09.27 |
메모리 관리 - 자료구조 (0) | 2011.09.27 |
메모리 관리 - 가상메모리 & 물리메모리 (0) | 2011.09.27 |
메모리 관리 - 이해와 기법 (0) | 2011.09.27 |
RECENT COMMENT