줘이리의 인생적기

IPC(InterProcess Communication) 본문

공부/운영체제

IPC(InterProcess Communication)

줘이리 2021. 11. 19. 23:00
728x90

프로세스들 간의 커뮤니케이션은 매우 중요하다.

 

하지만 서로의 공간을 쉽게 접근할 수 있다면 매우 위험한일이므로, 프로세스는 다른 프로세스의 공간을 접근할 수 없다.

 

이 때문에 운영체제는 프로세스간의 통신 방법을 제공한다.

이때, 프로세스간 state 확인 및 데이터 송수신이 필요하며, 통신을 위해 여러 프로세스를 만들어 동시 실행을 하기도 한다.

여기서 기억해야 하는것은 프로세스간 공간은 완전히 분리되어 있다는 점커널 공간은 공유한다는 점이다.

커널 공간을 이용하여 통신을 하는 IPC 기법에 대해서 알아보자.

 


IPC기법 중 대표적인 한가지는 pipe(파이프)이다.

기본 파이프는 단방향 통신이며, fork()로 자식 프로세스를 만들고, 부모->자식 방향으로 통신한다.

앞서 말했던 것처럼 메모리는 kernel 공간의 메모리를 사용한다.

부모 프로세스와 자식 프로세스의 차이점은 자식 프로세스의 process id가 0이라는 점이다.

 

 

다음 IPC기법은 message queue(메세지 큐)이다.

First in First out 정책으로 데이터를 전송하며, 양방향으로 데이터 송수신이 가능하다.

메모리는 pipe와 동일하게 kernel 공간의 메모리를 사용한다.

msgget함수의 key값을 활용하여 메세지를 주고 받는 msgsnd, msgrcv함수를 활용할 수 있다.

 

 

다음 기법은 shared memory(공유 메모리)이다.

아예 kernel space에 메모리 공간을 만들고, 공간을 변수처럼 쓰는 방식이다.

FIFO방식이 아니라 해당 메모리 주소를 변수처럼 접근하는 방식이다.

key값을 가지고 있으며, 여러 프로세스가 접근 가능하다.(shmget, shmat, shmaddr함수)

 

 

 

'공부 > 운영체제' 카테고리의 다른 글

세그멘테이션 기법  (0) 2021.11.24
가상메모리, 페이징 시스템  (0) 2021.11.22
Thread  (0) 2021.11.17
PCB(Process Context Block), Context switching  (0) 2021.11.15
프로세스 구조  (0) 2021.11.12