OS (Operating System)

[OS] Week04 - 2 (3/25) : mailbox, synchronization, buffer, thread, multi threading

FDEE 2021. 4. 17. 16:37

MailBox

- Process : 여러개의 MailBox에 연결이 가능

- MailBox : 여러개의 Process에 연결이 가능

- MailBox 연결 설정은 Programmer가 원하는 대로 설정

- send(A, message) : A mailbox에 메세지 전송

- receive(A, message) : A mailbox에서 메세지 수신

 

MailBox 특징 4가지

- 1. Allow a link to be associated with at most two processes : 두가지 process끼리 연결 가능

- 2. Broadcasting : mailbox에서 다른 process에 메세지 전달

- 3. Allow only one process to receive a message : 한 process만 수신받을 수 있다

- 4. Allow the sending process to select the receiver : 수신받을 process를 송신 process가 정할 수 있다

 

MailBox synchronization

- Blocking : synchronous : send 후 receive 될때까지 waiting 상태로 변환

- Non-blocking : asynchronous : send 후 바로 다음작업 실행

- Blocking receive : message가 수신될 때 까지 waiting 상태

- Nonblocking receive : waiting 상태 없이 항상 수신

 

Buffer 형태

- Zero capacity : message가 0개 : 정보가 불필요한 경우, 즉 송신여부만 필요한 경우 사용

- Bounded capacity : message 개수 유한개 : full되면 wait 된다

- Unbounded capacity : message 개수 무한개 : wait하지 않는다

 

Shared Momory VS Message Passing

- Message Passing (mailbox)

  1. inter-computer 간의 소통에 효과적

  2. smaller amounts data에 효과적

  3. system call이 빈번하기 때문에 time이 소요된다

  4. programming에 쉽다

- Shared Memory

  1. fast

  2. spinlock, hardcoding

  3. protection 기술이 필요하다 (spinlock)

 

 

4장 : Threads, Concurency

 

Multi-Threading motivation

- do not need to be serialized : 순차적인 수행이 불필요한 경우가 있다 : server

- fork : process를 자주 만들면 overhead가 발생한다 (PID, PCB, duplicate address space)

- 그러므로 공유 가능한 것들(code, data, file)을 공유하여 여러개의 thread로 사용

 

Benefits

- 1. Responsiveness : 응답성

  한 Process에서 Disk I/O가 발생시 Process가 통째로 waiting 상태가 된다

  이때, thread를 나누어 하나의 thread만 Disk I/O가 발생하면 다른 thread는 동작이 가능하다

- 2. Resource Sharing : 자원 공유

  code, data, file 를 공유하여 사용한다

- 3. Economy : 시간 경제적

  creation : Process 대비 thread가 30배 절약

  context switch : Process 대비 thread가 5배 절약

- 4. Utilization of Multi-Processor Architectures

  1 Process가 n개의 thread로 나뉘면 각 thread는 각 cpu에 할당이 가능

 

Process = set of threads + collection of resource (code, data, file)

 

Multicore-programming

- 1. Data parallelism : Same operation : 동일 data를 subset을 분산하여 연산

- 2. Task parallelism : Unique operation : 각기 다른 연산으로 분산

 

Concurrent execution : 동시간에 1 thread만 처리

Parallelism : 동시간에 2가지 이상의 thread가 병렬적으로 처리

 

Why multicore programming is difficult

- 1. Identifying task

- 2. Balance

- 3. Data splitting

- 4. Data dependency

- 5. Testing and debugging

 

Multi-threading Model

- Kernel thread : by operating system

- User thread : by thread library

- m개의 user thread가 하나의 kernel thread에 묶인 형태로 여러 kernel thread인 형태

  이때 user thread 묶음 하나의 thread block 되면 해당 kernel thread block 된다