프로그램, 프로세스, 스레드

2023. 5. 8. 01:08WEB개발/TIL

반응형
  프로그램 프로세스 스레드
정의 실행 할 수 있는 애플리케이션 파일 실행 중인 애플리케이션 파일 프로세스에서 실행되는 작업의 단위
단위   자원 할당 단위 작업 할당 단위

프로그램

어떤 작업을 위해 운영체제에서 실행할 수 있는 파일

= 컴퓨터가 실행할 수 있는 명령어들의 집합

프로그램은 운영체제에서 실행되며, 사용자가 프로그램을 실행하면 운영체제는 프로그램을 메모리에 로드하고 CPU가 해당 명령어를 처리하여, 프로그램이 동작(=프로세스)함.

 

프로세스

프로세스 이미지

운영체제에서 실행 중인 파일

즉, 프로세서(CPU)에 의해 실행되는 프로그램을 뜻함.

# 각 프로세스는 독립된 메모리 영역을 할당받기 때문에, 다른 프로세스의 변수나 자료구조에 직접 접근할 수 없음.

# 프로세스당 기본적으로 최소한 하나 이상의 스레드(메인 스레드)를 가지고 있음.

[ 프로세스 구조 ]
Code: 컴파일된 소스코드가 저장되는 영역
Data: 전역 변수, static 변수가 저장되는 영역
Heap: 동적으로 생성된 데이터가 저장되는 영역
Stack: 호출된 함수나 지역 변수가 저장되는 영역

 

 

 

 

스레드

프로그램에서 실행되는 작업의 단위

Thread

# 각 스레드는 고유한 Stack을 할당받고, 다른 스레드와 Code, Data, Heap 등의 자원을 공유함.

# 만약, 한 스레드가 자원을 변경한 경우 다른 스레드에서 변경된 결과를 확인할 수 있음(병렬 처리)

 

 

 


  단일 프로세스 멀티 프로세스 단일 스레드 멀티 스레드
정의 하나의 프로그램이 하나의 프로세스로 실행되는 것 두 개 이상의 프로세스가 병렬로 작업을 수행하는 것 하나의 프로세스에서 하나의 스레드가 실행되는 것 하나의 프로세스에서 두 개 이상의 스레드가 동시에 실행되는 것

멀티 프로세스

두 개 이상의 프로세스 병렬로 작업을 수행하는 것

ex) 두 개의 크롬 브라우저 실행 시, 두 개의 프로세스 생성

# 각 프로세스가 독립적으로 실행됨

# Context Switching을 통해 동시에 여러 프로세스가 실행되는 것처럼 보이게 함(동시성)

장점 단점
안정성 및 보안성이 높음 프로세스 간의 데이터 공유나 통신을 위해 IPC 기법을 사용해야 하는 등 추가적인 작업 필요

# IPC(Inter-Process Communication)

프로세스 간의 통신을 위한 기술

종류로는 파이프, 소켓, 공유 메모리, 메시지 큐 등이 있음.

 

멀티 스레드

하나의 프로세스에서 두 개 이상의 스레드동시에 실행되는 것

# 하나의 프로세스에서 여러 스레드가 자원(Code, Data, Heap)을 공유하며 작업을 나누어 수행

장점 단점
IPC없이 프로세스 간의 통신 가능 여러 스레드가 동시에 같은 데이터에 접근할 경우, 충돌이 발생하기 때문에 적절한 동기화(synchronization) 처리 필요
시스템 처리 성능 향상(여러 작업 병렬 처리가 가능하기 때문) 한 스레드가 예외를 발생시키면 전체 프로세스가 영향을 받을 수 있음.

 

멀티 프로세스와 멀티 스레드

 

반응형

'WEB개발 > TIL' 카테고리의 다른 글

CORS  (0) 2023.06.27
Context Switching과 PCB/TCB  (0) 2023.05.08
NestJS 애플리케이션 Docker로 배포하기  (0) 2023.05.01
ORM - JPA  (0) 2023.03.27
Lombok  (0) 2023.03.24