운영체제 - Process(6)

2020-09-20

OS를 공부하면서 정리를 한 내용들 입니다.

이번 챕터는 Process에 관련해 정리한 챕터입니다.


프로세스 간 협력

독립적 프로세스(Independent process)

원칙적으로 프로세스는 다른 프로세스의 수행에 영향을 미치지 못합니다.

그 이유는 프로세스가 각자의 주소 공간을 가지고 수행되기 때문입니다.

경우에 따라서는 서로 협력을 하면 효율적으로 동작하는 경우가 있을 수 있습니다.

협력 프로세스(Cooperating process)

프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있는 경우입니다.

여기서 프로세스 협력 메커니즘에 대해서 알아봅시다.

프로세스 간 협력 메커니즘(IPC)

IPC(Interprocess Communication)은 크게 2가지 방법으로 구분됩니다.

메시지를 전달하는 방법

  1. 운영체제 커널을 통해 메시지를 전달합니다.

  2. 프로세스 사이에 공유 변수(shared variable)를 일체 사용하지 않고 통신하는 시스템

그림출처

Direct Communication

통신하려는 프로세스의 이름을 명시적으로 표시 합니다.

커뮤니케이션 링크 특성

  • 링크는 자동적으로 생성된다.
  • 하나의 링크는 한 쌍의 프로세스에게 할당된다
  • 각 쌍의 프로세스에게 하나의 링크만이 존재한다.

Indirect Communication

mailbox(또는 port)를 통해 메시지를 간접 전달 합니다.

메세지 받는 프로세스의 식별을 위해

  • 2개의 프로세스에게만 링크를 할당하는 방법
  • 링크에 대한 receive() 연산을 매 시점 하나의 프로세스만 수행하는 방법
  • 시스템이 메시지 수신자를 결정해 메세지 받은 수신자를 송신자에게 통지하는 방법

주소 공간을 공유하는 방법

서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 Shared Memory 메커니즘이 있습니다.

그림출처

프로세스들이 주소 공간의 일부를 공유한다.

  • 시스템 콜을 통해 서로 다른 프로세스들이 주소 공간 중 일부를 공유할 수 있도록 합니다.
  • 여러 프로세스가 읽고 쓸 수 있다.
  • 실제 구현은 프로세스 A와 B가 주소 공간을 독자적으로 갖지만, 공유 메모리 주소 영역에 대해서는 A, B 주소 공간을 동일한 물리적 메모리로 매핑하게 된다.
  • 프로세스 간 통신이 수월하다.
  • 데이터 일관성 문제가 유발될 수 있다.
  • 커널이 책임지지 않는다. 프로세스들끼리 직접 동기화해야 한다.

프로세스의 특성 분류

프로세스는 특성에 따라 다음 두 가지로 나눕니다.

I/O-bound process

  • CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job
  • 중간마다 I/O가 끼어들기 때문에 CPU bursts는 빈번하고 짧아지게 됩니다.

CPU-bound process

  • 계산 위주의 job
  • I/O가 끼어들지 않기 때문에 CPU bursts가 길고 빈번하지 않습니다.

CPU 스케쥴러 & Dispatcher

CPU 스케쥴러

  • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.

참고로 스케쥴러는 독립적인 SW나 HW같지만 운영체제 안에서 CPU 스케쥴링을 하는 코드부분을 말합니다.

Dispatcher

  • CPU의 제어권을 CPU 스케쥴러에 의해 선택된 프로세스에게 넘긴다.
  • 이 과정을 context switch(문맥 교환)라고 한다.

-참고 Kmook 이화여자 대학교 반효경 교수님 : 운영체제 강의