- 가상 메모리 시리즈 모아 보기-
https://microelectronics.tistory.com/99
게시글 1 요약: Virtual Memory(가상 메모리)는 무엇이고 왜 사용되는가?
가상 메모리가 도입되기 전에는 물리 메모리의 한계로 인해 여러 문제가 발생했다.
- 메모리 부족 문제
- 물리 메모리가 한정된 상황에서 프로그램이 큰 메모리를 필요로 하면 충돌이 발생할 수 있다.
- 가상 메모리는 디스크를 이용해 가상 메모리 공간을 확장하여 물리 메모리 부족 문제를 해결한다.
- 메모리 단편화 문제
- 프로그램 실행과 종료가 반복되면서 메모리 공간에 '구멍'이 생겨 연속된 공간을 확보하기 어려운 상황이 발생한다.
- 가상 메모리는 메모리 맵핑을 통해 물리 메모리의 어느 위치에든 데이터를 저장할 수 있어 단편화를 해결한다.
- 보안 문제
- 여러 프로그램이 동일한 메모리 주소 공간을 공유할 경우 데이터 덮어쓰기가 발생할 수 있다.
- 가상 메모리는 각 프로그램에 독립적인 메모리 맵을 제공하여 프로그램 간 데이터 보호를 보장한다.
결론적으로, 가상 메모리는 프로그램마다 독립된 메모리 공간을 제공함으로써 메모리 부족, 단편화, 보안 문제를 효과적으로 해결할 수 있다.
게시글 2 요약: Virtual Memory(가상 메모리)의 동작방식
가상 메모리는 프로그램의 가상 주소(VA)와 실제 물리 메모리의 물리 주소(PA) 간의 매핑을 통해 메모리를 효율적으로 관리하는 기술이다. 이 시스템은 제한된 물리 메모리 이상으로 데이터를 처리할 수 있도록 돕고, 메모리 부족 문제를 해결한다.
- 가상 주소와 물리 주소
- 가상 주소는 프로그램이 사용하는 논리적인 주소 공간이며, 물리 주소는 실제 하드웨어 메모리에서 사용하는 주소이다.
- 주소 변환 (매핑)
- 프로그램이 가상 주소로 메모리에 접근할 때, 매핑 테이블을 통해 가상 주소를 물리 주소로 변환한다.
- 메모리 부족 시 디스크 사용
- 물리 메모리가 부족하면, 가상 메모리는 데이터를 디스크로 이동하여 메모리를 확장하는 효과를 낸다.
- 필요한 데이터를 디스크에서 메모리로 다시 가져와 매핑 테이블을 업데이트한다.
결론적으로, 가상 메모리는 메모리의 효율적인 관리와 물리 메모리 부족 문제 해결에 중요한 역할을 한다. 다음 게시글에서는 매핑 테이블인 페이지 테이블에 대해 다룬다.
게시글 3 요약: 페이지 테이블과 주소 변환(Address Translation)
페이지 테이블은 가상 메모리 시스템에서 가상 주소를 물리 주소로 변환하는 데이터 구조로, 각 가상 페이지를 물리 페이지에 매핑하는 엔트리(PTE)를 포함한다.
- 페이지 단위의 메모리 관리
- 가상 주소 공간을 페이지 단위(예: 4KB)로 나누어 관리하여 페이지 테이블의 크기를 줄인다.
- 페이지 크기가 커지면 페이지 테이블의 엔트리 수는 줄어들지만, 더 큰 데이터 단위로 이동해야 하므로 유연성이 떨어질 수 있다.
- 주소 변환 방식
- 가상 주소는 페이지 번호(VPN)와 페이지 오프셋(offset)으로 나뉜다.
- VPN을 페이지 테이블을 통해 물리 페이지 번호(PPN)로 변환하고, 페이지 오프셋은 그대로 유지하여 최종 물리 주소를 계산한다.
- 페이지 테이블의 구성
- 유효 비트(R): 페이지가 메모리에 있는지 여부를 나타낸다.
- 더티 비트(D): 페이지가 수정되었는지 표시하며, 수정된 경우 교체 시 디스크에 기록해야 한다.
- 페이지 폴트 처리
- 페이지가 메모리에 없으면 페이지 폴트가 발생하고, 운영체제가 디스크에서 페이지를 메모리로 로드한 후 페이지 테이블을 업데이트한다.
결론적으로, 페이지 테이블은 가상 메모리 시스템에서 가상 주소를 물리 주소로 매핑하여 메모리 접근을 가능하게 하며, 페이징 시스템을 통해 메모리를 효율적으로 관리한다.
게시글 4 요약: 페이지 폴트(Page Fault)
페이지 폴트는 프로그램이 메모리에 없는 데이터를 참조할 때 발생하는 예외로, 운영체제가 디스크에서 해당 데이터를 메모리로 가져오는 과정을 수행한다.
- 페이지 폴트 처리 과정
- 페이지가 메모리에 없는지 확인: 페이지 테이블의 유효 비트(R)를 통해 메모리에 없는 페이지임을 확인한다.
- 페이지 폴트 예외 발생: CPU가 예외를 감지하고 운영체제의 페이지 폴트 핸들러를 호출한다.
- 메모리에서 페이지 교체: 메모리가 가득 차 있으면, 오래된 페이지를 디스크로 내보내고 새 페이지를 로드한다.
- 디스크에서 페이지 로드: 디스크에서 데이터를 메모리로 적재한 후, 페이지 테이블을 업데이트하고 프로그램 실행을 재개한다.
- 페이지 교체 알고리즘
- 주로 LRU(Least Recently Used)와 같은 알고리즘을 사용해 교체할 페이지를 결정한다.
- 더티 페이지(Dirty Page)는 변경된 내용이 디스크에 기록되어야 하고, **클린 페이지(Clean Page)**는 디스크 기록 없이 제거될 수 있다.
- 페이지 폴트의 성능 영향
- 페이지 폴트는 디스크 접근이 포함되기 때문에 매우 느리다, 수천만 개의 CPU 사이클이 소요될 수 있다.
- 고속 SSD의 도입으로 성능은 개선되었으나, 메모리 접근에 비해 여전히 느리다.
결론적으로, 페이지 폴트는 성능에 큰 영향을 미치지만 가상 메모리 시스템에서 필수적인 메커니즘이다. 이를 최적화하기 위해, 페이지 폴트 발생을 줄이고 효율적인 페이지 교체 알고리즘을 사용하는 것이 중요하다.
게시글 5 요약: Virtual Memory(가상 메모리)의 컨텍스트와 메모리 관리
컨텍스트는 프로그램의 가상 메모리 공간을 물리 메모리에 매핑하는 환경으로, 페이지 테이블 정보와 실행 상태를 포함한다. 각 프로그램은 독립적인 컨텍스트를 가져 서로 다른 가상 주소를 사용해도 물리 메모리에서 격리된다.
- 컨텍스트 스위칭과 타임셰어링
- CPU는 여러 프로그램 간에 빠르게 전환하며, 컨텍스트 스위칭 시 페이지 테이블을 재설정해 마치 프로그램이 자신만의 가상 머신에서 실행되는 것처럼 보인다.
- 32비트 주소 공간의 구조
- 메모리는 스택, 힙, 라이브러리, 데이터, 텍스트 등으로 구분되며, 각 영역은 메모리 보호를 위해 고유한 공간을 사용한다.
- 스택과 힙이 확장될 때 중간에서 충돌하면 Segmentation fault가 발생할 수 있다.
- 보안과 메모리 격리
- 무작위 오프셋을 추가해 메모리 위치를 예측하기 어렵게 하여 보안을 강화한다.
- 공유 라이브러리는 페이지 테이블을 통해 물리 메모리 공간을 공유할 수 있다.
결론적으로, 가상 메모리와 페이지 테이블은 프로그램 간 메모리 격리와 공유를 동시에 제공하여, 시스템의 안전성과 효율성을 높인다.
게시글 6 요약: TLB(Translation Lookaside Buffer)와 TLB 미스
가상 메모리는 주소 변환으로 인한 추가 메모리 접근 비용이 발생할 수 있다. 이를 해결하기 위해 TLB(Translation Lookaside Buffer)가 사용되며, 주소 변환 속도를 크게 향상시킨다.
- TLB의 역할
- TLB는 가상 주소와 물리 주소 변환 정보를 캐시하여 빠른 주소 변환을 가능하게 한다.
- 데이터 TLB와 명령어 TLB를 분리하여 동시 접근 성능을 높인다.
- TLB 미스와 성능 저하
- TLB에 원하는 항목이 없을 때(TLB 미스), 페이지 테이블을 조회해야 하며, 이로 인해 추가적인 메모리 접근 시간이 필요하다.
- 만약 디스크 접근이 필요한 페이지 폴트가 발생하면, 성능 저하가 더욱 커질 수 있다.
- 주소 변환 과정과 TLB 미스 예제
- TLB 미스가 발생하면 페이지 테이블을 조회하여 TLB를 업데이트한다.
- TLB에 항목이 있을 경우(TLB 히트), 빠른 변환이 가능하여 성능이 향상된다.
결론적으로, TLB는 가상 메모리 시스템의 성능을 최적화하기 위해 필수적인 장치이며, TLB 미스가 발생할 경우에는 페이지 테이블 접근이나 디스크 접근이 추가적인 시간 비용을 발생시킨다.
게시글 7 요약: Multi-level Page Tables(다단계 페이지 테이블)
단일 페이지 테이블 사용 시, 메모리 소모가 급격히 증가하는 문제를 해결하기 위해 다단계 페이지 테이블이 사용된다.
- 페이지 테이블의 크기 문제
- 32비트 시스템에서 4KB 페이지를 사용할 때, 프로그램당 4MB의 페이지 테이블이 필요하며, 많은 프로그램이 실행되면 메모리 소모가 급격히 증가한다.
- 다단계 페이지 테이블을 통한 메모리 절약
- 다단계 페이지 테이블은 계층 구조로 페이지 테이블을 나누어 필요한 부분만 메모리에 로드하여 메모리 사용을 절감한다.
- 1단계는 페이지 디렉토리로, 2단계는 실제 데이터 페이지의 물리적 위치를 가리킨다.
- 주소 변환 과정
- 가상 주소를 상위 10비트(1단계), 중간 10비트(2단계), 하위 12비트(오프셋)로 나누어 변환을 수행한다.
- 이를 통해 전체 페이지 테이블을 메모리에 상주시킬 필요 없이 필요한 부분만 유지할 수 있다.
- 메모리 절약 효과
- 다단계 페이지 테이블을 사용하면, 프로그램당 최소 8KB의 메모리만 필요하며, 단일 페이지 테이블에 비해 큰 메모리 절감이 가능하다.
결론적으로, 다단계 페이지 테이블은 메모리 사용을 최적화하고 가상 주소 변환을 효율적으로 수행할 수 있게 한다.
게시글 8 요약: MMU(Memory Management Unit)와 캐시 메모리
MMU(Memory Management Unit)는 가상 주소를 물리 주소로 변환하고 메모리 접근을 관리하는 하드웨어 장치로, 가상 메모리 시스템의 핵심 역할을 담당한다.
- MMU의 주요 기능
- 주소 변환 (VtoP): 모든 메모리 접근 시 가상 주소를 물리 주소로 변환한다.
- 메모리 보호: 프로세스가 허용된 메모리 영역만 접근하도록 제어하며, 접근 권한 검사와 사용자/커널 모드 구분을 통해 보안을 유지한다.
- 페이지 폴트 처리: 메모리에 없는 페이지 접근 시 페이지 폴트를 발생시켜 운영체제가 처리하게 한다.
- 캐시 관리: TLB를 통해 주소 변환 정보를 캐싱하여 성능을 최적화한다.
- 컨텍스트 스위칭과 MMU
- 컨텍스트 스위칭 시 TLB 플러시로 성능 저하가 발생할 수 있다.
- 컨텍스트 번호 레지스터를 사용해 TLB를 플러시하지 않고도 빠른 스위칭이 가능하도록 한다.
- MMU와 캐시의 상호작용
- 물리적 캐시는 컨텍스트 스위칭 후에도 캐시의 내용이 유지되며, 가상 캐시는 빠른 접근이 가능하지만 스위칭 시 모든 항목을 무효화해야 한다.
- VIPT(가상 인덱스, 물리 태그) 캐시는 가상 주소로 캐시를 인덱싱하고 물리 주소 태그로 검증하여 성능과 보호를 모두 제공한다.
결론적으로, MMU는 가상 메모리 시스템의 필수 장치로, 주소 변환, 메모리 보호, 페이지 폴트 처리 등 다양한 기능을 통해 메모리 관리의 효율성과 안전성을 높인다.
'Computer Architecture > Virtual Address & Cache' 카테고리의 다른 글
캐시 메모리의 원리와 캐시 블록(라인) (1) | 2024.11.02 |
---|---|
메모리 계층 구조(Memory Hierarchy)와 캐시 (0) | 2024.11.01 |
MMU(Memory Management Unit)와 캐시 메모리 (0) | 2024.10.30 |
Multi-level Page Tables(다단계 페이지 테이블) (0) | 2024.10.29 |
TLB(Translation Lookaside Buffer)와 TLB 미스 (0) | 2024.10.28 |
댓글