개발/Hardware

[하드웨어 시리즈] 메모리와 메모리 구조

알 수 없는 사용자 2024. 8. 1. 15:02

안녕하세요! 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연산자를 통해서 해제가 가능하다.
  • 런타임시에 크기가 결정 된다.

 

이렇게 간단하게나마 메모리와 메모리 구조에 대해서 알아봤습니다. 

 


 

필자의 잘못된 부분이나 피드백은 언제든지 댓글 남겨주세요!!

감사합니다^^