[OS] Cooperating Process, IPC, POSIX, Naming, Buffering

Ko Hyejung·2021년 10월 11일
0

Operating Systems

목록 보기
10/26

Cooperating Process

Independent process cannot affect or be affected by the execution of another process.
독립적 프로세스는 다른 프로세스의 실행에 영향을 미치거나 영향을 받을 수 없습니다.

Cooperating process can affect or be affected by the execution of another process.
협력 프로세스는 다른 프로세스의 실행에 영향을 미치거나 영향을 받을 수 있습니다.

Advantages of process cooperation

  • Information sharing 정보 공유
  • Computation speed-up 계산 속도 up
  • Modularity 모듈화
  • Convenience 편의성

Inter-Process Communication (IPC)


Mechanism for processes to communicate and to synchronize their actions.
프로세스를 통신하고 작업을 동기화하는 메커니즘

  • Using shared variables (or memory)
  • Using message passing
  • 공유 변수(또는 메모리) 사용
  • 메시지 전달 사용

+) https://www.geeksforgeeks.org/inter-process-communication-ipc/

A process can be of two types

  1. Independent process.
  2. Co-operating process.

프로세스는 두 가지 유형이 될 수 있습니다.

  1. 독립 프로세스.
  2. 협력 프로세스.

An independent process is not affected by the execution of other processes while a co-operating process can be affected by other executing processes.

독립적인 프로세스는 다른 프로세스의 실행에 영향을 받지 않지만 공동 운영 프로세스는 다른 실행 프로세스에 영향을 받을 수 있습니다.

Though one can think that those processes, which are running independently, will execute very efficiently, in reality, there are many situations when co-operative nature can be utilized for increasing computational speed, convenience, and modularity.

독립적으로 실행되는 이러한 프로세스가 매우 효율적으로 실행될 것이라고 생각할 수 있지만, 실제로는 계산 속도, 편의성 및 모듈성을 높이기 위해 협동 특성을 활용할 수 있는 경우가 많다.

Inter-process communication (IPC) is a mechanism that allows processes to communicate with each other and synchronize their actions.

프로세스 간 통신(IPC)은 프로세스가 서로 통신하고 작업을 동기화할 수 있도록 하는 메커니즘입니다.

The communication between these processes can be seen as a method of co-operation between them.

이러한 프로세스 간의 커뮤니케이션은 프로세스 간의 협력 방법으로 볼 수 있습니다.

Processes can communicate with each other through both:

  1. Shared Memory
  2. Message passing

프로세스는 다음 두 가지를 통해 서로 통신할 수 있습니다.

  1. 공유 메모리
  2. 메시지 전달

POSIX Shared Memory (Producer)

POSIX Shared Memory (Consumer)

Producer-Consumer problem

There are two processes: Producer and Consumer.

The producer produces some items and the Consumer consumes that item. The two processes share a common space or memory location known as a buffer where the item produced by the Producer is stored and from which the Consumer consumes the item if needed.

생산자는 일부 품목을 생산하고 소비자는 그 품목을 소비합니다. 두 프로세스는 버퍼라고 알려진 공통 공간 또는 메모리 위치를 공유하며, 여기서 생산자에 의해 생산된 품목이 저장되고 소비자가 필요한 경우 해당 품목을 소비한다.

There are two versions of this problem: the first one is known as the unbounded buffer problem in which the Producer can keep on producing items and there is no limit on the size of the buffer, the second one is known as the bounded buffer problem in which the Producer can produce up to a certain number of items before it starts waiting for Consumer to consume it.

이 문제에는 두 가지 버전이 있습니다: 첫 번째 버전은 unbounded buffer problem로 알려져 있으며, 여기서 생산자는 항목을 계속 생성할 수 있으며 버퍼 크기에는 제한이 없습니다. 두 번째 문제는 생산자가 소비자가 소비할 때까지 기다리기 전에 일정 수의 품목을 생산할 수 있는 경계 버퍼 문제로 알려져 있다.

We will discuss the bounded buffer problem. First, the Producer and the Consumer will share some common memory, then the producer will start producing items.

우리는 바운드 버퍼 문제에 대해 논의할 것입니다. 먼저 프로듀서와 컨슈머가 공통의 기억을 공유하고, 그 다음에 프로듀서가 아이템을 생산하기 시작할 것입니다.

If the total produced item is equal to the size of the buffer, the producer will wait to get it consumed by the Consumer. Similarly, the consumer will first check for the availability of the item. If no item is available, the Consumer will wait for the Producer to produce it. If there are items available, Consumer will consume them.

생산된 총 품목이 버퍼의 크기와 같으면, 생산자는 소비자가 소비할 때까지 기다립니다. 마찬가지로, 소비자는 먼저 그 품목의 사용 가능 여부를 확인할 것이다. 사용 가능한 품목이 없는 경우, 소비자는 생산자가 해당 품목을 생산할 때까지 기다립니다. 사용 가능한 품목이 있으면 소비자가 소비합니다.

Message Passing System

Message passing system processes communicate with each other without sharing the same address space.

메시지 전달 시스템 프로세스는 동일한 주소 공간을 공유하지 않고 서로 통신합니다.

IPC (message passing) facility provides two operations:

  • send(message) – message size fixed or variable
  • receive(message)

If P and Q wish to communicate, they need to:

  • establish a communication link (logical link) between them.
  • exchange messages via send/receive.
  • 두 사람 사이의 커뮤니케이션 링크(논리 링크)를 설정합니다.
  • 메시지를 보내기/보내기 방식으로 교환합니다.

Issues designing message passing system

  • Naming 이름 지정
  • Synchronization 동기화
  • Buffering 버퍼링

Naming

Direct Communication: Processes must name each other explicitly:
프로세스는 서로 이름을 명시적으로 지정해야 합니다.

  • send (P, message)
    send a message to process P.
  • receive (Q, message)
    receive a message from process Q.

Indirect Communication: Messages are directed and received from mailboxes (also referred to as ports).
프로세스는 서로 이름을 명시적으로 지정해야 합니다.

  • Each mailbox has a unique id.
  • Processes can communicate only if they share a mailbox.
  • Primitives are defined as:
    send (A, message) – send a message to mailbox A.
    receive (A, message) – receive a message from mailbox A.

Synchronization

Message passing may be either blocking or non-blocking.
메세지 전달은 blocking or non blocking일 수 있다.

Blocking is considered synchronous.
Non-blocking is considered asynchronous.

Send and receive primitives may be either blocking or non- blocking.

  • Blocking send
    The sending process is blocked until the message is received by the receiving process or by the mailbox.
    수신 프로세스 또는 사서함에 의해 메시지가 수신될 때까지 송신 프로세스가 차단됩니다.
  • Non-blocking send
    The sending process sends the message and resumes operation.
    전송 프로세스는 메시지를 보내고 작업을 다시 시작합니다.
  • Blocking receive
    The receiver blocks until a message is available.
    메시지를 사용할 수 있을 때까지 수신기는 차단됩니다.
  • Non-blocking receive
    The receiver retrieves either a valid message or a null.
    수신기는 유효한 메시지 또는 null을 검색합니다.

Buffering

Queue of messages attached to the link; implemented in one of three ways.

  • Zero capacity – 0 messages
    Sender must wait for receiver (rendezvous).
  • Bounded capacity – finite length of n messages
    Sender must wait if link full.
  • Unbounded capacity – infinite length
    Sender never waits.

0개의 댓글