Computer Science/OS

Processes(2)

박붕어 2023. 11. 24. 00:06

Cooperating Process

  • Independent Process : 다른 Process와 독립적으로 동작하는 Process. 다른 Process에 영향을 주지도, 영향을 받지도 않는다.
  • Cooperating Process : 다른 Process들과 영향을 주고받는 Process (ex. Parent-Child Process)

장점 (Advantage of Cooperating Process)

  • 정보 공유 (Information Sharing)
  • 처리속도 향상 (Computation Speed-UP)
  • 모듈화 (Modularity)
  • 편의성 (Convenience)

Role

Producer : 정보 or 기능을 제공하는 Process (ex. Compiler, Assembler, Webserver)

Consumer : 정보 or 기능을 제공받는 Process (ex. Assembler, Loader, Webbrowser)

*Assembler와 같이 Producer가 될 수도, Consumer가 될 수도 있다. (Assembler는 Compiler에게 정보를 제공받고, Loader에게 정보를 제공한다.)

Producer와 Consumer간에는 Buffer가 필요하다. → Buffer는 유동성에 따라

  • Unbounded Buffer → 크기 제한 ❌
  • Bounded Buffer → 크기 제한 ⭕

Producer는 Buffer에 Insert()하고 Consumer는 Buffer에 Remove()를 하며 Process간 통신할 수 있다.

InterProcess Communication (IPC)

Process간 통신(Communication)과 동기화(Synchronize)

Communication

Process간 통신에서는 Shared Memory방식보다는 Message Passing방식을 선호한다.

Message Passing

두가지 기능을 제공한다 →

  1. Producer ⇒ Send() : 전송하는 Message의 크기가 Fixed or Variable할 수 있다.
  2. Consumer ⇒ Receive()

P와 Q가 Communication을 한다고 하면

  1. P와 Q간 Link를 생성한다. (Physical한 특성과 Logical한 특성을 고려하여. 아래에서 자세히 설명.)
  2. Send/Receive를 통한 통신.
  • 구현시 고려해야할 점.
    1. Link를 어떻게 구현할 것인가? → Physical한 특성(ex. Shared Memory, Hardware Bus, Switch, Network 등) 과 Logical한 특성 (ex. Direct/Indirect, Syschronous/Asynchronous, Auto/Explicit Buffer)을 고려하여 Link를 생성한다.
    2. 한 Process 쌍 당 몇개의 Link를 만들 것인가?
    3. 얼마나 많은 Process들이 통신할 수 있도록 할 것인가?
    4. Link의 대역폭 크기는?
    5. Message의 크기와 크기의 유동성은? (Fixed or Variable)
    6. 단방향? 양방향?

Direct Communication

Process들간에 직접 통신하는 것. 받는, 보내는 Process의 이름을 명시해주어야 한다.

Send(P,message) → P에게 보낸다.

Receive(Q,message) → Q로부터 받는다.

위에 설명한 구현시 고려해야할 점을 고려하여 구현한다.

Indirect Communication

Mailboxes(Port라고도 함)를 통한 간접 통신

  • 각각의 MailBox는 고유한 값을 가진다.
  • 같은 MailBox를 쓰는 Process들만 서로 통신이 가능하다.

Send() : MailBox에 Message를 전달한다.

Receive() : MailBox에서 Message를 꺼낸다.

통신과정

  1. MailBox생성 : Create a new mailbox
  2. Send and Receive
  3. MailBox파괴 : destroy

단점

여러 Process(3 개이상의 Process)가 같은 MailBox를 사용하면 메세지의 수신자가 불확실해질 수 있다.

ex. 두개의 Process가 동시에 Receive()를 하는 경우 누가 메세지를 수신했는지 불확실하다.

해결방법

  1. 2개의 Process끼리만 통신할 수 있도록 한다.
  2. 한 Process가 Receive() 하는 동안은 다른 Process가 Receive() 할 수 없도록 한다.
  3. Receive()를 한 Process를 명시한다 ⇒ 수신자를 명시한다.

Synchronization, Asynchronization

Message Passing방식은 Block or Non-Block이다.

Block = Synchronous = 동기

  • 한 Process가 보내면 다른 Process가 받을 때 까지 기다린다.
  • 한 Process가 받을라면 다른 Process가 보낼 때 까지 기다린다.

Non-Block = Asynchronous = 비동기 → Buffer가 필요하다.

  • Process는 송,수신을 기다리지 않는다.
  • Sender는 Buffer에 메시지를 보내고, 자기가 할 일을 한다.
  • Receiver는 Buffer에서 메시지를 확인하고, Buffer에 메시지가 잇으면 가져오고, 없으면 Null을 가져온다.

Buffer

  1. Zero Capacity : 버퍼가 없다 → Block방식이다.
  2. Bounded Capacity : 버퍼가 가득차기 전에는 Non-Block방식, 버퍼가 가득차면 Block방식이다.
  3. Unbounded Capacity : 항상 Non-Block방식이다. Buffer의 크기가 유동적이다.

Client-Server Communication

Socket

통신의 종단점(Endpoint). IPPort로 구성되어있다.

161.25.19.8:1625 → IP : 161.25.19.8, Port : 1625

통신은 한 쌍의 Socket에서 일어난다.

Remote Procedure Call (RPC)

Function을 Call하듯이 원격으로 다른 컴퓨터의 Procedure를 Call 하는 것.

Stub : Proxy(안내자)

  • Client-side Stub : Server의 위치를 확인하고 파라미터 등 필요한 정보를 전달한다.
  • Server-side Stub : 파라미터를 받고 Procedure를 호출하고 결과를 반환한다.

Remote Method Invocation (RMI)

Java에서 사용하는 mechanism → RPC와 매우 유사.

원격의 객체에서 다른 객체의 Method를 호출할 수 있도록 해준다.

'Computer Science > OS' 카테고리의 다른 글

Threads  (1) 2023.11.25
3강 연습문제  (2) 2023.11.25
Processes(1)  (0) 2023.11.24
운영체제 2강 연습문제  (0) 2023.11.21
Operating System Structures(2)  (0) 2023.11.21