프로그램, 프로세스, 스레드
2023. 5. 8. 01:08ㆍWEB개발/TIL
반응형
프로그램 | 프로세스 | 스레드 | |
정의 | 실행 할 수 있는 애플리케이션 파일 | 실행 중인 애플리케이션 파일 | 프로세스에서 실행되는 작업의 단위 |
단위 | 자원 할당 단위 | 작업 할당 단위 |
프로그램
어떤 작업을 위해 운영체제에서 실행할 수 있는 파일
= 컴퓨터가 실행할 수 있는 명령어들의 집합
프로그램은 운영체제에서 실행되며, 사용자가 프로그램을 실행하면 운영체제는 프로그램을 메모리에 로드하고 CPU가 해당 명령어를 처리하여, 프로그램이 동작(=프로세스)함. |
프로세스
운영체제에서 실행 중인 파일
즉, 프로세서(CPU)에 의해 실행되는 프로그램을 뜻함.
# 각 프로세스는 독립된 메모리 영역을 할당받기 때문에, 다른 프로세스의 변수나 자료구조에 직접 접근할 수 없음.
# 프로세스당 기본적으로 최소한 하나 이상의 스레드(메인 스레드)를 가지고 있음.
[ 프로세스 구조 ] Code: 컴파일된 소스코드가 저장되는 영역 Data: 전역 변수, static 변수가 저장되는 영역 Heap: 동적으로 생성된 데이터가 저장되는 영역 Stack: 호출된 함수나 지역 변수가 저장되는 영역 |
스레드
프로그램에서 실행되는 작업의 단위
# 각 스레드는 고유한 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 |