노션에서 보기
바로가기
한마디로
메모리 효율을 향상시키기 위한 가상메모리를 운용하는 기법 중 하나로
프로세스를 고정 크기로 분할하여 가상메모리에 할당하고 물리메모리를 이와 동일한 크기인 프레임으로 나누어 프로세스에 필요한 페이지만 프레임에 적재하여 사용하는 기법
가상메모리 (Virtual Memory)
- 주기억장치(물리메모리) 메모리의 용량을 확장하기 위해 보조기억장치를 마치 주기억장치인 것처럼 활용하는 방법
- 가상메모리는 프로세스마다 논리적 주소공간을 가지고 이 주소공간의 일부는 물리적 메모리에 적재되고 일부는 스왑영역에 존재한다.
- 장점
- 프로세스의 일부만 올리기 때문에 메모리 사용량이 감소한다.
- 디스크에서 일부의 데이터만 입출력하기 때문에 입출력 오버헤드가 감소한다.
- 시스템이 더 많은 프로세스를 수용할 수 있다.
- 프로그램이 물리적 메모리의 용량 제약에서 자유롭다 (메모리보다 큰 프로그램 실행 가능)
- 가상메모리 기법은 프로세스의 주소공간을 적재하는 단위에 따라
요구 페이징 기법
과요구 세그멘테이션 기법
두개로 나눌 수 있다.
페이지와 프레임
- 정의
- 프로세스를 가상메모리의 주소공간에 페이지 단위로 나누어 놓고 당장 사용될 페이지만을 물리메모리에 적재하는 기법
- 가상메모리를 나눈 영역을
페이지
,물리메모리를 나눈 영영을프레임
이라고 한다.
- 페이지와 프레임은 크기는 동일하게 관리된다.
- 페이징은 고정 분할 분산 메모리 할당 기법이다. (세그멘테이션은 가변 분할 분산)
- 페이징 기법을 통해 컴퓨터의 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없으며, 반대로 연속적으로 존재하지 않는 물리적 메모리라도 페이징 기법을 통해 연속적으로 존재하는 것처럼 이용될 수 있다.
- 장점
- 페이지를 사용하면 외부단편화가 발생하지 않는다.
- 메모리를 효율적으로 사용할 수 있다.
- 공유 페이지 이용 가능
- 메모리 압축 및 통합 기법 사용하지 않아도 됨
- 단점
- 페이지의 갯수가 많아지기 때문에 페이지 단위의 입출력이 자주 발생하게 된다.
- 프로세스의 여러 페이지를 메모리에 분산 적재하기 때문에 운영체제의 관리 부담이 크다.
- 내부단편화 문제는 해결되지 않는다.
- 페이지 단위를 작게하면 내부 단편화 문제도 해결할 수 있겠지만 대신 page mapping 과정이 많아지므로 오히려 효율이 떨어질 수 있다.
- 페이지 테이블
- 페이징 기법에서 페이지는 페이지테이블(Page Table) 이라는 자료구조 형태로 관리된다.
- 페이지테이블은 프로세스의 페이지 정보를 저장하고 있으며, 하나의 프로세스는 하나의 페이지 테이블을 가진다.
- 페이지테이블은 Index 를 키로 해당 페이지에 할당된 메모리(Frame)의 시작 주소를 Value 로 저장하고 있다.
- 페이지 테이블 엔트리(Page Table Entry)는 페이지 테이블의 레코드를 말한다.
- 페이지 기본 주소
- 플래그 비트
- 여러 상태 비트
- 보호 비트
페이지 부재 (page fault)
- CPU에서 요청한 페이지가 현재 메모리에 없어 유효-무효 비트가 무효로 세팅되어 있는 경우를 말한다.
- 페이지 부재 발생 시 페이지를 디스크에서 읽어와야 하는데 이 과정에서 막대한 overhead가 발생한다. 따라서 요구 페이징 기법은 페이지 부재 발생률이 성능에 큰 영향을 끼친다.
- 페이지 부재 시 동작 과정
- MMU(Memory Management Unit)가 페이지 부재 트랩을 발생시킨다. (트랩=소프트웨어 인터럽트)
- 인터럽트로 인해 커널모드로 전환되어 OS의 페이지 부재 처리 루틴이 호출된다.
- 해당 부재 페이지의 보호비트를 참조해 접근이 가능한지 체크한다.
- 물리메모리에 비어있는 프레임을 할당받고 그곳에 페이지를 읽어온다.
- 페이지를 읽어오는 동안 프로세스는 wait상태가 된다.
- 디스크 입출력 완료시 인터럽트를 발생시키고 해당 페이지의 유효-무효 비트를 유효로 세팅한다
- 참고) MMU는 CPU코어 안에 탑재되어 가상주소를 실제 메모리 주소로 변환해주는 장치
페이지 교체
- 페이지 부재 발생시 메모리에 해당 페이지를 적재해야 하는데 이때 메모리가 꽉찼다면 어떡해야 할까?
- 이때 메모리에 있는 페이지중 가장 쓸모 없어보이는 것을 골라 스왑 영역으로 쫒아내고 그 자리에 페이지 부재된 페이지를 적재해야 한다. 이 과정이 페이지 교체이다.
- 교체할 페이지를 선정할 때 교체 대상이 될 프레임의 범위에 따라
전역 교체
와지역 교체
로 나눌 수 있다.
- 전역교체 방법은 모든 페이지 프레임이 교체 대상이 될 수 있는 방법이다. 지역 교체 방법은 현재 수행중인 프로세스에게 할당된 페이지 프레임 내에서만 페이지 교환을 하는 방법이다.
- 페이지 교체 알고리즘
- 최적 교체(OPT) 알고리즘
- FIFO
- LRU(Least Recently Used)
- LFU(Least Frequently Used)
- NUR(Not Used Recently)
참고 :
가상 메모리(virtual memory) (1.. : 네이버블로그
페이징(paging) (1) 페이지 크기와 내부 단편화의 관계 : 네이버 블로그
가상 메모리(Virtual Memory)와 페이징(Paging)에 대한 정리 :: Jins' Dev Inside
[OS기초] 메모리 관리(가상 메모리, 페이지 부재, 페이지 교채, 스레싱)
메모리 단편화(Memory Fragmentation)가 무엇이고 왜 발생하는가?