Java

:프로세스와 스레드

prodonghwa 2024. 8. 1. 22:19

이미지 출처:https://medium.com/@wassimdhokkar/difference-between-process-and-thread-90f6c5a5919b

 

프로세스(process)

운영체제로부터 자원을 할당받은 작업의 단위이다. 기본적으로 프로세스당 최소1개의 스레드(메인스레드)를 가지고 있다.

 

주요 특징

  • 독립된 메모리 공간: 각 프로세스는 고유한 주소 공간을 가지고 있어 다른 프로세스와 메모리 공간을 공유하지 않음
  • 자원 소유: 프로세스는 CPU시간, 메모리, 파일핸들 등과 같은 자원을 소유한다
  • 고립성: 한 프로세스의 실패는 다른 프로세스에 영향을 미치지 않는다.
  • 운영체제의 관리: 운영체제는 프로세스의 생성, 실행, 대기, 종료 등을 관리한다.

 

스레드(Thread)

스레드는 프로세스 내에서 실행되는 더 작은 실행 단위.한 프로세스는 여러 스레드를 가질 수 있으며, 이 스레드들은

프로세스의 자원을 공유한다.

 

주요 특징

  • 공유 메모리 공간: 동일한 프로세스 내의 스레드들은 메모리 공간을 공유한다. 이를 통하여 스레드 간의 데이터 공유가빠르고 효율적
  • 독립된 실행 흐름: 각 스레드는 독립적으로 실행흐름을 가지고 있다. 한 스레드가 차단되거나 대기 상태에 있어도 다른스레드는 계속 실행될 수 있다.
  • 경량성: 스레드는 프로세스 보다 생성과 종료에 필요한 자원이 적다.
  • 동기화 문제: 여러 스레드가 동일한 자원에 접근할 수 있으므로 동기화 문제가 발생할 수 있다. 이를 해결하기 위하여뮤텍스, 세마포어 같은 동기화 기법이 사용된다.

 

특징

특징 프로세스 스레드
메모리 공간 독립석인 주소 공간 같은 프로세스 내에서 메모리 공간을 공유
실행단위 독립적인 실행단위 프로세스 내의 독립적인 실행단위
자원 소유 CPU시간, 메모리 등 고유 자원 소유 프로세스의 자원을 공유
생성 및 종료 비용 상대적으로 큼 상대적으로 작음
상호통신 ICP(Inter-Process Communication)필요 메모리 공유를 통해 빠르게 통신가능
독립성 한 프로세스의 실패가 다른 프로세스에 영향없음 한 스레드의 실패가 프로세스의 다른 스레드에 영향

 

멀티프로세스(Multiprocessing)

멀티프로세싱은 여러개의 프로세스를 사용하여 동시에 여러 작업을 수행하는 방식.

 

특징

  • 독립된 메모리 공간: 각 프로세스는 독립된 메모리 공간을 가지며, 다른 프로세스와 메모리 공유하지 않음
  • 높은 안정성: 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않는다.

장점

  • 안정성: 프로세스 간의 독립성으로 인해 한 프로세스의 오류가 전체 시스템에 영향을 미치지 않는다.
  • 간단한 디버깅: 프로세스가 독립적이므로 디버깅이 비교적 간단하다.

단점

  • 높은 오버헤드: 프로세스 간의 전환이 느리고 더 많은 메모리와 시스템 자원을 소비한다.
  • 복잡한 통신: 프로세스 간 통신이 복잡하고 이를 위해 IPC메커니즘이 필요하다

 

멀티스레드(Multithreading)

멀티스레딩은 하나의 프로세스 내에서 여러 스레드를 사용하여 동시에 여러 작업을 수행하는 방식

 

특징 

  • 공유 메모리: 같은 프로세스 내에서 실행되는 여러 스레드는 메모리와 자원을 공유
  • 효율적인 자원사용: 메모리 및 시스템 자원을 효율적으로 사용한다.

장점

  • 높은 성능: 스레드 간의 통신이 빠르고 효율적이다.
  • 낮은 오버헤드: 스레드 간 전환이 빠르고 자원소모가 적다.
  • 자원 공유: 데이터 공유가 쉽고 효율적이다.

단점

  • 동기화 문제: 자원 공유로 인한 동기화 문제가 발생할 수 있으며, 이를 해결하기 위하여 추가적인 동기화 기법이 필요
  • 안정성: 하나의 스레드 오규가 전체 프로세스에 영향을 미칠 수 있다.

 

 

[결과]

프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이다. 각 프로세스는 고유한 메모리 공간과 자원을 가지고 있다.

스레드는 프로세스 내에서 실행되는 더 작은 단위이다 같은 프로세스 내의 다른 스레드와 메모리 공간을 공유한다.

 

 

[느낀 점]

프로그램은 명령어들의 집합이고 프로세스는 실행 중인 프로그램이다. 프로그램이 메모리에 올라가고 CPU 자원을 할당받은 상태

 

참조사이트

https://velog.io/@hyojhand/OS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-vs-%EC%8A%A4%EB%A0%88%EB%93%9C

 

[OS] 프로세스 vs 스레드 (Process vs Thread)

프로세스는 각각 독립된 메모리영역 (Code, Data, Stack, Heap 의 구조)을 할당 받는다. 기본적으로 프로세스당 최소 1개의 스레드( 메인 스레드)를 가지고 있다.

velog.io

https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

 

Process와 Thread 이야기

프로세스(Process)

charlezz.medium.com