메모리는 수, 명령, 자료 등을 저장하는 공간입니다.
윈도우와 같은 운영체제를 구동할 때 사용되고, 프로그램이 어떠한 작업을 수행하고 난 값을 저장하고, 읽기 등등에 사용되기에 없어서는 안 될 존재입니다.
메모리는 사물함이나 판 초콜릿의 모습처럼 생겼습니다. 각 방의 크기가 일정하며, 구분되어 있죠.
각 방에는 주소가 지정되어 있어 특정 방의 위치를 찾을 수 있습니다.
사물함은 물건을 보관하기에 편리하지만 개인마다 최적화되어있진 않습니다.
사물함의 크기가 너무 작거나 크다고 느끼는 사람이 있을 겁니다.
메모리도 마찬가지입니다.
따라서 이 문제를 해결하기 위해 각 방에 단위를 붙입니다.
단위는 바이트(byte)입니다. 그리고 바이트는 비트(bit)로 한 번 더 나눠지게 됩니다.
메모리를 더 효율적으로 사용하기 위해서입니다.
메모리는 바이트 단위로 관리되지만 최소 단위는 비트인 것이죠.
비트는 바이트를 나눈 것이기에, 사용할 수 있는 비트가 늘어날 때마다 저장할 수 있는 수의 범위가 늘어납니다.
프로그램이 실행되려면 먼저 프로그램의 정보가 메모리에 로드(load) 되어야 합니다.
이 작업은 운영체제(OS)가 담당합니다.
프로그램 작동을 위해 운영체제가 메모리 공간을 할당해 주죠.
이때 크게 분류되는 메모리 공간은 다음과 같습니다.
실행할 프로그램의 소스코드가 저장되는 곳입니다.
실행 파일을 구성하는 명령어들이 저장되고, CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다.
전역 변수와 정적 변수가 저장되는 곳입니다.
프로그램의 시작과 함께 할당되고, 프로그램 종료 시 소멸됩니다.
사용자가 메모리를 직접 관리할 수 있는 곳입니다.
사용자에 의해 메모리 공간이 동적으로 할당되고 해제될 수 있습니다.
함수 호출 시 지역 변수, 매개 변수가 저장되는 곳입니다.
함수의 호출과 함께 할당되고, 함수 호출 완료 시 소멸됩니다.