[운영체제] Multi Thread(멀티 스레드)

김성록·2023년 3월 6일
0

운영체제

목록 보기
5/14

Multi Thread에 대해 설명해보세요.


Multi Thread(멀티 스레드)란?

  • 한 프로세스가 하나의 스레드를 이용하여 한 번에 한 작업만 수행하는 것을 싱글 스레드라고 하며, 한 프로세스가 여러 스레드로 구성되어 분산 처리를 통해 각 스레드로 하여금 하나의 작업을 수행하는 것을 멀티 스레드라고 한다.

멀티 스레드의 장점

- 응답성
: 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 수행하더라도 다른 스레드를 통해 프로그램이 계속 수행되어 사용자에 대한 응답성이 증가한다.

- 자원 공유
: 자신이 속한 프로세스 내의 다른 스레드들과 메모리나 자원을 공유하여 효율적으로 사용할 수 있다. 스레드 간의 통신도 프로세스 간의 통신과 달리 부담이 적고 빠르다.

- 경제성
: 프로세스를 새로 생성하는 비용보다 스레드를 새로 생성하는 게 비용이 적게 든다. 스레드 간의 context switching은 Stack 영역만 처리하기 때문에 캐시 메모리를 비울 필요가 없어 프로세스의 context switching보다 더 빠르다.

- 확장성
: 다중 CPU 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있으므로 시스템 처리량이 증가하고 효율적이다.


멀티 스레드의 단점

  • 프로세스 내의 스레드 하나가 오류로 종료되면 전체 프로세스에 문제를 일으킨다.

  • 둘 이상의 스레드가 동시에 실행하면 문제가 되는 코드 블록을 Critical Section이라고 한다. 공유 자원에 동시 접근하는 경우 스레드는 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하여 수정할 수 있다. 이러한 충돌(동기화 문제)이 발생할 수 있으므로 신경써야 한다.

    • 한 번에 한 스레드만 공유 자원에 접근하도록 만들어 동기화 문제를 해결할 수 있다.
  • 동기화를 통해 스레드의 작업 처리 순서와 공유 자원에 대한 접근을 컨트롤할 수 있지만, 불필요한 부분까지 동기화할 경우 성능이 저하될 수 있다.

  • 하나의 스레드만 실행중일 경우, 동기화 등의 이유로 단일 스레드보다 스레드 생성 시간이 느릴 수 있다.


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

  • 동시에 여러 작업을 수행하는 공통점이 있지만, 각각의 장단점이 있다.

  • 멀티 프로세스는 하나의 프로세스에 오류가 생기더라도 다른 프로세스에 영향을 주지 않아서 안정성이 높지만, 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지한다.

  • 멀티 스레드는 멀티 프로세스보다 작은 메모리 공간을 사용하고, Context Switching이 빠르지만 동기화 문제 가능성이 있고, 하나의 스레드 문제가 전체 스레드에 문제를 줄 수 있다.

  • 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

  • 프로세스 간의 통신보다 스레드 간의 통신 비용이 적어 작업들 간의 통신 부담이 줄어든다.


결론

profile
예비 개발자

0개의 댓글