OS

스레드

Bryan Lee 2022. 4. 30. 21:18

- 오늘날의 운영체제는 프로세스의 낭비 요소를 제거하고, 프로세스 작업의 유연성을 얻기 위해

  멀티스레드를 사용함

 

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. 멀티 스레드의 단점

 

- 멀티 스레드의 경우 모든 스레드가 자원을 공유하기 때문에 

   한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침

-> 반면 프로세스를 여러 개 만드는 방식의 경우 각 프로세스가 독립적이기 때문에  

    한 프로세스의 문제가 다른 프로세스로 전달되지 않음

 

 

참고

- 쉽게 배우는 운영체제