[OS] Ch 3. Processes (2)

chaewon·2023년 6월 28일
0

Operating System

목록 보기
5/7
post-thumbnail

📍 Interprocess Communication (IPC)

: process 간에 data나 신호를 주고 받는 것.

  • 같은 목적으로 실행되는 process가 여러 개일때 서로 공유 할 수 있도록

이점

  • 정보공유
  • 계산 시간이 빨라진다.
  • modularity : 기능별로 process 구성
  • 편의성 : 한 user가 동시에 여러 개의 task를 수행 가능

어떻게 신호를 주고 받는지?

  • shared memory
    • kernel이 필요가 없음
    • 속도 빠름
    • comm.이 편리함 (message passing에 비해서)
    • memory 제한이 있음.
  • message passing
    • kernel을 거쳐서 message를 전달하는 것
      • kernel에 저장공간이 따로 있어야 한다는 단점
    • user level, kernel level을 왔다갔다 함
    • 구현이 용이함
    • 같은 file을 전달함에 있어서 충돌이 발생하지 않음.
    • 속도 느림

producer & consumer

  • producer: 정보 생성 (생산자)

  • consumer: 정보를 가져가는 사람 (소비자)

  • 동기화 유무 개념 있음

    • 동기화: 수행 시점 일치하는 작업

cooperating processes

1. Independent process

2. cooperating


📍 shared memory

  • 버퍼의 형식으로 구현이 됨
  • 통신을 원하는 process 간의 memory 영역
    • 통신은 OS가 관리하는 게 아니라 사용자 process 제어 하에 있다.
  • kernel 의존도가 낮음.

1. bounded buffer

  • size 제한 있음
  • 장점
    • 구현이 편하다
  • 단점
    • 크기가 제한 되어 있으니 유동적으로 할 수 없음
    • full 일 때 producer(생산자)가 기다려야 함.

2. unbounded buffer

  • size 제한 X
  • 장점
    • producer가 기다릴 필요 X
  • 단점
    • 구현이 어려움

3. zero capacity buffer

  • 용량 = 0
  • buffering을 하지 않음. = producer가 생성해서 consumer가 가져 갈때까지 기다림 (=직접 전달)
  • 완전 동기화

shared memory 구현

  • queue의 구현이랑 똑같음

📍 message passing

: 직접적으로 바로 process에게 보내주는 것

  • process가 서로 의사소통하고 작업을 동기화 하는 것

  • process가 서로 통신함.

  • 구현할때 연결을 어떻게 할 것인지?

✔︎ send()

: 보내는 쪽

✔︎ receive()

: 받는 명령어


📍 communication link

: 상호 작용하는 process 간 data가 이동할 수 있는 통로를 만들겠다.

  • 고려사항
    • 링크 설정 방법
    • 형식
      • 두 process 간 or 여러 process간
      • 각 process 간 link의 갯수
    • link 용량
    • message size (고정, 가변)

✅ 구현방법

1. physical (물리적)

  • shared memory
  • hardware bus
  • network를 통해서 전달

2. logical

  • direct || indirect (직접전달 || 간접전달)
  • synchronous || asynchronous (동기적 || 비동기적)
  • automatic || explicit buffering : buffering을 프로그래머가 느끼게 할 것이냐 말것이냐

1️⃣ direct comm.

: 상대를 지정하여 전달

  • send (P, message) → Q가 P에게 보낸

  • receive (P, message) → P가 Q에게 보낸

  • comm link

    • 자동으로 link가 설정 됨.
    • 한 쌍의 comm가 생성
    • 두 process 간에는 1개의 link만 존재
    • maybe uni-directional, but usually bi-directional
  • 각자 고유의 아이디가 있다 = 여러 개 존재 가능하다.

2️⃣ indirect comm.

  • mail box를 이용
  • mail box
    • 고유한 id가 있음.
    • 여러 개가 생성될 수 있음
  • comm link (공유하는 mail과의 link)
    • mail box에 여러 개의 링크가 형성
    • mail bax에는 두 개 이상의 process가 연결이 될 수 있음.
    • 두 process 간의 link가 여러 개가 될 수 있음.
    • uni/bi-directional 둘 다 허용
  • mail box 관련 operator
    • creae a new mail box
    • send/receive
    • destroy a mail box

✅ 여러 개 process가 한 message 수신하려 할 때 처리방법

  • 최대 두 process comm. link로 설정되도록 제한
  • 한 개 process만 허용 (선착순)
  • system에서 임의로 선택하고 결과를 sender에게 알려줌

3️⃣ synchronization

: 수행 시점을 제어하는 역할 (=동기화)

  • blocking: 실제로 보내줄때까지 data가 있을때까지 기다리는 것 (싱크를 맞추는 것, 동기화 고려)

    • blocking send: the sender is blocked untill the message is received
    • blocking receive: the receiveer is blocked untill message is available
  • non-blocking: considered asynchronous

    • non-blocking send : the sender sends the message and continue
    • non-blocking receive : the receiver receives: A valid message || Null message
      • 동기화 X
      • 보내는 사람은 mail box에 두고 가고, 받는 사람은 수시로 mail box 확인
  • blocking send + blocking receive = 랑데뷰 (완전 싱크 되는 것)


📍 system 간의 comm.

1. Comm. in client-server system

1) sockets

: 통신을 위한 end point

2) RPC (Remote procedure call)

: network로 연결 된 system 간의 procedure call

  • ex. pipe (data가 다니는)

✅ pipe

  • ordinary
    • 양방향, uni
    • parent - child 간의 process
  • named
    • more powerful than ordinary
    • 이름이 지어져있으니 이름만 알면 접근이 가능하다.
    • process 간에 제약이 없음

3) RMI (Remote Method Invacation)

: RPC의 자바 ver.


📍 Pipe

: 두 프로세스가 소통할 수 있는 통로 역할 (IPC의 예)

1) 고려사항

(1) uni direction || bi direction (한 방향인지 양방향인지)

(2) two-way의 경우

  • halp diplex : 한순간에는 한방향
  • full diplex : 동시 양방향

(3) parent-child 간에만 허용 || 모든 process 간 허용

(4) system 내의 process 간 || network 연결 포함

2) ordinary pipe

  • proceducer - consumer 형식 (buffer)
  • uni directionary

3) named pipe

  • more powerful
  • bi directionary
  • process 관계 제약 X

0개의 댓글