페이징 & 세그멘테이션
페이징 & 세그멘테이션
페이징과 세그멘테이션은 메모리 단편화 문제를 해결하기 위한 방법들이다. 페이징과 세그멘테이션의 소개에 앞서 메모리 단편화에 대해 간략하게 설명하고자한다. 참고로 메모리 단편화에 대한 포스팅은 추후 업데이트 될 예정이다.
메모리 단편화
컴퓨터에서 프로그램을 실행 및 작업을 하게되면 컴퓨터의 메모리에 해당 프로그램이 적재되게 된다. 이때 메모리 공간에 연속적으로 할당되게 되는데, 이런 메모리 관리 기법을 연속 메모리 관리 기법
이라 한다. 다시 연속 메모리 관리 기법을 2가지 방법으로 구분 지을 수 있다.
- 고정 분할 기법: 메모리가 고정된 파티션만큼 분할되며, 내부 단편화가 발생할 수 있다.
- 동적 분할 기법: 파티션들이 동적 생성되며 프로세스를 같은 크기의 파티션에 적재한다. 외부 단편화가 발생할 수 있다.
내부 단편화와 외부 단편화가 궁금하다면 헬로망고님의 블로그를 참고해보는것을 추천한다.
페이징
- 프로세스를 여러 개의 조각으로 나눈다. 여기서 나누어진 조각을
페이지
라고 한다. - 메모리를 나눈 조각을
프레임
이라고 한다. 페이지 테이블
에는 각 페이지 번호와 페이지가 할당된 프레임의 물리 주소를 저장한다.- 만약 프로세스가 프레임의 정수 배보다 살짝 작다면 마지막으로 할당된 프레임은 전부 사용되지 않고 공간이 남는 내부 단편화가 발생한다.
- 페이징 기법을 사용하면 연속적이지 않은 공간을 활용할 수 있기 때문에 외부 단편화 문제를 해결할 수 있다.
세그멘테이션
- 페이징이 프로세스를 물리적으로 일정한 크기로 나눠서 메모리에 할당하는 기법이었으면, 세그멘테이션은 프로세스를 논리적 내용을 기반으로 나눠서 메모리에 배치하는 것을 의미한다.
- 세그먼트를 메모리에 적재할 때는 페이지를 할당하는 것과 동일하다.
- 세그멘테이션을 위한 테이블은
세그먼트 테이블
이라 하며 다음과 같은 요소들로 구성되어있다.- 세그먼트 번호
- 시작 주소
- 세그먼트 크기
- CPU에서 해당 세그먼트의 크기를 넘어서는 주소가 들어오면 인터럽트가 발생해서 해당 프로세스를 종료시킨다.
- 세그멘테이션 기법을 활용하면 내부 단편화 문제를 해결 할 수 있다.
- 세그멘테이션에는 치명적인 단점이 존재해 현재 대부분은 페이징 기법을 사용한다고 한다.
- 세그멘테이션은 논리적인 단위로 나누기 때문에 세그먼트의 크기가 다양하다.
- 이로 인해, 외부 단편화로 인한 메모리 낭비가 크게 발생할 수 있다.
나올 수 있는 면접 질문
- 메모리 단편화를 해결하기 위한 대표적인 2가지 기법
- 페이징에 대하여 설명
- 세그멘테이션에 대하여 설명
참고
기여자
Junho Moon
📦