2013-05-08 2 views
6

학교 프로젝트로 x86 용 커널을 작성 중이며 (시뮬레이션을 위해 qemu를 사용합니다) 이상한 문제가 발생했습니다. 비록 내가 eflags 레지스터에 인터럽트 플래그를 설정했지만, 나는 어떤 클럭 인터럽트도받지 못하고있다. (나는 qemu info register 명령으로 검사했고, 이것이 eflag = 0x292라는 것을 의미한다).x86 하드웨어 qemu에서 인터럽트가 작동하지 않습니다.

사용자 모드에서 스핀 테스트 (while (1); program)를 실행할 때 클럭 인터럽트가 하나 발생하지만 멈 추면 qemu는 더 많은 시뮬레이션을 수행하지 않습니다! 다른 사람에게도 일어 났습니까? 인터럽트에 영향을 줄 수있는 또 다른 메커니즘이 있습니까? 누구나 단서가 있습니까?
Shai.

답변

3

분명히 x86에서 시계 인터럽트가 발생할 때마다이를 확인해야합니다. 예 : 매 클럭 인터럽트 후에 랩타임에 응답을 보내야합니다.

0

RTC에서 인터럽트가 예상되는 경우 먼저 REG_C (CMOS 레지스터 0x0C)에서 읽음으로써 이전 인터럽트를 확인해야합니다.

관련 문제