這章基本分爲兩個部分,第一部分是講虛擬內存,第二部分講動態內存分配,目前只看完第一部分。緩存
david的課仍是老樣子,講的一塌糊塗,助教小哥ben spinelli的recitation也仍是一如以往的通透。翻譯
基本上虛擬內存就是相似於內存和磁盤之間的cach,爲了讓每一個進程都覺得本身對內存有着完全的控制,就須要給他們每一個都設置本身的虛擬地址,而頁表和虛擬內存就是用來管理虛擬地址和物理地址之間的映射關係的。進程
固然,另一個做用是咱們須要的內存比實際擁有的內存更多,因此須要拿一些磁盤充做內存來湊數,而後經過系統技巧讓cpu大部分時候處理的仍然是內存,只有少部分page fault(和cache miss是一個意思)時才須要到磁盤裏load數據。內存
cpu操做的是虛擬地址,而後經過頁表以及其餘的一套辦法把它翻譯成物理地址,並檢查它是否緩存在內存中。ci
具體翻譯的辦法是,頁表檢查虛擬地址的低位,而後把其高位按某種對應關係映射爲相應的鼓勵地址,再結合低位就成了物理地址。因此其實頁表自己的儲存內容,也就是頁自己的大小,也就是那幾個做用相似index的低位而已。it
值得一提的是在真正翻譯以前,通常要先檢查一個tlb硬件,這個就是至關於一個小cache,有本身的index和tag,利用locality減小翻譯次數的。io
具體內容書上有,雖然講的也不太明白就是了(david真的是,課講的爛,書寫的也沒思路)。若是之後忘了的話就重看一下,也能夠結合ben的recitation來看。硬件