操作系統原理之內存管理(第四章第一部分)

內存管理的?標:實現內存分配和回收,提高內存空間的利用率和內存的訪問速度

一、存儲器的層次結構

寄存器:在CPU內部有一組CPU寄存器,寄存器是cpu直接訪問和處理的數據,是一個臨時放數據的空間。

高速緩沖區:一般CPU都會從內存取數據到寄存器,然后進行處理,但由于內存的處理速度遠遠低于CPU,導致CPU在處理指令時往往花費很多時間在等待內存做準備工作,于是在寄存器和主內存間添加了CPU緩存,CPU緩存比較小,但訪問速度比主內存快得多,如果CPU總是操作主內存中的同一址地的數據,很容易影響CPU執行速度,此時CPU緩存就可以把從內存提取的數據暫時保存起來,如果寄存器要取內存中同一位置的數據,直接從緩存中提取,無需直接從主內存取

緩存命中率:寄存器并不是每次數據都可以從緩存中取得數據,假如寄存器要獲取的不是同一個內存地址中的數據,那寄存器就必須直接繞過緩存從內存中取數據。所以并不是每次都能從緩存中取到數據,這種現象叫做緩存的命中率。命中就直接取緩存中的數據,否則從內存中取;可見緩存命中率的高低也會影響CPU執行性能。

交互流程:當一個CPU需要訪問主存時,會先讀取一部分主存數據到CPU緩存(當然如果CPU緩存中存在需要的數據就會直接從緩存獲取),進而在讀取CPU緩存到寄存器,當CPU需要寫數據到主存時,同樣會先刷新寄存器中的數據到CPU緩存,然后再把數據刷新到主內存中。

數據存儲的局部性原理:

?局部性:在?段較短時間內,程序的執?僅限于某個部分,相應地它所訪問的存儲空間也局限于某個區域

分類:

  • 時間局部性:某條指令?旦執?,不久 后該指令可能再次執?
  • 空間局部性:?旦程序訪問了某個單元,不久 后附近的存儲單元也將被訪問

二、 程序的鏈接和裝入

?級語?程序? -》? ?編譯、鏈接?-》? ?可執?程序

程序的鏈接:將編譯后的?標模塊裝配成?個可執?程序

  • 靜態鏈接??程序運?前完成鏈接操作(程序運?前,?鏈接程序將?標模塊鏈接成?個完整的裝?模塊。)? ? ? ?優:運?速度快
    • 鏈接程序的任務? ? 1、對邏輯地址進?修改?? ? ? ? ?2、變換外部調?符號
  • 動態鏈接??程序執?時進?鏈接操作(可將某些?標模塊的鏈接推遲到這些模塊中的函數被調?執?時才進?)? ? ? 優:節省了空間

程序的裝?

?

?

?

  • 絕對裝??式:編譯時產?物理地址的?標代碼
  • ?可重定位裝??式 (靜態重定位):編譯時地址是邏輯地址,裝?時 通過重定位轉換為物理地址 (?重定位:程序裝?時對?標程序中的指令和數據地址的修改過程叫重定位
  • 動態運?時裝??式(動態重定位):程序執時通過重定位轉換為物理地址

?物理地址=邏輯地址+程序在內存中的起始地址

?

三、 連續分配存儲管理方式

連續分配方式:為一個用戶程序分配一個連續的內存空間。

連續分配方式進一步分為:單一連續分配、固定分區分配、動態分區分配以及動態重定位分區分配。

1、單一連續分配:任何時刻主存儲器最多只有?個作業

2、固定分區分配:每個分區??固定不變(各個分區大小可以相同也可以不同),每個分區可以且僅可以裝??個作業

?

?

?固定分區說明表 :由固定分區說明表可以查看哪個分區空閑,哪個分區被占用

?

?

?3、動態分區分配:

?

?

? 空閑分區表:?由空閑分區表可知 哪個分區已被占,哪個分區是空閑。(分區編號、分區大小、起始地址)

? 空閑分區鏈:

?

?

?

3.1、動態分區分配內存算法:

  1、?次適應算法:空閑分區鏈以地址遞增的順序鏈接, 從鏈?開始查找 ,直?找到第?個滿?要求的空閑分區, 從該分區中劃出?塊內存給進程 ,剩下的仍留在空閑鏈中。

?

?

?外部碎?:分配后留在空閑鏈上的。首次適應算法會產生該碎片。

?內部碎?:由于空閑的區域比申請的大一點點,系統就直接把多余的這一點也分配給你。

?

  2、循環?次適應算法:從上次找到的空閑分區的下?個空閑分區開始查找。?優點:空閑區分布均勻

?

  3、?最佳適應算法:空閑分區鏈以分區??遞增的順序鏈接,從鏈?開始查找, 直?找到第?個與進程請求的空間?? 最接近的空閑分區。

?

?3.2、動態分區回收內存的流程

1)釋放?塊連續的內存區域? ? 2)如果被釋放的區域與其他空閑區相鄰,則合并空閑區? ? ? 3)修改空閑分區鏈

