Thread & Process

김형준 Kim Hyeong Jun·2023년 2월 28일
0

프로세스(Process)

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)
  • 운영체제로부터 시스템 자원을 할당받는 작업 단위
  • 동적인 개념으로는 실행된 프로그램을 의미

특징

  • 프로세스는 각각 독립된 메모리 영역을 할당받는다.(code, data, stack, heap의 구조)
  • 기본적으로 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다.
  • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신을 사용해야 한다.

    프로세스 간 통신(inter process communication, IPC)
    프로세스 간 통신이 가능하다는 것은 프로세스들이 데이터를 주고 받을 수 있다는 것이다.

  1. 공유 메모리(Shared Memory)
  2. 파이프(Pipe)
  3. 소켓(Socket)
  4. 메시지 큐(Message Queue)
  5. 메모리 맵(Memory Map)
  6. RPC(Remote Procedure Call)

스레드(Thread)

  • 프로세스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당받은 자원을 이용하는 실행의 단위

특징

  • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.
  • 스레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에서 스레드끼리 공유하며 실행된다.
  • 스레드는 각각 별도의 스택과 레지스터를 가지고 있다.
  • 한 스레드가 프로세스의 자원을 변경하면, 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.

자바 스레드(Java Thread)

  • JVM가 운영체제 역할을 대신한다는 것을 제외하면 일반 스레드와 거의 차이가 없다.
  • 자바에는 프로세스가 존재하지 않고 스레드만 존재하며, 자바 스레드는 JVM에 의해 스케줄되는 실행 단위 코드 블록이다.
  • 자바에서 스레드 스케줄링은 전적으로 JVM에 의해 이루어진다.

요약

프로세스는 독립적인 메모리 영역을 가지는 프로그램의 인스턴스라고 할 수 있다.
스레드는 프로세스 내에서 프로세스의 자원을 공유하며 독립적인 플로우를 가지는 실행의 단위라고 할 수 있다.
프로세스는 하나의 스레드를 가질 수도, 여러 개의 스레드를 가질 수도 있다.(싱글 스레드, 멀티스레드)


Reference

[OS] 프로세스와 스레드의 차이
[OS]프로세스 간 통신(inter process communication, IPC

profile
I want be a developer🙂

0개의 댓글