[OS] Virtual Memory : Segmentation

parkheeddong·2023년 5월 30일
0

Operating System

목록 보기
47/63
post-thumbnail

1. Segmentation System Concept


프로세스 이미지를 논리적 블록(=Segment)으로 분할한다.

일률적 같은 크기로 분할하는 것이 아니라, 서로 다른 크기의 블록으로 분할된다.

Paging system은 주기억장치(memory)를 페이지 크기와 동일한 크기의 페이지 프레임으로 분할하고, 페이지 프레임 넘버를 붙인다.

📌 메인 메모리를 미리 분할해두는 것은 좋지 않다.

Segment는 크기가 각각 다르기 때문에 분할된 Segment가 메모리에 로딩되기 위해서는 메모리를 동일크기로 분할할 수 없다.

📌메인 메모리 관리는 VPM 기법을 닮았다.

Paging 시스템의 메모리관리는 미리 분할해둘 수 있으므로 FPM기법을 닮았고, Segment 시스템은 VPM 기법과 유사하게 해야 한다.

📌 장점

논리적으로 분할했기 때문에 Segment sharing과 protection이 편리하다.

📌 단점

Address Mapping을 할 때와 메모리 관리를 할 때 오버헤드가 크다.

프로세스 Pa가 5개로 분할되어 있다.
이중 1번, 3번 segment는 Memory에 들어가 있다.
중간중간 어떤 영역은 empty이기도 하다. 즉, vpm 기법!




2. Address Mapping

Virtual Address : v = (s,d)
s = segment number
d = displacement in a segment

Segment Map Table(SMT)로 관리한다.




3. Address Mapping Mechanism

direct mapping, associative mapping, hybrid mapping, register 등 모두 Paging System과 동일하다!

Direct Mapping을 대표적으로 살펴 보자.

1) SMT에는 Segment length를 저장해야 한다.

2) Protection bits도 저장해야 한다.

(read write 가능, read execute 가능, read write append 가능 등)

3) Residence bit이 있으며, 메모리에 없을 경우 Segment Fault가 발생한다.



🌱 Direct Mapping Algorithm

CPU에 프로세스 a가 실행중이라고 생각해 보자.

1. v = (s,d)인 virtual address를 실행 중 generation했다.

2. SMT에서 s를 찾아 간다.

1) residence bit이 1인지 검사한다.
➡ bit이 0이면 context switching, sleep 후 다시 실행

2) displacement가 segment length보다 작은지 검사한다.
➡ 더 크면 segment overflow exception : 오류 발생. 그 프로세스는 이 exception으로 강제 termination 된다.

3) protection bit이 적합한지 검사한다.
예를 들어 virtual address를 generation하면서 pa가 'write'을 하려고 하는데, protection bit에 read only로 되어 있다면 메모리를 접근하지 못하게 관리할 수 있다. ➡ exception 발생.
➡ 가능하지 않은 접근이면 segment protection exception. 잘못된 접근이므로, 그 프로세스는 이 exception으로 강제 termination 된다.

✅ 정리: 1번은 virtual system으로 인한 exception으로서, segment fault로 정상적인 것이기에 괜찮지만 2번 3번은 프로세스가 죽게 된다.

3. 정상적이라면 이후 segment address를 dispalcement와 더해서 a + d가 real address가 된다 !



4. Segment 시스템에서의 메모리 관리

VPM과 유사하다.

Placement 기법도 First Fit, Best Fit, Worst Fit, Next Fit이 있으며 유사하다.

다른 점은 유일하게 프로세스가 통째로 들어오는 것이 아니라는 점 뿐 !

0개의 댓글