운영체제

[운영체제] Thread(3) - Multi Thread

재담 2022. 3. 12. 00:21

Multi Thread

멀티 스레드하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상하는 것을 의미한다. 쉽게 말해 하나의 프로그램에 동시에 여러 개의 일을 수행할 수 있도록 해주는 것이다.

 

Multi Thread와 Multi Process

멀티 스레드는 데이터, 힙, 스택 영역 중 스택 영역만 비공유이고, 멀티 프로세스는 세 영역 모두 비공유이다.

 

Multi Thread의 장점

멀티 스레드의 장점은 다음과 같다.

  • 멀티 프로세스에 비해 메모리 공간과 시스템 자원 소모가 줄어들게 된다.
  • 스레드 간 통신이 필요한 경우에 별도의 자원이 필요한 게 아니라 데이터 영역이나 힙 영역을 이용하여 통신할 수 있기 때문에 프로세스 간 통신 방법에 비해 훨씬 간단하다.
  • 스레드 콘텍스트 스위칭은 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다.
  • 스레드 콘텍스트 스위칭 시 데이터 영역과 힙 영역은 올리고 내릴 필요가 없다.
  • 시스템 처리량이 향상되고 자원 소모가 줄어들어 프로그램의 응답 시간이 단축된다.

 

출처 : https://goodgid.github.io/What-is-Multi-Thread/

 

Multi Thread의 단점

멀티 스레드의 단점은 다음과 같다.

  • 서로 다른 스레드가 데이터 영역과 힙 영역을 공유하기 때문에 다른 스레드에서 사용 중인 변수에 접근하여 충돌이 발생할 수 있다.
  • 동기화 작업이 필요하고 디버깅이 까다롭다.
  • 동기화로 인해 병목 현상이 발생하여 성능이 저하될 수 있다.
  • 불필요한 부분까지 동기화를 할 경우 전체 성능에 영향을 미치기 때문에 주의 깊은 설계가 필요하다.
  • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

Reference