스레드
- 오늘날의 운영체제는 프로세스의 낭비 요소를 제거하고, 프로세스 작업의 유연성을 얻기 위해
멀티스레드를 사용함
1. 스레드란?
- 프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고,
실제 작업은 CPU가 수행함
-> 이 때, CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드임
- 운영체제 입장에서 작업 단위는 프로세스이고,
CPU 입장에서의 작업 단위는 스레드임
2. 스레드 관련 용어
(1) 멀티 스레드
- 멀티 스레드는 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법임
(2) 멀티 태스킹
- 멀티 태스킹은 운영체제가 CPU에 작업을 줄 때, 시간을 잘게 나누어 배분하는 기법임
-> 이렇게 여러 스레드에 시간을 잘게 나누어 주는 시스템을 시분할 시스템(time-sharing system)이라고 함
(3) 멀티 프로세싱
- 멀티 프로세싱은 CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경을 말함
(4) CPU 멀티스레드
- CPU 멀티스레드는 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여
동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법임
3. 멀티 스레드의 구조와 예
- 스레드는 멀티 태스킹의 낭비 요소를 제거하기 위해 사용함
-> 비슷한 일을 하는 2개의 프로세스를 만드는 대신 코드, 데이터 등을 공유하면서
여러 개의 일을 하나의 프로세스 내에서 함
- 하나의 프로세스 내에 여러 개의 스레드를 생성하는 멀티 스레드는
코드, 파일 등의 자원을 공유함으로써 자원의 낭비를 막고 효율성을 향상함
-> 이런 의미에서 스레드는 가벼운 프로세스(Light Weight Process),
반대로 스레드가 1개인 일반 프로세스는 무거운 프로세스(Heavy Weight Process)라고 함
4. 멀티 스레드의 장점
(1) 응답성 향상
- 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여
사용자의 작업 요구에 빨리 응답할 수 있음
(2) 자원 공유
- 한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스가 가진 자원을 모든 스레드가 공유하게 되어
작업을 원활하게 진행할 수 있음
(3) 효율성 향상
- 여러 개의 프로세스를 생성하는 것과 달리 멀티스레드는 불필요한 자원의 중복을 막음으로써
시스템의 효율이 향상됨
(4) 다중 CPU 지원
- 2개 이상의 CPU를 가진 컴퓨터에서 멀티스레드를 사용하면 다중 CPU가 멀티스레드를 동시에 처리하여
CPU 사용량이 증가하고 프로세스의 처리 시간이 단축됨
5. 멀티 스레드의 단점
- 멀티 스레드의 경우 모든 스레드가 자원을 공유하기 때문에
한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침
-> 반면 프로세스를 여러 개 만드는 방식의 경우 각 프로세스가 독립적이기 때문에
한 프로세스의 문제가 다른 프로세스로 전달되지 않음
참고
- 쉽게 배우는 운영체제