본문 바로가기

Dev.Basic/운영체제

[OS] 8-4. Memory Management IV

Chapter 8-4. Memory Management IV


현대의 컴퓨터에서 지원하는 프로그램들의 크기가 커졌다.

address space가 커져서 그와 비례하여 page table들의 크기가 비약적으로 커지게 된다.

프로그램마다, (프로세스 마다)이 따로 존재하는 page table들을 모두 메모리에 올리기에는 한계가 존재했다.

올린다고 하더라도, 극히 일부분만 필요로 하기 때문에, 공간낭비를 초래하게 된다.


그래서 page table을 또 하나의 page로 인식하는 방식을 사용했다.

마치, 서울시 안에 서대문구, 관악구, 강남구로 행정 구역을 나눠놓은 것 처럼

페이지 안에 주소 체계를 한 단계 더 두는 것이다.



Two Level Page Table (paging 기법)

안쪽 페이지 테이블(inner page table), 바깥쪽 페이지 테이블(outer page table) 두 가지의 테이블이 존재한다.

페이지 테이블을 두 단계 거쳐서 최종적으로 메모리에 접근하게 된다.


Address-Translation Scheme


P1은 outer page table의 index 값이고,

P2는 outer page table의 value 값에서의 변위(diplacement) 값이다.


실제로 사용되는 페이지에 대해서만 안쪽 테이블이 형성된다.

전체 주소 공간 중 상당 부분은 사용하지 않는 부분이기 때문에, 상황에 맞는 필요한 부분만 생성하여 접근한다.



Multilevel Paging and Performance

Address space가 더 커지면 다단계 페이지 테이블을 통해서 그 공간을 절약해야 한다.

각 단계의 페이지 테이블이 메모리에 존재하므로 logical address의 physical address변환에 더 많은 메모리 접근이 필요하게 된다.
때문에 TLB의 역할이 중요하다.

*Question! > 

메모리에 접근하는데 걸리는 시간이 100ns, TLB 접근 시간이 20ns 일 때,

TLB hit ratio 가 98%라면 effective memory access time은 얼마인가?

Effective memory access time = [0.98 * (100 + 20)] + [0.02 * (100 * 4 + 20 + 100)]



Page Table 구성

Valid / Invalid bit

Page table에는 valid / invalid bit 이라는 값이 포함되어 있다.

사용되지 않는 페이지들이 invalid 로 표시된다.

사용되지 않는 페이지란

물리적인 메모리에는 존재하지 않고 swap area에 존재하는 경우를 말하거나

프로세스가 그 주소 부분을 아예 사용하지 않는 경우를 의미한다.


Protection bit

page에 대한 접근 권한을 제어한다.

code영역의 경우에는 사용자로부터 수정을 막기 위해 read-only권한만 부여하고,

data or stack의 영역은 수정 가능성이 존재하므로 read / write 의 권한을 부여한다.


Shared Page

Shared code = Re-entrant code ( 재진입 가능 코드) = Pure code

read-only로 하여 프로세스 간에 하나의 code만 물리적 메모리에 올리는 페이지를 말한다.

shared code는 모든 프로세스의 동일한 logical address space에 위치해야 한다.

*cf>

IPC와는 조금 다르다. 같은 주소 공간에 매핑을 하는 것은 같지만,

매핑의 목적이 IPC는 커뮤니케이션을 목적으로 하여  read / write가 가능하지만,

shared page에서는 read-only로 서로에게 영향을 미칠 수 없다.



Private code and data

각 프로세스들이 독자적으로 가져야 할 영역으로 메모리에 독자적으로 올리는 부분이다.

Private한 영역이므로 logical address space 중 아무 곳에 와도 무방하다.





Chapter 8-4. 끝

이 포스팅은 이화여대 반효경 교수님 강의를 듣고 요약한 내용을 담고 있습니다.



'Dev.Basic > 운영체제' 카테고리의 다른 글

[OS] 9-1. Virtual Memory I  (3) 2016.06.07
[OS] 8-5. Memory Management V  (0) 2016.06.06
[OS] 8-3. Memory Management III  (0) 2016.06.05
[OS] 8-2. Memory Management II  (0) 2016.06.05
[OS] 8-1. Memory Management I  (0) 2016.06.05