Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science/운영체제

4. 스레드

by Toughie 2023. 8. 29.

🖥️ 스레드 🖥️ 

스레드(thread)는 프로세스를 구성하는 '실행 흐름의 단위'

 

스레드의 구성 요소

스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보

스레드마다 각자 스택 영역을 가짐

프로세스의 스레드들은 프로세스의 자원을 공유함! 스택 영역만 각자 가지고

코드, 데이터, 힙 영역은 공유하는 것 

(요즘은 프로세스 단위보다 스레드 단위로 CPU 할당, 해제 케이스가 많음)

 

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

동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 -> 멀티 프로세스

하나의 프로세스를 여러 스레드로 실행 -> 멀티 스레드

프로세스끼리는 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내 자원을 공유하며 실행된다.

 

프로세스를 fork하면 코드/데이터/힙/스택 영역 등 모든 자원이 '복제되어 저장'된다.

프로세스가 저장된 메모리 주소를 제외하면, 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재되는 것.

참고) fork 직후 같은 프로세스를 통째로 메모리에 중복 저장하지 않으면서, 동시에 프로세스끼리 자원을 공유하지 않는 방법

copy on wirte(쓰기 시 복사) 

즉 프로세스끼리는 자원을 공유하지 않고 독립적으로 실행됨 vs 스레드끼리는 자원을 공유하기 때문에 협업,통신에 유리함

but 자원을 공유하는 것 때문에 문제가 생길 수 있는데.. 멀티 프로세스 환경에서는 하나의 프로세스에 문제가 생겨도 다른 프로세스에 영향이 없지만, 멀티 스레드 환경에서는 스레드가 공유하는 자원에 문제가 생기면 다른 스레드에 문제가 생길 수 있다.

 

사실 프로세스 간에도 자원을 주고 받을 수 있다.(다만 스레드만큼 쉽지 않고 중간 매개체가 필요하다고 생각하자)

프로세스 간 통신(IPC_Inter Process Communication), 소켓 등..

파일을 통한 프로세스 간 통신 공유 메모리를 통한 프로세스 간 통신

 

 

 

학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl 

'Computer Science > 운영체제' 카테고리의 다른 글

6. CPU 스케줄링 알고리즘  (0) 2023.08.30
5. CPU 스케줄링  (0) 2023.08.29
3. 프로세스 상태와 계층 구조  (0) 2023.08.28
2. 프로세스 개요  (0) 2023.08.27
1. 운영체제 intro  (0) 2023.08.27