[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 4-1) 단일 스레드와 멀티 스레드

극꼼 2023. 1. 16. 18:31
반응형


<스레드(Thread)>

: CPU 활용의 기본 단위, 프로세스 내에서 프로그램 명령을 실행하는 기본 단위.

 

- 스레드 구성 : 스레드 ID, Program Counter, Register 집합, 스택으로 구성.

- 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, open files 등의 운영체제 자원을 공유.

 

1) 단일 스레드 : 프로세스가 제어 스레드를 1개만 가지고 있을 때. 1개의 레지스터, 1개의 스택.

  • 장점 : 자원을 공용화 하지 않아서 공용 자원에 접근을 통제하지 않아도 됨. Context Switch 작업이 불필요합니다.
  • 단점 : 다수개의 CPU 활용이 불가능합니다.

 

2)  멀티 스레드 : 프로세스가 제어 스레드를 여러개 가지고 있을 때(프로세스를 생성하는데에는 오래 걸리고 자원도 많이 사용해서, 오버헤드를 감수하고 프로세스를 여러개 만드는 것보다 스레드를 여러개 가지고 있는 것이 효율적임). 프로그램을 다수의 실행 단위로 나눠서 실행합니다. 각각의 스레드가 고유의 레지스터와 스택으로 표현.

  • 장점 
    • 대응적 측면 : 일부가 차단되거나 장시간 작업 수행시에도 다른 스레드들이 돌고 있기 때문에 계속해서 실행 가능합니다.
    • 자원 공유성 : 프로세스끼리는 공유메모리, 메시지 전달로 통신하는데, 스레드는 자동으로 본인이 속해있는 프로세스의 자원과 상태를 공유하여 효율적인 운영 가능.
    • 경제성 : 자신이 속한 프로세스의 자원을 공유하기 때문에 스레드를 만들고 Context Switch를 진행하는 것이 더 경제적입니다.
    • 확장성 : 다중처리기(multiprocessor)에서 강력한 장점이 됩니다. 다수개의 코어에서 병렬로 프로세스 실행.


<유저 스레드와 커널 스레드>

  유저 스레드 커널 스레드
특징 커널의 별도 지원 없이 커널 위에서 동작.
스레드 라이브러리에 스레드 관련 코드를 포함(스레드 생성/파괴, 메시지/데이터 전달, 스래드 문맥 저장/복구를 위한 코드).
운영체제로부터 직접적인 지원과 관리를 받음.
장점 스레드 스위칭에서 커널모드 권한이 필요하지 않아서 어느 운영체제에서나 사용 가능.
마찬가지로 커널을 거치지 않기 때문에 빠르게 생성 및 관리 가능.
동일한 프로세스의 여러 스레드를 서로 다른 프로세스에 예약 가능.
프로세스의 한 스레드가 차단되면 커널은 다른 스레드를 자동으로 예약함.
단점 한 유저 스레드가 차단 수행시 전체 프로세스가 차단됨.
운영체제가 자동으로 해주는 일이 아니라서 멀티프로세싱의 이점을 가질 수 없음.
커널 모드로의 전환은 프로세스에서 한 스레드에서 다른 스레드로 제어 전환인 필요함.
유저 스레드에 비해 수백배 느림.

<멀티스레드 모델>

1) 다대일 모델 : 다수의 유저 스레드가 하나의 커널 스레드와 맵핑. 한 번에 하나의 스레드만 커널에 접근할 수 있어서 멀티 스레드는 멀티코어 시스템에서 병렬로 실행할 수 없습니다.

2) 일대일 모델 : 각각의 유저 스레드를 커널 스레드와 맵핑. 더 많은 병렬성을 가지고 있으나, 사용자 수준의 스레드 생성 시에도 커널 스레드를 함께 생성해야 한다는 단점이 있습니다.

 

3) 다대다 모델 : 커널 스레드를 유저 스레드의 수보다 작거나 같게 생성하여 다중 맵핑. 커널 스레드의 수는 응용 프로그램이나 특정 기계로부터 특정되고, 유저 스레드는 개발자가 필요로 하는 만큼의 수를 생성할 수 있습니다. 

 

4) 2단계 모델 : 다대다, 일대일 모델을 합친 모델입니다. 다중 맵핑을 하면서, 한 유저 스레드가 하나의 커널 스레드에만 맵핑되는 것을 허용합니다. 

 

반응형