1. 프로세스 간 통신에서 데이터를 양방향으로 전송 가능하지만 동시 전송은 불가능하고 특정 시점에서 한쪽 방향으로만 전송할 수 있는 통신 방식은 무엇인가?
⇒ 반양방향 통신
프로세스는 서로 데이터를 주고 받으면서 협업하기도 한다.
1.
프로세스 내부 데이터 통신
•
하나의 프로세스 내에 2개 이상의 스레드가 있을 때, 스레드는 전역 변수나 파일을 이용해서 데이터를 주고 받는다
2.
프로세스 간 데이터 통신
•
같은 컴퓨터에 있는 프로세스끼리 공용 파일이나 파이프를 사용하여 통신
3.
네트워크를 이용한데이터 통신
•
여러 컴퓨터가 네트워크로 연결되어 있을 경우 소켓을 이용하여 다른 컴퓨터의 프로세스와 데이터를 주고 받을 수 있다
프로세스간의 통신은 통신 방향에 따라서 분류할 수 있다.
1.
양방향 통신
•
데이터를 동시에 양쪽 방향으로 전송할 수 있다
•
대부분의통신은 양방향 통신
•
소켓
2.
반양방향 통신
•
데이터를 양쪽으로 전송할 수 있지만 동시 전송은 불가능하고 특정 시점에서 한쪽 방향으로만 전송
•
무전기
3.
단방향 통신
•
한쪽 방향으로만 전송
•
전역 변수와 파이프
◦
전역 변수
▪
편지를 한통만 보관할 수 있는 우편함에 두 사람이 동시에 편지를 보내면, 편지 2통 중 하나는 우편함에 보관할 수 없다. 마찬가지로 전역 변수를 한개만 사용하여 데이터를 주고 받으려고 한다면 보내는 데이터나 받는 데이터 중 하나는 지워진다. 즉 전역변수가 1개면 한쪽 방향으로만 통신이 가능하며, 양방향 통신을 구현하려면 전역 변수 2개를 사용해야 한다
◦
파이프
▪
동기화 통신 방식으로 전역 변수와 마찬가지로 단방향 통신이므로 양방향 통신을 하려면 파이프 2개를 사용해야 한다
▪
전역변수는 바쁜 대기를 해야하지만 파이프는 동기화가 된다
상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것을 무엇이라 하는가?
•
바븐 대기 (busy waiting)
◦
언제 데이터를 보낼지 데이터를 받는 쪽에서는 모르므로, 마치 우편함에 편지가 있는지 수시로 열어보는 것처럼 데이터를 받는 쪽에서는 반복적으로 전역 변수의 값을 확인해야 한다. 이렇게 상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것을 바쁜 대기 라고 한다
◦
시스템 차원에서 큰 자원 낭비여서 전역 변수를 사용하는 통신 방식의 가장 큰 문제
◦
바쁜 대기 문제 해결법: 동기화 (Synchronization): 데이터가 도착했음을 알려주는 시스템
프로세스 간 통신에서 대기가 없는 통신과 대기가 있는 통신의 예를 각각 제시하시오
대기가 없는 통신과 대기가 았는 통신의 차이는 바쁜 대기 (busy waiting을 하냐 안 하느냐이다.
대기가 있는 통신은 동기화통신이라고도 하고 데이터가 도착했음을 알려주는 동기화 방식을 지원한다. 데이터를 받는 쪽은 데이터가 도착할 때 까지 자동으로 대기 상태에 머물러 있으면 데이터가 변하는 순간 자동으로 동기화가 풀린다.
•
파이프, 소켓
대기가 없는 통신은 비동기화 통신이라고도 하고 동기화를 지원하지 않는 통신 방식이다. 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터가 도착했는지를 직접 확인해야 한다.
•
전역 변수, 파일
파이프를 이용하여 통신할 때 파이프를 2개 사용하는 이유는 무엇인가?
•
단방향 통신임으로 파이프를 2개 사용해야 한다