티스토리 뷰

개발/운영체제

스레드(Thread)

겸겸이 2018. 1. 4. 17:52

스레드(Thread)

- 실과 같이 흘러가는 프로그램의 흐름

- CPU 이용의 기본 단위로서, 독립적으로 실행되는 코드 집합

- Light Weight Process(경량의 프로세스) 라고 부르기도 함

- 하나의 프로세스 내에 반드시 하나 이상의 스레드 존재

o 하나의 프로그램을 여러개의 스레드로 동시에 혹은 나누어서 병렬적으로 수행

- 각 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택을 독립적으로 소유

- 같은 프로세스 내의 여러 스레드는 코드(텍스트 영역), 데이터 영역, 열린 파일 등의 시스템 자원을 공유

o 독립적인 주소 공간(메모리)은 없으며 다른 스레드와 공유


멀티 스레드(Multi Thread)

- 운영체제의 여러작업을 수행하기 위해 프로세스를 늘리는 것 보다, 스레드를 늘리는 것이 효율적임

ex)

o 여러개의 단위 작업으로 구성된 프로그램 (ex) 이미지/텍스트 표시하는 스레드, 네트워크에서 데이터를 가져오는 스레드)

o 동일한 작업을 여러개 동시에 실행하는 프로그램 (ex) 여러개의 클라이언트 요청을 동시에 처리)

o 운영체제의 여러 작업을 멀티 스레드로 처리 


- 장점

o 응답성 (Reponsiveness)

다른 스레드의 실행시간 길거나 입출력을 위해 블록(block) 되더라도 계속 실행을 허용

o 자원 공유 (Resource sharing)

 타 메모리를 사용하는 것이 아닌, 프로세스의 자원(코드 및 데이터 등)을 자동적으로 공유

o 경제성 (Economy)

프로세스의 생성과 문맥 교환보다 빠르고 자원 사용이 적다.

o 확장성 (Scalability)

멀티 프로세서 시스템에서 병렬성 증가 


- 멀티 스레딩 모델 : 실제 운영체제에서 설계하여 사용하는 방법

o  사용자 스레드 (User thread) : 스레드를 하나의 프로세스 흐름으로 관리

커널의 지원/인식 없이 사용자 공간에서 실행 (빠른 스레드 연산)

> 스레드 멈춤은 프로세스 자체의 멈춤을 유발 (blocking)

스레드 라이브러리를 통하여 제공 

> 커널의 관여 없이 스레드 생성, 스케줄링, 관리 수행


o 커널 스레드 (Kernel thread) : 커널이 관리하는 스케줄링 유닛으로 관리

커널이 스레드를 인식하고 프로세스와 유사하게 스케줄링

> 커널의 오버헤드로 스레드 생성과 스케줄링이 느림

Windows, Linux, Mac OS X 등 대부분의 운영체제가 지원

각 커널 스레드는 CPU 스케줄링을 통해 병렬적으로 실행

> 멀티 프로세서 시스템에서 병행 수행 능력 향상


- 사용자 스레드와 커널 스레드의 관계 

o     사용자 스레드가 CPU를 할당받아 실행되기 위해서는 커널 스레드에 연결되어야 한다. (mapping, binding)


o 다대일(M:1) 모델

사용자 수준의 스레드 구현

> 모든 스레드 제어가 사용자 수준 라이브러리에서 지원됨.

장점

> 커널 모드 전환이 필요 없기 때문에 스레드 연산이 빠르다.

> 라이브러리를 위한 커널 지원이 필요 없기 때문에 이식이 좋다.

단점

> 한 스레드에서 시스템 호출이 블록되면, 모든 스레드가 블록된다. (독립성 X)

> 커널이 스레드 각각을 스케줄하지 못하기 때문에 멀티 프로세서 등의 자원을 활용하지 못한다. (성능 개선 X)


o 일대일(1:1) 모델

커널 수준의 스레드 구현

> 커널이 각 스레드의 스케줄링을 직접 처리

> 다대일 구현의 단점을 해결

단점

> 스레드 생성, 문맥 교환, 동기화 등의 작업이 느리다.

> 커널 스케줄러의 부담이 커져서 시스템의 전반적인 성능이 저하될 수 있다.

> 그러나 성능저하가 감당 가능하기 때문에 리눅스와 윈도즈 등 대부분의 운영체제에 1:1 모델이 선호된다.

 



'개발 > 운영체제' 카테고리의 다른 글

페이징(Paging)  (0) 2018.01.08
메모리 관리(Memory Management)  (0) 2018.01.07
교착상태(Deadlock)  (0) 2018.01.05
락(Lock)과 세마포어(Semaphore)  (0) 2018.01.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함