CS/운영체제

[운영체제] 10-3 스레드

서니션 2024. 8. 20. 18:31
이 글을 혼자 공부하는 컴퓨터구조 + 운영체제 (한빛미디어) 책을 읽고 혼자 공부한 내용입니다.
잘못 이해한 부분이 있을 수 있고, 문제가 있는 부분 댓글로 알려주시면 수정하겠습니다.

 

프로세스와 스레드

'실행 흐름의 단위가 하나' -> 단일 스레드 프로세스

프로세스가 실행되는 프로그램이라면 스레드는 프로세스를 구성하는 실행 흐름의 단위

 

각기 다른 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터 값, 스택으로 구성

 

스레드들은 실행에 필요한 최소한의 정보만을 유지한 채 프로세스의 자원을 공유한다는 것이 핵심


멀티프로세스와 멀티스레드

여러 프로세스를 동시에 실행하는 것을 멀티프로세스

여러 스레드로 프로세스를 동시에 실행하는 것을 멀티스레드

 

 

프로세스끼리는 기본적으로 자원을 공유하지 않지만,

스레드끼리는 같은 프로세스 내의 자원을 공유

 

프로세스들은 기본적으로 자원을 공유하지 않기 때문에 서로가 남남처럼 독립적으로 실행,

스레든느 프로세스의 자원을 공유하기 때문에 서로 협력과 통신에 유리 (메모리를 더 효율적으로 사용)

 

하지만 단점도 있음

멀티프로세스 환경에서는 하나의 프로세스에 문제가 생겨도 다른 프로세스에는 지장이 적거나 없지만,

멀티스레드 환경에서는 하나의 스레드에 문제가 생기면 프로세스 전체에 문제가 생길 수 있음