Process Virtual Memory, Swap, Cache

ASHAPPYASIKNOW·2022년 11월 13일
0

PROCESS, THREAD

목록 보기
3/5
post-thumbnail

프로세스와 가상메모리

프로세스를 실행할 때 독립적인 메모리를 할당 받게 된다. 이 때 OS는 메모리의 관리 효율을 높이기 위해서 램(RAM)과 하드 디스크(Hard Disk or SSD)를 메인 메모리(Main memory)로 할당 해주는데 이를 가상 메모리(Virtual Memory)라고 한다.

프로그램이 실행되면 스왑파일(Swap File)영역에 프로그램을 운영하고 실행하기 위한 모든 정보를 페이지(page: 4K) 단위로 나누어서 올려놓는다. 그리고 프로세스가 동작할 때 필요한 페이지를 램 영역에 미리 복사해 두고 사용한다.

스왑파일에 있는 페이지를 램에 올려두고 사용하는 이유는 램이 하드디스크에 비해서 매우 빠르기 때문이다.

프로세스가 동작할 때 필요한 페이지를 램 영역에 올려 두는 것을 Page in 또는 Swap in이라 하고, 반대로 램에 있는 페이지를 스왑파일 쪽에 저장해 놓고 램에서 제거하는 것을 Page out 또는 Swap out이라고 한다.


가상 메모리 동작 방식

  • CPU에서 20K ~ 24K 영역 안에 있는 데이터를 요청하게 되면 실제로는 물리 메모리 0K ~ 4K를 할당해서 사용할 수 있게 한다.

  • CPU에서 28K ~ 32K 영역 안에 있는 데이터를 요청하게 되면 실제로는 물리 메모리 4K ~ 8K 영역을 할당해서 사용 할 수 있게 한다.

프로세스 1개에 할당하는 메모리 영역을 32K 라고 가정할 때 프로세스 3개를 실행하기 위해서는 96K의 메모리가 필요하다. 하지만 가상 메모리 방식을 사용하면 96K 보다 작은 메모리를 가지고도 프로세스 3개를 실행시킬 수 있다.


페이지와 캐시

캐시(Cache)가 동작하는 방식과 유사하다.

CPU의 처리 속도는 다른 디바이스들에 비해서 매우 빠르다. 이 속도 차를 극복하기 위한 방법의 하나가 캐싱(Caching) 이다.

L2 Cache에 데이터를 캐싱할 때 지역적 유사성과 시간적 유사성을 기반으로 데이터를 가져간다.

램에서는 하드디스크에 있는 데이터를 페이지 단위로 데이터를 가지고 간다.

페이지 캐시(Page cache)

애플리케이션에서 하드 디스크에 있는 데이터를 읽어오기 위해서는 데이터를 램에 올려 놓아야 한다. 이 과정은 매우 시간이 오래 걸린다. 이 부분을 보완하기 위해서 리눅스 OS 단에서 I/O 데이터를 페이지 단위로 캐싱할 수 있는 기능을 제공하는데 이것을 페이지 캐시라고 한다.

스왑 메모리 영역을 사용하고 있습니다.

프로세스들이 많아지면 물리 메모리를 많이 소모하게 되고 결국 추가적인 물리적인 메모리 공간을 할당받지 못할 수 있다. 이러한 경우에 페이지 인과 페이지 아웃이 빈번하게 발생하게 되고 결국 프로세스 처리 속도가 매우 느려지게 된다.

예제) 
스왑 메모리를 사용하기 시작해서 ... 
할당 해제되지 않는 메모리 초기화 ...
버퍼 메모리 설정 변경 ...

REFERENCES

Page Cache
Page cache
Virtual Memory
[윈도우즈 시스템 프로그래밍] 가상 메모리(1)

profile
36.9 It's good time to start something new

0개의 댓글