CS/운영체제

동기와 비동기, 블로킹과 논블로킹

12.tka 2021. 1. 7. 16:49
728x90

목표

동기와 비동기의 개념을 이해할 수 있다.
블로킹과 논블로킹의 개념을 이해할 수 있다.
동기/비동기와 블로킹/논블로킹의 차이점을 설명할 수 있다.

동기/비동기

동기/비동기는 작업을 수행하는 주체 간의 시간적 연관성과 관련된 작업입니다. 이때 작업을 수행하는 주체 사이에 시간적 연관성이 있으면 동기, 연관성이 없으면 비동기입니다.

동기(Synchronous)

  • 요청과 그 결과가 동시에 일어나는 작업입니다. 여기서 말하는 동시란 요청하는 순간 결과가 바로 나와야 한다는 뜻이 아니라 요청과 결과가 한 자리에서 동시에 일어남을 의미합니다.
  • 작업을 수행하는 주체들이 서로 동시에 수행하거나, 동시에 끝나거나, 하나의 수행 결과가 다른 수행 결과의 시작점이 되는 작업입니다.

비동기(Asynchronous)

  • 요청과 결과가 동시에 일어나지 않아도 되는 작업입니다.
  • 작업을 수행하는 주체들이 서로의 시작, 종료시간과는 관계없이 별도의 시작/종료시간을 갖습니다.

 

블로킹/논블로킹

블로킹/논블로킹은 제어권과 관련 있는 작업입니다. 블로킹은 자신의 수행 결과가 끝날 때까지 제어권을 갖고 있으며 논블로킹은 자신이 호출되었을 때 제어권을 자신을 호출한 쪽으로 넘기며, 자신을 호출한 쪽에서 다른 일을 할 수 있도록 합니다.

블로킹(Blocking)

  • 자신의 수행 결과가 끝날 때까지 제어권을 갖고 있습니다.
  • 만약 블로킹 방식으로 함수 안에서 다른 함수를 호출한다면 호출한 함수가 끝날 때까지 기다렸다가 다시 자신의 작업을 수행해야 합니다.

논블로킹(Non-Blocking)

  • 자신이 호출되었을 때 제어권을 자신을 호출한 쪽으로 넘기며, 자신의 호출한 쪽에서 다른 일을 할 수 있도록 합니다.
728x90

'CS > 운영체제' 카테고리의 다른 글

폰 노이만 구조  (2) 2021.01.21
스케줄링이란?  (0) 2021.01.06
식사하는 철학자 문제(Dining Philosopher Problem)  (0) 2021.01.05
교착 상태(Deadlock)  (0) 2021.01.05
프로세스와 스레드  (0) 2020.12.29