OS復習筆記ch7-1

存儲的基本管理需求

重定位

重定位(Relocation):需要解決可執行文件中地址(指令和數據)和內存地址的對應。

一般有兩種比較常見的重定位方式:

  • 靜態重定位(static relocation):當程序被裝入內存時,一次性實現邏輯地址到物理地址的轉換,以后不再轉換。
    • 缺乏保護,可能會被其他程序非法訪問
    • 運行時無法再次定位:無法移動、對換
  • 動態重定位(Dynamic Relocation):在程序運行過程中要訪問內存時再進行地址變換
    • 需要硬件支持
    • 需要OS參與

重定位是一個比較有意思的話題,在操作系統和計算機組成原理,甚至編譯原理、匯編原理都會提到。簡單地說,就是把我們代碼中數據和指令的相對地址重新定位到實際內存地址,后面也會涉及到。

保護

即:未經許可,進程不能訪問其他進程的內存位置(范圍保護)

不過,在編譯時不可能檢查絕對地址,只能在運行時檢查。


原因很簡單,因為編譯的時候我們拿不到實際的絕對地址,只有在實際運行的時候才會有,一般編譯是得到機器代碼,鏈接是得到邏輯地址,裝入的時候才會確定實際的物理地址。

共享

即:允許多個進程訪問同一內存區域(代碼、數據)
舉一個很簡單的例子,絕大多數OS都有的剪貼板。當你復制了一份內容,你可以粘貼到微信,也可以粘貼到WPS甚至任何可以讀取它的進程。

邏輯組織

邏輯組織可以看成是一種線性組織,一般是程序員自己為了模塊化編程的需要組織起來的,所以稱之為“邏輯”組織。有以下幾個特點

  • 有一些模塊可以修改,有些不能(類似int和const int)
  • 不同模塊提供的保護不同(類似private和protected)
  • 進程之間共享模塊(類似公共的函數/數據區)
  • 分段存儲有助于邏輯組織(比如常見的代碼段、數據段等)

物理組織

物理組織的話至少就有兩個層次:主存和輔存。之前學習過組原的朋友都知道,主存一般指的內存,而輔存指的是外存。
如果OS的物理組織不好,程序、數據可用內存不足,搞不好就會卡死,甚至藍屏。
對于后端程序員來說由于內存不可見,編程的時候粗心可能就會導致服務器內存泄漏,最后宕機。

內存劃分

固定分區

等大分區:
內存被切成一個個相同大小的塊

  1. 程序太大,無合適分區(一份米飯男生不夠吃)
  2. 內存利用率不高(同樣一份米飯女生吃不完)
  3. 內碎片問題嚴重(每個分區利用不全,產生內部碎片)

不等分區:
小程序放入小分區,減少內碎片;大程序放入大分區,避免無法分配。
在算法實現上變得更加復雜,需要選擇合適的放置算法。此外,還有一些遺留問題:

  1. 活動進程的數目受限于系統
  2. 大量小進程無法有效利用空間

動態分區

按需分配,整體上提高了利用率

  • 根據程序的運行的情況動態分區,每段內存按照程序需求的
  • 分區與分區之間的外碎片的數量很多,雖然每一個占用空間不多,浪費也不少
    →這時候就有了壓縮技術,把已分配的分區向一個方向移動,將外碎片壓縮。為了提高效率,還可以在分區的起始和截止地方存儲分區的信息

然后,讓我們來了解一下動態分區的放置算法

  1. 最佳適配算法
    image-20231009083950375

時間效率低下,由于要維護地址空間鏈表(B+樹),每次放置之后由于需要再次排序導致復雜度高。并且由于像41KB這種不好分配的內存,可能會導致碎片更碎。

  1. 首次適配算法
    image-20231009084357227
    每次從頭開始尋找第一個足夠大的分區,前端重復搜索,后端空閑較多
  2. 循環首次適配算法

image.png
每次從上次放置位置往后掃描第一個滿足的內存分區,最大的分區容易被分割,需要壓縮來獲得新的大分區。
4. 最壞適應算法(worst-fit):找到最大的空閑分區
基本不留下小空閑分區,但較大的空閑分區不被保留。
5. 快速適應算法(quick-fit):為常用長度的空閑區建立單獨的空閑區鏈表
可快速找到所需的空閑區,但是歸還時合并復雜

