스레드

leekoby·2023년 3월 27일
0

운영체제

목록 보기
3/7
post-thumbnail

🔧변경내용🔨

제목날짜내용
발행일23.03.27

📌들어가기에 앞서

해당 포스트는 스레드에 대해 학습한 내용을 정리하며 기록한 것입니다.




스레드란?

스레드는 명령어가 CPU 를 통해서 수행되는 객체의 단위

하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재

스레드는 같은 프로세스에 있는 자원과 상태를 공유

[그림] 프로세스 내에 스레드가 존재하므로 서로 자원과 상태를 공유할 수 있다.

같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있다.

하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미친다.

예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다.

프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다.




스레드는 왜 필요한가?

하나의 프로세스 안에서 여러 개의 루틴을 동시에 수행해서 수행 능력을 향상하려고 할 때 스레드를 사용

독립적으로 수행해서 처리하려고 할 때 사용

즉 여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위함

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




스레드의 구성요소

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

  • 가상 CPU : 인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드

  • 수행 코드 : Thread Class에 구현되어 있는 run() Method 코드

  • 처리 데이터 : Thread에서 처리하는 데이터




스레드의 특징

프로세스 내에서 실행되는 흐름의 단위

하나의 스레드는 시작해서 종료할 때까지 한번에 하나씩 명령들을 수행

  • 각 스레드마다 call stack이 있다.

    • call stack: 실행 중인 서브루틴을 저장하는 자료 구조
  • 나머지 Code, Data, Heap 영역은 스레드 끼리 공유

  • 반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.

  • 스레드는 다른 스레드와 독립적으로 동작

    • 독립적으로 동작하기 때문에 두 개 이상의 스레드가 동작되는 경우, 두 개 이상의 스레드의 실행 및 종료순서는 예측할 수 없다.



📚 레퍼런스

코드스테이츠 수업자료

0개의 댓글