가상 메모리: 두 판 사이의 차이
(Gemini 벌크 업로더로 자동 업로드) |
(Gemini 벌크 업로더로 자동 업로드) |
||
1번째 줄: | 1번째 줄: | ||
== | == 가상 메모리 (Virtual Memory) == | ||
'''가상 메모리'''는 | '''가상 메모리(Virtual Memory)'''는 운영체제가 물리 메모리(RAM)의 한계를 극복하기 위해 사용하는 메모리 관리 기법입니다. 각 프로세스에게 실제 물리 메모리 크기와 상관없이 '''크고 연속적인 메모리 공간'''이 있는 것처럼 보이게 하여, 효율적인 메모리 사용과 프로세스 간 메모리 보호를 가능하게 합니다. | ||
---- | |||
=== 🧠 가상 메모리의 필요성 === | |||
* '''물리 메모리의 한계 극복''' | |||
> * 실제 물리 메모리(RAM)의 크기보다 더 큰 프로그램을 실행할 수 있게 합니다. | |||
> * 여러 프로세스가 동시에 실행될 때, 각 프로세스가 독립적인 큰 메모리 공간을 사용하는 것처럼 보이게 합니다. | |||
* '''메모리 | * '''메모리 관리의 효율성 증대''' | ||
> * '''프로세스 간 메모리 보호''' : 각 프로세스는 자신의 가상 주소 공간만 접근할 수 있어, 다른 프로세스의 메모리 영역을 침범하는 것을 방지합니다. | |||
* '''메모리 보호''' : 각 프로세스는 | > * '''메모리 공유 용이''' : 여러 프로세스가 동일한 코드나 데이터를 공유할 수 있도록 하여 메모리 사용 효율을 높입니다. (e.g., 공유 라이브러리) | ||
* ''' | > * '''프로그램 로딩 시간 단축''' : 프로그램 전체를 한 번에 물리 메모리에 올리지 않고, 필요한 부분만 올릴 수 있습니다. | ||
---- | ---- | ||
=== ⚙️ 가상 메모리의 동작 | === ⚙️ 가상 메모리의 동작 원리 === | ||
* '''가상 주소 (Virtual Address) vs 물리 주소 (Physical Address)''' | |||
> * '''가상 주소''' : CPU가 생성하는 주소. 각 프로세스마다 독립적인 가상 주소 공간을 가집니다. | |||
> * '''물리 주소''' : 실제 물리 메모리(RAM)의 주소. | |||
가상 | * '''주소 변환 (Address Translation)''' | ||
> * CPU가 가상 주소를 생성하면, '''MMU(Memory Management Unit)'''라는 하드웨어 장치가 이 가상 주소를 물리 주소로 변환합니다. | |||
> * '''페이지(Page)와 프레임(Frame)''' : 가상 메모리 공간과 물리 메모리 공간을 고정된 크기의 블록으로 나눈 단위입니다. 가상 메모리의 블록을 '페이지', 물리 메모리의 블록을 '프레임'이라고 합니다. | |||
> * '''페이지 테이블 (Page Table)''' : 가상 주소의 페이지 번호와 해당 페이지가 매핑되는 물리 메모리의 프레임 번호를 저장하는 테이블입니다. 각 프로세스마다 고유한 페이지 테이블을 가집니다. | |||
* '''페이지 폴트 (Page Fault)''' | |||
> * CPU가 접근하려는 가상 주소에 해당하는 페이지가 현재 물리 메모리(RAM)에 없는 경우 발생하는 인터럽트입니다. | |||
> * 운영체제는 페이지 폴트가 발생하면, 해당 페이지를 디스크(스왑 영역)에서 찾아 물리 메모리로 로드하고, 페이지 테이블을 업데이트한 후, 중단되었던 명령어를 다시 실행합니다. | |||
---- | ---- | ||
=== 💡 | === 💡 개발자 핵심 Point === | ||
* 가상 메모리는 | * 가상 메모리는 개발자가 직접적으로 관리할 필요는 없지만, 그 동작 원리를 이해하는 것은 메모리 관련 성능 문제를 해결하는 데 중요합니다. | ||
* | * '''스래싱 (Thrashing)''' | ||
* ''' | > * '정의': 프로세스의 작업 세트(Working Set, 현재 활발하게 사용되는 페이지 집합)가 물리 메모리보다 커서, 페이지 폴트가 빈번하게 발생하고 CPU 이용률이 급격히 떨어지는 현상입니다. | ||
> * '원인': 너무 많은 프로세스가 동시에 실행되거나, 각 프로세스에 할당된 물리 메모리가 너무 적을 때 발생합니다. | |||
> * '해결': 프로세스 수를 줄이거나, 물리 메모리를 늘리거나, 페이지 교체 알고리즘을 최적화합니다. | |||
* '''지역성 (Locality of Reference)''' | |||
> * '시간 지역성': 최근에 참조된 데이터는 가까운 미래에 다시 참조될 가능성이 높습니다. | |||
> * '공간 지역성': 최근에 참조된 데이터 주변의 데이터는 가까운 미래에 참조될 가능성이 높습니다. | |||
> * 가상 메모리 시스템은 이러한 지역성 원리를 활용하여, 페이지 폴트 발생 시 주변 페이지를 함께 로드하는 등의 최적화를 수행합니다. 개발자는 지역성을 고려하여 코드를 작성하면 캐시 및 가상 메모리 효율을 높일 수 있습니다. |
2025년 9월 11일 (목) 16:50 기준 최신판
가상 메모리 (Virtual Memory)
가상 메모리(Virtual Memory)는 운영체제가 물리 메모리(RAM)의 한계를 극복하기 위해 사용하는 메모리 관리 기법입니다. 각 프로세스에게 실제 물리 메모리 크기와 상관없이 크고 연속적인 메모리 공간이 있는 것처럼 보이게 하여, 효율적인 메모리 사용과 프로세스 간 메모리 보호를 가능하게 합니다.
🧠 가상 메모리의 필요성
- 물리 메모리의 한계 극복
> * 실제 물리 메모리(RAM)의 크기보다 더 큰 프로그램을 실행할 수 있게 합니다. > * 여러 프로세스가 동시에 실행될 때, 각 프로세스가 독립적인 큰 메모리 공간을 사용하는 것처럼 보이게 합니다.
- 메모리 관리의 효율성 증대
> * 프로세스 간 메모리 보호 : 각 프로세스는 자신의 가상 주소 공간만 접근할 수 있어, 다른 프로세스의 메모리 영역을 침범하는 것을 방지합니다. > * 메모리 공유 용이 : 여러 프로세스가 동일한 코드나 데이터를 공유할 수 있도록 하여 메모리 사용 효율을 높입니다. (e.g., 공유 라이브러리) > * 프로그램 로딩 시간 단축 : 프로그램 전체를 한 번에 물리 메모리에 올리지 않고, 필요한 부분만 올릴 수 있습니다.
⚙️ 가상 메모리의 동작 원리
- 가상 주소 (Virtual Address) vs 물리 주소 (Physical Address)
> * 가상 주소 : CPU가 생성하는 주소. 각 프로세스마다 독립적인 가상 주소 공간을 가집니다. > * 물리 주소 : 실제 물리 메모리(RAM)의 주소.
- 주소 변환 (Address Translation)
> * CPU가 가상 주소를 생성하면, MMU(Memory Management Unit)라는 하드웨어 장치가 이 가상 주소를 물리 주소로 변환합니다. > * 페이지(Page)와 프레임(Frame) : 가상 메모리 공간과 물리 메모리 공간을 고정된 크기의 블록으로 나눈 단위입니다. 가상 메모리의 블록을 '페이지', 물리 메모리의 블록을 '프레임'이라고 합니다. > * 페이지 테이블 (Page Table) : 가상 주소의 페이지 번호와 해당 페이지가 매핑되는 물리 메모리의 프레임 번호를 저장하는 테이블입니다. 각 프로세스마다 고유한 페이지 테이블을 가집니다.
- 페이지 폴트 (Page Fault)
> * CPU가 접근하려는 가상 주소에 해당하는 페이지가 현재 물리 메모리(RAM)에 없는 경우 발생하는 인터럽트입니다. > * 운영체제는 페이지 폴트가 발생하면, 해당 페이지를 디스크(스왑 영역)에서 찾아 물리 메모리로 로드하고, 페이지 테이블을 업데이트한 후, 중단되었던 명령어를 다시 실행합니다.
💡 개발자 핵심 Point
- 가상 메모리는 개발자가 직접적으로 관리할 필요는 없지만, 그 동작 원리를 이해하는 것은 메모리 관련 성능 문제를 해결하는 데 중요합니다.
- 스래싱 (Thrashing)
> * '정의': 프로세스의 작업 세트(Working Set, 현재 활발하게 사용되는 페이지 집합)가 물리 메모리보다 커서, 페이지 폴트가 빈번하게 발생하고 CPU 이용률이 급격히 떨어지는 현상입니다. > * '원인': 너무 많은 프로세스가 동시에 실행되거나, 각 프로세스에 할당된 물리 메모리가 너무 적을 때 발생합니다. > * '해결': 프로세스 수를 줄이거나, 물리 메모리를 늘리거나, 페이지 교체 알고리즘을 최적화합니다.
- 지역성 (Locality of Reference)
> * '시간 지역성': 최근에 참조된 데이터는 가까운 미래에 다시 참조될 가능성이 높습니다. > * '공간 지역성': 최근에 참조된 데이터 주변의 데이터는 가까운 미래에 참조될 가능성이 높습니다. > * 가상 메모리 시스템은 이러한 지역성 원리를 활용하여, 페이지 폴트 발생 시 주변 페이지를 함께 로드하는 등의 최적화를 수행합니다. 개발자는 지역성을 고려하여 코드를 작성하면 캐시 및 가상 메모리 효율을 높일 수 있습니다.