Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 방금 그 곡
- 경량 프로세스
- 임계 구역
- Stack영역
- 유저 모드
- Multi-level Queue
- 블로킹 논블로킹
- Reentrant
- 뮤텍스(Mutex)
- 스레드 동기화
- 인터락 함수
- Activity
- 스레드
- 프로세스
- The Banker's Algorithm
- 모니터(Monitor)
- Light Weight Process
- 커널 모드의 동기화
- The DIning Philosopher Problem
- 교착 상태
- 동기 비동기
- Process Control Block
- 은행원 알고리즘
- Non-Preemptive
- 프로세스 제어 블록
- 커널 모드
- 문맥 교환
- Heap영역
- 유저 모드의 동기화
- 프로세스 상태 전이도
Archives
Blog For Me
[운영체제]프로세스(process) 메모리 구조 본문
![](https://user-images.githubusercontent.com/59963677/139250519-afd0b51d-30fa-415a-9e79-d901fb6cefc7.png)
1. Text 영역
실행 가능한 코드가 들어있다. CPU에서는 이 영역에서 명령어를 하나씩 가져와 처리한다.
2. Data 영역
전역 변수, 정적 변수가 저장된다. 이 변수들은 프로그램 시작 시 할당되어 프로그램이 종료될때 소멸된다.
3. Heap 영역
- 프로그램 실행 중에 동적으로 할당할 수 있는 영역이다.
- Heap 영역은 런타임에 결정되며, 프로그래머가 필요할 때마다 사용하는 영역이다.
- stack 영역과는 반대로 낮은 주소에서 높은 주소 순으로 할당한다.
- Java에서는 객체가 Heap 영역에 생성되고 GC(Garbage Collection)에 의해 수거된다.
- Heap 영역에서의 할당은 요청되는 양, 현재 메모리 상황 등 다양한 요소를 고려해야 하므로 더 많은 CPU Instruction이 필요하여 Stack보다 할당 속도가 더 느리다.
4. Stack 영역
- 프로그램이 자동으로 사용하는 임시 메모리 영역이다.
- 지역 변수, 매개 변수, 리턴값, 복귀할 주소 등을 임시로 저장하는 공간이다. 이 데이터들은 함수 호출 시에 생성되었다가 함수의 수행이 완료되면 사라진다.
- 메모리의 높은 주소부터 낮은 주소 순으로 할당된다.
- 컴파일 시 stack 영역의 크기는 한정되어 있으므로 무한정 할당할 수 없고, 재귀함수가 반복해서 호출되거나 함수가 지역변수를 메모리 초과할 정도로 많이 갖고 있으면 stack overflow가 발생하게 된다.
- Stack 영역에서의 할당은 이미 생성된 공간에 대해 포인터의 위치만 바꿔주는 단순한 CPU Instruction이므로 할당 속도가 빠르다.
Stack 영역과 Heap 영역
- Stack 영역과 Heap 영역은 같은 공간을 사용한다. 따라서 Stack 영역이 클수록 Heap 영역은 작아지고, Heap 영역이 클수록 Stack 영역은 작아진다.
- Stack 영역은 높은 주소에서 낮은 주소 순으로, Heap 영역은 낮은 주소에서 높은 주소 순으로 할당되기 때문에 서로 자신의 영역을 침범하는 일이 벌어질 수 있다. Stack Overflow는 Stack이 Heap 영역을 침범하는 현상이고, Heap Overflow는 Heap이 Stack영역을 침범하는 현상이다.
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
프로그램과 프로세스의 차이점 (0) | 2021.11.10 |
---|---|
[운영체제] 스레드(Thread)의 개념 (0) | 2021.10.30 |
[운영체제] Context Switching(문맥 교환) (0) | 2021.10.29 |
[운영체제] PCB(Process Control Block) (0) | 2021.10.29 |
[운영체제]프로세스(Process) 상태 전이도 (0) | 2021.10.29 |
Comments