[운영체제] #13강

Junyoung Park·2022년 8월 3일
0

운영체제

목록 보기
13/25
post-thumbnail

IPC

  • 클라이언트-서버 시스템 상의 통신 방법: 시그널, 파이프, 소켓

Signal

  • 두 개 이상의 프로세스에 비동기적 이벤트를 신호
  • 가장 오래된 IPC 방법
  • 신호 무시(SIGSTOP, SIGKILL), 신호 유예, 직접 처리, 커널 처리 등
  • 비동기적 IPC: 곧바로 시그널 처리 X. 시그널을 받는 프로세스가 준비가 되어야 처리 가능 O

Pipes

  • 두 프로세스 간의 통신관
  • Named: 부모/자식 관계없이 이름만 가지고 파이프 통신 가능

  • 통신 관련 이슈: 통신 방향(단/양방향), half/full duplex
  • fork() → -1(에러), 양수(부모 프로세스), 0(자식 프로세스) PID 리턴

Ordinary pipes

  • Ordinary: 파이프 생성 프로세스 외부에서는 접근 불가능. 부모 프로세스가 파이프 생성, 이를 생성한 자식 프로세스와 통신하기 위해 사용

  • 생산자가 write-end에 아이템을 삽입, 소비자가 read-end에서 아이템을 꺼내는 구조 → 단방향 구조. 양방향을 위해서는 파이프 두 개가 필요함

Named pipes

  • ordinary보다 활용하기 간편
  • 여러 개의 프로세스가 파이프를 통해 통신 가능

Sockets

  • 통신을 위한 endpoint, 포트를 위해 사용
  • 포트: OS가 제공하는 네트워크를 위한 추상화
  • 서로 다른 서버에서 동작하더라도 통신 가능한 통로를 제공
  • 물리적 포트: HW용 포트, NIC을 통해 OS에서 사용
  • 논리적 포트: 논리적으로 여러 개의 포트를 생성 가능 + 통신(E.g. 웹 포트 80)
  • 프로세스 위치에 독립적: local, remote 모두 동작 - (1). local은 포트 번호만으로 (2). remote는 포트 및 IP 주소를 통해서 식별 가능
  • 연결의 semantics: (1). reliable TCP (2). unreliable UDP

  • 자주 사용되는 포트는 테이블 번호를 참조해 바로 사용 가능

Shared Memory

  • shmget(shared memory get), shmat(shared memory attache), shmdt(shared memory detach), shmctl(shared memory control)

Message Queue

  • msg.h, msgget(message get), msgsnd(message send), msgrcv(message receive), msgctl(message control)
profile
JUST DO IT

0개의 댓글