스레드
- 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다.
- 프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고 실제 작업은 CPU가 수행하는데 CPU스케줄러가 CPU에 전달하는 일 하나가 스레드 이다.
- 작업을 상대적인 크기 순으로 나열하면 job(직업)>task(일)>operation(동작)이 되는데 이를 프로세스와 스레드의 관계에 대입하면 처리 > 프로세스 > 스레드 가 된다.
- 여러 개의 스레드가 모여 프로세스를 이루고 여러개의 프로세스가 모여 처리가 되며 여러개의 프로세스를 모아서 한꺼번에 처리하는 방법을 일괄 작업 이라고 한다.
프로세스와 스레드의 차이
- 프로세스 끼리는 약하게 연결되어 있는 반면 스레드끼리는 강하게 연결되어 있다.
스레드 관련 용어
멀티스레드
- 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
멀티태스킹
- 멀티태스킹은 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법 = 시분할 시스템
- 운영체제가 CPU에 전달하는 작업은 프로세스가 아니라 스레드이다.
멀티프로세싱
- 병렬 처리에서의 슈퍼 스칼라 기법과 같으며,
- 하나의 컴퓨터에 여러 개의 CPU 혹은 하나의 CPU 내 여러 개의 코어에 스레드를 배정하여 동시에 작동
- 네트워크로 연결된 여러 컴퓨터에 스레드를 나누어 협업하는 분산 시스템도 멀티프로세싱이라고 부른다.
CPU 멀티스레드
- 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
멀티 스레드의 구조
- 코드, 전역데이터, 파일 등의 자원을 공유 함으로 써 멀티태스킹의 자원낭비의 문제점을 막고 효율성을 향상하는 구조
- 스레드는 가벼운 프로세스(Light Weight Process, LWP)라고 부름
- 스레드가 1개인 일반 프로세스는 무거운 프로세스(Heavy Weight Process, HWP)라고 부름
멀티 스레드의 장점
- 응답성 향상
- 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있다.
- 자원공유
- 한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스가 가진 자원을 모든 스레드가 공유하게 되어 작업을 원할하게 진행할 수 있다.
- 효율성 향상
- 불필요한 자원의 중복을 막음으로써 시스템 효율이 향상된다.
- 다중 CPU 지원
- 2개 이상의 CPU를 가진 컴퓨터에서 멀티스레드를 사용하면 다중 CPU가 멀티 스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스의 처리 시간이 단축된다.
멀티 스레드의 단점
- ex) 인터넷에서 여러 개의 화면을 동시에 띄웠는데 그 중 하나가 문제가 생길 시 강제종료 하였을때 모든 익스플로어가 종료된다.
사용자 스레드(1 to N 모델)
- 운영체제가 멀티 스레드를 지원하지 않을 때 사용하는 방법으로 라이브러리에 의해 구현된 일반적인 스레드
- 커널이 지원하는 스케줄링이나, 동기화 같은 기능을 라이브러리가 대신 구현
장점
- 문맥 교환과 같은 부가적인 작업이 줄어들어 속도가 빠르다.
단점
- 커널 스레드가 입출력 작업을 위해 대기 상태에 들어가면 모든 사용자 스레드가 같이 대기
- 한 프로세스의 타임 슬라이스를 여러 스레드가 공유하기 때문에 여러 개의 cpu를 동시에 사용할 수 없다.
- 사용자 스레드는 공유 변수를 보호하는 서비스를 커널이 아닌 라이브러리에서 구현해야 하기에 보안에 취약하다.
커널 스레드(1 to 1 모델)
- 커널이 멀티 스레드를 지원하는 방식으로, 하나의 사용자 스레드가 하나의 커널 스레드와 연결되어 있다.
- 독립적으로 스케줄링이 되기에 특정 스레드가 대기 상태에 들어가도 다른 스레드느 작업을 계속할 수 있다.
장점
- 커널 레벨에서 모든 작업을 지원하기 때문에 멀티 cpu를 사용할 수 있다.
- 하나의 스레드가 대기 상태에 있어도 다른 스레드는 작업을 계속할 수 있다.
- 커널의 기능을 사용하므로 보안에 강하고 안정적으로 작동한다.
단점
- 문맥 교환을 할 때 오버헤드 때문에 느리게 작동한다.
멀티레벨 스레드(M to N 모델)
- 사용자 스레드와 커널 스레드를 혼합한 방식으로 커널 스레드의 개수가 사용자 스레드 보다 같거나 적다.
장점
- 하나의 커널 스레드가 대기 상태에 들어가면 다른 커널 스레드가 대신 작업을 하여 사용자 스레드보다 유연하게 작업을 처리할 수 있다.
- 빠르게 움직여야 하는 스레드는 사용자 스레드로 작동하고, 안정적으로 움직여야 하는 스레드는 커널 스레드로 작동한다.
단점
- 커널 스레드를 같이 사용하기 때문에 여전히 문맥 교환 시 오버헤드가 있어 사용자 스레드만큼 빠르지가 않다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 동기화 (0) | 2024.03.26 |
---|---|
[운영체제] CPU 스케줄링 (1) | 2024.03.26 |
[운영체제] 프로세스 (0) | 2024.03.26 |
[운영체제] 컴퓨터 구조 / 성능 향상 (0) | 2024.03.26 |
[운영체제] 운영체제 개요 (0) | 2024.03.26 |