看一個例子
image.png
如圖所示,我們此時需要16M的內存,first-fit從上往下找到第一個滿足的分區(指向22M的分區),best-fit找到最接近的分區(指向中間18M分區),而next-fit找到上次分配指針之后的第一個滿足的分區(指向36M分區)。

還有一種基于伙伴系統的分區算法,簡單了解即可
image.png

image-20231009085720727

重定位

  • 程序加載后實際(絕對)內存地址才確定
  • 進程可能占據不同分區,即執行期間有不同絕對內存地址

首先了解一下幾個概念,學過匯編的應該都知道

  • 邏輯地址:與當前數據分配到的物理內存地址無關的訪問地址
  • 相對地址:表示為相對某個已知點的地址
  • 物理或絕對地址:主存中的絕對地址或實際位置
  • 地址映射:將用戶程序中的邏輯地址轉換為運行時由機器直接尋址的物理地址。

重定位圖示如下
image.png
這里的重定位就像是組原的基址變址尋址。圖中有一個基址寄存器,記錄了開始地址,還有界限寄存器記錄了結束地址。當進程加載或換入時設置寄存器值,程序傳入相對地址,OS通過“基址+相對地址=絕對地址”計算出實際地址同界限寄存器值比較,如果越界就發生中斷,反之去內存找數據。

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

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

相關文章

Python pdf2imges -- pdf文件轉圖片

pdf文件轉圖片,需要安裝PyMuPDF包,具體PyMuPDF包介紹可以參考:Python 處理 PDF 的神器 -- PyMuPDF import fitz # pip install PyMuPDF# PDF轉換為IMG統一管理 def pdf_to_images(pdf_path, img_path, filename):"""pdf_p…

Mac系統國內通過nvm快速安裝node

國內通過nvm安裝node 國內nvm安裝工具 地址:https://gitee.com/RubyMetric/nvm-cn 安裝命令 bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"如果按照過程中有報錯可以嘗試下載安裝腳本 在瀏覽器中打開下面的鏈接htt…

【頭歌】計算機網絡DHCP服務器配置第四關配置路由器子接口答案

頭歌計算機網絡DHCP服務器配置第四關配置路由器子接口操作步驟 任務描述 本關任務:配置路由器的子接口。 操作要求 在第一關的拓撲圖的基礎上,配置路由器及 PC 機,具體要求如下: 1、打開路由器物理接口 F0/0 ; 2、配置…

【科普】關于Cookie的一點知識

【科普】關于Cookie的一點知識 1. Cookie的傳輸方式2. 不設置Domain時的默認邏輯3. SameSite設置為None的風險4. 通過IP訪問時如何設置Cookie 1. Cookie的傳輸方式 Cookie是通過HTTP(超文本傳輸協議)和HTTPS(安全超文本傳輸協議)…

NSSCTF中的pop、babyupload、cve版本簽到、奇妙的MD5、easy_html

目錄 [SWPUCTF 2021 新生賽]pop [NISACTF 2022]babyupload ?編輯[GKCTF 2020]cve版簽到 [SWP5UCTF 2022 新生賽]奇妙的MD5 [HNCTF 2022 Week1]easy_html 今日總結&#xff1a; [SWPUCTF 2021 新生賽]pop 1.代碼審計 <?phperror_reporting(0); show_source("…

裝機必備——360壓縮安裝教程

裝機必備——360壓縮安裝教程 軟件下載 軟件名稱&#xff1a;360壓縮 軟件語言&#xff1a;簡體中文 軟件大小&#xff1a;3.38M 系統要求&#xff1a;Windows7或更高&#xff0c; 32/64位操作系統 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 下載通道①迅雷云盤丨…

Linux性能優化-網絡篇

文章目錄 前言一、網絡性能指標二、網絡基準測試如何評估系統的網絡性能各協議層的性能測試轉發性能TCP/UPD性能HTTP性能應用負載性能 三、網絡指標的獲取查詢帶寬網絡吞吐和PPS網絡連通 總結 前言 如何評價一套新環境內主機和應用的網絡性能&#xff0c;有哪些指標需要注意&a…

跳躍游戲(2)

問題描述 給你一個非負整數數組 nums &#xff0c;你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 輸入&#xff1…

DINO結構中的exponential moving average (ema)和stop-gradient (sg)

DINO思路介紹 在 DINO 中&#xff0c;教師和學生網絡分別預測一個一維的嵌入。為了訓練學生模型&#xff0c;我們需要選取一個損失函數&#xff0c;不斷地讓學生的輸出向教師的輸出靠近。softmax 結合交叉熵損失函數是一種常用的做法&#xff0c;來讓學生模型的輸出與教師模型的…

