페이징&세그먼테이션
메모리 관리 기법
- 다중 프로그래밍 시스템에서 여러 프로세스를 수용하기 위해 주 메모리를 동적 분할하는 메모리 관리 작업을 의미
- 종류 : 연속 메모리 관리, 불연속 메모리 관리
1. 연속 메모리 관리
- 프로그램 전체가 메모리에 연속적으로 할당되어야만 하는 관리 기법 (연속적인 메모리 주소에 할당)
- 하나의 분할에 하나의 프로그램만 적재 가능
- 종류 : 고정분할기법 / 동적분할기법
고정분할기법
메모리가 고정된 파티션으로 분할, 내부 단편화 발생
(내부 단편화 -> 고정된 파티션보다 작은 프로세스 할당 시 빈공간)
동적분할기법
파티션들이 동적으로 생성되며 자신의 크기와 같은 파티션에 적재, 외부 단편화 발생
(외부 단편화 -> 프로세스 생성, 제거 반복 시 공간이 작은 조각들로 나누어지는 것)
)
Q. 단편화의 문제 해결 방법
- 하나의 프로그램이 나뉘어서 메모리에 할당 될 수 있게 -> 페이징 / 세그멘테이션
- 단편화된 메모리 공간을 합침 -> 압축 / 통합
2. 비연속 메모리 관리
- 프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법
- 하나의 프로세스가 사용하는 메모리 공간이 연속적이여야 한다는 개념 탈피
- 종류 : 페이징 / 세그멘테이션
페이지(page) : 작은 고정 사이즈의 프로세스 조각
프레임(frame) : 페이지와 크기가 같은 주기억장치 메모리 조각
페이지 테이블 : 프로세스의 각 페이지에 해당하는 프레임 위치 관리
단편화 : 기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상
세그먼트 : 서로 다른 크기를 가지는 논리적인 블록이 연속적인 공간에 배치되어 있는 것
2-1. 페이징 기법
- 프로세스의 주소 공간을 동일한 사이즈의 페이지로 나누고 물리적 메모리에 불연속적으로 저장
- 물리적 단위로 분할
- 외부 단편화와 압축 작업 해소
- 고정 분할 방식
Q. 프로세스를 자르면 실행이 될까?
- 메모리 관리기(MMU, Memory Management Unit)의 재배치 레지스터에서 논리주소를 물리주소로 변환
- 페이지마다 재배치 레지스터를 만들어 프로세스가 연속된 메모리 공간에서 동작하고 있다고 생각하게 만듦
Q. 페이징 기법에서 내부 단편화 발생?
- 프로세스가 페이지 크기게 맞게 나누어 떨어지지 않는 경우 발생
- But, 외부 단편화 >>>>>> 내부 단편화
2-2. 세그멘테이션
- 프로세스를 서로 다른 크기의 세그먼트로 분할하고 메모리에 배치
- 논리적인 단위로 분할 (코드, 데이터 , 스택) -> 크기 다름
- 메모리 할당, 주소 변환은 페이지와 같음
- 각 세그먼트마다 limit 존재
Q. 세그멘테이션에서 외부 단편화 발생?
- 크기가 다양하기 때문에 빈 공간보다 큰 세그먼트는 들어가지 못함
페이징 vs 세그멘테이션
- 세그멘테이션 : 보호, 공유에 효율적
- 페이징 : 외부 단편화 문제 해결
- 두개 합친 Paged Segmentation -> 주소 변환 두번 해야함.
참고