본문 바로가기
나도 공부한다/운영체제

06. CPU-IPC

by 꾸빵이 2021. 6. 5.

IPC란? 프로세스간에 정보를 주고 받는 것. IPC를 위해 OS는 Socket, Remote Procedure Calls, Pipes 같은 IPC 메커니즘을 제공한다. send, receive 두가지 시스템 콜만 제공한다.

 

IPC의 필요성 ) 프로세스들은 서로 협업해야하는데 서로의 Address space가 다르고 기본적으로 시스템 안의 프로그램들은 격리되어있다.

 

Communications Models

IPC에는 signal, 메세지 패싱같은 여러가지 기법이 있고 모델은 크게 Message passing, shared memory 두 종류로 나뉜다. 두 모델의 차이점과 장단점을 알아보자.

 

Message passing

 메세지를 전달해달라고 요청받으면 커널은 분리된 별도의 자기 공간(우편함과 같은 역할)에 메세지를 넣어둠. 메세지를 찾는 프로세스가 생기면 메세지를 전달함. -> 메세지 순서가 꼬이거나 유실될 위험이 없음

메세지 패싱에서 커뮤니케이션 링크를 보면 실제로 저장하는 커널 메모리 공간이 있음. 이 링크가 네트워크가 되면 이게 바로 네트워크를 통한 IPC 매커니즘(=패킷 송수신, 네트워크 통신).

 

-구현할때 고려해야하는 것: 몇명이 통신할 수 있게 해줄지 / capacity 관리는 어떻게 할지 (큐를 무한정인 것 처럼 사용하지만 실제로는 커널이 다이나믹 allocation해서 처리함)


-장점: 동기화 문제가 없음.


-단점: 요구한 프로세스의 데이터->메세지 큐->받는 프로세스 순서로 데이터를 복사하는 과정에서 복사 오버헤드 발생.
        메세지를 바로 못받는 딜레이 발생. 메세지를 넣고 뺄때 OS에 부탁해야함(시스템 콜). =>속도(성능)이 낮음.

 

        

Shared memory

 프로세스 A, B가 동일한 메모리 영역을 서로 공유함. A, B는 각자의 영역에만 접근 가능하기 때문에 두 프로세스 사이에는 정보를 교환하는 IPC 메커니즘이 필요함. OS가 물리적인 공간 하나를 잡아서 A, B가 서로 공유하도록 던져줌. A의 주소 중 50~80, B의 주소 중 10~ 20이 공유 메모리를 가리키고 있다고 하면, A의 60에 접근하려고 할때 원래는 A 자신의 공간에 접근해야하는데 OS가 이를 변경해서 공유 메모리에 접근하게 함. 하지만 A는 자기 자신에게 접근하고 있다고 생각함.


-장점: 한번 설정되고 나면 OS가 관여하지 않고 각 프로세스가 자기 공간에 접근하듯 써서 속도가 매우 빠름.
         시스템 콜 만들기, 없애기 두번만 하면 그 다음부터는 OS의 개입 없이 공유할 수 있음. 


-단점: 동기화 문제. A가 공유메모리의 1을 2로 바꾸고 B가 2를 3으로 A가 3을... 이렇게 작업하고 싶지만 이 순서대                로 된다는 보장이 없음. OS의 스케줄링에 의해 결정됨.

 

 

 

Client-Server Systems Communications

 

Signal

  • 메세지 패싱을 기본으로 함. 여기서 말하는 메세지 전송은 실제로 안에 데이터가 들어가있는게 아니라 단순한 시그널 타입으로 전송되는 것.
  • 기본적으로 비동기화.(A가 B를 불렀는데 B가 바로 듣지 못함. B가 스케줄링되어 동작하기 시작할때 들음. B가 이미 동작중이면 바로 전달됨)
  • 시그널 타입에는 SIGINT, SIGKILL, SIGTERM 등이 있음.
  • 싱글 코어 시스템에서는 시그널을 OS가 전송하지 않는 한 시그널이 발생하자마자 전달되지 않는다. 두개의 프로세스가 동시동작하지 않기 때문이다. Paraller 프로세스는 동시동작하니까 바로 전달된다.
  • 시그널이 도착했을때 프로세스가 처리하는 네가지 방법 (별로 안 중요)
    Igonore(SIGSTOP, SIGKILL로 무시하기), Block(block하고 나중에 처리), Handle, 커널에게 맡김

Sockets

데이터를 주고 받는 공간(링크)을 네트워크가 담당해주는 것.

 

Remote Procedure Calls(RPC)

원격 시스템(address가 다른 프로세스)에 있는 함수를 호출하는 서비스. A, B가 동작하고 있는데 A에 동작하고 있는 함수가 B에는 없으면 A의 함수를 B에서 호출할 수 있게 해줌.

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

08. CPU-Synchronization(2)  (0) 2021.06.06
07. CPU: Synchronization  (0) 2021.06.05
05. CPU Scheduling (2)  (0) 2021.06.01
05. CPU scheduling  (0) 2021.05.31
04. CPU  (0) 2021.05.31