▪ 프로세스 (Process)
💡 프로세스 (Process) : 운영체제(OS)에서 할당 받은 시스템 자원을 사용한 독립적인 작업
- 시스템 자원
- CPU 시간
- 주소 공간
- Code, Data, Stack, Heap 구조의 메모리 영역
- 각 프로세스는 다른 프로세스의 자원에 간섭이 불가능하다.
- 단, IPC(Inter Proceses Communication)를 통하여 서로 간에 통신 및 접근이 가능하다.
💡 IPC(Inter Proceses Communication) : 프로세스 간 통신 → e.g.) 파이프, 소켓, 파일 ..
▪ 스레드 (Thread)
💡 스레드 (Thread) : 프로세스 내부에서 프로세스 상의 공용의 자원을 사용하는 작업의 흐름
- 프로세스 자원
- Code, Data, Heap - 공용 사용
- Stack - 각각 따로 할당하여 사용
- 프로세스 내 스레드들은 주소 공간과 자원 공유(Code, Data, Heap)가 가능하다.
- 단, 서로 다른 프로세스 간 스레드들은 간섭 및 접근 불가능하다.
▪ 멀티 프로세스 (Multi Process)
- 장점
- 독립적이라 서로에게 영향을 미치지 않는다.
- 단점
- 문맥 교환 (Context Switching)으로 인한 오버헤드가 발생한다.
- 복잡한 IPC 구현을 통해야만 자원 공유 및 접근이 가능하다.
- 프로세스를 여러 개 생성 시 새로 시스템 자원 할당이 오버헤드..
💡 문맥 교환 (Context Switching) :
하나의 프로세스가 CPU를 사용 중일 때 다른 프로세스가 CPU를 사용하기 위해
이전 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 올리는 작업
- Context ?
- 프로세스 정보
- 다음 실행할 명령어
- PID
- 레지스트리
- 등..
▪ 멀티 스레드 (Multi Thread)
- 장점
- 프로세스를 생성할 때 발생하는 시스템 콜이 줄어들어 자원의 효율성 상승
- 자원을 공유하는 간단한 통신 방법으로 프로그램 응답 시간 감소
- Stack 영역만 처리하는 스레드의 Context Switching으로 전환 속도 빠름
- 단점
- 자원을 동기화 함으로써 발생하는 관리 복잡성
- 단일 실패 지점에 대한 위험 발생