CS/Operating System

[OS] Multithread

최블랙 2021. 9. 20. 19:02

이 포스팅은 세미나를 위해 https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS를 참고하여 작성하였습니다.

 

출처: https://developerhenrycho.tistory.com/17

멀티스레딩 (Multithreading)

하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것

 

멀티스레딩의 장점

  • 자원 공유 (Resource sharing)
    • 멀티프로세스로 구현하는 것에 비해 멀티스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어든다.
      → 스레드는 프로세스의 코드, 데이터, 힙 영역을 공유하기 때문
    • 프로세스 간의 통신 (IPC)에 비해 스레드 간의 통신이 훨씬 간단하다.
      → 데이터, 힙 영역을 이용하여 데이터를 통신할 수 있기 때문
  • 가벼움 (Light weight)
 

Thread Context Switching vs Process Context Switching

이전 글에서 thread와 Process의 차이에 대해 공부했습니다. 이전 글에서 Thread Context Switching과 Process Context Switching는 속도에서 차이가 난다고 말씀 드렸습니다. 근데 왜 속도에서 차이가 날까 궁금..

hoony-gunputer.tistory.com

 

→ 따라서 시스템의 throughput이 향상되고 자원 소모가 줄어들며 프로그램의 응답 시간이 단축된다.

 

멀티스레딩의 문제점

  • 멀티스레딩 기반으로 프로그래밍할 경우 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 잘못된 값을 읽어오거나 수정할 수 있다.
  • 이러한 문제를 해결하기 위해 동기화 작업이 필요함
    → 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 제한하는 것
  • 하지만 동기화 작업으로 인해 병목현상 (Deadlock)이 발생하여 성능이 저하될 가능성이 있음.
    → 과도한 락으로 인한 병목현상을 줄여야 함.

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

  • 멀티프로세스 장점: 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행할 수 있음
  • 멀티프로세스 단점: 멀티스레드보다 많은 메모리 공간을 차지하고 context switching 느림
  • 멀티스레드 장점: 멀티프로세스보다 적은 메모리 공간을 차지하고 context switching이 빠름
  • 멀티스레드 단점: 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음, 동기화 문제

→ 시스템의 특징에 따라 적합한 동작 방식을 선택해야 함