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 설명은 하단의 게시글을 참조하길 바란다.
가상 메모리(Virtual Memory), 페이징(Paging)
가상메모리(Virtual Memory) 주기억장치의 부족한 물리적 저장공간을 보조기억장치를 이용해서 가상으로 늘려 주는 기술이다. 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록
hojunking.tistory.com
- 세그먼트 테이블을 지나 페이지 테이블에 접근하고 메인 메모리에 접근한다.
- 적재, 변경 작업은 페이지 수준에서 다루어지기 때문에 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 |