컴퓨터언어/운영체제

세그먼테이션 기법 - 무대뽀로 쪼개는 페이징 기법을 보완

bbanpro 2020. 6. 30. 19:50
728x90
반응형

👍 세그먼테이션 기법이란?

 

페이징 기법은 가상기억장치 다중프로그래밍을 도와준 주역이다.

하지만 페이징 기법은 프로그램을 균일한 크기로 쪼개기 때문에, 그 조각에 현재 원하지 않는 기능이 있더라도 딸려오는 경우가 생긴다.

예를 들어, 프로그램에는 통상 입력, 출력, 데이터베이스, 그래픽 등을 담당하는 기능이 줄지어 있는데, 어떤 페이지가 입력과 출력에 양다리를 걸치고 있다면 출력만이 필요한 상황에서도 입력의 기능이 끼어들어가게 된다.

그래서 프로그램의 내용을 보고, 그 내용에 따라 프로그램을 나누어야 할 필요가 생겼고, 이를 해결해주는 것이 "세그먼테이션 기법"이다.

 

세그먼테이션 기법에서는 내용에 따라 나뉜 각 프로그램의 조각을 "세그먼트"라고 한다.

각 세그먼트는 크기가 다르기 때문에, 만약 페이징에서처럼 메모리를 쪼개고 페이지 프레임을 만들어서 적재한다면 단편화가 발생한다.

그래서 세그먼테이션에서는 메모리를 쪼개지 않고 그냥 적재함으로써 단편화없이 깔끔하게 적재할 수 있다.

물론 메모리에는 용량제한이 있기 때문에, 세그먼트의 길이가 메모리를 초과하면 해당 세그먼트가 다른 프로그램 영역을 침범하는 "세그먼트 오버플로우 결함"이 발생한다.

 

페이징에서는 메모리에 프로그램별 할당된 크기가 있어서 OS가 어떤 페이지가 어느 프로그램 소속인지 쉽게 알 수 있었지만, 세그먼테이션에서는 메모리에 영역의 구분없이 섞여있기 때문에, OS가 구분할 수 있도록 각 세그먼트에 태그를 붙인다. 이 태그를 "기억장치 보호키(Protection Key)"라고 한다.

 

👊 페이지 세그먼테이션

세그먼트 안에서 다시 페이징을 하는 기법이다.

하나의 세그먼트 당 최대 포함가능 페이지 개수는, 2에 [페이지번호를 담는 비트수]를 제곱한 값에 해당한다.

728x90
반응형