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

woonchoi·2022년 2월 28일
0

42Cursus

목록 보기
4/9

Thread (스레드)

  • Light Weight Process 라고 부르기도 한다.
  • 프로세스 끼리는 서로 통신을 위해 IPC (Inter Process Comminucation) 이 필요한데, 스레드는 IPC 없이도 서로 데이터를 주고 받을 수 있다.
  • 프로세스 내부에서 생성하므로, 하나의 프로세스 안에서 생성된 스레드들은 프로세스의 모든 데이터에 접근이 가능하다.

과거에는 단일 코어로 이루어진 CPU에 프로세스들을 아주 짧은 시간동안 번갈아 실행시키는 방식의 Multi Tasking 에 집중했다.

하지만 최근의 CPU들은 대부분 멀티코어를 지원하므로 프로세스를 잘게 쪼개 CPU의 코어들에게 나누어 주는 Multi Processing 에 대한 개념이 등장하게 되었다.

이를 위해 만들어진 것이 바로 스레드이다. 스레드는 프로세스를 잘게 쪼개 병렬적으로 실행시킬 수 있게 만들어준다.

Thread의 장점

  • 사용자에 대한 응답성이 향상된다.
    • 특정 작업 도중에 값을 요청하는 경우 프로세스 두개로 이를 구성하면 IPC 통신을 통해 받아와야 하지만, 스레드로 작업하는 함수와 값을 요청하는 함수를 분리해두면 더 빨리 값을 받아올 수 있다.
  • 자원 공유 효율이 향상된다.
  • 작업이 분리되어 코드가 간결해 질 수 있다.

Thread의 단점

  • 하나의 스레드에서 문제가 발생하면 전체 프로세스가 영향을 받는다.
  • 스레드를 너무 많이 생성하면 Context Switching이 자주 발생하여 성능이 오히려 저하된다.
    • 스레드도 프로세스와 같이 스케쥴링 하는 OS에서 이러한 문제가 발생함.
profile
개발공부

0개의 댓글