본문 바로가기
컴퓨터 COMPUTER/Linux 리눅스

9. [Process Communication] : 프로세스들은 어떻게 소통할까

by 매실이 maesiri 2019. 1. 31.

하나의 프로세스 당 하나의 프로세스만 돌아가도 된다면 참 행복하겠지만, 사용자는 한번에 여러가지 일을 수행하고 싶어하기 마련이다. 이에 따라 프로세스 간의 충돌을 최소화하고 멀티 프로세싱에서의 효율을 높이는 것이 OS 의 고질적인 과제가 되었다.


프로세스 간의 소통에는 다음과 같이 2가지가 메인 목표이다.

① Communication : data exchange - 같은 메모리 안에 있는 자료를 서로 다른 두가지 이상의 프로세스가 사용할 때 어떻게 자료를 관리할 것인가

② Synchronization : 프로세스 간의 순서 매기기, 동기화 하기


2가지를 만족시키기 위해서 Application Programming (shared memory) 혹은 IPC (interprocess communication) 을 이용한다.


▶ Application 에 의한 process coordination은 하나의 application 에서 자료를 어떻게 공유하는지에 대해 접근한다. Producer-Consumer Problem으로 보통 설명이 된다. Application Program 은 프로그램에 있는 shared memory를 통해 소통하는데, 주로 Ring Buffer 형태의 공유메모리를 사용한다. 원의 형태로 만들어진 버퍼에 producer 는 계속해서 버퍼가 다 찼는지 확인하고 계속 head 에 데이터를 삽입한다. Consumer 는 버퍼가 비었는지 확인하고 계속해서 tail에서 데이터를 소모한다.


▶IPC 에 의한 소통을 보자. IPC 는 하나의 컴퓨터 내에서 두개의 프로세스 간의 소통과 서로 다른 컴퓨터에서 다른 프로세스들 간의 소통을 다룬다. 여기선 인터넷을 이용한 Client-Server model 을 이용하여 설명한다. Client가 먼저 filename을 가지고 Server에 요청하면 Server 가 저장소로부터 file을 받아와서 Client에게 내용을 넘긴다.





개인 공부 정리용으로 작성한 글입니다. 틀린 부분이 있을 수 있으니 참고용으로만 사용해주세요. 틀린 부분은 댓글로 알려주세요.♥


반응형

댓글