728x90
블로킹/논블로킹
블로킹(Blocking, 타 작업 수행 차단)
- 특정 작업이 실행 요청을 받아서 실행하는 동안 다른 작업은 진행하지 못하고 대기하는 방식을 의미한다.
- 제어권이 호출된 함수에게 넘어가서 호출된 함수 내에서 작업이 모두 끝난 후 값이 리턴되고, 호출한 함수에게 다시 제어권이 넘어온다.
- 작업이 순차적으로 이루어지므로 작업 흐름을 쉽게 이해할 수 있다는 장점이 있다.
- 블로킹이 이루어지는 동안 하드웨어 리소스를 효율적으로 이용하지 못한다는 단점이 있고, 특히 블로킹이 일어나는 작업이 오래 걸리는 작업인 경우에 이러한 단점은 더욱 부각된다.
논블로킹(Non-Blocking, 타 작업 수행 허용)
- 특정 작업이 이미 수행중이여도, 그것과 상관없이 바로 다른 작업을 수행 시키는 방식을 의미한다.
- 제어권은 계속 호출한 함수에 있고, 값의 리턴이 함수의 실행과 동시에 이루어진다.
- 리소스가 낭비되는 시간이 없으므로, 하드웨어 리소스를 효율적으로 이용할 수 있다.
- 작업 흐름이 복잡해져서 이해가 쉽지 않다는 단점이 있다.
동기/비동기, 블로킹/논블로킹 조합
동기/블로킹
- 실행 흐름이 순차적이고 프로그램을 제어하기 쉽다.
- 호출한 함수는 호출된 함수의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
동기/논 블로킹
- 호출한 함수는 호출된 함수의 작업이 끝날 때까지 기다리며 그 동안 다른 작업을 진행 할 수 있다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업 완료 여부를 지속적으로 확인하면서 자신의 일을 한다.
비동기/블로킹
- 호출한 함수는 호출된 함수의 작업 완료에 신경쓰지 않지만 호출된 함수가 작업을 완료 할 때까지 아무것도 하지 않는다.
- 팀장은 A사원에게 어떤 작업을 시켰는데, A사원이 계속 작업 관련해서 팀장을 붙들고 있고, A사원의 작업이 끝날 때까지 팀장을 놓아주지 않는다.
비동기/논 블로킹
- 호출한 함수는 호출된 함수의 작업 완료 여부는 신경쓰지 않고 자신의 작업을 진행한다.
- 팀장은 A사원에게 어떤 작업을 시킨 후 자신은 다른 업무를 보기 시작한다. 이후 A사원이 일을 마친 후 팀장에게 보고한다.
- 가장 효율적인 방식이다.
참조
[운영체제] 동기와 비동기, 블로킹과 논블로킹
동기와 비동기 동기(Synchronous, 동시에 발생) 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다. 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리
wookkingkim.tistory.com
728x90
'Computer > CS' 카테고리의 다른 글
페이지 테이블(Page Table) (0) | 2024.03.22 |
---|---|
가상 메모리(Virtual Memory) (0) | 2024.03.22 |
동기/비동기 (0) | 2024.03.12 |
32 bit OS vs 64 bit OS (0) | 2024.03.11 |
Rax Register (0) | 2024.03.11 |