记忆体管理课件

上传人:j****9 文档编号:57489767 上传时间:2018-10-22 格式:PPT 页数:40 大小:202.50KB
返回 下载 相关 举报
记忆体管理课件_第1页
第1页 / 共40页
记忆体管理课件_第2页
第2页 / 共40页
记忆体管理课件_第3页
第3页 / 共40页
记忆体管理课件_第4页
第4页 / 共40页
记忆体管理课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《记忆体管理课件》由会员分享,可在线阅读,更多相关《记忆体管理课件(40页珍藏版)》请在金锄头文库上搜索。

1、著作權所有 旗標出版股份有限公司,1,第 4 章 記憶體管理,著作權所有 旗標出版股份有限公司,2,本章提要,實體記憶體的分割方式 分頁 分段 置換,著作權所有 旗標出版股份有限公司,3,4-1實體記憶體的分割方式-由簡而繁,單一分割區的配置 多個行程時的記憶體配置 固定長度的多重分割區 變動長度的多重分割區 好搭檔系統,著作權所有 旗標出版股份有限公司,4,單一分割區的配置,將記憶體空間分成兩塊一塊給作業系統使用另一塊則給行程使用 可以利用硬體的基底暫存器來避免行程存取到作業系統的記憶體位址 如果程式所產生的位址小於基底暫存器中的位址則會產生定址錯誤的例外中斷,著作權所有 旗標出版股份有限公

2、司,5,定址錯誤 例外中斷,是,否,圖4-1.a 合法的邏輯位址,實體位址,基底暫存器,100,記憶體,0,Max-1,實體記憶體位址,100,112,作業系統,使用者行程,112,著作權所有 旗標出版股份有限公司,6,定址錯誤 例外中斷,是,否,圖4-1.b 存取到作業系統的記憶體位址,實體位址,基底暫存器,100,記憶體,0,Max-1,實體記憶體位址,100,作業系統,使用者行程,001,001,著作權所有 旗標出版股份有限公司,7,課堂練習,假設作業系統是位於實體記憶體由0開始的連續區段之中,且長度為256KB 請問基底暫存器的值至少應該設為多少? 請問下列位址何者為合法的行程位址?

3、300K 25K 300,著作權所有 旗標出版股份有限公司,8,練習解答,基底暫存器的值:大於等於256K 行程:300K-合法25K-不合法600-不合法,著作權所有 旗標出版股份有限公司,9,重定址暫存器,另一種保護的方式是使用重定址暫存器,用來存放行程的啟始位址 在編譯的時候將程式從0開始配置 邏輯位址:程式好像是運作在一個從0開始的一大片連續的邏輯位址空間中 實體位址:由記憶體管理硬體負責將邏輯位址轉換為在實體記憶體中的真正位址,著作權所有 旗標出版股份有限公司,10,圖4-2 利用重定址暫存器的記憶體位址轉換,邏輯位址,重定址暫存器,100,記憶體,0,Max-1,實體記憶體位址,3

4、2,100,132,使用者行程,作業系統,著作權所有 旗標出版股份有限公司,11,程式的載入,絕對程式碼:在程式編譯時預先決定這支程式要放在實體記憶體的哪個位置執行則編譯出來的程式碼邏輯位址會等於實體位址 缺點在於程式碼只能放在記憶體的固定位置當多個行程要共享記憶體時就可能彼此產生干擾 可重定址程式碼:在編譯時是從0開始配置位址,然後在載入時才決定要放在哪個位置 必須透過邏輯位址加上重定址暫存器的內容,才能取得行程的實體位址 如果需要改變行程在實體記憶體中的位置時只要在搬移行程之後改變重定址暫存器的值就可以了,著作權所有 旗標出版股份有限公司,12,多個行程時的記憶體配置-固定長度,將記憶體切

5、割為相同大小的分割區作業系統只需要記住每個行程分配到哪個分割區就可以了-最簡單的多行程配置方式 因為分割區的長度都相同所以在開機的時候就可以設定長度暫存器的值 然後在某個行程取得CPU控制權的時候作業系統就將重定址暫存器的內容重新設定到該行程所在的分割區 如果將記憶體分割成相同大小的分割區有些區域內就會剩下很多空間,稱為內部碎片 可以將記憶體分割為大小不等的數個固定長度分割區,並且將不同大小的行程配置到不同長度的分割區中 當輪到某個行程使用CPU時除了要設定重定址暫存器之外作業系統還必須將長度暫存器的值設定為該行程所在分割區的長度,著作權所有 旗標出版股份有限公司,13,變動長度的多重分割區,

6、另一種減少內部碎片的方法就是不要事先分割記憶體而是根據目前的記憶體使用情況與即將要載入的行程長度來動態分割記憶體 可以將內部碎片降至最低但是卻可能造成外部碎片 如果分割區配置的選擇不當,就可能會加重外部碎片的問題 可利用聚集法重新搬移各個行程將這些碎片聚集成為完整的一大塊連續空間,著作權所有 旗標出版股份有限公司,14,圖4-3 外部碎片範例,實體記憶體,A,B,C,D,Free,(a),實體記憶體,A,B,D,Free,(b),(c),Free,行程 C 結束 行程 F 想要進入,F C F Free F H) /超過區塊上限return fail;if (可用清單中找不到2i的洞)find

