본문 바로가기
CS/운영체제

[운영체제 OS] 동기 VS 비동기 / Blocking vs Non-Blocking

by 루시킴 2021. 8. 23.

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

https://sinsomi.tistory.com/entry/%EC%8B%A0%EC%9E%85-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EA%B0%9C%EB%85%90-%EC%B4%88%EC%BD%94%EB%8D%94

https://programming119.tistory.com/238

댓글