면접 질문 정리 - OS(운영체제) [동기 VS 비동기 / Blocking VS Non-Blocking]

코난·2024년 2월 25일
0

CS 면접 정리

목록 보기
33/67

동기 VS 비동기 (시간 관점)

동기란?

Synchronous는 현재 작업의 응답과 다음 작업의 요청이 동시에 일어나는 것이다. 요청과 그 결과가 동시에 일어나는 것이다. 요청 후 결과가 와야만 그 다음 작업이 이루어지는 방식이다.

  • 특징
    • 간단하고 직관적
    • 어떠한 일이 처리되는 동안 다른 일을 하지 못함
    • 작업 완료여부를 호출한 쪽에서 신경씀

비동기란?

Asynchronous는 현재 작업의 응답과 다음 작업의 요청이 동시에 일어나지 않는 것이다. 요청과 그 결과가 동시에 일어나지 않는 것이다. 요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식이다.

  • 특징
    • 동기보다 복잡함
    • 어떠한 일을 처리하는 동안 다른 일을 할 수 있어 자원의 효율적인 사용이 가능
    • 작업 완료여부를 호출된 쪽에서 신경씀

Blocking VS Non-Blocking (제어권 관점)

Blocking I/O

호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 한다. 즉, 다른 함수가 작업을 하지 못하도록 제어권을 계속 가지고 있는 것이다.

Non-Blocking I/O

호출된 함수가 바로 return해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 한다. 호출된 함수가 자신의 할 일을 모두 마치지 않더라도 바로 제어권을 리턴해주는 것이다.

Sync VS Async / Blocking VS Non-Blocking

Sync & Blocking

순서대로 진행되어야 하고, 제어권이 넘어갔기에 대기 시간 발생

Sync & Non-Blocking

순서대로 진행되어야 하고, 제어권이 넘어가지는 않았기 때문에 계속적으로 완료 확인

Async & Blocking

순서대로 진행되지 않아도 괜찮지만 제어권이 넘어갔기에 대기 시간 발생

Async & Non-Blocking

순서대로 진행되지 않아도 괜찮고, 제어권이 넘어가지도 않았기에 호출하고 작업을 하고 있다가 완료시 콜백


참고

https://dev-coco.tistory.com/162
https://velog.io/@soyeon207/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-blocking-non-blocking
https://lu-coding.tistory.com/15

profile
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!

0개의 댓글