비동기2 Blocking , NonBolocking 동기(Synchronous) vs 비동기(Asynchronous) 동기(Synchronous) Thread1이 작업을 시작 시키고, Task1이 끝날때까지 기다렸다 Task2를 시작한다. 작업 요청을 했을 때 요청의 결과값(return)을 직접 받는 것이다. 요청의 결과값이 return값과 동일하다. 호출한 함수가 작업 완료를 신경 쓴다. 비동기(Asynchronous) Thread1이 작업을 시작 시키고, 완료를 기다리지 않고, Thread1은 다른 일을 처리할 수 있다. 작업 요청을 했을 때 요청의 결과값(return)을 간접적으로 받는 것이다. 요청의 결과값이 return값과 다를 수 있다. 해당 요청 작업은 별도의 스레드에서 실행하게 된다. 콜백을 통한 처리가 비동기 처리라고 할 수 있다. 호출된.. JAVA 2021. 5. 23. Blocking, Non-Blocking and Async Blocking I/O Model I/O 작업은 User level(application)에서 직접 수행할 수 없기에, 실제 작업은 Kernel Level(OS)에서 일어나는 과정이다. 따라서 유저 프로세스(application)는 커널(OS)에게 I/O 작업에 대해 요청한다. I/O 작업이 끝나고 데이터를 반환하게 되면 그때가 돼서야 애플리케이션 단의 스레드의 block이 해제된다. 애플리케이션의 관점에서는 아무런 동작은 안하는 것처럼 보인다. 하지만 실제로 I/O 작업을 하느라 Block이 되어 있고 커널에서 작업을 하고 있기 때문에 렉이 걸린 것처럼 보이는 것이다. 이 block되어 기다리는 시간이 이 Blocking I/O 문제이며 개선되어야 할 포인트다. Syncronous, Blocking I.. CS/OperatingSystem 2021. 4. 21. 이전 1 다음