Whaeun Story

멀티 스레드와 멀티 프로세스 본문

공부/CS 스터디

멀티 스레드와 멀티 프로세스

whaeun 2022. 10. 31. 18:27

1. 멀티 스레딩

멀티 스레딩은 운영체제가 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 말한다.

 

1.1 스레드가 포함하고 있는 내용

  • 스레드 수행 상태 (수행, 준비 등)
  • 수행 중이 아닐 때 저장되어 있는 스레드 문맥
  • 수행 스택
  • 지역 변수 저장을 위해 각 스레드가 사용하는 정적 저장소
  • 프로세스의 메모리 및 자원에 대한 접근으로, 메모리 및 자원은 프로세스 내의 모든 스레드에 의해 공유됨

 

1.2 멀티 스레딩의 장점

  • 시스템의 자원 소모가 감소하여 자원의 효율성이 늘어나고 시스템의 처리율이 행상되며 처리 비용이 감소한다.
  • 스레드 간 작업량이 적어 캐시 메모리를 비울 필요가 없으며 문맥 교환이 빠르다.
  • 프로세스 내 스택 영역을 제외한 메모리 영역을 공유하고 있어 통신하는데 드는 비용이 적다.

 

1.3 멀티 스레딩의 단점

한 프로세스 내의 모든 스레드들은 동일 주소 공간 및 전역 변수, 파일, 힙 영역과 같은 자원들을 공유한다. 따라서 공유 자원에 대해서 동시 접근을 하게 될 경우, 병목현상, 데드락과 같은 동기화 문제가 발생할 수 있다.

  • 한 공유 변수에 대해 읽기 연산은 동시 접근이 가능하나, 쓰기 연산은 한 순간에 하나만 가능하다. 쓰기 연산 중인 값을 읽어들이려 할 경우, 잘못된 값을 얻어 올 수 있다.

 

2. 멀티 프로세싱

두 개 이상의 프로세스가 협력하여 하나 이상의 작업을 동시에 처리하는 것을 의미한다.

 

2.1 멀티 프로세싱의 장점

  • 독립된 구조로 이루어져 있어 안전성이 높다.
  • 프로세스 중 하나에 문제가 생기더라도 다른 프로세스에 영향을 주지 않기 때문에 작업이 중지되지 않는다.

 

2.2 멀티 프로세싱의 단점

  • 독립된 메모리 영역이기 때문에 작업량이 많을 경우, 오버헤드가 발생해 성능저하가 생길 수 있다.
  • 문맥 교환 과정에서 캐시 메모리 초기화와 같은 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.

 

3. 멀티 스레드와 멀티 프로세스

  • 멀티스레드는 멀티 프로세스보다 작은 메모리 공간을 차지하고 문맥 교환이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료될 수 있다는 위험을 가지고 있다.
  • 멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안전성이 높지만, 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지한다.

 

📚 참고 자료 📚

'공부 > CS 스터디' 카테고리의 다른 글

CPU 스케줄러  (0) 2022.11.04
스케줄러  (0) 2022.11.04
웹 통신의 큰 흐름  (4) 2022.10.31
DNS Round Robin  (0) 2022.10.31
프로세스와 스레드  (0) 2022.10.30