운영체제

스레드(Thread)

donggi 2022. 9. 19. 14:40

CPU가 처리하는 작업(Task)이라고 불리며, 실행 중인 프로그램을 프로세스(Process)라고 합니다. 프로세스에서 실행 제어만 분리하여 처리하는 단위를 스레드(Thread)라고 합니다.

 

스레드(Thread)

스레드는 같은 그룹의 스레드와 코드, 메모리 주소 공간, 운영체제 리소스를 공유합니다. 프로세스는 하나 이상의 스레드 가지고, 각 스레드는 다음과 같은 동작을 담당합니다.

 

  • 스레드 실행에 대한 상태 관리
  • 실행을 위한 별도 스택
  • 지연 변수와 스레드 특정 데이터를 저장하는 데이터 저장소
  • 프로세스의 메모리와 자원에 대한 접근을 기록하는 컨텍스트 정보

하나의 프로세스 그룹에 속한 여러 개의 스레드 (이미지 출처 : https://en.wikipedia.org/wiki/Thread_%28computing%29)

특징

  • 스레드를 사용하면 사용자에 대한 응답성을 증가시킬 수 있습니다.
  • 상위 프로세스의 자원과 메모리를 공유할 수 있습니다.
  • 스레드 간 컨텍스트 스위칭은 프로세스 간보다 비용이 적게 듭니다.
  • 다중 프로세서와 다중 스레드를 혼합하여 병렬 실행이 가능합니다.
  • 현대 CPU들은 다중 스레드를 처리하는 하드웨어 로직을 가지고 있습니다.

단점

  • 여러 스레드 중 하나의 스레드에만 문제가 있어도 전체 프로세스에 영향을 줍니다.
  • 자원을 공유하면서 동시성 이슈가 발생합니다.