[OS] Day3

프로세스의 생성

  • UNIX 기반 OS에서는 fork() system call을 호출해서 프로세스를 생성한다.
  • fork()는 자식 프로세스를 생성하는 system call이기 때문에 부모 프로세스의 주소 공간을 복사한다.
  • fork()한 이후 부모 프로세스를 진행할 수도 있고, 자식 프로세스가 종료되는 것을 wait()할 수도 있다.
  • wait()를 호출하면 자식 프로세스가 종료될 때까지 블록 상태로 기다렸다가 종료되면 블록이 풀린다.

프로세스 생성 횟수

fork()를 n 번 했을 때 생성된 프로세스도 다음 fork() 내용을 수행하기 때문에 총 실행되는 프로세스의 수는 2^n이 된다.

 

IPC

동시에 여러 프로세스가 실행될 때 프로세스는 독립적으로 실행될 수도 있고, 서로 협력하여 실행할 수도 있다.

Independent  Process 끼리는 데이터를 공유하지도 않고 각자 할 일을 하지만, coordinating Process는 서로 메세지를 주고 받으며 데이터를 공유하므로 서로에게 영향을 줄 수 있다.

이런 coorperating process 간 통신을 IPC(Inter Process Communication)라고 한다.

 

Shared Memory (a)

모든 프로세스가 공유하는 메모리 자원으로 같은 데이터를 사용하므로써 서로에게 영향을 줄 수 있다.

각 프로세스는 고유한 메모리 영역을 가지고 있으며 고유 영역은 다른 프로세스가 접근할 수 없다. 따라서 데이터를 공유하기 위해서는 공유할 수 있는 메모리 영역이 필요다. 이 영역을 Shared Memory라고 부른다.

 

Message passing (b)

Message queue를 통해 A가 데이터를 넣고, B가 데이터를 가져올 수 있다.

Messaging passing 방식은 P1이 P2에게 send()하면 OS가 내부적으로 P2에게 메세지를 보낸다. 메세지를 주고받을 때는 아래 두 가지 방식이 있다.

  • Blocking: 송신 또는 수신이 완료될 때까지 Block 된 상태로 기다리는 방식
  • Non-Blocking: 송신 또는 수신이 완료될 때까지 다른 일을 계속 진행하는 방식

 

Producer Consumer Problem

Shared Memory와 Massage passing 방식에서 발생할 수 있는 문제이다.

생성자의 생성 속도가 소비자의 소비 속도보다 빠르면 Buffer가 가득차서 오버플러우가 발생할 수 있고, 반대로 소비자의 속도보다 생성자가 너무 느리면 소비자가 계속 기다려야하는 문제가 발생한다.

'개념 정리 > OS' 카테고리의 다른 글

[OS]Day6  (0) 2023.08.16
[OS]Day5  (0) 2023.08.14
[OS]Day4  (0) 2023.08.10
[OS] Day2  (0) 2023.08.08
[OS] Day 1  (0) 2023.08.08