📌 - 가상메모리(VM)란?
실제 메모리 크기와 관계없이 메모리를 이용할 수 있도록 가상의 메모리 주소를 사용하는 방법
- 가상메모리는 한 개의 깔끔한 메커니즘을 사용해서 세 개의 중요한 기능을 제공한다.
- 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리 간의 필요에 따라 전송하는 방법을 사용
- 각 프로세스에 통일된 주소공간을 제공함으로 메모리를 단순화
- 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호
📌 - 왜 알아야 하는가??
현재 프로그래머들이 가상메모리에 대해 개입하지 않아도 조용하고 자동으로 잘 동작하는데, 왜 이것을 이해해야 하는 것일까??
1 ) 가상메모리가 중심이다.
- 가상메모리는 모든 컴퓨터 수준에 스며들어 있으며, 어셈블러, 링커, 로더, 공유 객체, 파일, 프로세스를 설계하는데 중요한 역할 수행한다.
2) 가상메모리는 강력하다.
- 가상메모리는 응용에 메모리 블록을 생성하고 없애고, 메모리 블록을 디스크 파일의 부분으로 매핑하고, 메모리를 다른 프로세스들과 공유할 수 있는 강력한 기능을 준다.
3) 가상메모리는 위험하다.
- 응용프로그램은 변수를 참조하고 ,포인터를 역참조하고, malloc 같은 동적 할당 패키지로 호출할 때마다 가상메모리와 상호작용한다.
만일 잘못사용되면, 메모리 관련 버그로 고통을 겪을 수 있다.
📌 - DRAM
CPU와 메인 메모리 사이에서의 캐시 메모리를 말하기 위해서는 SRAM 캐시라는 용어를 사용하고,
디스크(100,000배) = DRAM(10배) = SRAM
디스크의 큰 접근 시간 때문에 DRAM은 항상 write-through 대신에 write-back을 사용한다.
🚗 - write-through
- CPU가 데이터를 사용하면 캐시에 저장되게 되는데, 데이터가 캐시 됨과 동시에 주기억장치 또는 디스크로 기입되는 방식
- ⭕️ - 캐시와 메모리에 같이 업데이트 하기 때문에, 데이터 일관성을 유지할 수 있어 안정적임
- ❌ - 속도가 느린 주기억장치 또는 보조기억장치에 데이터를 기록할 때, CPU가 대기하는 시간이 필요하기 때문에 성능 떨어짐
🚚 - write-back(DRAM)
- CPU 데이터를 사용할 때 데이터는 먼저 캐시로 기록되는데, 캐시 내에 일시적으로 저장된 후에 블록 단위에 캐시로부터 해제 되는 때에만 주기억장치, 보조기억장치에 기록되는 방식
- ⭕️ - 캐시와 메모리를 같이 업데이트 하지 않기 때문에, 훨씬 빠르다.
- ❌ - 속도가 빠르지만 캐시에 업데이트하고 메모리에는 바로 업데이트를 하지 않기 때문에, 캐시와 메모리의 값이 다른 경우가 발생할 수 있다.