🖥️ 스레드 🖥️
스레드(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 |