스레드(Thread) 란?

Lee Jun Hyeong·2023년 3월 23일

스레드 (Thread) 란?


스레드(Thread)란 프로세스 내에서 실행되는 흐름의 단위를 의미한다.
또는, 프로세스 내부에 있는 CPU 수행 단위라고 할 수 있다.

따라서, 프로세스 내에서 실제로 작업을 실행하는 주체이다. 프로세스에 의해 실행 된다는 것을 알 수 있다.
자바에서는 JVM(Java Virtual Machine)에 의해 관리됩니다.

스레드 (Thread) 특징

  • 각자 자신의 Stack 영역을 보유한다.
  • 프로세스 내에서 Code, Data, Heap 영역을 공유한다.
  • 각각의 스레드는 별도의 레지스터스택을 갖는다.
  • 한 스레드가 프로세스 자원을 변경하면 다른 이웃 스레드(Sibling thread)도 변경된 사항을 확인 할 수 있습니다.
  • 쓰레드를 생성하고 switching 하는 것은 inexpensive(비싸지않은) 하다.

스레드는 프로세스 내에서 각각 Stack만 할당받고 Code, Data, Heap영역은 공유된다.
한 프로세스 내에서 동작되는 여러 실행의 흐름이며, 프로세스내의 주소 공간이나 자원(Heap) 등 스레드끼리 공유하면서 실행이 된다.

스레드(Thread) 장점

  • 프로세스의 자원을 공유하므로 프로세스간의 통신보다 간단하다.
  • 시스템의 자원 소모가 줄어든다.
  • 프로그램의 응답 시간이 줄어든다.
  • 스레드간 전환시간이 짧다.

스레드(Thread) 단점

  • 여러 개의 스레드를 이용하는 프로그램인 경우, 오류가 쉽게 발생할 수 있으니 설계를 잘 해야한다.
  • 단일 프로세스 시스템에서는 효과를 기대하기 어렵다.

참고
https://code-lab1.tistory.com/43
https://velog.io/@zerone015/thread
https://gwanhyeon.github.io/OS-20201116-OS-Process-Thread/
profile
"왜" 사용하며, "어떻게" 사용하는지에 대해

0개의 댓글