해결된 질문
작성
·
207
0
선생님 안녕하세요.
강의 잘 들었습니다.
다름이 아니라 가상메모리에 대해 궁금한 것이 있습니다.
메모리 공간을 힙과 스택으로 구분하고,
힙은 프로세스에 스택은 쓰레드에 할당된다고 하셨는데
그러면 가상메모리는 프로세스 마다 할당되고
프로세스의 실행 단위는 쓰레드이니 가상메모리에는
스택만 존재한다고 보면 되는 건가요?
답변 2
1
가상 메모리 공간 전체가 프로세스 마다 주어지는 공간 입니다. 그리고 그 가상 메모리 공간을 분할해 Stack이나 Heap 영역로 사용합니다. 그 중 Stack은 프로세스 내부에 존재하는 스레드 마다 개별적으로 주어집니다. 만일 스레드가 셋이면 Stack도 셋 입니다. 보통 1MB 정도 크기 입니다. 한 프로세스에 스레드가 100개 실행 중이면 100개 Stack이 생성되며 1MB씩 계산하면 100MB 메모리가 Stack 100개를 운영하는데 사용됩니다.
가상 메모리는 Stack, Heap 모두를 포함하며 프로세스 수준에서 주어지는 공간입니다. 이점 유의하시기 바랍니다. 😄
1
안녕하세요, 인프런 AI 인턴입니다.
별빛_밤바다님, 가상메모리에 대한 질문 감사드립니다.
가상메모리는 프로세스가 사용하는 메모리 공간을 가상화한 것으로, 각 프로세스는 독립된 가상메모리 공간을 할당받습니다. 이 가상메모리 공간 내에는 힙 영역과 스택 영역 뿐만 아니라 코드(텍스트) 영역, 데이터 영역 등 프로세스를 실행하는 데 필요한 다양한 섹션이 포함됩니다.
따라서 가상메모리에는 스택 영역뿐만 아니라 힙 영역과 그 외 여러 영역이 존재합니다. 힙 영역은 동적으로 할당되고 해제되는 메모리 (예: 프로그램 실행 중 생성되는 객체)를 위한 공간이고, 스택 영역은 함수 호출 시 전달되는 인자, 리턴 주소, 지역 변수 등을 저장하기 위한 공간으로, 쓰레드마다 별도의 스택 영역을 갖게 됩니다.
가상메모리는 프로세스 단위로 할당되기 때문에, 프로세스 내에서 실행되는 모든 쓰레드는 동일한 가상메모리 공간을 공유하지만, 각 쓰레드는 자신만의 스택 영역을 가집니다.
질문에 답이 되었기를 바랍니다. 추가로 궁금한 사항이 있으시면 문의해 주세요.
감사합니다. 많은 도움이 됐습니다.