
- Process (프로세스)
- 정의: 프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립된 메모리 공간을 갖고 실행된다.
- 메모리: 프로세스는 각각 독립적인 주소 공간(코드, 데이터, 힙, 스택)을 갖는다.
- 자원 할당: 프로세스는 운영 체제에 의해 독립적으로 자원을 할당받는다.
- 통신: 프로세스 간의 통신은 IPC(Inter-Process Communication) 메커니즘을 통해 이루어진다. 여기에는 파이프, 소켓, 메시지 큐 등이 포함된다.
- 오버헤드: 프로세스 간의 문맥 전환에는 상대적으로 큰 오버헤드가 발생한다.
- 독립성: 한 프로세스의 문제는 다른 프로세스에 영향을 주지 않는다.
- Thread (스레드)
- 정의: 스레드는 프로세스 내에서 실행되는 작은 실행 단위이다. 여러 스레드는 하나의 프로세스 내에서 병렬적으로 실행될 수 있다.
- 메모리: 같은 프로세스 내의 스레드는 코드, 데이터, 힙을 공유하지만 각자 고유의 스택을 갖는다.
- 자원 공유: 스레드는 같은 프로세스 내에서 자원을 공유하므로 데이터 공유가 쉽고 효율적이다.
- 통신: 스레드는 같은 프로세스 내에서 실행되기 때문에 스레드 간 통신은 공유 메모리를 통해 이루어진다.
- 오버헤드: 스레드 간의 문맥 전환은 프로세스보다 훨씬 적은 오버헤드가 발생한다.
- 문제 발생 시 영향: 한 스레드의 문제는 같은 프로세스 내의 다른 스레드에 영향을 미칠 수 있다.
- 차이점
- 독립성:
- 프로세스: 독립적인 실행 단위이므로 다른 프로세스와 자원을 공유하지 않음
- 스레드: 같은 프로세스 내에서 자원을 공유하여 실행
- 메모리 구조:
- 프로세스: 각 프로세스는 독립된 메모리 공간(주소 공간)을 가짐
- 스레드: 같은 프로세스 내의 스레드는 공유된 메모리 공간을 사용
- 자원 할당:
- 프로세스: 운영 체제에 의해 독립적으로 자원을 할당받음
- 스레드: 같은 프로세스 내에서 자원을 공유
- 오버헤드:
- 프로세스: 프로세스 생성 및 문맥 전환에는 큰 오버헤드가 발생
- 스레드: 스레드 생성 및 문맥 전환은 상대적으로 적은 오버헤드가 발생
- 통신 방식:
- 프로세스: IPC(파이프, 소켓 등)를 통해 통신
- 스레드: 공유 메모리를 통해 직접 통신
- 안전성:
- 프로세스: 하나의 프로세스가 종료되더라도 다른 프로세스에는 영향을 미치지 않음
- 스레드: 하나의 스레드에서 문제가 발생하면, 같은 프로세스 내의 다른 스레드에 영향을 미칠 수 있음
- 요약
- 프로세스는 독립적인 실행 단위로서 강력한 격리와 독립성을 제공한다.
- 스레드는 경량 실행 단위로서 같은 프로세스 내에서 자원을 공유하며 더 효율적인 통신과 실행을 제공한다.
728x90
'앱 개발 > Kotlin_Android' 카테고리의 다른 글
DTO, DTA, Entity (0) | 2024.06.21 |
---|---|
무한 스크롤 기능 구현 (0) | 2024.06.19 |
MVVM 패턴 사용 이유 (0) | 2024.06.11 |
Android 4대 컴포넌트 (0) | 2024.06.07 |
API 사용하여 동영상 가져오기 (0) | 2024.06.05 |