ecsimsw
Segmentation 본문
Segmentation
: 프로세스를 일정한 크기로 자르는 paging과 달리 논리적으로 잘라서 메모리에 적재한다. 즉 적재되는 세그먼트 크기가 다 다르다.
Segmenation address translation
- Cpu의 논리 주소를 s/d로 나눠 s는 segment table 인덱스를 나타내고, table에서 맵핑한 값에 더해 물리 주소를 얻는다. 이 부분까지는 페이징과 같으나 세그먼트는 단위의 고정된 크기가 없기 때문에, 다른 영역을 침범하지 못하도록, 또는 그 세그먼트 영역을 구분하도록, 세그먼트 테이블에 Limit 값이 추가된다.
- 위 예시에서 논리주소가 s: 2, d: 100이라면, 테이블에서 인덱스 2에 해당하는 베이스 값 (4300)에 d(100)을 더하여 4400이라는 물리주소를 갖는다. 만약 s:1, d:500 이라면 베이스값(6300)에 d(500)을 더하여 물리 주소 6800을 만들지만 테이블 인덱스 1의 limit는 400이므로 이 값은 영역 이탈로 무효화된다.
Segmentation / Paging
- 보안과 공유 : 보안과 공유면에서는 segmentation 방식이 더 유리하다. 예를 들어, 프로세스 안에 분리되어 보안되어야할 partA와 partB가 있다고 하자. paging 방식으로 이를 나눈다면 그 크기가 매우 작지 않거나, 운이 매우 좋지 않는 이상 partA와 partB가 동시에 포함된 페이지가 나온다. segmentation 방식은 임의로 크기를 지정할 수 있어 이 두 영역을 따로 분리할 수 있다. code, data, stack 중 특히 data는 분리해서 처리해야하는 경우가 많고, paging과 달리 segmentation 방식은 이를 따로 분리하여 접근 제어 / 공유할 수 있다.
- 외부 단편화 문제 : paging으로 외부 단편화를 해결할 수 있다. 물론 페이지 크기에 따라 최대 page size-1 만큼의 fragment는 발생할 수 있지만, 이는 충분한 해결 방안이 된다. 하지만 segmentation 방식은 기존과 마찬가지로 결국 임의의 크기의 프로세스가 적재되고, 소멸되면서 hole이 발생하고 이는 외부 단편화로 이어진다. 이 큰 단점이 segmentation이 보안과 공유 의 장점을 갖음에도 불구하고, paging이 사용되는 이유이다.
Paged segmentation
- 위 극명한 장단점을 절충할 수 있는 아이디어는 간단하다. (partA, partB)처럼 원하는 영역을 구분하고 이를 다시 일정한 크기로 자르면 된다. 이를 Paged segmentation 방식이라고 한다. 다만 속도의 부담이 커진다는 단점이 있다.
'Computer Science > Operating system' 카테고리의 다른 글
Effective Access Time / Locality of reference (0) | 2019.10.19 |
---|---|
Virtual memory / Demand paging (0) | 2019.10.19 |
Paging / Internal fragmentation / TLB (0) | 2019.10.16 |
Contiguous Memory Allocation / External fragmentation (0) | 2019.10.16 |
Memory (0) | 2019.10.10 |