內存
存儲器
內存主要分為三種儲存器
一、隨機存儲器(RAM):
可以從中讀取數據,也可以寫入,當斷電時所有數據丟失。
二、只讀存儲器(ROM):
一般只用作讀取,不能寫入,當機器停電時不會丟失數據。
三、Cache高速緩存:
位於內存和CPU之間,是一個讀寫速度比內存更快的存儲器,CPU會優先從高速緩存中讀取數據,然后再去讀取內存。
內存管理
地址轉換:將邏輯地址轉換為響應的物理地址。
一、連續分配管理模式:
連續分配管理方式是指為一個用戶程序分配一個連續的內存空間,常見的如塊式管理
塊式管理:將內存分為幾個固定大小的塊,每個塊中只包含一個進程。如果程序運行需要內存的話,操作系統就分配給它一塊,如果程序運行只需要很小的空間的話,分配的這塊內存很大一部分幾乎被浪費了。這些在每個塊中未被利用的空間,我們稱之為碎片
二、非連續分配管理方式:
非連續分配管理方式允許一個程序使用的內存分布在離散或者說不相鄰的內存中
頁式管理:把主存分為大小相等並且固定的一頁一頁的形式,頁較小,相對相比於塊式管理的划分力度更大,提高了內存利用率。通過頁表對應邏輯地址和物理地址
段式管理:頁式管理雖然提高了內存利用率,但是頁式管理其中的頁實際並無任何實際意義。 段式管理把主存分為一段段的,每一段的空間又要比一頁的空間大 。但是,最重要的是段是有實際意義的,每個段定義了一組邏輯信息,例如,有主程序段 MAIN、子程序段 X、數據段 D 及棧段 S 等。 段式管理通過段表對應邏輯地址和物理地址
段頁式管理機制 :段頁式管理機制結合了段式管理和頁式管理的優點。簡單來說段頁式管理機制就是把主存先分成若干段,每個段又分成若干頁,也就是說段頁式管理機制中段與段之間以及段的內部的都是離散的。
分頁和分段的共同點和區別
共同點:
1.都可以提高內存利用率,減少內存碎片。
2.段和頁都是離散存儲的,但是每個段和頁中的內存是連續存儲的。
不同點:
1.分頁是出於方便系統管理的目的,他是信息的物理單位;分段是為了更好的滿足用戶的需要,他是信息的邏輯單位,它含有一組意義相對完整的信息。
2.大小不同:頁的大小固定並且由系統決定,段的大小不固定,由其完成功能的需要決定。
3.地址空間不同:段提供的是二維空間,頁提供一維空間。
4.信息共享:段是信息的邏輯單位,便於存儲和保護信息的共享,頁的保護和共享受到限制。
5.內存碎片:頁式存儲管理的優點是沒有外碎片,但是會產生內碎片(頁面內可能填充不滿),段式管理是沒有內碎片,但是會存在外碎片。
基本分頁儲存管理模式
虛擬地址到物理地址的轉換(快表)
頁表:程序存儲在不同的頁面中,頁面又離散分布在內存中,那么就需要一個頁表來記錄邏輯地址和物理地址之間的映射關系。
訪問分頁需要兩次訪問:第一次從內存中找到頁表,然后找到頁面的物理塊號,加上頁內偏移得到實際物理地址;第二次根據第一次得到的物理地址訪問內存取出數據。
快表:為了解決兩次訪問內存的效率問題,當要訪問內存數據的時候,首先將頁號在快表中查詢,如果查找到說明要訪問的頁表在快表中,那么直接從快表中讀取響應的物理塊號,如果沒有找到則從頁表中查找,並將物理地址加入到快表中。
如果虛擬地址空間很大,那么頁表也會很大(多級分頁)。
在某些計算機中如果內存的邏輯地址很大,將會導致程序的頁表項會很多,而頁表在內存中是連續存放的,所以相應的就需要較大的連續內存空間。為了解決這個問題,可以采用兩級頁表或者多級頁表的方法。其中外層頁表一次性調入內存且連續存放,內層頁表離散存放。相應的訪問內存頁表的時候需要一次地址變換,訪問邏輯地址對應的物理地址的時候也需要一次地址變換,而且一共需要訪問內存3次才可以讀取一次數據。
基本分段儲存管理方式
分段內存管理當中,地址是二維的,一維是段號,一維是段內地址
段內部是連續分配,都是從0開始編址,段和段之間是離散分配的,所以存在一個段表,段表中的表項記錄了段在內存中的開始地址和長度。
對段的訪問也是兩次訪問:訪問內存的時候根據段號和段表項的長度計算當前訪問段在段表中的位置,然后訪問段表,得到該段的物理地址,根據該物理地址以及段內偏移量就可以得到需要訪問的內存。由於也是兩次內存訪問,所以分段管理中同樣引入了聯想寄存器(快表)。
段頁式內存管理
頁式存儲管理可以有效的提高內存利用率,分段存儲管理能反映程序的邏輯結構並且有利於段的共享,則段頁式存儲就是將程序分為多個邏輯段,在每個段里面分頁,將分段和分頁組合起來使用。
地址變換的實現:為每個進程建立一張段表,每個分段里面有一張頁表。
物理地址的訪問要三次:先通過段表查詢到頁表起始地址,然后通過頁表找到頁號,最后找到物理地址,一次訪問需要三次訪問主存,依然可以使用快表。
關鍵字:段號 頁號 物理地址
段頁總結
快表命中:1次
快表不命中:頁式和段式都是兩次,如果分多級,多一級一次。
段頁式三次。