Stack과 heap
stack은 thread가 사용하고 heap은 process가 사용한다고 말씀하셨고 각 stack별로 용도가 다르고 heap은 공용으로 사용하는 주거 공간이라고 설명해주셨습니다.
비유적으로 설명해주셔서 실제로 다른 곳에서는 어떻게 정리되어있는지 궁금해서 찾아봤는데 stack은 함수가 호출되면서 지역 변수와 매개변수가 저장되는 영역, heap은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 영역이라고 설명이 되어있었습니다.
(찾아본 글: https://junghyun100.github.io/%ED%9E%99-%EC%8A%A4%ED%83%9D%EC%B0%A8%EC%9D%B4%EC%A0%90/)
두 가지의 설명을 어떻게 연결(?)시켜서 이해할 수 있을지 모르겠습니다.
답변 1
3
스레드는 한 프로세스 내부에 존재하는 개별적인 연산흐름입니다. 여기서 연산의 흐름이라는 것은 함수내부 코드 연산을 의미하며 함수가 다른 함수를 호출하는 방식으로 이어집니다. 이 모든 과정에서 함수의 매개변수와 함수 내부 (자동)변수들이 사용할 메모리 영역이 Stack 구조로 관리됩니다. 즉, 한 스레드마다 고유한 스택 메모리를 갖습니다.
한 프로세스(한 가구) 안에 스레드가 3개 실행 중이면 각 스레드(각자 따로 움직이는 사람)는 자신만의 고유한 스택 메모리(각자의 방)를 갖습니다. 그러나 스레드 내부에서 동적 할당하는 메모리는 힙 영역(거실공간)을 사용하며 힙 영역은 특정 스레드에 종속되지 않는 공용 공간으로 이해하시면 되겠습니다.
0
답변 감사합니다.
스택 영역은 이해가 가는데 힙 영역에 대한 이해가 잘 안됩니다.
힙 영역이 특정 스레드에 종속되지 않는 공간이라면 이 공간이 스레드가 원자성을 가지기위해 만들어진 것인가요?
0
힙 영역과 스레드 원자성은 관련이 없습니다. 스택은 보통 1MB 정도 밖에 되지 않습니다. 그러나 힙 영역은 수 GB 정도 크기를 갖습니다. 즉, 큰 메모리가 필요할 때 사용하는 것입니다. 그러므로 스레드 동기화 혹은 원자성 등에 관한 것과 힙 메모리 사용은 분리해 생각하시기 바랍니다. 감사합니다.
0
'각 스레드가 자신만의 고유한 스택 메모리를 갖고 스레드가 힙 영역을 사용하여 메모리를 동적 할당할 수 있다' 라고 이해를 했는데 맞다면 하나의 스레드가 힙 영역 전체를 차지할 수 있나요? 다른 스레드가 사용할 수 있는 힙 영역이 없다면 deadlock이 걸렸다고 볼 수 있을까요?
4
'스레드가 힙 영역을 사용하여 메모리를 동적 할당 할 수 있다.'라는 내용은 맞지 않습니다. 스레드로 실행 중인 코드에서 메모리를 동적할당 하면 결과적으로 힙영역을 사용하게 되는 것입니다. 말장난같지만 비교해 생각해보시기 바랍니다.
스레드 내부에서 힙영역 전체를 소모 할 수 있습니다. 그렇게 되면 데드락이 걸리는 것이 아니라 메모리 부족에 따른 오류가 발생합니다. 데드락은 동기화와 관련해 발생하는 논리적 오류이며 힙영역과는 관련이 없습니다. 참고하시기 바랍니다.
선생님 질문이있습니다.
0
73
2
"한글 한 글자를 저장하는 데 2바이트가 필요하다" 에서 궁금한 점이 있습니다
0
172
2
원자성과 동기화에 대한 사소한? 질문 있습니다.
0
65
1
전가산기에 대한 질문이 있습니다!
0
95
2
format 시 0-0트랙 섹터에 관해
0
91
2
앞으로의 공부 질문
0
113
1
정규표현식 학습에 대한 조언 부탁드립니다.
0
200
2
메모리 용량에 관하여
0
140
1
인터페이스로 File을 사용한다는 것
0
176
1
파일 시스템 관련 질문입니다.
0
158
2
자료 구조
0
259
2
강의의 대한 추가질문
0
213
2
컴퓨터가 글자를 다루는 방법 -> 코드체계 질문
0
209
2
진법변환 개념정리
0
603
2
컴퓨터가 사진을 다루는 법에 대해 질문입니다.
1
200
2
컴퓨터가 곱셈 하는 방법
0
340
2
1비트 1바이트 1킬로바이트
0
407
1
캐시 메모리
0
204
1
[외워야 할 단위 체계와 숫자] 비트 체계와 용량 관련 질문 있습니다.
0
420
2
[컴퓨터가 글자를 다루는 방법] 숫자와 캐릭터 바이너리가 같다면...
0
377
2
CPU 연산체계에 대해서 궁금한 점이 있습니다.
0
322
2
shell에 관련하여 질문드립니다.
0
282
2
가상메모리 관련 질문있습니다.
0
310
2
선생님 안녕하세요
0
319
1





