운영체제(OS) - 10. IPC

Walker·2021년 10월 18일
0

운영체제(OS)

목록 보기
10/14

IPC(InterProcessCommunication)
프로세스 간 통신방법으로 기본적으로는 프로세스 간 공유는 위험하나
여러 프로세스를 동시에 만들어 실행하면(병렬처리) 성능적으로 우수하므로 IPC가 필요

fork() 시스템콜
프로세스를 복사하는 함수로 실행할때마다 같은 프로세스가 늘어남
이렇게 복사된 프로세스들을 멀티 코어를 가진 CPU로 각기 실행한다면 병렬처리가 가능

파일을 사용하는 IPC 기법 - 공유파일을 통해 공유해야 할 DATA를 저장하여 함께 사용

문제점
1. 실시간으로 파일 DATA의 변화값을 활용할 수 없다.
2. 파일 IO는 기본적으로 과정이 복잡하여 성능이 떨어진다.

프로세스 간 공유하는 커널 공간에서 IPC 기법을 사용하여 프로세스 간 통신이 이루어짐

pipe를 활용한 IPC 기법 - 단방향(부모 > 자식)

부모 프로세스에서 쓰고 자식 프로세스에서 쓴 값을 읽음(프로세스간에 값을 공유함!)

메시지 큐를 사용하는 IPC 기법 : 프로세스 A -> 메시지 큐 -> 프로세스 B

메시지 큐 ID를 가지고 프로세스 간 데이터 쓰기(msgsnd)/읽기(msgrcv)가 가능

프로세스가 총 4GB의 메모리를 사용한다면
이중 3GB는 USER SPACE 나머지 1GB는 KERNEL SPACE로 사용된다.
(KERNEL SPACE는 프로세스간 공유가 가능)

공유 메모리 방식은 KERNEL SPACE에 프로세스 간 공유되는 메모리를 설정하여 해당 공간을 활용

공유 메모리 ID(shmid)를 가지고 공유 메모리 주소(shmaddr)를 얻어내어
그 주소를 프로세스에서 접근하여 사용한다.

** 참고 : 시그널/소켓을 통해서도 IPC가 가능하다.

profile
I walk slowly, but I never walk backward. -Abraham Lincoln-

0개의 댓글