Operating System/O.S(Neso Academy, HPC Lab. KOREATECH)

HPC Lab) Virtual Memory

Tony Lim 2021. 5. 22. 12:04

Non continuous allocation

사용자 프로그램을 여러개의 block 으로 분할

실행시 , 필요한 block 들만 메모리에 적재 , 나머지 block 들은 swap device 에 존재

 

Address Mapping 

Continuous allocation = Relative address (상대 주소) 를 가지고 실제 주소로 Relocation 을 해주었다.

Non Continuous allocation = Virutal address 상에서는 연속되어 있지만 실제 Real address 에서는 다 쪼개져서 파편적으로 존재한다.

사용자 , 프로세는 프로그램 전체가 메모리에 연속적으로 적재되었다고 가정하고 실행할 수 있음

 

Block Mapping

사용자 프로그램을 block 단위로 분할 / 관리

각 block 에 대한 address mapping 정보 유지

 

Block map table (BMT)

kernel 공간에 프로세스마다 하나의 BMT를 가진다

해당 block 은 residence bit 이 1 이면 메모리에 0 이면 swap device에 존재한다.  

a 는 해당 block 의 실제 주소의 시작점을 나타내고 displacement 만 큼 떨어진곳이 해당 block안에서의 실제 주소가 된다.

 

 

Paging system

Page = 프로그램을 같은 크기의 블록으로 분할 

Page frame = 메모리의 분할 영역 , Page와 같은 크기로 분할

No external fragmentation = 프로그램과 메모리가 같은 크기로 나누어져 있기 때문에 발생하지 않는다. Internal fragmentation 은 발생할 수 있다. 일정한 크기로 나누다가 마지막에 작은 부분이 남을 수 가 있다. 이부분을 메모리에 넣으면 남는 부분이 생긴다.

 

Address Mapping

Virtual address : v = (p,d)

p = page number

d = displacement(offset)

 

Page Map Table (PMT)

 

Direct mapping

Block mapping 과 유사 

Residence bit 을 통해 메모리에 존재하는 지 확인한다.

0 인경우 page fault 임으로 swap device에서 해당 page를 메모리로 적재하고 PMT를 갱신한후에 2번을 수행한다. 해당 프로세스는 I/O request 임으로 asleep 상태로 간다. 이때 Context switch 가 발생함으로 page fault 는 오버헤드가 크다는 것을 알 수 있다.

PMT도 메모리에 있고 실제 물리주소도 메모리에 있다. 접근 횟수가 2번이다. 

PMT 를 위한 전용 기억장치 사용 = Dedicated register or cache memory

 

 

Associative Mapping

TLB 라는 하드웨어 장치 덕분에 위의 page number를 찾는 계산과정 대신 병렬 탐색이 존재하여 훨씬빠르다.

하지만 가격이 상당히 비싸서 크기를 키우기 힘들다.

Hybrid 로 PMT중 일부 entry 만 TLB 에 적재하여 쓰는 경우도 있다.

TLB에 봐서 없으면 PMT 에서 가져오되 가는김에 TLB에 저장해주고 간다. 지역성(Locality)를 고려하여 TLB를 갱신하는것이다.

특정 페이지를 공유해서 사용할 수 있다 .이떄 각각의 프로그램의 PMT 에서 entry 를 동일하게 해주어야 문제가 생기지 않는다. 

 

 

Segmentation system

프로그램을 논리적 block 으로 분할 , block 크기가 서로 다를 수 있음.

크기가 다 다르기 때문에 메모리 관리의 overhead 가 크다. 전용 하드웨어를 사용하여 해결 가능하다.     

프로그램 크기에 알맞게 분할되니 internal fragmentation 은 발생하지 않고 중간 중간에 다 처리한 프로세스들의 메모리들이 빠져나가면서 생긴 빈공간 때문에 external fragmentation 이 발생한다. 

 

Address mapping

Virtual address: v = (s,d)

s = segment number

d = dispalcement in a segment

Segment Map Table  (SMT) = PMT 와 유사하고 mapping 과정도 paging 과 유사하다.

Paging과는 다르게 하나의 function 같은 것들이 쪼개지지 않기에 그들이 할 수 있는 권한을 써놓아 줄 수 있다. 그것이 protection bits 의 역할이다. 

residence bit 가 0 이면 segment fault 가 발생하면서 swap device 로부터 segment 를 메모리로 적재 한후 SMT를 갱신

변위 (d) 가 segment 길이 보다 큰 경우 segment overflow exception 처리 모듈을 호출

허가되지 않은 연산인 경우 (protection bits를 통한 검사) segment protection exception 처리 모듈을 호출

 

논리적으로 분할되어 있기에 공유 및 보호가 용이함, 공유 Paging에서 발생했던 branch 문제도 논리적 분할이기에 branch의 시작지점이 해당 segment내에 있기에 문제가 되지 않는다.

 

 

Hybrid paing/segmentation system

Address mapping

Virtual address : v = (s, p , d)

s = segment number , p = page number , d = offset in a page

프로그램을 page로 자르고 메모리는 segment로 자른다. 

SMT 안에 PMT 의 주소 값이 적혀져 있다. 

해당 Page가 메모리에 올라갔는지 알기위한 residence bit은 여기에있다.

이경우에는 메모리 접근이 3번 일어남으로 성능이 저하 될수 있음 , 전체 테이블 수가 증가하였고 , internal fragmentation 이 발생할수 있다.