CS 공부
세그먼테이션 본문
세그멘테이션
- 프로그램을 동일한 페이지 크기로 분할하지 않고 프로그램 기능에 맞게 분할함 -> 페이징과의 차이점
기능별로 분할한 블록을 세그먼트라하며 주기억 장치를 프로그램별로 구분하지 않고 주기억 장치 전체를 이용하여 적재한다.
주기억 장치 전체에서 분산된 같은 종류의 프로그램을 구분하기 위하여 기억장치 보호키를 이용한다.
세그멘테이션의 특징
- 블록이 가변적이다.
- 주기억 장치를 구분하지 않고 주기억 장치 전체를 비연속적으로 할당받아 사용
- 세그멘테이션 기법은 메모리를 효율적으로 관리하기 위해서이다.
- 여러개로 분리된 세그먼트가 주 기억장치를 차지할 수 있도록 해주어야 하며, 각 세그먼트는 같은 크기일 필요는 없으나 연결된 기억 장소로 구성되어야한다.
- 세그먼테이션 기법에서는 기억 장치 보호키가 필요하다.
- 외부 단편화만 발생
- 주기적으로 압축이 필요
- 세그먼트의 길이가 모두 다르기 때문에 세그먼트 길이에 맞는 주기억 장치의 영역을 할당하지 못하면 다른 프로그램 영역을 침범하게 되는 세그먼트 오버플로우 결함이 발생한다.
세그먼트 테이블
그리고 세그먼트 테이블은 세그먼트 번호와 시작 주소(base), 세그먼트 크기(limit)를 엔트리로 갖는다.
세그먼트에서 주소변환 역시, 페이징과 유사하다. 한 가지 주의할 점은 세그먼트의 크기는 일정하지 않기 때문에, 테이블에 limit 정보가 주어진다. 그리고 CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 강제로 종료시킨다.
세그먼테이션에서 보호와 공유
페이징보다 세그먼테이션에서의 보호와 공유는 더 효율적이다.
보호
보호에서는 세그먼테이션 역시 r, w, x 비트를 테이블에 추가하는데, 세그먼테이션은 논리적으로 나누기 때문에 해당 비트를 설정하기 매우 간단하고 안전하다. 페이징은 code + data + stack 영역이 있을 때 이를 일정한 크기로 나누므로 두 가지 영역이 섞일 수가 있다. 그러면 비트를 설정하기가 매우 까다롭다.
공유
공유에서도 마찬가지다. 페이징에서는 code 영역을 나눈다해도 다른 영역이 포함될 확률이 매우 높다. 하지만 세그먼테이션은 정확히 code 영역만 나누기 때문에 더 효율적으로 공유를 수행할 수 있다.
세그먼테이션과 페이징
세그먼테이션은 페이징과 유사하고 보호와 공유에서는 더 나은 성능을 보여주었지만, 현재 대부분은 페이징 기법을 사용한다. 그 이유는 세그먼테이션에는 치명적인 단점이 있기 때문이다.
메모리 할당을 처음 시작할 때 다중 프로그래밍에서의 문제는 크기가 서로 다른 프로세스로 인해 여러 크기의 hole이 발생한다. 이로 인해 어느 hole에 프로세스를 할당하는 것에 대한 최적화 알고리즘이 존재하지 않고, 외부 단편화로 인해 메모리 낭비가 크다고 했었다.
세그먼테이션도 똑같은 문제점이 발생한다. 왜냐하면 세그먼테이션은 논리적인 단위로 나누기 때문에 세그먼트의 크기가 다양하다. 이로 인해 다양한 크기의 hole이 발생하므로 같은 문제가 발생한다.
결론적으로 세그먼테이션은 보호와 공유에서 효율적이고, 페이징은 외부 단편화 문제를 해결할 수 있다.
페이지 세그멘테이션 기법
그러므로 두 가지를 합쳐서 사용하는 방법이 나왔다. 두 장점을 합치기 위해서는 세그먼트를 페이징 기법으로 나누는 것이다.(Paged segmentation)
하나의 세그먼트를 여러개의 동일한 크기의 페이지로 구분하여 사용하는 방법이다.
하지만 이 역시 단점이 존재한다. 세그먼트와 페이지가 동시에 존재하기 때문에 주소 변환도 두 번해야한다. 즉 CPU에서 세그먼트 테이블에서 주소 변환을 하고, 그 다음 페이지 테이블에서 또 주소 변환을 해야한다.
페이징 VS 세그멘테이션
페이징은 물리적으로 일정한 크기로 나눈다 VS 세그멘테이션은 프로그램 기능에 맞게 분할한다.
페이징은 주기억 장치를 구분 VS 세그멘테이션은 구분 X
페이징 테이블 VS 세그먼트 테이블
참고
'CS공부 > 운영체제' 카테고리의 다른 글
파일 시스템 (0) | 2021.07.16 |
---|---|
주기억 장치 관리 전략(페이지 반입, 배치, 교체 전략) (0) | 2021.07.16 |
메모리 (0) | 2021.07.15 |
페이징(외부 단편화, 내부 단편화, TLB) (0) | 2021.07.15 |
경쟁 상태와 세마포어,뮤텍스 (0) | 2021.07.12 |