728x90
Segmentation
- 프로그램을 의미 단위인 여러개의 segment로 구성
- 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의
- 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능
- 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨
- Segment 는 다음과 같은 logical unit 들이다.
- main(), function, global variables, stack, symbol table, arrays
Segmentation Architecture
- locigal address는 다음의 두가지로 구성
- <segment-number, offset>
- segment table : 각각의 테이블 엔트리는 base 와 limit 을 가지고 있음
- base : starting physical address of the segment
- limit : length of the segment
- Segment-table base register (STBR) : 물리적 메모리에서의 segment table의 위치
- Segment-table length register (STLR) : 프로그램이 사용하는 segment의 수
- 단점 : segment 단위는 의미에 기반하므로 크기가 각각 달라져서, 외부 단편화 문제가 발생한다.
- 장점: 의미 단위로 해야 하는 일을 수행할 때 paging 기법보다 유리하다.
- Protection
- 각 세그먼트 별로 protection bit가 있음
- Each entry
- Valid bit 0 -> illegal segment
- Read/Write/Execution 권한 bit
- Sharing
- segment는 의미 단위이기 때문에 공유와 보안에 있어서 페이징 기법보다 효과적이다.
- ex. stack 세그먼트의 경우, stack 은 함수 호출 및 실행을 위한 공간이므로 read , write 권한이 모두 필요할 것이다.
- ex. code 세그먼트의 경우 코드는 바뀌면 안되기 때문에 read-only로 관리해야 할 것이다.
- 이러한 세그먼트 단위로 protection 을 하게 되면 훨씬 관리가 효과적이다.
- segment는 의미 단위이기 때문에 공유와 보안에 있어서 페이징 기법보다 효과적이다.
- Allocation
- first fit / best fit
- 외부 단편화 발생 : segment 의 길이가 동일하지 않으므로 가변 분할 방식에서와 동일한 문제점들이 발생한다.
- segment 라는 구성 단위가 개수로는 paging 에 비해 작다. segment table은 entry 수가 page table에 비해 훨씬 적을 것이다. 구현 측면에서는 주소 변환을 위한 메모리 공간 낭비는 paging 기법이 훨씬 심하다.
- 현실적으로 pure segmentation 을 구현해서 사용하기는 어렵다. 실제 시스템에서는 paging 기법을 근간으로 사용한다.
- segmentation 과 paging 을 혼합해서 사용하는 방법이 있다.
Segmentation with Paging
- segment 크기가 page 크기의 배수가 되도록 한다. (의미 단위로 관리)
- segment 단위로 메모리에 올라가는 것이 아니라 segment를 구성하는 page 단위로 물리적인 메모리에 올라가게 한다.
- 의미 단위로 관리하는 것들은 segment table로 관리하게 된다.
728x90
'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 19. Memory Management (2) - Paging (0) | 2023.11.13 |
---|---|
[운영체제] 18.Memory Management (1) (0) | 2023.11.05 |
[운영체제] 교착상태 (0) | 2023.08.08 |
[운영체제] 14. 세마포어와 동기화 문제와 해결 (Bounded-Buffer, Readers-Writers Problem, 식사하는 철학자 문제) (0) | 2023.07.30 |
[운영체제] 12. 임계구역(Critical Section) 문제 & 세마포어 (Semaphore) & 뮤텍스 (Mutex) (0) | 2023.07.23 |