프로세스와 쓰레드

NOAH·2021년 1월 25일
0
post-thumbnail

프로세스

실행 중인 프로그램, 자원(resources)과 쓰레드로 구성

쓰레드

프로세스 내에서 실제 작업을 수행
모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.

싱글 쓰레드 = 자원 + 쓰레드

멀티 쓰레드 프로세스 = 자원 + 스레드 + 쓰레드 + 쓰레드

멀티쓰레드

  • CPU의 사용률을 향상
  • 자원을 보다 효율적으로 사용
  • 사용자에 대한 응답성이 향상
  • 작업이 분리되어 코드가 간결해진다.

여러 사용자에게 서비스를 해주는 서버 프로그램의 경우 멀티쓰레드로 작성하는 것은 필수적이어서
하나의 서버 프로세스가 여러 개의 쓰레드를 생성해서 쓰레드오 ㅏ사용자의 요청이 일대일로 처리되도록 프로그래밍해야 한다.

그러나, 여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(Synchromnization), 교착상태(DeadLock)와 같은 문제들을 고려해서 신중히 프로그래밍해야한다.

*교착상태란, 두 쓰레드가 자원을 점유한 상태에서 서로 상대편이 점유한 자원을 사용하려고 기다리느라 진행이 멈춰있는 상태

0개의 댓글