스레드(Thread) 알아보기

쓰리원·2022년 5월 24일
0

Thread

목록 보기
1/3
post-thumbnail

1. 프로그램과 프로세스

프로그램은 일반적으로 하드 디스크 등에 저장되어 있는 실행코드를 뜻하고, 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다. 예를 들어, 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다.

위키 백과에서는 위와 같이 정의되어 있습니다. 아래에서 조금 더 자세히 알아보겠습니다.

2. 프로세스(process)란

위의 글을 쉽게 설명하면, 프로세스란 실행 중인 프로그램(program) 입니다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 됩니다.

그리고 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드 입니다.

  • 프로세스 = 프로그램 + 프로세스제어블록
  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.

3. 스레드(Thread)란

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

4. 자바 스레드(Java Thread) 란?

일반 스레드와 거의 차이가 없으며, JVM가 운영체제의 역할을 합니다. 자바에는 프로세스가 존재하지 않고 스레드만 존재하며, 자바 스레드는 JVM에 의해 스케줄되는 실행 단위 코드 블록입니다.

5. reference

https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
https://lalwr.blogspot.com/2016/02/process-thread.html
https://devlog-wjdrbs96.tistory.com/145

profile
가장 아름다운 정답은 서로의 협업안에 있다.

0개의 댓글