Process vs Thread vs Coroutine

Process vs. Thread vs. Coroutine Process, Thread, Coroutine은 모두 프로그램 실행의 단위이지만, 각각 다른 특성과 용도를 가지고 있다. Process: 독립적인 실행 단위로, 자체 메모리 공간과 시스템 자원을 가진다. 다른 프로세스와 완전히 격리되어 있어 안정성이 높다. 생성과 전환에 많은 비용이 든다. Thread: 프로세스 내부의 실행 단위로, 같은 프로세스의 다른 스레드와 메모리를 공유한다. 프로세스보다 가볍고, 생성과 전환 비용이 적다. 동시성을 제공하지만, 동기화 문제에 주의해야 한다. Coroutine: 경량 스레드라고도 불리며, 스레드 내에서 실행되는 협력적 멀티태스킹 단위. 매우 가볍고, 생성과 전환 비용이 매우 적다. 비동기 프로그래밍을 단순화하고, 동시성을 효율적으로 관리한다. Process, Thread, Coroutine의 관계는 다음과 같이 계층적으로 표현할 수 있다: CPU > Core > Process > Thread > Coroutine ...

October 6, 2024 · 3 min · Me

Process vs Thread

Process vs. Thread 프로세스: 독립적인 실행 단위로, 자체 메모리 공간과 시스템 자원을 가진다. 다른 프로세스와 완전히 격리되어 있어 안정성이 높다. 생성과 전환에 많은 비용이 든다. 스레드: 프로세스 내부의 실행 단위로, 같은 프로세스의 다른 스레드와 메모리를 공유한다. 프로세스보다 가볍고, 생성과 전환 비용이 적다. 동시성을 제공하지만, 동기화 문제에 주의해야 한다. https://www.geeksforgeeks.org/thread-in-operating-system/ Process vs. Thread 특성 Process Thread 정의 실행 중인 프로그램의 인스턴스 프로세스 내에서 실행되는 더 작은 실행 단위 메모리 공간 독립적인 메모리 공간 (코드, 데이터, 스택, 힙) 프로세스의 메모리 공간 공유 (코드, 데이터, 힙), 독립적인 스택 구성 요소 - 코드 영역 - 데이터 영역 - 스택 영역 - 힙 영역 - 스레드 ID - 프로그램 카운터 - 레지스터 집합 - 스택 자원 공유 다른 프로세스와 자원 공유 안 함 같은 프로세스 내 스레드 간 자원 공유 생성 비용 높음 낮음 컨텍스트 스위칭 비용이 큼 비용이 적음 (같은 프로세스 내에서) 안정성 높음 (한 프로세스의 오류가 다른 프로세스에 영향 없음) 상대적으로 낮음 (한 스레드의 오류가 전체 프로세스에 영향) 통신 프로세스 간 통신(IPC) 필요 (복잡하고 오버헤드 큼) 쉽고 빠른 통신 (공유 메모리 사용) 병렬 처리 가능하지만 오버헤드 큼 효율적인 병렬 처리 가능 메모리 구조 비교 메모리 영역 Process Thread 코드 영역 독립적 공유 데이터 영역 독립적 공유 힙 영역 독립적 공유 스택 영역 독립적 각 스레드마다 독립적 특성 상세 비교 특성 Process Thread 독립성 완전히 독립적 부분적으로 독립적 자원 공유 제한적 (IPC 필요) 쉽게 공유 가능 오류 영향 다른 프로세스에 영향 없음 같은 프로세스의 모든 스레드에 영향 동기화 필요성 낮음 - IPC 메커니즘 필요 공유 자원에 대한 동기화 필요 - 뮤텍스, 세마포어 등 사용 생성 시간 더 오래 걸림 더 빠름 종료 시간 더 오래 걸림 더 빠름 장단점 비교 구분 Process Thread 장점 - 높은 안정성 - 다른 프로세스의 영향 받지 않음 - 보안성이 높음 - 생성/종료가 빠름 - 자원 공유가 쉬움 - 통신 비용이 적음 단점 - 많은 시스템 자원 필요 - 프로세스 간 통신이 복잡 - 컨텍스트 스위칭 비용이 큼 - 동기화 문제 발생 가능 - 디버깅이 어려움 - 하나의 스레드 문제가 전체에 영향 사용 사례 비교 용도 Process 선호 Thread 선호 웹 서버 안정성이 중요한 경우 높은 동시성이 필요한 경우 GUI 앱 독립적인 작업이 많은 경우 반응성이 중요한 경우 데이터 처리 대용량 병렬 처리 데이터 공유가 많은 경우 시스템 서비스 격리가 필요한 경우 빈번한 통신이 필요한 경우 활용 예 - 독립적인 애플리케이션 - 웹 브라우저의 각 탭 - 다중 사용자 서버 - 웹 서버 요청 처리 - 게임 엔진 (렌더링, 물리 연산) - 멀티미디어 애플리케이션 동기화 메커니즘 비교 메커니즘 Process Thread 공유 메모리 명시적으로 설정 필요 기본적으로 공유 뮤텍스 프로세스 간 뮤텍스 필요 프로세스 내 뮤텍스 사용 세마포어 시스템 세마포어 필요 프로세스 내 세마포어 사용 메시지 전달 IPC 메커니즘 사용 직접 메모리 접근 이러한 차이점들을 이해하고 적절히 활용하면, 상황에 맞는 최적의 실행 단위를 선택할 수 있다. ...

October 5, 2024 · 3 min · Me