Flutter 中的 AnimatedDefaultTextStyle 小部件:全面指南

Flutter 中的 AnimatedDefaultTextStyle 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;AnimatedDefaultTextStyle 是一個用于動畫化默認文本樣式的組件&#xff0c;它可以在文本顯示期間平滑地過渡文本樣式&#xff0c;如字體大小、顏色和字體族。這在實現復雜的文本…

pytorch應該安裝哪個nvcc -V 還是 nvidia-smi 對比的cuda?

當使用nvidia-smi時會顯示 cuda driver版本&#xff0c;如下&#xff1a; NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 當使用 nvcc -V 時會顯示 cuda runtime version&#xff0c;如下&#xff1a; nvcc: NVIDIA (R) Cuda compiler driver …

Docker安裝Oracle11g數據庫

操作系統&#xff1a;centOS9使用此方法檢查是否安裝Docker&#xff1a;docker --help&#xff0c;如果有幫助文件則證明安裝成功使用此語句檢查Docker是否正在運行&#xff1a;docker images&#xff0c;實際上是查看本地鏡像如果發現未運行則開啟Docker&#xff1a;systemctl…

普華永道調查:“擁抱AI”的行業正呈現出生產率激增景象

全球知名四大會計師事務所之一的普華永道最新報告顯示&#xff0c;一些最有可能將人工智能技術融入業務的企業&#xff0c;其生產率增長速度幾乎是其他行業的5倍&#xff0c;這有望推動整體經濟。周二&#xff08;5月21日&#xff09;發布的報告稱&#xff0c;2018年至2022年間…

MyCat2之安裝與配置文件介紹

安裝 1.新建文件夾tools mkdir tools&#xff0c;并進入tools 2.下載MaCat wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar 3.解壓zip u…

怎樣打造一份個性化畫冊呢?我來教你

在這個數字化的時代&#xff0c;傳統的照片已經不能滿足我們對個性化回憶的需求。個性化畫冊&#xff0c;不僅能夠承載我們的記憶&#xff0c;還能展現自我風格。今天&#xff0c;就讓我來教你如何打造一份屬于自己的個性化畫冊。 1.要制作電子雜志,首先需要選擇一款適合自己的…

kafka3.6.1版本學習

kafka目錄結構 bin linux系統下可執行腳本文件 bin/windows windows系統下可執行腳本文件 config 配置文件 libs 依賴類庫 licenses 許可信息 site-docs 文檔 logs 服務日志 啟動ZooKeeper 進入Kafka解壓縮文件夾的config目錄&#xff0c;修改zookeeper.properties配置文件 #t…

【吊打面試官系列】Java高并發篇 - Java 死鎖以及如何避免?

大家好&#xff0c;我是鋒哥。今天分享關于 【Java 死鎖以及如何避免&#xff1f;】面試題&#xff0c;希望對大家有幫助&#xff1b; Java 死鎖以及如何避免&#xff1f; Java 中的死鎖是一種編程情況&#xff0c;其中兩個或多個線程被永久阻塞&#xff0c;Java 死鎖情況出現至…

【每日刷題】Day50

【每日刷題】Day50 &#x1f955;個人主頁&#xff1a;開敲&#x1f349; &#x1f525;所屬專欄&#xff1a;每日刷題&#x1f34d; &#x1f33c;文章目錄&#x1f33c; 1. 654. 最大二叉樹 - 力扣&#xff08;LeetCode&#xff09; 2. 119. 楊輝三角 II - 力扣&#xff08…

「動態規劃」粉刷房子

力扣原題鏈接&#xff0c;點擊跳轉。 假設有n個房子&#xff0c;每個房子可以粉刷成紅色、藍色或者綠色。相鄰2個房子不能刷同一種顏色。下標為i的房子粉刷成下標為j的顏色的價格是costs[i][j]。至少需要花多少錢&#xff1f; 我們用動態規劃的思想來解決這個問題。首先定義狀…

微信行駛證識別

1.官網文檔 行駛證識別 | 微信開放文檔 2.免費次數購買微信OCR識別 | 微信服務市場 需要購買&#xff0c;否則會報錯{"errcode":101003,"errmsg":"not enough market quota hint: [] rid: "} 錯誤總結 {\"errcode\":41005,\"…