프로세스(Process)와 스레드(Thread)는 운영체제에서 프로그램의 실행 단위를 의미합니다. 이 둘은 컴퓨터 프로그램의 실행 방식을 다르게 정의하며, 각각의 특징과 사용 목적이 다릅니다.
프로세스 (Process)
1. 정의:
- 프로세스는 실행 중인 프로그램의 인스턴스입니다. 프로그램이 실행되면 운영체제로부터 메모리와 자원을 할당받아 독립된 실행 환경을 갖게 됩니다.
2. 특징
- 독립적 메모리 공간: 각 프로세스는 독립된 주소 공간을 갖고, 다른 프로세스와 메모리를 공유하지 않습니다.
- 자원 소유: 프로세스는 자신의 코드, 데이터, 파일 핸들, 프로세스 제어 블록(PCB) 등을 포함하는 자원을 소유합니다.
- 안정성: 한 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않습니다.
- 컨텍스트 스위칭 비용: 프로세스 간 전환은 문맥 교환(Context Switching)이 필요하며, 이는 비교적 비용이 많이 듭니다.
3.사용 예:
- 독립된 응용 프로그램 실행, 예를 들어 웹 브라우저, 텍스트 에디터 등.
스레드 (Thread)
1.정의:
- 스레드는 프로세스 내에서 실행되는 단위입니다. 스레드는 동일한 프로세스 내에서 실행되며, 프로세스의 자원을 공유합니다.
2.특징:
- 공유 메모리 공간: 같은 프로세스 내의 스레드들은 메모리 공간과 자원을 공유합니다. 이는 효율적인 자원 사용을 가능하게 합니다.
- 경량성: 스레드는 프로세스보다 생성과 종료, 전환에 드는 비용이 적습니다.
- 협력적 실행: 동일한 프로세스 내의 스레드들은 협력적으로 작업을 수행할 수 있습니다.
- 동기화 문제: 자원을 공유하기 때문에 동기화 문제(경쟁 상태, 데드락 등)가 발생할 수 있습니다.
3.사용 예:
- 하나의 응용 프로그램에서 여러 작업을 동시에 처리할 때, 예를 들어 웹 서버에서 다수의 클라이언트 요청 처리, GUI 응용 프로그램에서 사용자 입력 처리와 백그라운드 작업 병행 수행 등.
차이점 요약
특징
|
프로세스
|
스레드
|
기본 단위
|
실행 중인 프로그램 인스턴스
|
프로세스 내의 작업 단위
|
메모리
|
독립된 주소 공간
|
프로세스 내에서 메모리와 자원을 공유
|
생성 비용
|
높음 (컨텍스트 스위칭 비용도 높음)
|
낮음 (빠른 생성 및 컨텍스트 스위칭)
|
안전성
|
한 프로세스의 문제는 다른 프로세스에 영향을 주지 않음
|
한 스레드의 문제는 같은 프로세스 내 다른 스레드에 영향을 줄 수 있음
|
통신 방법
|
프로세스 간 통신(IPC)을 통해야 함
|
공유 메모리를 통해 통신 가능
|
사용 예
|
독립된 응용 프로그램 실행
|
응용 프로그램 내에서 병렬 작업 수행
|
'IT > Java' 카테고리의 다른 글
MVC 패턴과 모델1, 모델2의 차이 (1) | 2024.09.18 |
---|---|
[Thymeleaf] 공통 html 파일 분리하기 (header, footer) (0) | 2024.06.17 |
총알 피하기 게임 (3) | 2024.06.02 |
[JAVA] session 세션 유효시간 설정 (0) | 2024.05.22 |
[JAVA] 시간 지연하는 방법 (0) | 2024.05.13 |