스레드 개념

• 프로세스 안에서 실행되는 여러 흐름 단위

    ◦  프로세스가 생성될 때, 기본적으로 하나의 스레드가 함께 생성된다.

    ◦  즉 프로세스마다 최소 한 개 이상의 스레드가 존재할 수 있다.


 멀티스레드

 하나의 프로세스에 두 개 이상의 스레드가 존재하는 구조로, 여러 작업을 동시에 처리할 수 있다.

 각 스레드마다 별도의 스택 영역이 독립적으로 주어지지만, 텍스트데이터 영역은 소속된 프로세스의 것을 공유하여 사용한다.

    ◦  프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해 스레드는 프로세스 내부의 다른 스레드와

         공간, 자원을 공유하면서 사용한다는 점에서 차이가 있다.

 

 사용자 스레드(User threads)

    ◦  사용자 수준(user level)에서 실행되며 thread library에 의해 관리된다.

    ◦  동일한 메모리 영역에서 스레드가 생성/관리 되므로 속도가 빠르다.

 

 커널 스레드(Kernel thread)

    ◦  커널 수준(kernel level)에서 실행되며 운영체제에 의해 직접 관리된다.


 다중 스레드 모델

 Many-to-One Model

    ◦  여러 사용자 스레드를 하나의 커널 스레드에 mapping 한 모델

    ◦  concurrency 는 얻을 수 있지만 parallelism 을 얻을 수 없다.

    ◦  여러 개의 사용자 스레드 중 하나가 시스템 호출 등으로 중단되면 나머지 모든 스레드 역시 중단된다.

    ◦  멀티코어 or 멀티프로세스의 이점을 충분히 활용할 수 없다.

 

 One-to-One Model

    ◦  하나의 사용자 스레드를 하나의 커널 스레드에 mapping 한 모델

    ◦  blocking 문제가 발생하지 않는다.

    ◦  멀티 코어나 멀티 프로세스의 이점을 활용할 수 있다.

    ◦  사용자 스레드를 만드는 것은 곧 커널 스레드를 만드는 것을 의미한다. 커널 스레드가 많아지면 성능상의 문제가 발생할 수 있다.

    ◦  가장 일반적으로 사용 되는 모델이다.

          -  대부분의 시스템에서 처리 CPU 수가 증가함에 따라 커널 스레드의 개수를 제한하는 것의 중요성이 줄어들었기 때문에
              Many-to-Many 모델보다 더 많이 사용된다.

 

 Many-to-Many Model

    ◦  많은 사용자 스레드를 같거나 더 적은 수의 커널 스레드에 mapping 한 모델

    ◦  blocking 문제가 발생하지 않는다.

    ◦  멀티 코어나 멀티 프로세스의 이점을 활용할 수 있다.

    ◦  가장 flexible 하지만 구현하기 어렵다.

 

 Two-Level Model

    ◦  Many-to-Many 방식과 One-to-One 방식이 함께 존재하는 모델

    ◦  두 모델의 장점을 모두 누리기 위해 고안된 모델이다.


 멀티스레드의 장단점

 장점

    ◦  응답성

          -  동시에 여러 작업을 수행할 수 있기 때문에 사용자에 대한 응답성을 증가시킨다.

    ◦  자원 공유

          -  프로세스는 공유 메모리와 메시지 전달을 통해서만 자원을 공유할 수 있지만 스레드는 동일한 프로세스 내부의 스레드들과

             자원을 공유하기 때문에 자원 손실이 적다.

          -  스레드 생성은 프로세스 생성보다 일반적으로 시간과 메모리를 적게 소비한다

          -  자원을 공유하기 때문에 Context switching 속도는 프로세스 보다 스레드 사이에서 더 빠르다.

• 단점

    ◦  안전성

          -  스레드 끼리 메모리 공간을 공유하기 때문에, 하나의 스레드가 메모리를 훼손하면 다른 스레드의 작업에도 문제가 생길 수 있다.

          -  Critical Section 과 동기화 기법

              -  하나의 스레드/프로세스가 수정 가능한 공유 자원을 액세스하고 있을 때,

                  그 스레드/프로세스에 의해 참조되는 영역을 Critical Section 이라고 한다.

              -  특정 데이터에 여러 스레드/프로세스가 동시 접근하는 경우 문제가 발생할 수 있기 때문에,
                  동기화 기법을 이용해 특정 데이터에는 한번에 하나의 스레드/프로세스만 접근하도록 제한해야 한다.


 멀티 프로세스

 멀티 프로세스

    ◦  여러개의 프로세스가 동시에 병렬적으로 처리되는 상황을 의미한다.

    ◦  보통 하나의 컴퓨터에 여러개의 CPU를 장착해야 가능하다. 1코어 CPU의 경우 한번에 하나의 프로세스만 처리할 수 있기 때문이다.

 

    ◦  장점 : 안전성

              -  메모리 침범 문제를 OS 차원에서 해결해준다

 

    ◦  단점 : 성능 저하

              -  프로세스는 독립된 메모리 영역을 가지기 때문에 작업량이 많을수록 메모리 효율이 떨어진다.

                  또한 Context Switching 으로 인한 오버헤드가 발생하기 쉽다.


참고자료

 

운영체제 - YES24

운영체제

www.yes24.com

 

'CS Knowledge > 운영체제' 카테고리의 다른 글

[OS] CPU 스케줄링 알고리즘  (0) 2022.09.16
[OS] CPU 스케줄링 개념  (0) 2022.09.16
[OS] 프로세스와 Context Switching  (0) 2022.09.08
[OS] 운영체제 구조  (0) 2022.09.07
[OS] 운영체제 개요  (0) 2022.09.07