?

?

*************************************************************************************

?

?

?

**********************************************************************************************

?

?

*****************************************************************************************

?系統區用于駐留操作系統,用戶區用于分配給用戶進程使用

為了放哪工作用戶程序對操作系統的破壞,保證系統的安全、可靠,在操作系統中應該考慮設置存儲器保護機制。在單用戶、單任務操作系統中較常用的方法是設置一個基址寄存器和一個界限寄存器。

界限寄存器:存放裝入用戶區程序的地址范圍

基址寄存器:存放程序在物理內存中最小地址的是基址寄存器

?

轉載于:https://www.cnblogs.com/jalja/p/11440808.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自寫圖片遮罩層放大功能jquery插件源代碼,photobox.js 1.0版,不兼容IE6

版權聲明:本文為博主原創文章。未經博主同意不得轉載。 https://blog.csdn.net/u010480479/article/details/27362147 阿嚏~~~ 話說本屌絲沒啥開發插件的經驗,可是天公不作美,公司須要讓我自己開發個圖片放大的插件 但公司老大的話&#xff0…

黑白兩客進入頁面(1)

<div><span>歡</span><span>迎</span><span>來</span><span>到</span><span><strong>黑白兩客</strong></span><span>的</span><span>博</span><span>客</sp…

zookeeper學習之原理

一、zookeeper 是什么 Zookeeper是一個分布式協調服務&#xff0c;可用于服務發現&#xff0c;分布式鎖&#xff0c;分布式領導選舉&#xff0c;配置管理等。這一切的基礎&#xff0c;都是Zookeeper提供了一個類似于Linux文件系統的樹形結構&#xff08;可認為是輕量級的內存文…

mysql鎖表查詢和解鎖操作

解除正在死鎖的狀態有兩種方法&#xff1a; 第一種&#xff1a; 1.查詢是否鎖表 show OPEN TABLES where In_use > 0; 2.查詢進程&#xff08;如果您有SUPER權限&#xff0c;您可以看到所有線程。否則&#xff0c;您只能看到您自己的線程&#xff09; show processlist 3.殺…

前端js基礎智能機器人

