OS와 하드웨어

실시간성이 요구되는 시스템에서, 인터럽트가 발생하고 나서 핸들러가 동작하기 시작할 때까지의 시간(인터럽트 지연)을 크게 만드는 요인으로 가장 적절한 것은 무엇입니까?

  1. A인터럽트 핸들러 안의 처리를 가능한 한 짧게 하고 있는 것
  2. B우선순위가 높은 인터럽트가 낮은 인터럽트를 중단할 수 있게 하고 있는 것
  3. C커널 안에 인터럽트를 금지한 채 긴 처리를 하는 구간이 있는 것
정답과 해설 보기

정답: C. 커널 안에 인터럽트를 금지한 채 긴 처리를 하는 구간이 있는 것

인터럽트가 금지되어 있는 동안에는 아무리 급한 인터럽트라도 받아들일 수 없으므로, 최악의 인터럽트 지연은 가장 긴 인터럽트 금지 구간의 길이로 결정됩니다. 실시간성을 확보하려면 인터럽트를 금지하는 구간을 짧게 하고, 시간이 걸리는 처리는 인터럽트를 허용한 상태에서 수행합니다. 핸들러를 짧게 하는 것이나 우선순위가 높은 인터럽트가 낮은 인터럽트를 중단할 수 있게 하는 것(다중 인터럽트)은 지연을 줄이는 방법이지 키우는 요인이 아닙니다.

  • A. 핸들러를 짧게 하는 것은 지연을 줄이는 방법입니다.
  • B. 우선순위에 의한 중단은 급한 인터럽트의 지연을 줄입니다.
  • C. 올바릅니다. 긴 인터럽트 금지 구간이 최악의 지연을 결정합니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. NMI(마스크 불가능 인터럽트, non-maskable interrupt)에 대한 설명으로 올바른 것은 무엇입니까?
  2. 여러 코어를 가진 시스템에서 OS가 어떤 페이지의 페이지 테이블 항목을 고쳐 써서 대응을 취소했을 때 필요한 처리로 올바른 것은 무엇입니까?
  3. 프로그램이 OS가 할당하지 않은 주소에 접근했을 때 일반적으로 일어나는 일은 무엇입니까?
  4. 파일을 메모리에 대응시키는(mmap과 같은) 구조에서 파일 내용을 읽을 때 일어나는 일에 대한 설명으로 올바른 것은 무엇입니까?
  5. 작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는 무엇입니까?

이 분야의 비교