728x90
728x90
Segmentation(세그멘테이션)
일정한 크기로 자르는 Paging과 달리, PCB, Code, Data, Stack 영역 등 논리적 내용을 기반으로 프로그램을 나누는 기법이다.
- 나눠진 하나하나를 Segment라고 부른다.
- PCB, Code, Data 영역은 공유 자원으로 쓰인다.
- 따라서, 프로세스 간 sharing 에 장점을 가진다.
- Segment는 크기가 다 다르다. 즉, Dynamic Partitioning에 해당한다.
- 따라서, 외부단편화가 발생한다.
- 연속된 공간에 존재하지 않아도 된다.
장점
- 내부단편화를 해결했다.
- 보호와 공유 기능을 수행한다.
단점
- 외부단편화가 발생할 수 있다.
- 너무 큰 단점이라 Segmentation을 잘 사용하지 않는다고 한다.
Virtual Address & Segment Table Entry
Page Table Entry 와 유사한 방식으로 구성되어 있다.
Virtual Address
- Segment Number : 세그먼트 번호
- Offset : 세그먼트 내에서 몇번째 줄에 해당하는 지를 나타낸다.
Segment Table Entry
- P(Present bit) : 해당 세그먼트가 메인 메모리에 존재하는 지를 나타내는 비트다.
- V(Valid bit)라고도 쓰인다.
- 1bit의 크기로, 0 또는 1의 값을 가진다.
- 1이면 메인 메모리에 존재, 0이면 메인 메모리에 존재하지 않음을 나타낸다.
- M(Modify bit) : 메인 메모리에 할당된 후 코드가 수정되었는지 여부를 나타낸다.
- D(Dirty bit)라고도 쓰인다.
- 1bit의 크기로, 0 또는 1의 값을 가진다.
- 1이면 수정이 되었다는 뜻, 0이면 수정되지 않았다는 뜻이다.
- Length : 세그먼트의 길이를 나타낸다.(페이지와 달리 세그먼트는 길이가 모두 다르기 때문)
- Length보다 Offset이 크다면 인터럽트(Segmentation Fault)가 발생한다.
- Segment Base : 세그먼트의 물리 주소 시작점을 의미한다.
- Segment Base + Offset : 필요한 데이터가 존재하는 물리 주소
Segment 작동 방식
- Segment Number와 Segment Table Ptr을 더해 Segment Table 에 접근한다.
- STBR(Segment Table Base Register)에는 Segment Table의 시작 주소가 담겨 있다.
- Present bit를 확인한다.
- Present bit = 1 이면 (물리 메모리에 세그먼트가 적재되어 있음) 계속 진행한다.
- Present bit = 0 이면 (물리 메모리에 세그먼트가 없음) 가상 메모리에서 세그먼트를 가져와 물리 메모리에 적재한다.
- 메인 메모리의 Base + Offset 에 접근한다.
- Base + Offset > Length 라면 인터럽트(Segmentation Fault)를 발생한다.
- Segmentation Fault : 잘못된 주소에 접근하려고 하는 상황에 발생하는 오류
- Base + Offset > Length 라면 인터럽트(Segmentation Fault)를 발생한다.
- Main Memory의 Segment에 접근하여 작업을 진행한다.
Combined Paging and Segmentation
페이징과 세그멘테이션의 장점들을 결합시킨 기법이다.
- 프로세스는 프로그래머의 재량에 따라 몇 개의 세그먼트로 나눠진다.
- 각 세그먼트는 다시 프레임의 크기와 동일한 크기의 페이지로 나눠진다.
- '세그먼트 크기 < 페이지 크기'일 경우 하나의 세그먼트가 하나의 페이지 공간을 차지한다.
- 내부단편화가 발생한다.
- '세그먼트 크기 < 페이지 크기'일 경우 하나의 세그먼트가 하나의 페이지 공간을 차지한다.
- Paging과 Segmentation을 설명할 때 언급했던 필드들이다.
- Paging 설명은 하단의 게시글을 참조하길 바란다.
- 세그먼트 테이블을 지나 페이지 테이블에 접근하고 메인 메모리에 접근한다.
- 적재, 변경 작업은 페이지 수준에서 다루어지기 때문에 Segment Table Entry에는 P,M bit가 없다.
장점
- 공유, 보호의 기능을 제공한다.
- 외부단편화를 해결할 수 있다.
단점
- 내부단편화가 더 늘어날 수 있다.
작동 방식
- Segment Number와 Segment Table Ptr를 통해 Segment Table에 접근한다.
- Segmentation 방식을 사용하며 Page Number를 통해 Page Table에 접근한다.
- Paging 방식을 사용하며 Offset을 통해 메인 메모리의 Frame에 접근한다.
참고
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
MMU, TLB (0) | 2023.04.13 |
---|---|
메모리 계층구조 (0) | 2023.04.05 |
가상 메모리(Virtual Memory), 페이징(Paging) (1) | 2023.04.02 |
내부 단편화, 외부 단편화 (0) | 2023.04.02 |
Thread Pool(스레드 풀) / Monitor(모니터) / Fork-Join(포크-조인) (1) | 2023.03.08 |