0
곧 출시 될 OS를위한 간단한 커널을 개발 중입니다. 나는 스케줄러까지 모든 것을 개발했다. 스케줄러가 어떻게 순환되는지 궁금합니다. 예를 들어OS 스케줄러는 어떻게 되나요?
,
- 타이머 인터럽트 화재.
- 처리기가 스케줄러를 호출합니다.
- 스케줄러는 큐의 다음 프로세스를 건너 뜁니다.
- 인터럽트는 (IRETD)을 반환
해야하지만 스케줄러가 인터럽트 복귀를 수행 할 때 한 후 다음 공정으로 이동해야하는 경우. 그리고 만약 그렇다면, 그것은 마지막 과정으로 돌아 가지 않을 것입니다.
내가 알기를 원하는 것은 - 타이머 인터럽트가 스케줄러에서 어떻게 되돌아오고, 스케줄러가 타이머 인터럽트와 어떻게 통신 하는가? (함수 호출을 가지고 있다면, 언제 리턴 할까?)
는 가정 - 모노 리식 커널
I의 인터럽트 상태에 스택
스케줄러 프로세스가 완료 'IRETD 지침의 특성에 익숙하지 않지만, 명령 포인터와 다른 레지스터를 일부 스택에서 다시 시작하여 다시 시작해야한다고 가정합니다. 내가 본 방식대로, 당신은 IRETD가 필요로하는 것을 튀어 오르게 할 때 중단 된 것 대신에 새로운 프로세스를 효과적으로 다시 시작할 수 있도록 그 스택의 값을 변경해야합니다. x86 명령어 세트의 그 부분을 공부하지 않고서는 구체적으로 설명 할 수는 없습니다. 내 취미 프로젝트는 주로 ARM을 기반으로하는 취미 프로젝트 (https://bitbucket.org/ruifig/g4devkit)에서 비롯됩니다. – RuiFig