Przełączanie kontekstu - makro switch_to
Aleksander Zalewski
Listopad 2001
Przy wywołaniu funkcji schedule()
[w wyniku obsługi przerwania, bądź obsługi wywołania systemowego]
może wystąpić potrzeba zmiany kontekstu (zmiana aktualnie wykonywanego procesu)
makro switch_to :
- zapamiętanie rejestrów ESI, EDI, EBP
- wymiana stosu starego procesu na stos nowego procesu (rejestr ESP)
- wywołanie funkcji __switch_to:
- ewentualne zapamiętanie stanu koprocesora (jeśli był używany)
- wymiana rejestrów FS i GS (segmenty procesu)
- jeśli proces wykonuje się w trybie debug, to są ładowane rejestry debugreg
- odczyt rejestrów EBP, EDI, ESI teraz już bieżącego procesu
Pozostałe rejestry są odtwarzane przy powrocie z funkcji systemowej
lub funkcji obsługi przerwania. (to samo dotyczy zapisu)