← 질문 목록
#241깊이 0

프로세스와 스레드의 핵심 차이는 무엇인가?

운영체제기초동시성메모리

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

프로세스는 자원과 보호의 경계다. 스레드는 그 안에서 스케줄되는 실행 흐름이다. 무엇을 공유하고 어디까지 실패를 격리할지가 핵심 차이다.

범위프로세스끼리같은 프로세스의 스레드끼리
가상 주소 공간기본은 분리코드·전역 데이터·힙 공유
실행 상태각자 가짐레지스터·스택·스레드 로컬 상태는 각자 가짐
파일과 신호 설정각 프로세스의 자원열린 파일과 일부 프로세스 속성 공유
통신IPC나 공유 메모리를 명시같은 메모리를 직접 읽고 씀

스레드는 스택만 따로 가진다고 축약하면 빠지는 것이 많다. 스레드 ID, 레지스터와 스케줄링 상태, signal mask, errno 같은 스레드별 상태도 있다. 공유 범위는 언어 런타임과 운영체제에 따라 세부가 달라진다.

같은 주소 공간은 값 전달이 싸지만 동기화가 필요하다. 데이터 경합으로 메모리가 깨지거나 처리하지 않은 치명적 오류가 나면 프로세스 전체가 끝날 수 있다. 한 스레드만 재시작해 안전하다고 가정하기 어렵다.

프로세스 경계도 완전한 독립을 뜻하지 않는다. 공유 메모리와 파일, 네트워크 같은 외부 자원을 함께 쓸 수 있다. 한 프로세스의 과도한 CPU·메모리 사용이 다른 프로세스를 굶길 수도 있어 별도 자원 제한이 필요하다.

같은 프로세스의 스레드 전환은 주소 공간을 유지해 더 쌀 수 있다. 그래도 레지스터 저장, 스케줄러와 캐시 비용은 남는다. 프로세스 전환은 항상 무겁고 스레드 전환은 항상 싸다고 고정하지 않는다.

빠른 공유가 중요하면 스레드가 잘 맞는다. 보안·장애·수명 주기를 나눠야 하면 프로세스 경계가 유리하다. 실제 서버는 여러 프로세스 안에 여러 스레드를 두기도 한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

프로세스와 스레드의 핵심 차이는 무엇인가?