본문 바로가기
이론 공부 내용 정리

[CS스터디] 멀티 스레드

by mazayong 2022. 10. 30.

--목차--

1. Multi Process?

2. Multi Thread?

3. Multi Process vs Multi Thread

--------

 

 

1. Multi Process?

1) 정의 : 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)을 처리하도록 하는 것.

 

2) 장점

 

 - 자식 프로세스 중 하나에 문제가 발생하는 경우, 해당 프로세스만 죽는다. (다른 영향이 확산되지 않음.)

 

3) 단점

 - Context Switching Overhead

  • Context Switching 과정에서 오버헤드 발생. (캐쉬 메모리 초기화 필요. 다시 캐쉬 정보를 불러와야 함.)

 - IPC 통신 기법

  • 프로세스는 독립된 메모리 영역을 할당받아서 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.

4) Context Switching?

4-1) 정의 : CPU에서 여러 프로세스를 돌아가면서 사용해 작업을 처리하는 과정.

        = 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태(Context)를 보관, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태 복구.

 

 

2. Multi Thread

1) 정의 : 하나의 응용 프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것. (ex: 웹 서버)

 

2) 장점

시스템 자원 소모 감소(자원의 효율성 증대)

  • System Call 감소(프로세스를 생성하여 자원을 할당하는 과정 감소)

시스템 처리량 증가(처리 비용 감소)

  • 스레드 사이 작업량이 작아 Context Switching이 빠름. (데이터 주고 받는 것이 간소화 + 자원 소모 감소)

간단한 통신 방법으로 프로그램 응답 시간 단축

  • 스레드는 프로세스 내 Stack 제외 모든 메모리를 공유해 통신의 부담이 적음.

 

3) 단점

  • 설계가 중요.
  • 디버깅 까다로움
  • 단일 프로세스 시스템의 경우 효과를 기대하기 어려움.
  • 다른 프로세스에서 스레드 제어 불가.(프로세스 밖에서 스레드 각각 제어 불가)
  • 자원 공유 문제 발생(동기화)
  • 하나의 스레드 문제 발생시 전체 프로세스가 영향 받음.

 

 

3. Multi Process vs Multi Thread

1) 요약 : 프로그램 여러 개 실행 vs 하나 프로그램 안에서 여러개의 작업

 

2) 이유 (Why Multi Threading?)

자원의 효율성 증대

  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리 가능.
  • (Context Switching이 CPU레지스터 교체를 비롯해 RAM-CPU 사이 캐쉬 메모리 데이터까지 초기화되므로 오버헤드가 크다.)
  • 스레드는 프로세스 내 메모리를 공유해 독립적인 프로세스와 달리 스레드 간 데이터를 주고받는 것이 간단해지고 시스템 자원 소모 감소.

처리 비용 감소 및 응답 시간 단축

  • IPC보다 스레드 간 통신 비용이 적으므로 작업간 통신 부담 감소.

(Thread = Stack 제외 모든 메모리 공유)

  • 프로세스 간 전환 속도 < 스레드 전환 속도(Stack만 처리해서)

 

3) 주의점

동기화 문제

  • 스레드 간 자원 공유는 전역 변수(Data Segment)를 이용하므로 함께 상용할 때 충돌 발생.