[운영체제] Synchronous, Asynchronous, Blocking, Non-Blocking이란?

프로그래밍/운영체제2020. 12. 6. 14:27

동기, 비동기, 블락킹, 넌-블락킹에 대해서 간단하게 정리하려고 합니다.

 

Synchronou,s Asynchronous가 서로 반대되는 개념이고,

Blocking, Non-blocking이 서로 반대되는 개념인데.. 이 두 쌍이 상당히 비슷해 보입니다.

 

아래 참고쪽의 링크가 정리가 잘 되어 있어서 그 내용을 참고해서 제가 알고 있던 내용과.. 잘 조화를 시켰습니다.

 

동기 VS 비동기

Synchronous는 1개의 쓰레드에서 프로그램 코드가 실행되는 경우를 생각하면 될 것 같습니다. funcA()함수에서 httpRequest(), funcC()함수를 호출하는 아주 간단한 코드를 보겠습니다.

publicd void funcA(){
    httpRequest();
    funcB();
}

1개의 쓰레드에서 위의 작업이 실행된다면.. httpRequest()의 작업이 끝난 후 funcC() 작업이 실행됩니다. httpRequest() 함수가 서버로 request를 보내고 response를 받는 함수라면 이는 보통 수 초의 시간이 걸리게 됩니다. 그 동안 사용자는 계속 기다려야 하므로 화면이 멈췄다고 생각할 것입니다.

 

하지만 만약 httpRequest()가 다른 쓰레드에서 실행된다면 바로 funcB()함수가 실행되게 됩니다. 그래서 요즘은 httpRequest처럼 시간이 많이 걸리는 일은 반드시 새 쓰레드를 만들어 Asynchronous하게 실행시키라고 되어있는 경우가 상당히 많습니다.

 

여러 쓰레드가 사용되는 환경에서 특정 코드나 함수가 리소스 경합 등의 이유로 synchronous하게 실행되기를 원한다면 java의 경우 synchronous 블락을 사용하거나, 함수를 synchronous로 만들어서 하나의 쓰레드만 입장이 가능하도록 하기도 합니다.

 

Blocking VS Non-Blocking

동기 비동기와 상당히 헷갈리는 개념인데, 직접 처리할 수 없는 부분을 어떻게 처리하냐에 따라 달라집니다. I/O 동작에서 주로 적용되는 것 같습니다. 그래서 Blocking I/O, Nonblocking I/O로도 불리네요.

 

어플리케이션에서 어떤 파일을 읽어오는 함수를 실행했다고 가정하겠습니다. 그 파일은 용량이 상당히 커서 다 읽어오는데 수 초의 시간이 걸립니다. 이 경우 Blocking 방식으로 파일을 읽어온다면 어플리케이션은 control을 커널쪽으로 넘겨서 커널이 읽기 작업을 완료할 때까지 기다립니다. 읽기가 다 완료되면 그제서야 어플리케이션은 control을 넘겨 받아서 다시 일을 진행할 수 있습니다.

 

Nonblocking I/O로 동일한 파일 읽기가 진행되는 경우 읽기 함수를 실행해도 곧바로 control(제어권)이 어플리케이션에게 옵니다. 하지만 아직 커널은 파일을 읽는 중이므로 파일에 대한 내용을 얻을 수 없습니다. 커널에서 읽기 작업이 완료되면 어플리케이션에게 콜백처럼 알려주는 경우도 있으며(Asynchronous Non-Blocking I/O), 아니면.. 어플리케이션에서 주기적으로 읽기 작업이 완료됐는지 확인하는 경우도 있습니다.(Synchronous Non-Blocking I/O)

 

 

 

 

 

참고

velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx

 

Sync VS Async, Blocking VS Non-Blocking

1. Sync VS Async 먼저 Synchronous와 Asynchronous의 어원을 보자. Synchronous의 Syn는 together이란 뜻이고, chrono는 time이다. 따라서 Synchronous는 함께 시간을 맞춘다라는 뜻으로 해석된다. 반면에 A

velog.io

www.programmr.com/blogs/difference-between-asynchronous-and-non-blocking

faculty.salina.k-state.edu/tim/ossg/Device/blocking.html#:~:text=Most%20I%2FO%20requests%20are,the%20I%2FO%20is%20complete.&text=Blocking%20I%2FO%20system%20calls,the%20I%2FO%20is%20complete.

 

7.3. Blocking and Nonblocking I/O — Operating Systems Study Guide

7.3. Blocking and Nonblocking I/O Some control over how the wait for I/O to complete is accommodated is available to the programmer of user applications. Most I/O requests are considered blocking requests, meaning that control does not return to the applic

faculty.salina.k-state.edu

woowabros.github.io/experience/2020/02/19/introduce-shop-display.html

 

배달의민족 최전방 시스템! '가게노출 시스템'을 소개합니다. - 우아한형제들 기술 블로그

안녕하세요 우아한형제들 프론트검색서비스팀 권용근입니다.

woowabros.github.io

 

작성자

Posted by 드리머즈

관련 글

댓글 영역