Nachos操作系統-rs與中斷(lab3)

這篇寫一下Nachos的中斷與時間片調度

關於時間片調度,我們只需要在執行時加入參數-rs即可,這樣在初始化的時候就會生成一個timer,並且可以在線程之間利用時間片進行切換

首先看下timer的定義

比較重要的參數是那個TimerInterruptHandler,是一個函數入口指針,是該定時器要執行的函數

該函數的目的就是將yieldOnReturn置爲True,便於os自己進行上下文的切換而不是進程主動調用yield函數

在timer初始化的時候,會主動向中斷隊列中加入一箇中斷

 

該TimerHandler函數除了執行該timer的指定函數以外,還會生成一個新的中斷加入到中斷隊列中,以此來模擬時鐘中斷的產生

那麼這些中斷又是如何形成線程切換的呢?

這個就要看SetLevel函數了,該函數調用了OneTick函數,模擬了時鐘的增長

CheckIfDue會檢查中斷隊列裏符合條件的中斷,如果符合條件就會予以執行,且timer所要執行的函數會將yieldOnReturn置爲True,也就導致了後面調用Yield進行線程的切換,這也是Nachos對於時鐘中斷的模擬

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章