시스템프로그래밍 3

[시스템프로그래밍] IPC. Shared Memory and Message Queueing

* Shared Memory - IPC가 메모리를 공유하여 읽고 쓰는 과정으로 이뤄진다. - IPC 기법중에서 가장 빠른 속도를 가진다. - 공유되는 메모리에 대한 접근 제어 및 동기화 기법이 필요하다. > 같은 메모리에 동시에 프로세스가 접근하여 작업하면, 원하지 않는 결과가 도출 될 수 있다. > 접근 제어 및 동기화를 위해서 세마포어를 사용한다. - malloc으로 동적할당을 하듯이 움직인다. ※ malloc : malloc을 선언할 때 Id값을 받고, 이 공간에 대한 사용이 시작될 때 메모리가 할당된다. 요청한 공간에 대해 사용이 없다면 메모리 할당은 이뤄지지 않는다. - int shmget(key_t key, int size, int flag) > 공유하는 메모리 공간을 요청하는 것으로 메모리에..

[시스템프로그래밍] IPC(Inter Process Communication) Part 2 Socket, Semaphores

* Socket - 서로 다른 System에 속한 프로세스간의 통신을 위해서 탄생하였다. - Socket은 프로세스간의 통신을 위환 출입구 역할을 한다. - Pipe, FIFO와 같은 형식으로 파일 디스크립터를 이용하여 접근을 한다. - Socket은 생성과 동시에 필요하다면, Socket에 이름을 붙여서 관리한다. - Socket의 종류에는 Virtual circuit과 Data-gram방식이 존재한다. * Socket - ⓐ Virtual circuit - stream socket - 네트워크의 Circuit switch방식을 생각하면 된다. - 통신 대상은 서로를 연결하는 네트워크를 연결하고, 그 라인을 점유한다. - 송수신이 끝날때까지 이 라인은 유지되며, 송수신이 끝나면 라인은 회수된다. - 대..

[시스템프로그래밍] IPC(Inter Process Communication) Part 1 Pipe & FIFO

* IPC(Inter Process Communication) - 프로세스들끼리 데이터를 주고 받는 기능을 수행 - Pipe/Socket과 같은 것을 이용한다. * Pipe - 메모리 버퍼 영역을 가르킨다. > 버퍼 : 각 프로세스가 통신하면서 사용하는 임시 공간 - 각 Pipe당 읽기용 포트 한개와 쓰기용 포트 한개를 갖는다. - file descriptor로 접근을 하여 파일을 읽고 쓰는 듯이 사용을 한다. - Unix계열에서 오래전 부터 사용된 IPC형식이다. > Linux shell에서 "|" 기호를 사용하여 Pipe로 사용할 수 있다. ex) ls -al | ./a.out : ls -al 의 결과(output)가 ./a.out의 input으로 작용한다. - Race Condition을 방지하기 ..