[OS] Ch4_IPC

윰지·2020년 4월 8일
0

OS_운영체제

목록 보기
4/13

프로세스는 하나만 도는 것이 아니다. 프로세스가 나눠지게 되면 독립적으로 스케쥴에 의해 돌아간다. 프로세스들끼리 통신하여 다른 프로세스에게 정보를 공유한다. 하나의 CPU에는 한개의 프로세스가 돈다. CPU 4개가 있다면 fork를 해서 정보를 공유하고 돌린다. 서로 협업해서 동작한다.

Inter-Process Communication Models


Shared Memory
공유하는 메모리를 만들어놓고 서로 통신한다. 운영체제에 요청(system call)하면 프로세스가 직접 shared memory를 만들거나 만들어져 있는 메모리에 join한다. 이 후에는 운영체제가 관여하지 않는다.(운영체제는 판만 깔아줌)

Message passing
메시지를 만들어 요청하면 IPC가 있는 운영체제가 전달한다. (없는 운영체제도 있다.) 커널을 통해 정보를 전달하고 수신한다.


Producer-Consumer Problem
정보를 생산하는 프로세스(생산자)와 정보를 소비하는 프로세스(소비자)가 동시에 동작할 때 일어나는 것이다. 보통 정보를 생산하는 속도가 소비하는 속도를 따라가지 못할 때 발생하고 이를 해결하기 위해 버퍼(buffer)를 사용한다. 크기에 한계가 있는 것을 유한 버퍼(bounded buffer), 버퍼의 시작과 끝을 이어붙여 크기가 무한한 것을 무한 버퍼(unbounded buffer)라고 한다.

Signals


  • 어떤 프로세스 혹은 운영체제가 다른 프로세스한테 이런 상황이 발생했다고 알려주는것
  • software interrupt와 비슷하다.
  • 각 프로세스마다 signal handler가 존재하는데 해당하는 signal을 처리한다.

Signal Handling

  • 어떤 프로세스에 signal handler를 세팅하면 프로세스가 죽을 때까지 유지된다.
  • signal handler는 override가능

    sigaction이라는 system call을 날리면 운영체제야 앞으로 SIGALRM이라는 시그널이 오면 sa에 맞춰서 핸들러를 처리해라. 그리고 옛날 정보(old_sa)가 있다면 &로 반환해줘라.

Remote Procedure Calls(RPCS)

  • 내 프로세스가 다른 컴퓨터에 있는 함수를 부르고 싶을 때
  • stub(argument를 마샬링)에서 상대방에게 전달해야 할 package로 만든다.
    local -> XDR(마샬링), XDR -> local(디마샬링)
  • 내 컴퓨터의 represent와 다른 컴퓨터의 represent가 다를 수 있어서(Big or Little Endianness) XDR 포맷에(중립적인 상태) 맞춰서 보낸다.

Pipes

2개의 프로세스가 있는데 pipe mechanism을 통해서 연결되어 있다. 한쪽 끝에서 데이터를 넣으면 다른 쪽 프로세스에서 읽어갈 수 있는 inter-process communication의 일종이다.

Ordinary pipes
parent 자식 process들 간에만 만들어질 수 있다. Unidirectional은 한쪽 끝에서 넣으면 다른 쪽에서 읽을 수 있다. Full duplex와 half duplex는 설명할 수 없다. 하지만 Bidirectional일때는 가능하다.

Named pipes
아무 임의의 process랑 만들어질 수 있다. Bidirectional이다.

0개의 댓글