프로세스 메모리
운영체제는 프로세스마다 각각 독립적인 메모리 영역을 할당해 주기 때문에 프로세스간 영향을 받지 않고, 작업을 수행할 수 있다. 기본적으로 다른 프로세스의 변수나 자료에 적급할 수 없지만, IPC나 공유 메모리 등의 통신 기법을 사용하면 접근할 수 있다.
- 스택은 위 주소부터 할당되고, 힙은 아래 주소부터 할당된다.
- 스택과 힙에 저장되는 함수는 객체는 동적으로 Run 타임 때 계속 늘어날 수 있기 때문에 메모리 사용량이 늘어난다.
1. 스택(Stack)
- 동적인 특징을 가진다.
- 지역변수, 매개변수, 함수가 저장된다. 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.
- 컴파일 시에 크기가 결정된다.
- 함수가 함수를 재귀적으로 호출하게 되면 동적으로 크기가 늘어날 수 있는데, 이때 힙과 스택의 메모리 영역이 겹치면 안 되기 때문에 힙과 스택 사이의 공간을 비워 놓는다.
2. 힙(Heap)
- 동적인 특징을 가진다.
- 객체나 배열, 문자열 등이 저장된다.
- 런타임 시에 크기가 결정되고 동적 할당할 때 사용된다. ex) 벡터 같은 동적 배열은 힙에 동적 할됭된다.
3. 데이터 영역
- 코드가 실행될 때 사용되는 전역변수(global), 정적변수(static)가 저장된다.
- 정적인 특징을 갖는 프로그램이 종료되면 사라지는 변수가 들어있다.
- 데이터 영역은 BSS영역과 Data 영역으로 나뉜다.
- BSS 영역 : 초기화가 되지 않은 변수가 0으로 초기화되어 저장된다.
- Data 영역 : 0이 아닌 다른 값으로 할당된 변수들이 저장된다.
4. 코드 영역
- 정적인 특징을 가진다.
- 프로그램에 내장되어 있는 소스 코드가 들어가 있는 영역이다.
- 수정 부가능한 기계어로 저장되어 있다.
반응형
'CS' 카테고리의 다른 글
MVC 패턴(Model, View, Controller)이란? (0) | 2023.01.23 |
---|---|
프록시 패턴(Proxy Pattern) 이란? (0) | 2023.01.20 |
옵저버(Observer ) 패턴 개념 및 구현 방법(Java, JavaScript) (0) | 2023.01.10 |
알고리즘 BigO(시간 복잡도, 공간 복잡도) 개념 및 예제 (0) | 2023.01.05 |
팩토리(factory) 패턴 개념 및 JavaScript에서 사용 방법 (1) | 2023.01.04 |