프로세스 : 운영체제로부터 자원을 할당 받는 독립적인 주소를 가진 작업
쓰레드 : 프로세스 내에서 자원을 공유하는 프로세스의 실질적인 실행 단위
프로세스 간 통신의 종류
종류 | 방향 | 동기 | 특징 |
---|---|---|---|
공유 메모리 | 단방향 | X | 상대방이 데이터를 언제 보낼지 알 수 없다. |
→ 바쁜 대기(busy waiting) 문제 : 시스템 자원의 낭비 |
반복문을 무한 실행하며, 상대방에 상태변화를 확인한다.
→ 바쁜 대기 해결 : 동기화(synchronization) 데이터가 도착해주었음을 알려주어 해결한다(메세지 알림) | | 공유 파일 | 단방향 | X | 파일을 읽고 쓰는 것으로 통신 | | 파이프 | 단방향 | O | OS에서 제공하는 것으로 fork 부모-자식 통신에 사용 | | 소켓 | 양방향 | O | 노드-노드 네트워크 통신
데이터를 주고 받을 때에는
대기가 있는 통신(blocking communication) : = 동기화 통신
: 동기화를 지원하는 방식으로, 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있다.
대기가 없는 통신(non-blocking communication) : = 비동기화 통신
: 동기화를 지원하지 않는 방식으로, 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터의 도착여부를 직접 확인한다.