Chapter 4. Thread & Concurrency

송승윤·2025년 10월 16일

운영체제 정리

목록 보기
3/10

Thread

Definition

CPU 사용의 기본 단위
실타래에서 뜻을 가져왔는데 비유 잘한듯

스레드의 장점은 다음과 같다.

Responsiveness
프로세스의 일부가 차단된 경우 계속 실행할 수 있어 반응성이 좋음

Resource Sharing
IPC랑 다르게 스레드는 프로세스의 리소스를 공유함

Economy
프로세스 생성보다 저렴하며 Context Switch가 없어 오버헤드가 적음

Scalability
멀티코어 아키텍쳐를 쓸 수 있어서 확장성이 좋음

대부분의 커널들은 multithread로 돌아감

Multithread

multithread process는 registers, PC, stack은 다 따로 쓰는데 code, data, files는 공유함

memory 관점으로 보면 heap, data, text 부분은 공유하고 stack은 각자 쓰는 모습

밑에 있는 코드는 main에서 직접 thread를 생성하는 모습
파라미터는 실행할 함수를 포함

Parallelism vs Concurrency

Parallelism(병렬 처리)는 시스템이 여러 작업 동시 수행
multithread, multicore임

Data parallelism 데이터를 쪼갬 ex) loop parallelization
Task parallelism 할 일을 쪼갬 ex) server-client architencture

Concurrency(동시성)은 한 번에 여러 작업
single core임

Amdahl’s Law

얘는 컴퓨터의 성능 한계선을 지정하는 공식

S : 직렬 부분 (singlethread)
1-S : 병렬 부분(multithread)
N : 프로세싱 코어 개수

대충 S가 작아질수록 이득인데 이득 증가의 폭이 작아지는 구조임

User and Kernel Threads

User threads는 user가 생성하고 user level thread library에서 관리됨
Kernel threads는 커널이 스케쥴링함

얘네들끼리 매칭 되는 숫자에 따라 multithreading 모델이 결정되는데 One-to-One이 기본임

One-to-One

user thread를 만들 때마다 kernel 스레드가 만들어짐
근데 스레드가 너무 많아지면 오버헤드가 커져서 프로세스당 스레드를 제한을 둠
window랑 linux가 이거 쓰니까 그냥 근본 그 자체

Pthread

스레드 생성 및 동기화에 대한 표준 규칙
pthread_create로 스레드를 만들고, pthread_join으로 스레드 종료를 기다리거나, pthread_exit으로 종료하는 방식

Thread Cancellation

스레드가 완료되기 전에 종료하는 거

Astnchronous cancellation 대상 스레드를 즉시 종료
Deferred cancellation 대상 스레드를 주기적으로 보다가 안전할 때 종료함

0개의 댓글