1. 멀티플렉싱이란?

 - 멀티플렉싱이란?
 1) 하나의 전송로를 여러 사용자가 동시에 사용해서 효율성을 극대화 하는 것




2. I/O 멀티플렉싱 기반의 서버

 - I/O 멀티플렉싱이란?
 1) 클라이언트와의 입/출력을 담당하는 프로세스를 하나로 묶어버리는 형식.
 2) 프로세스가 고속의 전송로에 해당한다.





3. 멀티 프로세스 vs 멀티플렉싱

 - 멀티 프로세스 기반의 서버
 1) 클라이언트와 서버간의 송수신 데이터 용량이 큰 경우.
 2) 송수신이 연속적으로 발생 하는 경우에 적합.

 - 멀티플렉싱 기반의 서버
 1) 클라이언트와 서버간의 송수신 데이터 용량이 작은 경우.
 2) 송수신이 연속적이지 않은 경우에 적합.
 3) 멀티 프로세스 기반의 서버에 비해 많은 수의 클라이언트 처리에 적합.

1. 가위 바위 보 게임 구조

 - 파이프 생성.

 - 자식 프로세스 생성.

 - 데이터 입력(가위 바위 보 선택)

 - 파이프 통해 데이터 전송(자식->부모)

 - 승자 확인!

 - 결과 전송(부모->자식)



1. 파이프의 특성

 - 파이프는 fork 함수에 의해서 복사 되지 않는다.
 1) 파이프의 입 출력을 의미하는 파일 디스크립터가 복사 되는 것이다.

 - 파이프는 방향성이 존재하지 않는다.





2. 양방향 통신을 위한 파이프의 생성

 - 하나의 파이프는 하나의 용도로만 사용한다.
 1) A 프로세스에서 B 프로세스로 데이터 전송하기 위한 파이프 하나.
 2) B 프로세스에서 A 프로세스로 데이터 전송하기 위한 파이프 하나.


1. 프로세스간 통신

 - 프로세스간 통신의 정의
 1) 독립된 프로세스 간에 데이터를 주고 받는 행위를 의미함.

 - 프로세스간 통신의 문제점.
 1) 독립된 프로세스는 공유하는 메모리가 존재하지 않기 때문에 메모리를 공유해서 데이터를 주고 받는 것은 불가능!

 - 해결책
 1) 운영체제는 서로 독립된 프로세스들이 데이터를 주고 받을 수 있도록 '파이프'라는 것을 제공한다.

 


2. 파이프의 생성

 - 파이프 생성 함수

#include <unistd.h>

int pipe(int fd[2]);



3. 파이프의 생성과 프로세스간 통신


1. 프로세스 기반 다중 접속 서버의 구현 모델

 - 새로운 연결 요청을 수락 할 때마다 프로세스의 생성.



2. 파일 디스크립터의 복사

 - 하나의 소켓(파일)에 대한 파일 디스크립터가 둘 이상 존재한느 경우, 모든 파일 디스크립터를 종료 해 줘야 해당 소켓(파일)이 종료 된다.



3. TCP 입출력 루틴의 분할.

 - 입력과 출력을 실행하는 루틴을 분리한다.



4. TCP 입출력 루틴의 분할의 이점.

 - 입력과 출력이 독립적이다.




+ Recent posts