질문 171 · 실전 면접 답변
프로세스와 스레드는 어떤 자원을 공유하며, 스레드마다 스택은 왜 따로 필요한가요?
이렇게 답해 보세요 (핵심 답변)
프로세스는 운영체제로부터 자원과 가상 주소 공간을 할당받는 보호 단위이고, 스레드는 그 주소 공간 안에서 실행되는 흐름 단위입니다. 같은 프로세스의 스레드들은 코드, 데이터, 힙 영역과 열린 파일 자원을 공유하지만, 프로그램 카운터(PC)와 레지스터, 스택(Stack)은 스레드마다 독립적으로 가집니다. 각 스레드의 함수 호출 진행 위치와 반환 주소, 지역 변수 상태가 서로 다르므로 호출 프레임이 섞이지 않으려면 별도의 스택이 꼭 필요합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 힙과 전역 메모리를 공유하므로 데이터 전달은 빠르지만, 여러 스레드가 동시에 접근할 때는 잠금이나 원자 연산 같은 동기화가 필수입니다.
- 스택이 스레드마다 따로 있더라도 스택에 있는 변수의 참조나 포인터를 다른 스레드에 넘기면 공유될 수 있으므로 수명과 접근을 주의해야 합니다.
면접에서 자주 하는 실수
스레드마다 스택이 별도라는 이유만으로 다른 스레드가 그 메모리 주소에 절대 접근할 수 없다고 단정하면 안 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 171번을 바탕으로 질문과 답변을 새로 정리했습니다.