상세 컨텐츠

본문 제목

4.1 쓰레드 개요

Computer Science/OS Concepts

by RACC8N 2020. 4. 24. 14:53

본문

쓰레드(Thread)

- CPU이용의 기본 실행 단위

 

단일 쓰레드 (Single threaded) Processes

- 전통적인 프로세스 - 한 개의 실행 단위로 구성

 

다중 쓰레드 (Multithreaded) Process

- 여러 개의 실행 쓰레드를 갖는 프로세스

 > 한 프로세스가 동시에 하나 이상의 작업 수행 가능

- 전통적인 프로세스의 확장

Thread 사용 자원

- 같은 프로세서에 속한 다른 Thread들과 (Code, Data, OS자원(open file, signal) 들을 공유함

- stack, CPU register 저장공간은 thread 전용공간 사용

 

Thread Control Block (TCB)

- 쓰레드에 대한 정보를 보관 (프로세스의 PCB와 유사)

 > thread ID

 > thread 실행 상태

 > program counter, register set -> thread context

 > stack

 > thread specific 메모리 공간 (static 메모리)

 

단일 및 다중 쓰레드 프로세스

중량 프로세스와 경량 프로세스 

- thread 생성에 필요한 자원이 Process 생성에 필요한 자원보다 작다 -> 경량

Thread의 등장 배경

단일 응용 프로그램이 여러 개의 작업을 동시에 실행할 필요가 있음

- word processor : 화면 출력 + 키보드 입력 + 스펠링 검사 + ...

- web browser : 화면 출력 + 네트워크에서 데이터 수신 + ...

- web server : 여러 개의 client의 요청 처리

- OS kernel : 장치 관리, 인터럽트 처리 등

 

해결책

- 다중 프로세스 -> 프로세스 생성 오버헤드

- 다중 쓰레드 프로세스 -> 쓰레드 생성에 필요한 자원이 적어서 효율적

쓰레드의 장점

응답성 (Responsiveness)

- 프로그램의 일부가 block되거나, 긴 작업을 수행하여도 대화형(interactive)작업의 계속 진행을 허용 

 > 사용자에 대한 응답성 증가

 

자원 공유 (Resource Sharing)

- 기본적으로 프로세스의 메모리와 자원을 공유함

- 같은 주소 공간에서 여러 개의 다른 작업을 수행하는 thread 허용

 > 커널 서비스 호출없이 thread 간에 통신 가능

 

경제성 (Economy)

- thread 생성, 종료, context switch에 소요되는 오버헤드가 process에 비해서 적음 -> 자원, 시간 절약

 

규모 확장성 (Scalability), 적응성

- 다중 프로세서(멀티코어) 구조에서 thread들을 병렬 처리 가능

 

관련글 더보기

댓글 영역