320x100
320x100

가상메모리

: 메모리 부족 현상을 방지하기 위해 보조 기억장치인 디스크 공간을 주 기억 장치로 활용하는 것

: 프로세스에서 필요한 부분만 메모리로 적재하고 나머지 부분은 가상메모리 영역에 적재

: 가상메모리 부분은 하드디스크의 공간

 

- 가상주소공간과 메모리 블록

: 가상 메모리는 실제 존재하는 물리적인 메모리 개념과 사용자의 논리 메모리 개념을 분리 

: 접근이 어려운 물리 메모리를 가상으로 재구성하여 배열로 추상화

: 모든 프로그램은 추상화된 배열로 된 가상주소공간을 부여 받음

: 효율을 위해 4kb의 메모리 블록으로 분할하여 사용

 > 페이지 혹은 세그먼트

 

 

 

 

 

 

메모리 관리 기법

- 페이징 (paging)

: 프로그램 전체를 연속된 공간에 적재하지 않고 일정 크기의 단위로 나누어서 분산 하여 적재

: 물리 메모리를 일정한 크기인 Frame으로 분할

: 가상 메모리도 같은 크기의 Page로 분할

: 프로세스에는 페이지 번호와 offset 정보가 포함되어 있어 메모리 상의 프로그램 page와 frame을 찾을 수 있음

 

- 세그먼테이션 (segmentation)

: 프로그램의 주소 공간을 논리적 단위로 분할

: 변수, 함수, 스택, 객체 등 논리적인 단위로 프로그램을 나누어 메모리에 적재

: 세그먼트 테이블을 통해 세그먼트 번호와 오프셋을 지정

: 페이지와 달리 크기가 일정하지 않음 

 

 

 

 

 

가상 메모리와 힙 / 스택

: code, data, heap, stack 등의 영역은 논리적인 영역으로, 가상 메모리에 할당되는 부분

: 가상 메모리는 프로세스 마다 하나씩 갖고 있는 고유한 영역으로 각 영역이 heap과 stack 등의 

  논리적인 메모리 공간을 가짐

: 실제 물리 메모리에는 현재 프로그램 실행을 위해 필요한 부분들이 적재되고,

  당장 실행에 필요없는 부분이 발생할 경우, 가상메모리에 적재하여 필요할때 사용

 

- 가상메모리의 가변성

: 가상메모리는 CPU의 MMU에 의해서 관리됨

: 물리 메모리가 꽉찼을때 일부 프로세스를 스왑 영역으로 보내고 (swap out)

   작업을 마친 프로세스가 있는 경우 스왑 영역의 프로세스를 물리 메모리로 가져옴 (swap in)

 

※ swapping에서의 프로세스의 저장 방향

- swap in

: 디스크 > 메모리

 

- swap out

: 메모리 > 디스크

 

- 메모리 누수가 발생하는 부분

: 메모리 누수가 발생하면 가상메모리 사용량과 물리 메모리 사용량이 함께 증가

: 실행이 끝나고 가비지 컬렉터에 의해 회수되지 않은 객체가 있는 경우 가상메모리에 쌓이게 됨

: 즉, 실행을 위해 물리메모리에 먼저 적재되었다가 가상메모리로 적재가 되는 것

 

 

 

 

 

리눅스 서버에서 NodeJS 프로그램 메모리 누수 여부 확인 방법

1) 프로세스 PID 조회

: ps -ef | grep 프로세스이름

: 메모리 사용량도 확인 가능

 

2) 프로세스 PID로 메모리 사용량 확인

- cat /proc/PID/status

: 프로세스가 사용하는 가상메모리 용량 확인 

: vmRSS를 확인 (프로세스가 사용하는 가상메모리 총량)

 

- top -d 1 -p PID

: 1초 간격으로 프로세스의 메모리 사용량 확인 (가상 메모리 및 물리 메모리)

: RSS와 VSZ를 확인

 

3) cat /var/log/syslog

: OOM (out of memory)가 발생하여 OS에서 프로세스를 종료시켰을 때 시스템 로그를 확인

: VSZ (virtual memory size)로 프로세스가 사용했던 가상 메모리 크기 확인

: RSS (resident set size)로 프로세스가 사용하고 있는 물리적 메모리 크기를 확인

: 메모리 사용 표에 있는 로그의 용량은 페이지 당 크기이므로 페이지 크기인 4096을 곱한 뒤 계산 

 

※ OOM (out of memory)

: 프로세스의 메모리 사용량이 과대하여 리눅스 커널에서 프로세스를 SIGTERM으로 종료시키는 것

 

 

 

 

 

 

 

 

 

 

Refference

 

운영체제의 메모리 관리

사전지식 - 프로세스와 메모리 프로세스와 메모리 프로세스와 메모리 주 기억장치 (메모리) - RAM (Random-Access-Memory) : 전력 공급이 끊길 경우 데이터가 소거되는 휘발성 메모리 - ROM (Read-Only-Memory) :

2mukee.tistory.com

 

[궁금증] 스택과 힙 영역은 가상 메모리에 있는 공간인걸까

운영체제에 대해서 공부를 하고 있다가 궁금한 점이 생겼는데 그에 대한 답을 찾아 기록해 놓으려고 한다. 사건의 시작은 이러하다. 며칠전, 운영체제 공부 중 '가상메모리 관리 기법'에 대해서

cinnamonc.tistory.com

 

OS #8. 메모리 관리(Memory Management) Part1

이번 포스팅에서는 메모리 관리에 대해서 정리해 보고자 한다. 참고로 내용이 많으므로 두 번에 나누어서 정리한다. 컴퓨터가 널리 보급되면서, 범용 컴퓨터 시스템의 목적은 CPU의 활용률을 극

devowen.com

 

메모리구조에서의 자료구조

컴퓨터공학 스터디 W1에서 직접 발표한 내용을 정리한 글입니다.

daeun28.github.io

 

리눅스에서 메모리가 부족할 때

제공: 한빛 네트워크저자: Mulyadi Santosa, 이정목 역원문: When Linux Runs Out of Memory아마도 여러분은 좀처럼 이 상황에 직면하지 않을 것이지만, 만약 그렇게 된다면 여러분은 무엇이 문제(free 메모리

www.hanbit.co.kr

 

300x250
728x90