OS/Windows

[Windows] 메모리 관리 맛보기

요체크다 2023. 11. 3. 17:58
반응형

Windows에서 관리되는 메모리 기법에 대해 간략히 알아 보도록 하겠습니다.


1. 메모리 관리 기법
- Windows의 경우 가상메모리 관리 기법 사용합니다.

2. Virtual Memory
 - 물리 메모리 크기의 한계를 극복하기 위해 나온 메모리 관리 기법으로, 물리메모리+Disk Swap 영역을 합쳐 가상 메모리 영역으로 관리.
 - OS에서는 개별 프로세스에 메모리 할당 시 물리메모리 주소공간을 할당하지 않고 가상메모리 주소 공간을 할당.
 - 가상메모리는 4KB 단위 블록으로 나눈 Page 단위로 관리하고, 물리메모리 역시 가상메모리와 맞추기 위해 4KB 단위 블록으로 나눈 Page Fram 단위로 관리.
 - Page는 가상메모리를 같은 크기의 블록(보통 4KB)으로 나눈 것을 의미하며, Frame(Page Frame)은 물리 메모리를 Page와 같은 크기로 나눈 것을 의미.
 - 가상 메모리 주소 공간과 물리 메모리 주소 공간의 맵핑(mapping) 정보는 Page Table 을 통해 관리되며, Page Table에 없는 주소 공간 참조시 page fault 가 발생.
 - 가상 메모리와 물리 메모리 사이 이동은 page 단위이며, 이때 page in/out 이 발생.
 - 당장 실행해야 하는 프로세스 전체를 물리메모리에 두고, 당장 실행할 필요가 없는 프로세스는 Swap 영역에 할당하여 Virtual Memory 공간을 관리.

3. Commit
 - 가상메모리로부터 각각의 프로세스들이 "난 이 정도의 메모리를 쓸 겁니다. 쓸지 안쓸지 모르겠지만 이 정도의 지분을 주세요" 라고 OS 에 요청한 메모리의 총량입니다.
 - 실제로 이 커밋된 메모리가 실제 메모리 용량보다 커지면 그때부터 OS는 가상메모리 및 가용 가능한 모든 메모리를 쥐어짜내기 시작하며, 총량이 설치된 메모리보다 큰 이유는 OS가 가용가능한 모든 메모리를(ex, 가상메모리) 포함하기 때문입니다.

4. Cache
 - 현재 메모리에 올라가 있지만 Active 되어 있지 않은 데이터의 총량입니다.
 - 즉, 프로세스의 호출이 있으면 언제든지 빠른 속도로 가져올 수 있는 데이터라는 의미이며, 절전모드시엔 state에 따라 다르지만 지워질 수도 있습니다.

5. Paged
 - 가상메모리(물리메모리+페이징파일)영역에서 실제 메모리에서 제거되어 페이징 파일에 기록될(Page-Out) 수도 있고, 반대로 페이징 파일에서 실제 메모리 영역으로 올라올(Page-In) 수 있는 영역입니다.
 - 즉, 가상메모리 공간중 Paging In-Out이 발생할 수 있는 공간을 의미.
 - 페이징 풀 메모리는 윈도우 운영체제와 장치 드라이버가 사용할 수 있도록 따로 비축한 메모리입니다.

6. Non-Paged
 - 가상메모리(물리메모리+페이징파일)영역에서 실제 메모리 영역에만 할당되어 사용되는 영역으로 Paging in-Out 발생하지 않는 영역을 의미합니다.
 - Windows에서 내부적으로 시스템이 사용하려는 메모리 공간을 제한되게 확보하는 것들이 있는데, 그 중에서 하나가 Non-Paged Pool이다. Non-Paged Pool 메모리는 물리 메모리에만 할당 되는 것으로, 페이지 폴트가 없이 접근하기 위한 메모리 영역입니다.
 - 하지만 이런 장점에도 불구하고 몇몇 잘못된 드라이버나 프로그램들이 Non-Paged Pool에 할당되는 데이터를 남용해서 문제가 생기곤 합니다.
 - Non-Paged가 주로 수치가 높게 형성되는 이유에는 장치드라이버 및 악성코드 등으로 인한 경우가 많습니다.

반응형

'OS > Windows' 카테고리의 다른 글

[Windows] TCP/UDP 상태확인  (0) 2022.10.18
[Windows] 윈도우 단축키 모음  (0) 2021.02.04