7、_hole (i+1); /尋找更大一級的洞將find_hole (i+1) 傳回的洞切成兩個搭檔單位;將搭檔放入可用清單中;return 清單中第一個長度為2i的洞; ,著作權所有 旗標出版股份有限公司,22,課堂練習,假設系統擁有1M的實體記憶體,並且使用好搭檔系統來配置記憶體區域,請依照下列記憶體請求與釋放順序,說明記憶體區塊的配置情況: 請求A:500K 請求B:200K 請求C:50K 釋放A 請求D:100K 釋放C,著作權所有 旗標出版股份有限公司,23,解答,1M,請求A, 500K,請求B, 200K,請求C, 50K,請求D, 100K,釋放A,釋放C,A,512K,A,A

8、,128K,B,C,512K,64K,256K,B,128K,B,C,64K,512K,B,C,64K,D,512K,B,D,128K,著作權所有 旗標出版股份有限公司,24,4-2 分頁,把行程的邏輯位址空間切割成同樣大小的區塊,稱為頁面 實體位址空間也切割為相同大小的單位稱為頁框 行程的任何一個頁面只要找到某個未被使用的頁框就可以放到實體記憶體中 每個行程都配置有一個分頁表用來儲存每個頁面所在的頁框編號,著作權所有 旗標出版股份有限公司,25,圖4-6 邏輯與實體位址空間的分頁範例,Page 0,Page 1,Page 2,Page 3,0,1,2,3,4,5,6,7,8,9,10,11,

9、Page 0,Page 1,Page 2,Page 3,0,1,2,3,5,9,1,7,行程A的 邏輯位址空間,分頁表,實體記憶體,頁框編號,著作權所有 旗標出版股份有限公司,26,圖4-7 使用分頁來解決外部碎片問題,實體記憶體,行程A,Free,(a),(b),(c),行程 C 結束,釋放3個頁面),行程 F 進入,A1,A2,行程B,行程C,行程D,行程E,B1,B2,B4,B3,B5,B6,C1,C2,C3,D1,D2,D3,E1,E2,E3,E4,實體記憶體,行程A,Free,A1,A2,行程B,行程D,行程E,B1,B2,B4,B3,B5,B6,C1,C2,C3,D1,D2,D3,

10、E1,E2,E3,E4,Free,實體記憶體,行程A,Free,A1,A2,行程B,行程D,行程E,B1,B2,B4,B3,B5,B6,C1,C2,C3,D1,D2,D3,E1,E2,E3,E4,行程F,要求5個頁面),F1,F3,F2,F4,F5,行程F,著作權所有 旗標出版股份有限公司,27,圖4-8 分頁時的位址轉換,p,d,邏輯位址,f,d,實體位址,p,f,f,d,分頁表,實體記憶體,著作權所有 旗標出版股份有限公司,28,課堂練習,假設有一系統的邏輯位址長度為32,頁面長度為4K,請問: 在邏輯位址中,頁面編號與位移量分別佔用幾個位元? 頁面編號的值應該落在哪個範圍?,著作權所有

11、旗標出版股份有限公司,29,練習解答,頁面長度4K(=212),所以位移量需要12位元 邏輯位址長度為32,剩餘的位元數為20(32-12),所以頁面編號佔據20位元 頁面編號的範圍為0到220-1,著作權所有 旗標出版股份有限公司,30,分頁設計的碎片情況,使用分頁設計可以避免外部碎片的問題 當行程的長度不能被頁面長度整除時就會形成內部碎片 內部碎片的平均值為頁面長度的一半 頁面越小內部碎片所造成的浪費也就越小,但會造成儲存與管理分頁表上的負擔,以及降低磁碟輸入/輸出的效率,著作權所有 旗標出版股份有限公司,31,實作討論-Linux的好搭檔系統,Linux在分頁機制下使用了好搭檔系統來管理

12、外部碎片的問題 所有未被使用的頁框會被分成10種不同大小的頁框串列,分別包含1、2、4、8、16、32、64、128、256、與512個連續頁框,每個頁框的長度為4KB 根據行程對連續空間的要求,選擇位於適當佇列中的連續區塊 當行程釋放不需要的頁框時,Linux會嘗試將可搭檔區域結合,並放入更大一級的串列中,著作權所有 旗標出版股份有限公司,32,4-3 分段,按照行程內容的特性進行分割例如將程式分割為程式區段與資料區段 分段因為涉及對程式的解讀所以責任會落在程式設計師或編譯程式的肩上 可能產生出不同長度的段落 作業系統必須為每個行程管理一份分段表 分段表中包含分段編號、位移量,與分段的長度,著作權所有 旗標出版股份有限公司,33,圖4-9 分段時的位址轉換,s,d,邏輯位址,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号