OS와 하드웨어

인터럽트나 예외 처리를 마치고 원래 프로그램으로 돌아갈 때, 일반 함수의 복귀 명령이 아니라 전용 복귀 명령(RISC-V의 sret, mret 등)을 사용하는 이유는 무엇입니까?

  1. A전용 명령이 명령 길이가 더 짧기 때문에
  2. B복귀 주소에 더해 모드와 인터럽트 상태도 되돌리기 때문에
  3. C일반 복귀 명령으로는 핸들러에서 복귀 주소를 알 수 없기 때문에
정답과 해설 보기

정답: B. 복귀 주소에 더해 모드와 인터럽트 상태도 되돌리기 때문에

예외나 인터럽트가 발생하면 CPU는 복귀 주소 외에 그때까지의 동작 모드와 인터럽트가 허용되어 있었는지 여부를 전용 레지스터에 저장하고 특권 모드에 들어갑니다. 돌아갈 때는 이것들을 동시에 되돌리고 사용자 모드로 낮춘 뒤 원래 명령으로 진행하지 않으면, 특권 상태로 실행이 계속될 위험이 있습니다. 전용 복귀 명령은 이를 한 명령으로 불가분하게 수행합니다. 명령 길이의 문제가 아니며, 복귀 주소는 저장된 레지스터로 알 수 있습니다.

  • A. 명령 길이는 이유가 아닙니다.
  • B. 올바릅니다. 모드와 인터럽트 상태도 동시에 되돌려야 합니다.
  • C. 복귀 주소는 전용 레지스터에 저장되어 있어 알 수 있습니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. 실시간성이 요구되는 시스템에서, 인터럽트가 발생하고 나서 핸들러가 동작하기 시작할 때까지의 시간(인터럽트 지연)을 크게 만드는 요인으로 가장 적절한 것은 무엇입니까?
  2. NMI(마스크 불가능 인터럽트, non-maskable interrupt)에 대한 설명으로 올바른 것은 무엇입니까?
  3. 여러 코어를 가진 시스템에서 OS가 어떤 페이지의 페이지 테이블 항목을 고쳐 써서 대응을 취소했을 때 필요한 처리로 올바른 것은 무엇입니까?
  4. 프로그램이 OS가 할당하지 않은 주소에 접근했을 때 일반적으로 일어나는 일은 무엇입니까?
  5. 파일을 메모리에 대응시키는(mmap과 같은) 구조에서 파일 내용을 읽을 때 일어나는 일에 대한 설명으로 올바른 것은 무엇입니까?

이 분야의 비교