스레드

N·2022년 8월 1일

CS

목록 보기
15/23
  • 명령어가 CPU 를 통해서 수행되는 객체의 단위

  • 하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재하며, 이러한 스레드는 같은 프로세스에 있는 자원과 상태를 공유한다.

  • 같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있다. 또한 하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미친다.
    예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다. 프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다.

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

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

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

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

profile
web

0개의 댓글