안녕하세요! ITibiza입니다.
이 글은 메모리란 무엇인지 메모리 구조는 어떻게 되어 있고 어떻게 처리되는지 알아 보려고 합니다.
TMI긴 하지만 제가 첫 면접 봤을 때 면접관이 메모리란 무엇인지에 대해서 질문 했던 기억이 나는데요!
이미 저는 아래 내용을 공부 했었던 터라 면접관이 엄청 좋아 했던 기억이 납니다ㅎ
그래서! 신입에겐 면접 준비를 경력자에겐 간단하게나마 다시 한 번 복습하는 시간이 되었으면 좋겠습니다.
디테일하게 아는 것도 좋지만 적당한 포인트만 머릿 속에 각인 시키는게 목적이기에 간단하게 정리해 봤습니다!
메모리란?
컴퓨터에서 정보를 처리하기 위해 일시적으로 정보를 보관하는 기억장치며 크게 두 가지 유형으로 나뉘게 됩니다.
1. 휘발성 메모리 (Volatile Memory)
- RAM (Random Access Memory): 컴퓨터가 작업 중인 데이터를 일시적으로 저장하는 공간. 전원이 꺼지면 데이터가 사라지며 빠른 속도로 데이터에 접근할 수 있습니다.
2. 비휘발성 메모리 (Non-Volatile Memory)
- 하드 드라이브 (HDD): 데이터가 영구적으로 저장되는 장치로, 전원이 꺼져도 데이터가 보존 된다. 비교적 저렴하지만 속도가 느립니다.
- 솔리드 스테이트 드라이브 (SSD): HDD보다 빠르고 안정적이지만, 가격이 비쌉니다. 플래시 메모리 기반으로 작동합니다.
실질적으론 주 기억장치인 램(RAM)의 용량이 부족한 경우를 대비하여 하드디스크의 일부분을 가상 메모리로 사용하고 있죠ㅎ
메모리 구조
프로그램이 운영체제로 부터 할당받는 대표적인 메모리 공간은 4가지 영역으로 분류 되는데요. 각 영역과 특징은 아래와 같습니다!
1. 코드영역.
- 실행할 프로그램의 코드가 저장되는 영역
- TEXT 영역이라고도 부른다.
- 프로그램이 시작되고 끝날때까지 메모리에 남는다.
- 컴파일 된 기계어가 들어가게 된다.
- CPU는 코드영역에 저장된 명령어들을 하나씩 가져가서 처리하게 된다.
2. 데이터 영역.
- 프로그램의 전역변수와 정적(static)변수, 문자열, 상수가 저장되는 영역
- 프로그램이 시작되고 끝날때까지 메모리에 남는다.
3. Stack 영역.
- 함수의 호출과 관계된 지역변수와 매게변수가 저장되는 영역
- 함수의 호출과 함께 할당되며 함수호출이 완료되면 사라진다. 이렇게 스택영역에 저장되는 함수호출 정보를 스택 프레임이라고 한다.
- 프로그램이 자동으로 사용하는 임시 메모리 영역이다.
- 메모리의 높은 주소에서 낮은주소의 방향으로 할당된다.
3. Heap 영역.
- 힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
- 메모리의 낮은주소에서 높은주소 방향으로 할당된다.
- malloc() 이나 new 를 통해 할당되고 free() 또는 delete연산자를 통해서 해제가 가능하다.
- 런타임시에 크기가 결정 된다.
이렇게 간단하게나마 메모리와 메모리 구조에 대해서 알아봤습니다.
필자의 잘못된 부분이나 피드백은 언제든지 댓글 남겨주세요!!
감사합니다^^