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 |