세그먼테이션

- 사용자 프로그램은 세그먼테이션 기법을 이용하여 프로그램과 그와 관련된 데이터들이 세그먼트로 나뉘어질 수 있음.
- 프로그래머가 각 세그먼트를 지정 가능
- 프로세스가 메모리로 적재될 경우 프로세스의 모든 세그먼트가 사용가능한 메모리 영역에 할당되어지고 그에 따라 세그먼트 테이블의 주소가 만들어짐
- 세그먼트의 길이는 유동적이며 최대 길이는 제한이 있음.
- 유동적이기 때문에 동적 분할과 유사한 성격을 띰.
- 하지만 주요한 차이점은 세그먼테이션의 경우 프로그램이 하나 이상의 파티션을 차지할 수 있고 이 파티션들이 연속적일 필요가 없다.
- 동적 할당 기법과 마찬가지로 외부단편화를 초래하지만 프로세스가 보다 작은 크기의 여러 조각으로 나누어지기 때문에 외부 단편화가 상대적으로 적음
- 물리주소와 논리주소 간에 복잡한 관계가 존재
- 각 프로세스마다 세그먼트 테이블을 이용
- 주기억장치의 사용 가능한 블록들의 리스트 유지
메모리 분할 방법 정리
| 기술 | 설명 | 강점 | 약점 |
|---|---|---|---|
| 고정 분할 | 시스템 생성 시에 주기억장치가 고정된 파티션들로 분할됨 프로세스는 균등사이즈의 파티션 또는 그보다 큰 파티션으로 적재됨 | 구현이 간단함 운영체제에 오버헤드가 거의 없음 | 내부단편화로 인한 비효율적인 사용 최대 활성 프로세스의 수가 고정됨 |
| 동적 분할 | 파티션들이 동적으로 생성되며, 각 프로세스는 자신의 크기와 일치하는 크기의 파티션에 적재됨 | 내부단편화가 없고 주기억장치를 보다 효율적으로 사용할 수 있음 | 외부 단편화를 해결하기 위한 메모리 집약(compaction)이 요구됨. 따라서 처리기 효율이 나빠짐 |
| 단순 페이징 | 주기억장치는 균등사이즈의 프레임으로 나뉨. 각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지들로 나뉨. 프로세스의 모든 페이지가 적재되어야 하며 이 페이지를 저장하는 프레임들은 연속적일 필요X | 외부 단편화가 없음 | 적은 양의 내부 단편화가 생김 |
| 단순 세그먼테이션 | 각 프로세스는 여러 세그먼트로 나뉨. 프로세스의 모든 세그먼트가 적재되어야 하며 이 세그먼트를 저장하는 동적 파티션들은 연속적일 필요는 X | 내부단편화가 없고 메모리 사용 효율이 개선되며, 동적분할에 비해서 오버헤드가 적음 | 외부단편화 |
| 가상 메모리 페이징 | 단순 페이징과 비교해서 프로세스의 페이지 전부를 전부 로드시킬 필요가 없음. 필요한 페이지가 있으면 후에 자동적으로 불러옴 | 외부단편화가 없음 멀티 프로그래밍 정도가 높으며 가상 주소 공간이 큼 | 복잡한 메모리 관리의 오버헤드 |
| 가상 메모리 세그먼테이션 | 단순 세그먼테이션과 비교해서 필요하지 않은 세그먼트들을 로드하지 않음. 필요한 세그먼트가 있으면 나중에 자동적으로 불려들여짐 | 내부단편화가 없음 높은 수준의 멀티 프로그래밍 큰 가상 주소, 보호와 공유 지원 | 복잡한 메모리 관리의 오버헤드 |