스레드

itonse·2023년 12월 27일
0

CS 스터디

목록 보기
18/56


스레드 개념

스레드는 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위이며, 프로세스에 할당된 메모리와 자원을 공유하며 작업을 수행합니다.

프로세스는 운영 체제로부터 CPU 시간과 같은 자원을 할당받는 더 큰 개념이며, 실제로 CPU에서 작업을 수행하는 것은 프로세스 내부의 스레드들입니다. 그래서 프로세스가 CPU 코어에서 실행되기 위해서는 최소한 하나의 스레드가 필요합니다.

스레드 특징

  • 스레는 프로세스 내에서 각각 Stack과 레지스터를 따로 할당받고, Code, Data, Heap 영역은 공유하게 됩니다.
  • 이러한 스레드의 자원 공유로 인해 한 스레드에서 오류가 발생하면 같은 프로세스 내의 다른 스레드들도 영향을 받을 수 있습니다.
  • 하나의 스레드가 프로세스의 자원을 수정하면, 동일 프로세스 내의 다른 스레드들도 변경된 사항을 바로 확인할 수 있습니다.

💡 스레드마다 별도의 Stack을 할당하는 이유

스레드가 독립적인 함수 호출과 실행 흐름을 유지할 수 있게 하기 위함입니다. 이를 통해, 각 스레드는 다른 스레드의 작업에 영향을 받지 않고 독립적으로 실행될 수 있습니다.


자바 스레드

기술면접에서 흔히 물어보는 스레드는 OS의 커널 레벨 스레드이고, 사용자가 쉽게 접할 수 있는 스레드는 유저 레벨 스레드인 자바 스레드 입니다.

자바 스레드는 JVM(Java Virtual Machine)을 통해 실행되며, JVM은 운영체제 상에서 하나의 프로세스로 작동합니다.

이 자바 스레드들은 OS 레벨의 스레드와 1:1로 매핑되어 실제로 실행되며, 이러한 매핑 덕분에 OS 레벨의 스레드를 간편하게 사용할 수 있습니다.



ref.
https://easy-code-yo.tistory.com/36
https://easy-code-yo.tistory.com/28

0개의 댓글