가상 메모리
IT위키
더 많은 작업
- 주기억장치의 부족한 물리적 저장공간을 보조기억장치를 이용해서 가상으로 늘려 주는 기술
- 가상 메모리를 위해 보조기억장치(하드디스크·SSD)의 일부를 주기억장치처럼 쓰는 공간을 스왑 영역(swap)이라 한다. 리눅스는 스왑 파티션이나 스왑 파일을 쓰고, 윈도우는 페이지 파일(pagefile.sys)을 쓴다.
- 윈도우에서는 [시스템 속성] → [고급] → [성능 설정] → [고급] → [가상 메모리 변경]에서 페이지 파일의 크기를 정한다. 메모리가 부족해 프로그램을 실행하지 못하면 가상 메모리 크기를 적절히 늘려 해결할 수 있다.
- 주기억장치(RAM)가 모자라면 당장 쓰지 않는 페이지를 스왑 영역으로 내보내고(스왑 아웃), 다시 필요하면 들여온다(스왑 인). 그래서 RAM 보다 큰 프로그램도 실행할 수 있다.
- 스왑 영역은 디스크라서 RAM 보다 훨씬 느리다. 스왑을 많이 쓰면 페이지를 들이고 내보내는 데 시간을 다 써서 시스템이 느려진다(스래싱). 스왑은 쓸 수 있는 메모리의 양을 늘릴 뿐 물리 메모리와 같은 속도를 내지 않는다
- 스왑 영역은 커널 이미지를 담는 /boot 나 프로그램·라이브러리가 들어가는 /usr 같은 파일 시스템 영역과 다르다 → 리눅스 설치, 리눅스 기본 디렉터리
- 리눅스의 스왑 관리는 리눅스 메모리 참고
- 메모리 크기의 제약으로부터 자유로워진다.
- 사용자 프로그램이 물리 메모리보다 커져도 실행 가능
- 병행성 및 CPU 이용률 증가
- 사용자 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행 가능
- 주기억장치의 용량이 확대된 것 처럼 프로그램 실행 가능
- 부가기능 제공
- 전반적인 속도가 느려질 수 있다.
- 가상메모리를 사용할 경우 물리 메모리로 프로그램을 구동하는 것 보다 속도가 느림
- 가상 메모리의 목적은 주기억장치의 용량을 넓혀 쓰는 것이지 속도를 높이는 것이 아니다. 주기억장치보다 큰 프로그램을 실행하고, 더 많은 프로그램을 동시에 올릴 수 있게 한다.
- 주소 변환이 끼어들고, 필요한 페이지가 주기억장치에 없으면(페이지 부재) 느린 보조기억장치에서 읽어 와야 하므로 처리 속도는 오히려 느려질 수 있다. 페이지 교체가 지나치게 잦아 처리가 거의 멈추는 현상을 스래싱이라 한다.
- 주기억장치의 접근 시간을 줄여 처리 속도를 높이는 것은 CPU 와 주기억장치 사이에 두는 캐시 메모리의 역할이다.
- Demand Paging
- 어떤 알고리즘에 따라서 미리 올려 두는 것이 아니라 실제 사용되려고 요구(demand) 될때 메모리에 적재
- 어떤 것을 메모리에 올릴 것인가를 판단하는 기준 중 가장 일반적으로 사용되는 기준
- 장점
- Less I/O needed
- Less memory needed
- Faster response
- More users
- Virtual memory는 OS적으로 수행. HW/SW 입장에선 투명성을 가짐
- 어떤 명령을 수행하기 위해서 필요한 page로 엑세스를 시도한다.
- 페이지 엑세스가 불가능하다면(page fault)
- OS에선 페이지가 존재하지 않는 것인지, 아직 올라오지 않은 것인지 판단한다.
- 아직 올라오지 않은 것이라면 하드에서 해당되는 페이지를 찾는다.
- 메모리로 올리고 다시 명령을 수행한다.
- 페이징(Paging)
- 가상기억장치의 일반적인 구현 방법에는 프로그램을 고정된 크기의 일정한 블록으로 나누는 방식
- 세그멘테이션(Segmentation)
- 가변적인 크기의 블록으로 나누는 방식
- 상세 내용은 가상메모리 페이지 교체 참조
- FIFO(First In First Out)
- 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
- LRU(Least Recently Used)
- 가장 오랫동안 사용되지 않은 페이지(마지막 사용 시점이 가장 오래된 페이지)를 교체
- NUR(Not Used Recently)
- LRU의 개선 기법으로, 참조 비트와 변형 비트를 두어 최근에 사용하지 않은 페이지를 교체
- SCR(Second Chance Replacement)
- LRU의 개선 기법으로, 회전 주기 내에 두번 연속 사용되지 않을 경우 삭제하는 기법
- OPT(OPTimal Replacement, Belady's Algorithm)
- 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법('최적'을 상정하는 가상의 이론적 기법)
- LFU(Least Frequency Used)
- 참조 횟수가 가장 적은 페이지를 교체한다. 마지막 사용 시점이 아니라 사용 횟수를 본다는 점이 LRU 와 다르다.
- MFU(Most Frequency Used)
- 가장 빈번하게 사용된 페이지를 교체한다. 구역성(Locality)에 반하는 것으로, 거의 사용되지 않는다.