해결된 질문
작성
·
255
·
수정됨
1
안녕하세요 감자님. 이번 강의를 수강하면서 몇가지 질문이 있어서 남겨봅니다.
폴링방식과 인터럽트 방식에 대해 설명을 해주셨는데 0:15 시간대에서 "CPU는 입출력 명령이 들어오면 입출력 관리자에게 입출력 명령을 내린다"라고 말씀을 해주셨는데 이 부분은 폴링방식과 인터럽트 방식 공통적으로 적용되고 폴링은 일정주기마다 CPU가 확인하는 방식이고 인터럽트 방식은 입출력관리자가 인터럽트 신호를 CPU에게 전달하여 CPU가 ISR을 실행하는 방식인건가요? 제가 이해하는게 맞는지 궁금합니다.
그리고 만약 위에 이해한게 맞다면 "CPU는 입출력 명령이 들어오면 입출력 관리자에게 입출력 명령을 내린다"에서 입출력 명령이 들어오는지 어떻게 확인이 가능할까요?
그리고 인터럽트 방식에서 입출력 관리자에게 입출력 명령을 내리고 CPU는 다른 일을 한다고 했는데 제가 다른데에서 찾아보기론 다른 일을 안하고 기다리는 경우도 있다고 들었습니다. 기다리는 방식을 blocking I/O 다른 일을 하는 경우를 non-blocking I/O라고 들었던것 같은데 맞는걸까요?
답변 1
1
안녕하세요 양성빈님!
인터럽트에 대해서 궁금증이 생기셨군요.
네 맞습니다.
ISR는 프로그램 내(램에 위치) 특정 주소에 저장되어 있어 해당 이벤트가 발생하면 ISR의 위치로 점프하면서 ISR를 실행하고 원래 실행하던 코드로 돌아와 동작을 하게됩니다.
입출력 명령은 운영체제의 시스템 콜을 이용합니다. 만약 파일을 열고 싶다면 시스템 콜 함수인 open() 함수를 이용하면 운영체제는 사용자가 파일을 오픈한다는 것을 알 수 있습니다.
맞습니다. I/O 작업도 요청을 계속 기다리는 Blocknig I/O, Non Blocking I/O등이 있습니다.
이 외에도 동기, 비동기가 있는데 이들 조합을 잘 설명한 글이 있어서 링크 남겨드리겠습니다.
궁금증이 해결되셨나요? 😄
감자님 설명 감사합니다! 주신 링크도 참조해서 복습해보도록 하겠습니다!