페이징은 사용자 프로그램과 프로세스 관점의 메모리가 일치하지 않는다.
그래서 프로세스 관점을 지원해 크기가 변할 수 있는 세그먼트로 나누는 세그먼테이션 개념이 등장했다.
비연속 메모리 할당 기법 중 하나로, 논리 영역을 세그먼트의 집합으로 인식하며 동적 분할(가변 분할) 방법으로 메모리를 할당한다.
페이지 테이블의 공유 표시를 하는 페이징과 달리 세그먼트는 공유한다고 선언만 하면 공유된다.
만약 다른 프로세스의 세그먼트 테이블에 있는 항목이라면 동일한 메모리 주소를 지정하기만 해도 공유할 수도 있다.
페이징과 세그먼테이션의 장·단점을 취합한 기법으로, 외부 단편화 문제를 제거하고 쉬운 할당 과정으로 거듭난 방법이다.
사용자 프로그램이 유효하지 않은 논리 주소에 접근하면 MMU가 H/W 트랩인 Segmentation Fault를 발생시키고 OS가 프로세스를 강제 종료시킨다.
현대 OS는 세그먼트 대신 페이징 기반의 가상 메모리를 쓰는데 과거 세그먼트테이션을 써 예외 이름이 Segmentation Fault였는데 그대로 남아 있는 것이다.
학습하며 정리한 글이기 때문에 혼용된 표현 또는 잘못된 내용이 있을 수 있습니다.
만약, 발견하신 경우 댓글을 통해 알려주신다면 진심으로 감사드립니다.