Computer Science/OS

[OS] 쓰레드와 멀티쓰레드

내영잉 2023. 1. 5. 14:25

http://www.kocw.net/home/cview.do?lid=29d9a718cff884c3 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

Process2

동기식 입출력과 비동기식 입출력, 프로세스 스케줄링 큐의 모습, Thread

 

http://www.kocw.net/home/cview.do?lid=54e1a4abcd59272d 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

Process 3

Thread, Single and Multithreaded Processes, Benefits of Threads, Implemetation of Threads


쓰레드

  • 프로세스 내에서 실행되는 흐름의 단위
  • 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행 할 수 있다. 이러한 실행 방식을 멀티스레드 라고 한다.
  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
  • 스레드를 사용하면 병렬성을 높일 수 있다

멀티 쓰레드의 장점

  • 응답성
    • 프로세스의 일부가 blocked 상태여도 실행을 하는 것이 가능
    • e.g) multi-threaded Web
  • 자원 공유
    • 스레드들은 프로세스의 리소스들을 공유하므로, 이는 메시지를 전달하거나 메모리를 공유하는 것보다 쉬움
  • 경제성
    • 스레드를 생성하는 것이 프로세스를 생성하는 것보다 비용이 적게 들며, thread switching(스레드 전환)이 context switching보다 오버헤드가 적다.
 오버헤드: 어떤 처리를 하기 위해 들어가는 간적적인 처리시간, 메모리 등을 의미
  • 확장성
    • 프로세스가 멀티 프로세서 구조의 이점을 적극적으로 활용할 수 있다.

 

쓰레드를 구현할 수 있는 방법

  • 커널 스레드
    • 운영체제가 지원하는 스레드 기능으로 구현되며, 커널이 스레드의 생성 및 스케줄링 등을 관리
  • 유저 스레드
    • 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현되며, 라이브러리는 스레드의 생성 및 스케줄링 등에 관한 관리 기능을 제공한다.

 

📝 멀티 프로세스 vs 멀티 쓰레드
멀티프로세스
- 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 1개의 작업을 처리하도록 하는 것
- 특징
       -  1개의 프로세스가 죽어도 자식 프로세스 이외의 다른 프로세스들은 계속 실행된다.
       - context switching을 위한 오버헤드(캐시 초기화, 인터럽트 등)이 발생한다.
       - 프로세스는 각각 독립적인 메모리를 할당받았기 때문에 통신하는 것이 어렵다.

멀티쓰레드
- 하나의 프로그램을 여러 개의 쓰레드로 구성하여 각 쓰레드가 1개의 작업을 처리하도록 하는 것
- 특징
       - 프로세스를 위해 자원을 할당하는 시스켐톨이나 context switching의 오버헤드를 줄일 수 있다.
       - 쓰레드는 메모리를 공유하기 때문에 통신이 쉽고 자원을 효율적으로 사용할 수 있다.
       - 하나의 쓰레드에 문제가 생기면 전체 프로세스가 영향을 받는다.
       - 여러 쓰레드가 하나의 자원에 동시에 접근하는 경우, 자원 공유(동기화)의 문제가 발생할 수 있다.