OS 李治軍 L25 記憶體換出

2022-08-10 23:36:21 字數 1103 閱讀 7425

有換入就應該有換出!等價交換!

必須要選擇乙個頁換出,選擇哪一頁淘汰emm?

下面介紹淘汰演算法。

一、fifo

先來的先走。

二、min

記憶體當中,將來最久沒有使用過的page滾蛋。

效果很好,但是我們做不到,我們不知道將來會有什麼東西過來。

三、lru

用過去的歷史**我來,選最近最長一段時間沒有使用過的頁面淘汰。

這利用了程式的區域性性原理。

實現:每個頁上維護乙個時間戳。將時間戳小的踢出去!但可行性低,因為實現代價大,要維護乙個表,每執行一條指令,就要改表,需要花較多的時間。而且可能時間戳會發生溢位。

近似實現clock演算法:每個頁上增加乙個引用位,並且形成乙個環形鍊錶。每次訪問過一頁的時候,將其set為1。在淘汰的時候,如果是1就清0並找下一位。就是說,被使用過的頁面有一次復活機會。這個近似的目標是,換出最近沒有被使用的乙個頁面出去。

但如果缺頁很少,會發生什麼?大量的引用位是1,極端一點變成全部都是1,變成每次按順序的換出,退化成fifo。

原因**於,記錄了太長的歷史資訊,雨露均沾大家全是1,因此要定時清除1。這樣一看更像clock了,大霧。

還有乙個問題的,要給程序分配多少頁框?

分配得多,我們的演算法就沒有用了

分配的少,cpu利用率會出問題,出現頁面抖動的現象

OS 李治軍 L23 段頁結合的實際記憶體管理

底層希望段管理,使用者希望頁管理.如何結合呢?這就引出了虛擬記憶體的概念。我們設定一種位址空間,稱之為虛擬記憶體,向上,可以為使用者提供段 向下,將段對映到物理幀上。對使用者來說,是段的使用,對物理記憶體來說,是頁的使用。定址 使用者給出cs ip,先查段表,訪問某個段內的東西,得到乙個虛擬位址 然...

OS 李治軍 L28 生磁碟的使用

磁碟具有更複雜的結構,在作業系統內有著更為複雜的抽象層次,這裡的生 raw 是讓disk跑起來的意思。可以將磁碟的結構理解為多個原片疊起來的柱面,我們用以下的引數取描述乙個磁碟 理論上,我們要操控乙個磁碟,就要對其控制器發出指令,控制磁頭的電機,使磁頭移動到相應的軌道上去 找到乙個柱面 然後開始旋轉...

OS 李治軍 L8 CPU管理的想法

作業系統核心 管理硬體 管理cpu 引出多程序影象 作業系統核心影象 自動取指令執行,給個位址,從記憶體中取出指令執行,並且是自動向下執行。看一眼菜譜,做一步工作。設定好pc初值就可以了,剩下cpu會往下工作。管理cpu 設定pc的初值 有乙個問題 有io指令的速度遠遠小於存計算指令,io特別慢。如...