스레드

Bin2·2022년 8월 1일
0
post-custom-banner

⭐️ 스레드란?

스레드는 명령어가 CPU를 통해서 수행되는 객체의 단위이다.
하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재하며, 이러한 스레드는 같은 프로세스에 있는 자원과 상태를 공유한다.

같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있다.
또한 하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미치게 된다.

예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다. 프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다.

⭐️ 스레드가 필요한 이유

하나의 프로세스 안에서 여러 개의 루틴을 동시에 수행하여서 수행 능력을 향상하려고 할 때 스레드를 사용하게 되는데, 독립적으로 수향하여 처리하려고 할 때 사용하게 된다. 즉 여러 개의 작업 단위로 구성된 프로그램의 요청을 동시에 처리하기 위함이다.

예를 들어, 워드 프로세서에서 사용자로부터 키보드 입력을 받거나, 그래픽이나 UI를 그리는 문법 오류를 체크하는 등 워드 프로세서 내에서 여러 요청들을 동시에 처리해야 하는데, 이때 스레드가 필요하게 된다.

⭐️ 스레드의 구성 요소

스레드는 가상 CPU, 수행 코드, 처리 데이터로 구성된다.

  • 가상 CPU: 인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드이다.
  • 수행 코드: Thread Class에 구현되어 있는 run() Method 코드이다.
  • 처리 데이터: Thread 에서 처리하는 데이터이다.

⭐️ 스레드의 특징

  • 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 스레드는 시작해서 종료할 때까지 한번에 하나씩 명령들을 수행한다.
  • 각 스레드마다 call stack이 존재하며, 나머지 Code, Data, Heap 영역은 스레드 끼리 공유한다. 반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
  • 스레드는 다른 스레드와 독립적으로 동작한다. 독립적으로 동작하기 때문에 두 개 이상의 스레드가 동작되는 경우, 두 개 이상의 스레드의 실행 및 종료순서는 예측할 수 없다.
profile
Developer
post-custom-banner

0개의 댓글