Note :
용어가 헷갈릴 수 있기 때문에동기 & 비동기는 시간 관점, Blocking & Non-Blocking은 제어권 관점에서 생각하기
동기 (Synchronous)
요청과 그 결과가 동시에 일어나는 것. 요청 후 결과가 와야만이 그 다음 작업이 이루어지는 방식.
특징
간단하고 직관적
어떠한 일을 처리하는 동안 다른 일을 하지 못함
작업 완료여부를 호출한 쪽에서 신경 씀
비동기 (Asynchronous)
요청과 그 결과가 동시에 일어나지 않는 것. 요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식.
특징
동기보다 복잡
어떠한 일을 처리하는 동안 다른 일을 할수 있어 자원을 효율적으로 사용
작업 완료여부를 호출된 쪽에서 신경 씀
Blocking I/O
호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 함
Non-Blocking I/O
호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 함
Blocking I/O & Synchronous와 Non-Blocking I/O & Asynchronous는 서로 비슷한 개념이므로 생략
Non-Blocking I/O & Synchronous
Non-Blocking은 바로 리턴을 해서 제어권을 넘겨주고, Sync는 작업완료 여부를 호출한 쪽에서 신경을 씀.
즉, 호출을 하고 바로 반환이 되고, 다른 일을 수행하는데 작업이 완료되었는지 계속 물어보는 일을 추가로 수행한다.
Blocking I/O & Asynchronous
Blocking은 작업이 끝날때까지 제어권을 계속 가지고, Async는 작업완료 여부를 호출된 쪽에서 신경을 씀.
이 방식은 특별한 장점이 없어 일부러 사용되진 않음.
References
'CS > 운영체제' 카테고리의 다른 글
[운영체제 OS] Memory 구조 (0) | 2021.08.25 |
---|---|
[운영체제 OS] Kernel Thread vs User Thread (0) | 2021.08.23 |
[운영체제 OS] Deadlock (교착상태) (0) | 2021.08.23 |
[운영체제 OS] Synchronization (0) | 2021.08.23 |
[운영체제 OS] Process vs Thread (2) | 2021.08.21 |
댓글