본문 바로가기
카테고리 없음

[운영체제] 쓰레드 Threads

by 서피 2021. 6. 29.

현재 어플리케이션들은 대부분 멀티쓰레드 방식이다.

하나의 앱 내에 복수의 쓰레드가 이용된다.

 

쓰레드 이용시 장점은 크게 4가지이다.

응답성 Responsiveness

프로세스의 일부가 막히더라도(blocked), 사용자의 요청을 처리하는 쓰레드는 계속 진행된다.

 

자원 공급 Resource Sharing

쓰레드는 자신이 속한 프로세스 내부 자원들을 공유한다.

 

경제성 Economy

프로세스를 생성하는 것보다 쓰레드를 생성하는 것이 빠르다.

프로세스 전환보다 쓰레드 전환이 빠르다.

 

확장성 Scalability

멀티코어를 이용하는 경우 CPU의 쓰레드를 충분히 활용할 수 있다.

 

 

멀티프로세서를 위해 프로그래머가 신경써야 할 5가지

작업 분산 Dividing activities

균형 Balance

데이터 분산 Data splitting

데이터 독립성 Data dependency (병렬 수행을 위해)

테스트 및 디버그 Testing debugging

 

 

병렬화 Parallelism

시스템이 하나 이상의 태스크를 동시에 실행할 수 있다.

 

동시성 Concurrency

하나의 프로세서가 여러 태스크를 진행할 수 있다.

 

 

병렬화의 종류

Data parallelism

구현할 데이터 측면의 분배

 

Task parallelism

수행할 작업의 양 측면의 분배

 

 

 

싱글코어 시스템의 동시 수행

T1, T2, T3, T4의 4가지 태스크를 반복적으로 전환하여 진행한다.

코어가 하나더라도 동시성을 확보하는 방법.

다중코어 시스템의 동시 수행

T1, T2, T3, T4를 2개 코어에 배분하여 진행한다.

 

 

각 쓰레드간에 공유되는 자원과 공유되지 않는 자원이 있다.

공유 자원

code, data, files

 

고유 자원

register, stack ...

함수호출, 지역변수 등이 해당된다.

 

 

쓰레드는 크게 유저 쓰레드와 커널 쓰레드로 나뉜다.

User threads

POSIX Pthreads

Win32 threads

Java threads

 

Kernel threads

Windows

Solaris

Linux

Tru64 UNIX

Mac OS X

 

댓글