OS와 하드웨어
인터럽트나 예외 처리를 마치고 원래 프로그램으로 돌아갈 때, 일반 함수의 복귀 명령이 아니라 전용 복귀 명령(RISC-V의 sret, mret 등)을 사용하는 이유는 무엇입니까?
- A전용 명령이 명령 길이가 더 짧기 때문에
- B복귀 주소에 더해 모드와 인터럽트 상태도 되돌리기 때문에
- C일반 복귀 명령으로는 핸들러에서 복귀 주소를 알 수 없기 때문에
정답과 해설 보기
정답: B. 복귀 주소에 더해 모드와 인터럽트 상태도 되돌리기 때문에
예외나 인터럽트가 발생하면 CPU는 복귀 주소 외에 그때까지의 동작 모드와 인터럽트가 허용되어 있었는지 여부를 전용 레지스터에 저장하고 특권 모드에 들어갑니다. 돌아갈 때는 이것들을 동시에 되돌리고 사용자 모드로 낮춘 뒤 원래 명령으로 진행하지 않으면, 특권 상태로 실행이 계속될 위험이 있습니다. 전용 복귀 명령은 이를 한 명령으로 불가분하게 수행합니다. 명령 길이의 문제가 아니며, 복귀 주소는 저장된 레지스터로 알 수 있습니다.
- A. 명령 길이는 이유가 아닙니다.
- B. 올바릅니다. 모드와 인터럽트 상태도 동시에 되돌려야 합니다.
- C. 복귀 주소는 전용 레지스터에 저장되어 있어 알 수 있습니다.