< 메모리구조 >
운영체제로부터 프로그램을 실행할 메모리 공간(RAM)을 할당받는다. 이 메모리 내부 공간은 코드 영역, 데이터 영역, 힙 영역, 스택 영역, 커널 영역으로 나뉘어있다.
1) 코드 영역
: 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 불림
- 상수 저장
- 컴파일된 기계어
- CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리
- 프로그램이 시작하고 끝날 때까지 메모리에 남아있음
2) 데이터 영역
: 전역변수와 정적 변수가 저장되는 영역
- 프로그램이 시작하고 끝날 때까지 메모리에 남아있음
(전역변수의 특징 중 프로그램 시작과 종료까지 존재하는 이유이다.)
3) 힙 영역
: 사용자에 의해 메모리 공간이 동적 할당과 해제가 이루어짐
- 사용자가 직접 해야 하는 역영
- 메모리의 낮은 주소에서 높은 주소로 할당된다
- malloc() 또는 new연산자를 통해 할당되며, free() 또는 delete 연산자를 통해 해제됨
- JAVA에서 가비지 컬렉터가 자동으로 해제하는 곳
- 런타임 시에 크기가 결정
`
4) 스택 영역
: 함수의 호출과 관계된 지역 변수와 매개변수가 저장되는 영역
- 스택에 저장되는 함수호출 정보를 스택 프레임으로 불림
- 메모리의 높은 주소에서 낮은 주소로 할당된다
- 프로그램이 자동으로 사용하는 임시 메모리 영역
- 컴파일 시에 크기가 결정
5) 커널 영역
: 이 영역은 시스템 운영에 필요한 메모리로, 운영체제가 커널에 존재
- 사용자가 함부로 커널영역에 접근 X
- 스택은 낮은 주소에서 높은 주소로 데이터가 쌓이기 때문에 커널 영역을 침범하지 않음
'학교 공부 > 시스템' 카테고리의 다른 글
[운영체제] 병행성 제어와 교착상태 (1) | 2020.03.06 |
---|---|
[운영체제] CPU 스케줄링 알고리즘 (0) | 2020.03.05 |
[운영체제] CPU 스케줄링이란? (0) | 2020.03.03 |
[운영체제] 프로세스란? (+ 문맥전환이란?) (0) | 2020.03.03 |
[운영체제] 운영체제란? (0) | 2020.03.03 |
댓글