<script>var flag true;while(flag) {//獲取用戶輸入信息 var code prompt(你好,我是小娜\n請輸入編號或者關鍵詞選擇功能,輸入Q(q)退出聊天\n1.計算\n2.時間\n3.笑話);switch( code ) {case q:case Q:alert(狠心的拋棄了小娜);flag false;break;case 1:case 計算:var…

2018-2019-2 《Java程序設計》第6周學習總結

20175319 2018-2019-2 《Java程序設計》第6周學習總結 教材學習內容總結 本周學習《Java程序設計》第七章和第十章&#xff1a; 內部類&#xff1a; 1.內部類可以使用外嵌類的成員變量和方法。 2.類體中不可以聲明類變量和類方法。 3.內部類僅供外嵌類使用。 4.類聲明可以使用s…

Hbase基本原理

一、hbase是什么 HBase 是一種類似于數據庫的存儲層&#xff0c;也就是說 HBase 適用于結構化的存儲。并且 HBase 是一種列式的分布式數據庫&#xff0c;是由當年的 Google 公布的 BigTable 的論文而生。HBase 底層依舊依賴 HDFS 來作為其物理存儲。 二、hbase的列式存儲結構 行…

最終的動畫函數封裝(2)

<button>點擊觸發1</button><button>點擊觸發2</button><div></div><style>*{margin: 0;padding: 0;}div{width: 100px;height: 100px;background-color: red;position: relative;top: 100px;left: 0;}.div1{display: block;width: …

第二次JAVA作業

感覺和C語言后面都差不多&#xff0c;就是開頭的定義和輸入輸出有點差別&#xff0c;多寫幾次應該能搞清楚開頭的定義&#xff0c;接下來是四道題目的截圖。 第一題&#xff1a; 第二題&#xff1a; 第三題&#xff1a; 第四題&#xff1a; 轉載于:https://www.cnblogs.com/YSh…

springmvc框架下Filter過濾器中過濾文件后 后續 controller為空的問題

開發過程中遇到過濾文件類型的問題&#xff0c;需要校驗文件的頭信息&#xff0c;&#xff0c;在過濾器中通過request獲取文件流信息 但是后續的controller中的MultipartFile一直都是空的&#xff0c;網上的網友的方案使用了一堆比如 使用BodyReaderHttpServletRequestWrapper…

js(Dom+Bom)第七天(1)

JavaScript BOM介紹 概念 BOM&#xff08;Browser Object Model&#xff09;即瀏覽器對象模型。 本質&#xff1a; 通過對象抽象瀏覽器中的一些功能 例如&#xff1a;&#xff08;刷新頁面&#xff0c;alert,confirm,pormpt,跳轉 ...&#xff09;BOM頂級對象 window對象是js中…

「十二省聯考 2019」皮配——dp

題目 【題目描述】 #### 題目背景一年一度的綜藝節目《中國好碼農》又開始了。本季度&#xff0c;好碼農由 Yazid、Zayid、小 R、大 R 四位夢想導師坐鎮&#xff0c;他們都將組建自己的夢想戰隊&#xff0c;并率領隊員向夢想發起沖擊。 四位導師的**派系**不盡相同&#xff0c;…

收藏一個在線思維導圖的制作網站

https://www.processon.com/ 轉載于:https://www.cnblogs.com/132818Creator/p/11447077.html

js(Dom+Bom)第七天(2)

webAPI 01-動畫封裝 應用到的知識點 點擊事件 給元素設置一個絕對定位 定時器(setInterval) 封裝動畫1的步驟: 讓元素設置為絕定位設置元素的開始位置(從哪開始移動)設置元素的目標位置(移動到哪)設置元素每次移動的距離設置元素每次移動的時間間隔(越短越好) 封裝動畫1遇…

鏈表中環的入口結點

題目描述 給一個鏈表&#xff0c;若其中包含環&#xff0c;請找出該鏈表的環的入口結點&#xff0c;否則&#xff0c;輸出null。 分析 第一步&#xff1a;確定一個鏈表中是否有環 我們可以用兩個指針來解決&#xff0c;定義兩個指針&#xff0c;同時從鏈表的頭結點觸發&#xf…

java 線程之線程狀態

Thread 類中的線程狀態&#xff1a; public enum State {NEW,//新建RUNNABLE,// 執行態BLOCKED, //等待鎖&#xff08;在獲取鎖的池子里&#xff09;WAITING,//等待狀態TIMED_WAITING,//定時等待TERMINATED; //終止 } 創建狀態&#xff08;NEW&#xff09;&#xff1a;當一個線…

目標元素拖動

<div class"box"><div class"title">拖拽效果</div></div>* {margin: 0;padding: 0;}.box {width: 350px;height: 300px;border: 1px solid #ccc;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);cursor…

操作系統原理之內存管理(第四章第二部分)

一、基本分頁存儲管理方式 1、分?存儲管理的基本原理&#xff1a; 頁&#xff1a;將?個進程的邏輯地址空間分成若?個??相等的?頁框&#xff1a;將物理內存空間分成與???相同的若?個存儲塊分?存儲&#xff1a;將進程中的若??分別裝?多個可以不相鄰的?框中頁內碎片…

C#代碼總結02---使用泛型來獲取Asp前臺頁面全部控件,并進行屬性修改

該方法&#xff1a;主要用于對前臺頁面的不同類型&#xff08;TextBox、DropDownList、等&#xff09;或全部控件進行批量操作&#xff0c;用于批量修改其屬性&#xff08;如&#xff0c;Text、Enable&#xff09;。 private void GetControlList<T>(ControlCollection c…

d3.js 教程 模仿echarts柱狀圖

由于最近工作不是很忙&#xff0c;隧由把之前的charts項目用d3.js重寫的一下&#xff0c;其實d3.js文檔很多&#xff0c;但是入門不是很難&#xff0c;可是想真的能做一個完成的&#xff0c;交互良好的圖還是要下一番功夫的。今天在echarts找到了一個柱狀圖&#xff0c;如圖。 …