물리 메모리 가상 메모리.
물리 메모리(Physical Memory)와 가상 메모리(Virtual Memory)는 컴퓨터 시스템에서 메모리 관리를 위해 사용되는 개념입니다.
물리 메모리는 실제 하드웨어적으로 존재하는 컴퓨터의 주 기억장치를 말합니다.
주로 RAM(Random Access Memory)으로 구성되며, 프로그램이 실행되고 데이터가 저장되는 실제 메모리 공간입니다.
물리 메모리는 직접 접근이 가능하고 처리 속도가 매우 빠릅니다.
그러나 물리 메모리는 제한된 용량을 가지고 있어, 실행 중인 프로세스들이 요구하는 메모리 크기보다 작을 수 있습니다.
가상 메모리는 물리 메모리의 한계를 극복하기 위해 사용되는 메모리 관리 기술입니다.
가상 메모리는 프로그램이 물리 메모리보다 큰 메모리 공간을 사용할 수 있도록 합니다.
이를 위해 디스크의 일부 공간을 메모리 확장 영역으로 사용하며, 사용되지 않는 프로세스나 데이터를 디스크로 스왑하여 필요한 때에 물리 메모리에 적재합니다.
가상 메모리는 주로 페이지 파일 또는 스왑 파일(Swap File)이라는 디스크의 일부 공간을 사용합니다.
프로세스가 필요로 하는 메모리 공간이 실제로 물리 메모리에 존재하지 않을 때, 필요한 페이지만 물리 메모리로 가져와서 실행됩니다.
이러한 방식으로 가상 메모리는 물리 메모리의 한계를 넘어서 프로그램들이 더 큰 메모리 공간을 사용할 수 있게 합니다.
가상 메모리의 장점은 실제 필요한 메모리 크기보다 큰 프로그램을 실행할 수 있으므로, 더 많은 프로그램을 동시에 실행할 수 있습니다.
프로세스 간의 메모리 공간을 격리시켜 안정성과 보안을 향상시킵니다.
그러나 가상 메모리는 물리 메모리와 디스크 간의 데이터 전송이 필요하므로, 물리 메모리에 비해 접근 속도가 느립니다.
이로 인해 데이터 전송 속도에 따라 성능 저하가 발생할 수 있습니다. 따라서 효율적인 가상 메모리 관리 알고리즘과 적절한 물리 메모리 크기를 선택하는 것이 중요합니다.
MMU와 TLB.
MMU(Memory Management Unit)는 컴퓨터 시스템에서 가상 메모리 주소를 실제 물리 메모리 주소로 변환하는 장치입니다.
가상 메모리 시스템에서는 프로세스가 가상 주소 공간을 사용하고, 이를 물리 메모리 주소로 매핑하여 실제 메모리에 데이터를 저장하고 접근합니다. MMU는 이러한 가상-물리 주소 변환을 수행하여 프로세스가 메모리에 접근할 수 있도록 합니다.
TLB(Translation Lookaside Buffer)는 MMU의 성능을 향상시키기 위해 사용되는 캐시입니다.
가상 주소에서 물리 주소로의 변환 결과를 저장하여 재사용하고, 이로 인해 주소 변환 속도가 빨라집니다.
TLB는 가상 주소를 태그로 사용하고, 해당 가상 주소에 대한 물리 주소를 저장하는 엔트리로 구성됩니다.
주소 변환이 필요할 때, 먼저 TLB를 조회하여 변환 결과를 확인하고, TLB에 해당 엔트리가 없는 경우 MMU를 통해 변환을 수행합니다.
변환 결과는 TLB에 새로 업데이트되며, 이후 같은 가상 주소에 대한 접근 시에는 TLB에서 빠르게 변환 결과를 가져와 사용합니다.
TLB는 속도가 빠르지만 크기가 제한적이기 때문에 모든 주소 변환 결과를 저장할 수 없습니다.
따라서 TLB의 크기와 정책 설정은 성능에 영향을 미치는 중요한 요소입니다.
대부분의 시스템에서는 TLB를 사용하여 일부 주소 변환 결과를 캐시하여 MMU의 주소 변환 속도를 향상시키고,
전체 주소 변환 테이블에 접근하는 비용을 줄입니다.
TLB와 MMU는 협력하여 가상 메모리 시스템에서 가상 주소를 물리 주소로 변환하여 메모리 접근을 가능하게 하고, 성능 향상을 위해 주소 변환 결과를 캐시하여 빠른 접근을 제공합니다.
가상 메모리 알고리즘.
가상 메모리를 관리하기 위해 사용되는 주요한 알고리즘에는 페이지 교체 알고리즘과 페이지 폴트 핸들링 알고리즘이 있습니다.
이들은 가상 메모리 시스템에서 페이지를 관리하고 필요한 페이지를 물리 메모리에 적재하고, 필요 없는 페이지를 디스크로 스왑하는 데 사용됩니다.
페이지 교체 알고리즘.
- LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘입니다. 최근에 사용되지 않은 페이지가 가장 적은 우선순위를 가지며, 가장 최근에 사용된 페이지가 가장 높은 우선순위를 가집니다.
- FIFO (First-In-First-Out): 가장 먼저 적재된 페이지를 교체하는 알고리즘입니다. 가장 오래된 페이지가 가장 먼저 교체됩니다.
- LFU (Least Frequently Used): 가장 적게 사용된 페이지를 교체하는 알고리즘입니다. 사용 빈도가 가장 적은 페이지가 교체됩니다.
- MFU (Most Frequently Used): 가장 많이 사용된 페이지를 교체하는 알고리즘입니다. 사용 빈도가 가장 높은 페이지가 교체됩니다.
- Optimal: 최적 페이지 교체 알고리즘으로, 미래에 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘입니다. 이 알고리즘은 실제로 구현하기 어렵지만 최적 성능을 제공합니다.
페이지 폴트 핸들링 알고리즘.
- 페이지 폴트 (Page Fault)는 필요한 페이지가 물리 메모리에 없어서 디스크로부터 가져와야 할 때 발생하는 상황입니다.
페이지 폴트 핸들링 알고리즘은 페이지 폴트가 발생했을 때 어떤 페이지를 디스크로부터 가져올지를 결정하는 알고리즘입니다.
- Demanding Paging: 페이지 폴트가 발생하면 필요한 페이지만 디스크로부터 가져오는 방식입니다.
- Prepaging: 예상되는 다음에 사용될 페이지들을 미리 디스크로부터 가져오는 방식입니다.
이 외에도 다양한 페이지 교체 알고리즘과 페이지 폴트 핸들링 알고리즘이 개발되었으며, 실제 시스템에서는 이러한 알고리즘들을 조합하여 최적의 성능을 얻을 수 있도록 구현됩니다.
선택할 알고리즘은 시스템의 특성과 용도에 따라 다르며, 성능 평가와 테스트를 통해 적절한 알고리즘을 선택하게 됩니다.
'COMPUTER SCIENCE' 카테고리의 다른 글
파일 시스템 개념과 inode 작동 방식 이해 (0) | 2023.06.11 |
---|---|
스레드의 개념과 장단점, 데드락, 스타베이션 이해하기 (0) | 2023.06.09 |
멀티 프로세서의 프로세스 커뮤니케이션(IPC) 이해 (0) | 2023.06.08 |
프로세스 구조와 콘텍스트 스위치 이해하기 (0) | 2023.06.08 |
CPU 스케쥴링 및 스케쥴링 알고리즘 (0) | 2023.06.07 |