병행 프로세스 - 2

프로세스의 상호협력

  • 공통작업을 수행하기 위해 서로 협동하는 경우

유한 버퍼 문제

  • 생산자 / 소비자 문제

    • 상호배제 : 생산자와 소비자가 같은 자원에 접근하지 못하게 해야함
    • 동기화 : 버퍼가 꽉 차있으면 생산자가 생산하지 못하게 하고, 비어있으면 소비자가 데이터를 가져오지 못하게 해야함
  • 판독기 / 기록기 문제

    • 판독,기록기의 우선순위에 따라서 우선순위가 낮은 쪽이 기아상태가 되기 쉬움
    • 여러 개의 기록기가 동시에 같은 공유 데이터 객체에 접근하여 write를 수행하면 문제가 생김

우선순위에 따른 문제의 변형

  • 제1 판독기 / 기록기 문제 (판독기 우선) : 기록기가 이미 공유객체의 사용을 허가 받은 것이 아니라면 판독기는 대기하지 않음
  • 제2 판독기 / 기록기 문제 (기록기 우선) : 일단 기록기가 준비되었다면 기록을 가능한 한 빨리 수행할 수 있도록 함
    둘 다 우선순위가 낮은 쪽의 기아상태 유발 가능함

프로세스 간의 통신(IPC, InterProcess Communication)

  • 병행 프로세스 사이의 통신을 위한 방법
    • 공유기억장치 기법
    • 메시지 시스템 기법
  • 두 방법은 상호 배타적이 아님
    • 단일 운영체제 내에서 동시에 사용 가능

공유기억장치 기법

특징

  • 프로세스 간에 공유변수를 이용하여 정보를 교환
  • 예 : 유한 버퍼
  • 고속 통신 기능
  • 통신기능 제공의 책임 : 응용 프로그래머

메시지 시스템 기법

특징

  • 메시지 교환방식으로 정보를 교환
  • send / receive 연산자로 커널을 거쳐 데이터를 주고받음
  • 소량의 데이터 교환에 유용
  • 통신기능 제공의 책임 : 운영체제

통신 링크

프로세스들 사이에 메시지를 주고받기 위한 연결통로

  • 논리적 구현에 대한 이슈

    • 어떻게 링크를 설정?
    • 한 링크가 2개 이상의 프로세스 연결 가능할까?
    • 링크의 용량은? 메시지의 크기는? 등등
  • 직접 통신 : 메시지 전달 연산에 수신자나 송신자 이름을 명시 (대칭형 / 비대칭형)

  • 간접 통신(우편함) : 메시지 전달 연산에 우편함 이름을 명시

    • 통신 링크는 공유 우편함이 있는 경우에만 설정됨
    • 하나의 링크는 2개 이상의 프로세스들과 연관될 수 있으며 각 통신 프로세스 쌍 사이에는 여러 링크가 존재 가능
    • 링크는 단방향 또는 양방향임
Last Updated: