학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 171 · 실전 면접 답변

프로세스와 스레드는 어떤 자원을 공유하며, 스레드마다 스택은 왜 따로 필요한가요?

이렇게 답해 보세요 (핵심 답변)

프로세스는 운영체제로부터 자원과 가상 주소 공간을 할당받는 보호 단위이고, 스레드는 그 주소 공간 안에서 실행되는 흐름 단위입니다. 같은 프로세스의 스레드들은 코드, 데이터, 힙 영역과 열린 파일 자원을 공유하지만, 프로그램 카운터(PC)와 레지스터, 스택(Stack)은 스레드마다 독립적으로 가집니다. 각 스레드의 함수 호출 진행 위치와 반환 주소, 지역 변수 상태가 서로 다르므로 호출 프레임이 섞이지 않으려면 별도의 스택이 꼭 필요합니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 힙과 전역 메모리를 공유하므로 데이터 전달은 빠르지만, 여러 스레드가 동시에 접근할 때는 잠금이나 원자 연산 같은 동기화가 필수입니다.
  2. 스택이 스레드마다 따로 있더라도 스택에 있는 변수의 참조나 포인터를 다른 스레드에 넘기면 공유될 수 있으므로 수명과 접근을 주의해야 합니다.

면접에서 자주 하는 실수

스레드마다 스택이 별도라는 이유만으로 다른 스레드가 그 메모리 주소에 절대 접근할 수 없다고 단정하면 안 됩니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 171번을 바탕으로 질문과 답변을 새로 정리했습니다.

← 운영체제