• [운영체제] 멀티쓰레드 ( Multi-Thread )

    2021. 8. 19.

    by. KimBangg

    쓰레드란 무엇인가?

     

    - 쓰레드(Thread)란 실행 중인 프로그램인 프로세스(Process)의 실행 단위이다.

    - 하나의 프로세스에는 여러 개의 쓰레드가 존재할 수 있다.

    - 쓰레드는 다른 쓰레드와 [코드, 데이터, 기타 자원] 등을 공유한다.

    - 사용자 레벨 스레드

     

    동일한 메모리 영역에서 스레드가 생성 및 관리가 되므로, 속도가 빠릅니다.

    커널에서 내부 쓰레드에 대해서 인지하지 못하여 해당 프로세를 제거하여, 여러 개의 쓰레드가 한 번에 종료 될 수 있습니다.

     

     

    - 커널 레벨 스레드

     

    운영체제가 지원하는 스레드 기능을 제공하고, 하나가 종료되도 다른 스레드에 영향을 미치지 않습니다.

      

      

    예시

     

    - 가지마 익스플로어

     

    과거에 대부분 인터넷을 "익스플로어" 로 작업 했을 때, 이런 끔찍한 이미지를 보신적이 있나요?

     

     

    기다려도 안되고, 결국 "취소"를 누르면 꺼져버리죠. 그 이유는 인터넷 익스플로어는 "멀티 스레드" 방식으로 운영이 되기 때문입니다. 그렇기 때문에 공유 자원 중 어떤 한 곳에서 문제가 발생해도 꺼진다는 단점이 있죠!

     

    반면에, 자원을 공유 하기 때문에 "멀티 프로세스" 보다는 성능 측면에서 우위에 있을 수 있습니다. 

       

          

     

    멀티 스레드의 장점

     

    - 응답성

     

    멀티스레드를 사용하면, 다른 일부가 잠시 대기를 해야하거나, 시간이 오래걸리는 작업을 할 때도 다른 작업들이 지속적으로 운영되도록 합니다.

     

    - 자원 공유

     

    스레드는 자원과 메모리를 공유합니다.

     

    - 경제성

     

    자원을 공유 한다는 점 때문에, 문맥 교환 비용측면으로 볼 때 경제적이라고 말할 수 있습니다.

     

     

     

     

     

    멀티 스레드 모델링

     

     

    1. Many-to-One

     

    - 여러 개의 유저 스레드와 1개의 커널 스레드로 구성된 모델입니다.

    - 유저 사이드에 있는 라이브러리를 통해, 스레드의 관리가 이루어집니다.

    - 하나의 유저 스레드만이 커널 스레드에 접근할 수 있습니다. 고로, 하나의 스레드가 blocking 되면, 시스템 전체가 커널 스레드에 접근할 수 없어서 죽게 됩니다.

     

     

     

      

    2. One-to-One

     

    - Many-to-One이 가지는 "병목 현상" 으로 인한 Down을 막기 위해 출시된 모델입니다.

    - 유저 스레드와 커널 스레드가 1대1 매핑이 되어야 하기 때문에 "오버헤드" 가 발생합니다.

     

    * 여기서 잠깐

    병행성(Concurrency) 이란 쉽게 말해서, 한 번에 많은 것들을 처리 할 수 있는 것을 의미합니다.

    여기서 주목 해야하는 지점은 "것" 인데요. 속도가 빨라서, 많은 업무를 처리할 수 있는 개념이 아닌 일정 양의 작업 => 다른 작업 수행을 반복하면서 여러 작업을 골고루 수행하는 정도로 생각 하시면 됩니다. 

    너무나도 빠르게 진행이 되어서, 사용자 입장에서는 "동시에 처리되는 것 처럼" 보이는거죠.

     

      

      

    3. Many-to-Many

     

    - one-one 모델에서 발생 할 수 있는 오버헤드를 줄이기 위하여 착안한 모델입니다.

     

     

      

      

    4. Two-level Model

     

    Many-to-Many 모델를 변화시켜서 비슷한 스레드를 가지고 더 많은 효용을 내기 위해 만들어진 모델입니다.

    댓글