Shine's dev log
IPC_1 (cooperating process model) 본문
앞서 살펴봤듯이, 한 컴퓨터에는 여러개의 프로세스들이 돌아가고 있다는 것을 알 수 있다.
이 떄, 프로세스들이 서로 필요한 데이터들을 공유해야하는 경우도 있을 것이다.
그렇다면 과연 프로세스들끼리의 소통은 어떻게 할까?
1. Inter process communication
우선 프로세스들이 소통을 해야하는 필요성에 대하여 생각해보자.
예를 들어 크롬으로 브라우징을 한다고 생각해보자.
이 때, 브라우저 프로세스와 렌더링을 해주는 프로세스와 플러그인 기능의 프로세스가
같이 협력을 해야만 사용자는 편리하게 크롬으로 브라우징을 할 수 있다.
이렇게 여러 프로세스가 협력하는 경우 데이터 공유 등 소통을 해야 하는데,
소통하는 방법에 대하여 알아보자.
2. Cooperating process
프로세스의 협력 모델은 크게 두가지로 나눌 수 있다.
먼저 첫번째는 Shared memory 모델이다.
각 프로세스가 운영체제에게 shared memory 만들어달라고 시스템콜을 날리면
운영체제가 shared memory를 만들어준다.
이 때 운영체제는 만들어주고 그 이후 프로세스들이 공유하는 과정은 신경을 안쓰는데,
따라서 프로세스들 끼리 synchronize가 쉽지 않다는(관리가 안된다는) 단점이 있다.
이 방법은 유저 프로세스들이 직접 소통을 관리하고, 운영체제의 간섭을 받지 않는다는 점이 특징이다.
두번째는 Message passing 모델이다.
이 방법은 모든것을 운영체제에게 맡기는 방법인데,
다른 프로세스와 소통하고 싶으면 자기가 message를 만들어서
운영체제에게 message를 상대 프로세스에게 보내달라고 시스템콜을 날린다.
그러면, 운영체제에 있는 IPC facility가 send, receive 이 두개의 opreation으로 (시스템콜 아님)
message를 보내주고 받아주는 역할을 해준다.
이 경우에 어플리케이션 프로그램은 그냥 명령어로 간단하게 message를 보낼 수 있으므로 편하다는 장점이 있지만,
운영체제는 하나하나 일일히 메세지 관련 기능을 처리해야 하기 때문에 복잡하다는 단점이 있다.
이와 같은 Message passing 모델은 distributed environments에 유용한데,
접근하려는 프로세스의 수가 많아질 때, 다 한곳에 접근하면 복잡해진다.
이때 중앙택배서비스처럼 message passing 모델을 이용하면 편리하다.
참고로 Micro kernel이 이 message passing모델을 잘 구현해 놨다.
오늘 내용을 정리해보면
1. 프로세스끼리 소통할 때 Shared memory 모델과 Message passing 모델이 있다.
본 내용은 공부하며 작성한 것으로, 치명적인 오류가 있을 수 있습니다.
'운영체제' 카테고리의 다른 글
Unix 시스템 소개 및 구조 (0) | 2020.04.15 |
---|---|
IPC_2 (signals, RPCs, pipe) (0) | 2020.04.14 |
프로세스 생성, 대체, 종료 (0) | 2020.04.09 |
프로세스의 개념 (0) | 2020.04.08 |
운영체제의 구조 (2) (0) | 2020.04.07 |