[운영체제] 동기와 비동기

혀니앤·2022년 10월 12일
0

컴퓨터 지식 공부

목록 보기
5/10

I/O 모델

  • Application에서 I/O 작업을 할 수 없어, Kernal(OS) 에게 I/O 작업을 요청해야 한다
  • 이때 Block 되어있는 시간동안 CPU가 낭비되기 때문에 이 부분을 개선하기 위해 필요함

동기 (Synchronous)

  • 작업을 요청한 후 결과가 나올 때까지 기다림
  • Blocking
    • I/O가 끝날 때까지 대기하게 됨
    • 유저 프로세스는 작업을 중단하고 대기함
    • CPU를 쓰고 있지 않기 때문에 CPU 자원 낭비가 심함

Non-Blocking

  • 방식. 유저 프로세스의 작업을 중단하지 않음
  • 커널에서는 함수 진행과 관계없이 결과를 바로 반환 (반환할 수 있는 순간 가져올 수 있는 데이터. 계속해서 데이터를 받아오는 것)
  • 클라이언트가 원하는 값이 되었는지 계속해서 확인해야 한다는 단점. CPU 부하 발생 가능

비동기(ASynchronous)

  • 이벤트 통지 모델. Non-Blocking 방식이 CPU 부하를 가져오므로, 이를 해결하기 위해 고안
  • 데이터가 준비되면 콜백, 이벤트를 발생시켜 애플리케이션에 알리기 Notify
  • 작업을 요청하고 다른 일을 하다가 작업이 완료되면 그때 나머지 작업을 처리함 (IO 작업이 끝나면 Handler를 사용해 처리)

동기 vs 비동기

  • 시스템 콜의 완료를 기다리면 동기, 아니면 비동기

Non-Blocking vs 비동기

  • 계속해서 데이터 값을 체크하면 Non-Blocking

Blocking vs Non-Blocking

  • 대기큐에 들어가서 시스템 콜이 끝나고 응답하면 Blocking

동기 vs Blocking

  • 둘다 시스템 콜의 반환을 기다림

참고

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS#동기와-비동기의-차이

https://asfirstalways.tistory.com/348

profile
일단 시작하기

0개의 댓글