in Development
1. Paging(=책 페이지 그거 맞음)
일정한 page 단위로 나누어 연속적이지 않은 물리 메모리에 저장하는 메모리 관리 기법
가상메모리를 동일한 크기의 페이지로 나누고, 물리 메모리는 프레임으로 나눔
문서와 서랍이라는 예시를 통해 알아보자
- 프로세스 == 여러 장의 종이로 이루어져 있는 문서
- 페이지 == 문서의 종이 한 장
- 프로세스의 페이지는 고정된 크기를 가진다.
- 문서의 종이 한 장에는 종이 한장 크기 만큼의 정보(글)이 담겨져 있다.
- 물리적 메모리 == 구획으로 나뉘어져 있는 서랍
- 컴퓨터의 물리적 메모리는 프레임이라는 고정된 크기의 블록으로 나누어져 있다.
- 프레임 == 종이 한 장 들어갈 수 있는 서랍의 구획(비유가 조금 이상하긴 하지만 이렇게 이해하자)
- 한 장의 종이만 넣을 수 있는 사이즈다.(깻잎 한 장 사이즈 인가보다)
- 물리적 메모리의 프레임에는 하나의 페이지를 저장할 수 있다.
장점
- 물리 메모리의 연속적이지 않은 여러 프레임에 페이지를 분산시켜 저장할 수 있음
- 외부 단편화 문제 해결 : 연속적인 공간을 요구하지 않으므로
단점
- 내부 단편화 문제 생김
- 예시: 페이지의 크기가 4KB이고 프로세스의 크기가 10KB라면, 두 개의 페이지 (총 8KB)는 완전히 차지되겠지만 세 번째 페이지는 2KB만 사용하고 나머지 2KB는 사용되지 않게 됩니다. 이 2KB는 내부 단편화로 간주됩니다.
2. Segmentation
페이징은 그냥 일정한 크기 단위로 나눴다면 세그먼트는 논리적으로 의미 있는 세그먼트로 나누는 방식
장점
- 내부 단편화 안생김
단점
- 외부 단편화 생김
외부/내부 단편화
- 외부 단편화
- 메모리의 사용 가능한 공간들이 작은 조각들로 나뉘어져 있어, 전체적으로 보면 충분한 메모리가 있음에도 불구하고 연속적인 공간이 부족하여 큰 메모리 요청을 만족시키지 못해 발생하는 현상
- 예: 장난감을 넣을 상자가 여러 개 있을 때, 각 상자마다 조금씩 빈 공간이 있지만 큰 장난감을 넣기에는 어느 한 상자도 충분한 공간이 없는 상황
- 내부 단편화
- 할당된 메모리 영역 내부에 남아 있는 사용되지 않는 공간이 발생하는 현상
- 예: 특정 크기로 분할된 상자에 장난감을 넣을 때, 장난감의 크기가 상자의 크기보다 작아 상자 내부에 빈 공간이 남는 상황
Paged Segmentation
- 논리적 단위인 segment로 먼저 나눈다.
- 일정한 단위인 page로 나눈다.(segment크기를 page의 배수로 함)
- 내부/외부 단편화를 모두 해결할 수 있다.
가상 메모리
- 개발자 입장에서의 논리 메모리
- 물리적 메모리보다 사용자 프로그램이 커져도 실행이 가능
- 페이징, 세그멘테이션은 가상 메모리를 구현하는데 사용되는 메커니즘 중 하나
- 지금 쓸 것만 메모리에 올리고 나머지는 디스크(Swap 영역)에 둔다는 게 핵심!
요구 페이징
- 프로그램 실행 초기에 모든 메모리 페이지를 물리적 메모리에 적재하는 대신, 필요할 때 해당 페이지만 메모리에 적재
- 메모리 사용량 감소
- 프로세스 전체를 메모리에 적재하는 입출력 오버헤드 감소
- 페이지 테이블은 논리적 주소와 물리적 주소 간의 매핑 정보를 가지고 있고, 각 페이지에 대한 상태를 나타내는 여러 비트를 가지고 있는데 그중 메모리 로드 여부를 판별하는게 유효 bit/무효 bit 임
- 유효 bit: 메모리에 있음
- 무효 bit: 메모리에 없음
Page fault
- 무효 bit의 page에 액세스하는 상황(그 페이지가 메모리에 없는 상황)
- MMU(Memory Management Unit)
- CPU 칩에 통합되어 있거나 CPU와 함께 패키징 되어 있음
- MMU(Memory Management Unit - 가상 주소를 물리 메모리 주소로 변환해주는 하드웨어 장치)이 page fault trap을 발생시켜 처리 함
- 뭘 처리 하냐?
- 필요한 페이지를 물리 메모리로 로드함
- 페이지 테이블을 업데이트하여 논리적 주소와 물리적 주소 간의 매핑을 설정함
- 요청한 데이터나 콛에 다시 액세스 할 수 있음
Page 교체 알고리즘
- page fault 후 swap 영역에 있던 페이지를 메모리로 가져오는데, 물리적 메모리가 부족할 수 있음
- 기존에 메모리에 올라와 있던 페이지를 디스크로 옮겨서 메모리 공간을 확보해야 함 -> 페이지 교체
- 알고리즘 종류