개념
4. 스레드
GenieLove!
2022. 8. 26. 23:34
728x90
반응형
스레드
스레드란
- 프로세스 내에서 실제로 작업을 수행하는 주체
- 운영체제 입장에서 작업의 단위 : 프로세스, CPU 입장에서의 작업 단위 : 스레드
- 모든 프로세스는 한 개 이상의 스레드가 존재
- 두 개 이상의 스레드를 가지는 프로세스는 멀티 스레드 프로세스(multi-threaded process)
멀티 프로세스와 멀티 스레드 차이 등
멀티 태스킹
- 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법
- 여러 스레드에서 시간을 잘게 나누어 주는 시스템 : 시분할 시스템(time-sharing system)
시분할 시스템에서 운영체제가 CPU에 전달하는 작업은 프로세스가 아니라 스레드
멀티 프로세스
- 하나의 응용 프로그램을 여러 개 프로세스로 구성하여 각 프로세스가 하나의 작업(Task)을 처리하도록 하는 것이다.
- 장점
- 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고, 다른 영향이 확산되지 않는다.
- 단점
- context switching에서의 오버헤드
- 컨텍스트 스위칭 과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생하게 된다.
- 프로세스는 각각의 독립된 메모리 영역을 할당 받기 때문에 공유 메모리가 없어, 컨텍스트 스위칭이 발생하게 되면 캐시에 있는 모든 데이터를 리셋하고 다시 캐시 정보를 불러와야 된다.
- 프로세스 사이의 어렵고 복잡한 통신 기법
- 각각 독립된 메모리 영역을 할당 받았기 때문에 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.
- context switching에서의 오버헤드
멀티 스레드
- 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
- 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것
- 장점
- 자원의 중복 사용을 피함으로써 낭비를 막는다.(자원 공유)
- 작업의 효율성 증대(시스템 자원 소모 감소)
- 응답성 향상
- 시스템 처리량 증가(처리 비용 감소)
- 스레드 사이의 작업량이 작아, 컨텍스트 스위칭이 빠르다.
- 간단한 통신 방법으로 인한 프로그램 응답 시간 단축
- 프로세스 내의 스택 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.
- 단점
- 주의 깊은 설계 필요
- 디버깅 까다로움
- 단일 프로세스 시스템인 경우 효과 보기 어려움
- 단일 프로세스에서 스레드를 제어할 수 없다.
- 멀티 스레드의 경우 자원 공유 문제 발생 가능성
동기화 문제(Synchronization issue) : 여러 스레드가 전역 변수를 함께 사용할 경우 발생할 수 있는 충돌 - 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.
멀티 스레드 모델
사용자 스레드
- 운영체제가 멀티 스레드를 지원하지 않을 때 사용하는 방법
- 초기 스레드 시스템에서 이용
- 커널 입장에선 이 스레드는 하나의 프로세스처럼 보이지만, 커널이 하는 일을 라이브러리가 대신 처리하여 여러 개의 스레드를 작동한다.
- 커널 스레드 : 사용자 스레드 1 : N
- 라이브러리가 직접 스케줄링 하고 작업에 필요한 정보를 처리하기 때문에 컨텍스트 스위칭이 필요없다.
- 단점
- 여러 개의 스레드가 하나의 커널 스레드와 연결되기 때문에 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기하게 된다.
- 한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 CPU를 동시에 사용할 수 없다.
- 보안에 취약
커널 스레드
- 커널이 멀티 스레드를 지원하는 방식
- 커널 스레드 : 사용자 스레드 1 : 1
- 독립적 스케줄링이 가능
- 장점
- 커널 레벨에서 모든 작업을 지원하기 때문에 멀티 CPU 사용 가능
- 보안에 강하고 안정적으로 작동
- 단점
- 컨텍스트 스위칭 시 오버헤드 때문에 느리게 작동
멀티레벨 스레드
- 사용자 스레드와 커널 스레드를 혼합한 방식으로 M : N
- 사용자 스레드보다 커널 스레드 개수가 같거나 적다.
- 장점
- 하나의 커널 스레드가 대기 상태에 들어가면 다른 커널 스레드가 대신 작업을 사용하여 사용자 스레드보다 유연하게 작업을 처리할 수 있다.
- 빠르게 움직여야하는 스레드는 사용자 스레드로 작동, 안정적으로 움직여야 하는 스레드는 커널 스레드로 작동
- 단점
- 커널 스레드를 같이 사용하기 때문에 여전히 컨텍스트 스위칭 시 오버헤드가 있어 사용자 스레드만큼 빠르지 않다.
728x90
반응형