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 이 발생할수 있다.
'Operating System > O.S(Neso Academy, HPC Lab. KOREATECH)' 카테고리의 다른 글
HPC Lab) 파일 시스템 (0) | 2021.06.02 |
---|---|
HPC Lab) Virtual Memory Management (0) | 2021.05.31 |
HPC Lab) Memory Management (0) | 2021.05.20 |
HPC Lab) Deadlock (0) | 2021.05.19 |
HPC Lab) Semaphore + event count , Monitor (0) | 2021.05.18 |