IPC5 22. 프로세스 - IPC 기법(signal, socket) - IPC 기법이란, 컴퓨터 구조적으로 불가능한 커뮤니케이션 간의 소통을 가능하게 하는 일종의 우회방법이다. - 다양한 IPC 기법이 존재하지만, 가장 많이 사용하고 있는 signal과 socket이 있다. - 사실 signal과 socket은 IPC를 위해서 만들어진 기능은 아니지만, IPC가 가능하기에 많이 사용되고 있다. - signal과 socket의 개념을 간단하게 알아보자. 1. Signal 기법이란? 유닉스에서 30년 이상 사용된 전통적인 기법 어떤 커널 또는 프로세스에서 다른 프로세스에게 어떤 이벤트가 발생되었는지를 알려주는 기법 프로세스 코드에 시그널 핸들러를 등록하여, 해당 시그널을 처리하는 방식으로 동작한다. a) Signal 이란? 시그널은 운영체제에 기본적으로 정의되어 있는 이벤트.. 2021. 4. 27. 21. 프로세스 - IPC기법(공유메모리) 1. 공유메모리(shared memory) 기법 커널 영역에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식 message queue처럼 FIFO 방식이 아니라, 해당 메모리 주소를 마치 변수처럼 접근하는 방식 공유 메모리의 key를 가지고, 여러 프로세스가 접근 가능 2. 공유메모리 예제 코드 a) 공유메모리 생성 및 주소 얻기 shmid = shmget((key_t)1234, SIZE, IPC_CREAT|0666)) // shmid = shared memory id shmaddr = shmat(shmid, (void *)0, 0) // shmaddr = shared memory address b) 공유 메모리에 쓰기 strcpy((char *)shmaddr, "Linux Programming".. 2021. 4. 26. 20. 프로세스 - IPC 기법(메세지 큐) 1. 메세지 큐(Message Queue) 큐(Queue) 자료구조를 이용한 IPC 기법 기본적으로 FIFO 방식으로 데이터를 전송한다. a) 그림으로 보는 메세지 큐 기법 간단하게, A라는 프로세스에서 데이터를 insert하면 B라는 프로세스에서 받아오는 방식으로 통신한다. b) 메세지 큐 예제 코드 - 간단한 예시 코드를 통해 메세지 큐의 개념을 살펴보자. 프로세스 A에서 데이터를 삽입 msqid = msgget(key, msgflg) // key는 1234, msgflg는 옵션 msgsnd(msqid, &sbuf, buf_length, IPC_NOWAIT) // msgsnd = message send 프로세스 B에서 프로세스A가 삽입한 데이터를 반환받는다. msqid = msgget(key, msg.. 2021. 4. 23. 19. 프로세스 - IPC 기법(파일, 파이프) - IPC 기법을 온전히 이해하기 위해서는 코드를 기반한 이해가 가장 적합하다. - 이를 위해서는 C언어 기반의 지식을 알고 있어야 하고, 실제로 IPC 기법을 구현한 코드를 이해하기는 그 복잡성으로 인해 쉽지않다. - 그러므로 이번 포스팅에서는 각 IPC 기법의 특징과 개념을 이해하는 것에 중점을 두자. 1. File 사용 기법 shared.txt와 같은 파일에 현재 커널 영역의 상태 정보를 기입한다. 통신이 필요한 프로세스의 상태정보를 알기위해 shared.txt 파일을 읽고 확인하다. 이 과정을 반복한다. a) File 사용기법을 잘 사용하지 않는 이유 프로세스에서 통신이 필요할 때마다 매번 shared.txt 파일을 읽어야 한다. 프로세스의 커널 영역의 상태정보가 변할 때마다 해당 파일을 upda.. 2021. 4. 22. 18. 프로세스 - IPC의 개념 1. IPC(Inter-Process Communication) 배경지식 - 운영체제에서 프로세스 간의 직접적인 커뮤니케이션(= 통신) 방법은 존재하지 않는다. - 그러나 프로세스 간의 커뮤니케이션이 필요할 때, 사용할 수 있는 방법을 IPC라고 한다. a) 프로세스간 통신이 불가능한 이유 프로세스는 다른 프로세스의 공간을 접근할 수 없다. 이는 프로세스의 데이터나 코드가 바뀔 가능성을 없애기 위함이다. (프로세스 데이터 변경가능 = 해킹 위험성) b) 프로세스간 통신이 필요한 이유 요즘 CPU는 코어를 적게는 8개, 많게는 64개까지 갖고있다. CPU의 효율/성능을 높이기 위해 여러 코어를 동시에 활용하도록 다수의 프로세스를 동시에 실행시킨다. 다양한 프로세스를 동시에 실행시키는 경우, 프로세스간의 상.. 2021. 4. 21. 이전 1 다음