개발의 시작과 끝
2020.05.13 / Day - 31 IT 기초 메모리 영역, 메모리 할당 본문
30일차
메모리 영역
코드(code) 영역
실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 한다.
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다.
데이터(data) 영역
프로그램의 전역변수와 정적(static) 변수가 저장되는 영역이다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
힙(heap) 영역
사용자가 직접 관리할 수 있는(해야만 하는) 메모리 영역이다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제된다.
메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
스택(stack) 영역
함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역이다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
메모리 할당
프로그램이 사용할 수 있도록 운영체제가 메모리를 할당한다.
저수준 언어에서는 이를 개발자가 명시적으로 처리해줘야 하지만 고수준 언어에서는 개발자가 신경쓸 필요 없다.
동적할당
컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것을 말한다.
사용이 끝나면 운영체제가 쓸 수 있도록 반납하고 다음에 요구가 오면 재 할당을 받을 수 있다.
동적으로 할당된 메모리 공간은 프로그래머가 명시적으로 해제하거나
쓰레기 수집이 일어나기 전 까지 그대로 유지된다.
정적할당
메모리 할당 방법 중에 하나로, 메모리의 크기가 하드 코딩되어 있기 때문에
프로그램이 실행 될 때 이미 해당 메모리의 크기가 결정되는 것이 특징이다.
사용하는 운영체제에 따라 각 데이터형에 약속된 기억공간의 크기가 있고,
지정된 만큼 프로그램을 실행하는 프로세서에 필요한 자원으로 할당 시켜준다
즉, 프로그램 실행의 시작부분에서 필요한 만큼 미리 기억공간을 할당 받고 시작하는 것을 의미한다.
가비지 컬렉터(Garbage Collector) / 가비지 컬렉션(garbage collection)
쓰레기 수집, 가비지 컬렉션은 메모리 관리 기법 중의 하나로,
프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해체하는 기능이다.
'풀스택 > IT 기초' 카테고리의 다른 글
2020.05.13 / Day - 31 IT 기초 응용 프로그래머, 웹 프로그래머 (0) | 2020.05.13 |
---|---|
2020.05.13 / Day - 31 IT 기초 데이터베이스 (0) | 2020.05.13 |
2020.05.13 / Day - 31 IT 기초 서버 (0) | 2020.05.13 |
2020.05.13 / Day - 31 IT 기초 부동소수점과 그 한계 (0) | 2020.05.13 |
2020.05.13 / Day - 31 IT 기초 기계어와 어셈블리언어, 컴파일과 컴파일러 (0) | 2020.05.13 |