가상 메모리는 OS에서 사용되는 메모리 관리 기술입니다. 컴퓨터의 물리적 메모리 부족을 보완하고
RAM (Random Access Memory )에서 디스크 스토리지로 데이터를 일시적으로 전송하는 스와핑을
할 수 있게 하며 컴퓨터가 보조 메모리를 주 메모리인 것처럼 처리할 수도 있습니다.
가상 메모리(Virtual Memory)
컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 것

- 가상 주소가 메모리관리장치(MMU)에 의해 실제 주소로 변환됨.
-> 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 됨. - 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 페이지 테이블로 관리됨.
-> 속도 향상을 위해 TLB 사용.
가상 주소(Logical Address)
- 가상적으로 주어진 주소
실제 주소(Physical Address)
- 실제 메모리상에 있는 주소
TLB
- 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시.
- 페이지 테이블에 있는 리스트를 보관
- CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킴.
가상 메모리의 주요한 기능
- 주기억장치의 효율적 관리(스와핑): 하드디스크를 주기억장치에 대한 캐시로 설정하여, 당장 사용하는 영역만 유지하고 쓰지 않는 데이터는 하드디스크로 옮긴 뒤, 필요할 때만 램에 데이터를 불러와 올리고 다시 사용하지 않으면 하드디스크로 내림으로써 램을 효과적으로 관리한다.
- 메모리 관리의 단순화: 각 프로세스마다 가상메모리의 통일된 주소 공간을 배정할 수 있으므로 메모리 관리가 단순해진다.
- 메모리 용량 및 안정성 보장: 한정된 공간의 램이 아닌 거의 무한한 가상메모리 공간을 배정함으로써 프로세스들끼리 메모리 침범이 일어날 여지를 크게 줄인다
스와핑
페이지 폴트가 발생한 경우 메모리의 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 “마치 메모리처럼” 불러와 쓰는 것.
당장 사용하지 않는 영역을 하드디스크로 옮겨 필요할 때 다시 RAM으로 불러와 올리고, 사용하지 않으면 다시 디스크로 내림을 반복하여 RAM을 효과적으로 관리하는 방법.
- 페이지(Page)
- 가상 메모리를 사용하는 최소 크기 단위
- 프레임(Frame)
- 실제 메모리를 사용하는 최소 크기 단위
페이지 폴트
프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우에 발생하는 것.
페이지 폴트를 해결하는 과정(요구 페이징)

- 프로세스가 페이지 테이블을 참조하여 페이지 폴트(해당 페이지가 없다면)일 경우 트랩을 발생시켜 운영체제에 알림.
- 운영체제가 CPU의 동작을 잠시 멈춤.
- 운영체제는 페이지 테이블을 확인하여 가상메모리에 페이지가 존재하는지 확인하고, 없으면 프로세스를 중단하고 현재 물리 메모리에 비어있는 프레임이 있는지를 찾는다. 물리 메모리에도 없다면 스와핑이 발동됨
- 비어있는 프레임에 해당 페이지를 로드하고 페이지 테이블을 최신화함.
- 중단 되었던 CPU를 다시 시작함.
스레싱
메모리의 페이지 폴트율이 높은 것을 의미함.
- 컴퓨터의 심각한 성능 저하를 초래함.
- 메모리에 너무 많은 프로세스가 동시에 올라갔을 때 스와핑이 많이 일어나서 발생.
- 페이지 폴트로 인해 CPU 이용률이 낮아지고, 운영체제가 CPU 가용성을 높이기 위해 더 많은 프로세스를 메모리에 올리는 것이 반복되며 스레싱 발생.
해결 방법
- 메모리 늘리기
- HDD를 SSD로 변경
- 운영체제에서 해결
- 작업세트
- PFF
'CS > 운영체제' 카테고리의 다른 글
| 프로세스의 메모리 구조 (0) | 2022.07.26 |
|---|---|
| 프로그램과 프로세스 그리고 스레드의 차이 (0) | 2022.07.26 |
| 메모리계층 (0) | 2022.07.26 |
| 시스템콜과 modebit (0) | 2022.07.26 |
| 운영체제와 컴퓨터 그리고 인터럽트 (0) | 2022.07.25 |