[OS] 운영체제(3장) 프로세스 - 3
5. IPC 시스템 사례 - UNIX의 공유 메모리 함수
Shared memory IPC
공유 메모리 세그먼트 생성, id 반환
segment id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR);
id가 지정하는 공유 메모리를 프로세스에 연결(attach)
shared_memory = (char *) shmat(id, NULL, 0);
공유 메모리 세그먼트에 읽고 쓰기(배열 read/write와 동일)
sprintf(shared_memory, "Writing to shared memory");
공유 메모리를 프로세스에서 제거(detach)
shmdt(shared_memory);
Windows의 IPC - Local Procedure Calls
message passing - port(메일박스와 같음)를 경유
- Advanced Local Procedure Call(ALPC) 이용
6. 클라이언트-서버 시스템에서의 통신
Sockets
A socket
- 응용 프로그램 간에 통신이 연결되는 종단점
-
IP주소와 포트번호에 의해서 식별됨
- IP 주소는 시스템을 가리킴
- 포트 번호는 해당 시스템의 프로세스와 연결됨
Remote Procedure Calls(RPC)
네트워크에 연결되어 있는 시스템의 프로세스들 간에 procedure calls을 추상화한 것으로 IPC기반으로 구현됨
stub
서버의 프로시저에 대한 원격 호출을 대행해주는 프로시저
-
The client-side stub - 원격서버의 포트를 찾고, 매개변수를 중립적 표현 방식으로 정돈
-
The server-side stub - 메시지 수신, 정돈된 메시지 해제, 서버에서 요청한 프로시저 호출하여 수행하여 결과 전송
Pips
두개의 프로세스가 서로 통신이 가능하도록 전달자 역할 수행
고려사항
- 통신 방향 : 단방향 or 양방향
- 양방향 통신의 경우 : 반이중 or 전이중
- 통신하는 두 프로세스 간에 특별한 관계(예: 부모-자식)필요 여부
- 네트워크 통신 가능 여부
일반 파이프(ordinary pipe)
- 생성한 프로세스만 접근 가능
- 부모 프로세스가 파이프를 생성하고, 자식 프로세스를 생성하여 파이프를 사용하여 자식 프로세스와 통신
지명 파이프(named pipe)
- 파이프 특성을 가지며, 보통의 파일처럼 존재
- 지명 파이프를 사용하는 프로세스들은 부모-자식 관계가 필요하지 않음
일반 Pipes(Windows의 anonymous pipe)
생산자-소비자 형태로 두 프로세스 간의 통신을 허용
- Producer는 한쪽 끝으로 쓰기를 함
- Consumer는 다른쪽 끝에서 일기를 함
일반 pipe는 단방향 통신만 가능 통신하는 두 프로세스는 부모-자식 관계가 필요함
지명 Pipes
- 일반 pipe보다 강력한 기능 제공
- 지명 pipe는 양방향 통신 가능
- 부모-자식 관계가 필요 없음
- 여러 프로세스들이 지명 pipe를 사용하여 통신 가능
- UNIX에서는 FIFO 특수 파일로 나타남
- Windows는 full-duplex 양방향 전송 가능
댓글남기기