操作系統學習手冊

来源:http://www.cnblogs.com/DeerTrodis/archive/2016/12/19/6197479.html
-Advertisement-
Play Games

操作系統是電腦相關專業本科課程中最重要的課程! 操作系統是電腦相關專業本科課程中最重要的課程! 操作系統是電腦相關專業本科課程中最重要的課程! 重要的事情說三遍。大學讀了兩年半了,學習了3,4門硬體課程。我發現在我的大學中,本科硬體課程總體偏理論,旨在構建電腦硬體理論體系。之前彙編,組成原理 ...


操作系統是電腦相關專業本科課程中最重要的課程!

操作系統是電腦相關專業本科課程中最重要的課程!

操作系統是電腦相關專業本科課程中最重要的課程!

重要的事情說三遍。大學讀了兩年半了,學習了3,4門硬體課程。我發現在我的大學中,本科硬體課程總體偏理論,旨在構建電腦硬體理論體系。之前彙編,組成原理和之後的體繫結構,其實都是一輪一輪的在學生腦海中構建電腦硬體體繫結構。作為硬體課程的核心課程,操作系統的重要性不言而喻。

接下來開始介紹相關信息。

LDT,即local descriptor table,局部解釋器表,由ldtr這個寄存器找到。ldtr存放的是selector值,selector就是段選擇子,用來存放段信息。段選擇子是一個16位寄存器,它各位的含義如下圖:

其中RPL是請求特權級,當訪問一個段時,處理器要檢查RPL和CPL(放在cs的位0和位1中,用來表示當前代碼的特權級),即使程式有足夠的特權級(CPL)來訪問一個段,但如果RPL(如放在ds中,表示請求數據段)的特權級不足,則仍然不能訪問,即如果RPL的數值大於CPL(數值越大,許可權越小),則用RPL的值覆蓋CPL的值。而段選擇子中的TI是表指示標記,如果TI=0,則表示段描述符(段的詳細信息)在GDT(全局描述符表)中,即去GDT中去查;而TI=1,則去LDT(局部描述符表)中去查。

在32位處理器下,邏輯地址是我們獲得的第一個地址。那麼什麼是邏輯地址呢?

邏輯地址:intel 8086實模式下,邏輯地址就是物理地址。什麼是實模式?

實模式:intel8086採取按1M記憶體索引的方式。因此,intel8086匯流排一共20位。在此模式下,段基址左移1位(乘16)之後加上段偏移,再模1M,就得到物理地址。在實模式下,段選擇子叫“段選擇器”,在保護模式下,段選擇器叫“段選擇子”

回到LDT。邏輯地址高13位作為索引,下一位作為LDT 或者GDT選擇符。邏輯地址高16位的最後兩位就是優先順序策略,一共4個等級。LDT和GDT的結構一樣,每項占8個位元組。

接下來看看段描述符裡面放置的是什麼內容:

可以看到,段描述符是一個64位二進位的數,存放了段基址和段限長等重要的數據。其中位P(Present)是段是否存在的標記;位S用來表示是系統段描述符(S=0)還是代碼或數據段描述符(S=1);四位TYPE用來表示段的類型,如數據段、代碼段、可讀、可寫等;DPL是段的許可權,和CPL、RPL對應使用;位G是粒度,G=0表示段限長以位為單位,G=1表示段限長以4KB為單位;其他內容就不詳細解釋了。

假設我們找到的段描述符為:0x00003fff 0x10c0f300,我們來提取重要信息:

首先,第一個0000位基地址高16位。10c0f300中的高二和低二組合:1000,連接上剛纔的0000,即為:10000000,這就是我們找到的基地址。加上段偏移,即可得到線性地址。

從線性地址到物理地址,我們需要用到分頁管理方式。假如不存在分頁管理方式,那麼線性地址就是物理地址。首先,我們辛辛苦苦找到的32位的線性地址得分成10+10+12的模式。前十位作為頁目錄號,用來在頁目錄表中找到頁表值。如下圖:

 

頁目錄表的位置由CR3寄存器指引。頁目錄表和頁表都是10位,定址範圍為1k,由於每個地址存放4B(32位)的地址,因此頁目錄表加上頁表總共占記憶體8k。頁目錄表找到頁表之後,中間十位在頁表中找到物理地址基址,加上最後的12位,就得到 了記憶體條上看得見摸得著的物理地址。

頁目錄表和頁表每條目錄都是32位,其中前20位存放的是地址,而後12位存放其他屬性,我們需要的是前20位。

我們按照以上方法,就能逐步根據邏輯地址找到物理地址。最後,什麼是虛擬地址呢?虛擬地址是一種擴展記憶體的策略。打個比方,我要從哈爾濱去沈陽,我其實沒必要鋪上這將近600公裡的鐵路。起始,我只需要10公裡的鐵軌就行----每行駛完10公裡,就把末端的鐵軌拆下來鋪到火車前面即可。當然,這個過程需要很快。電腦中就可以執行這麼快,因此電腦可以拆後軌鋪前軌。這就是虛擬地址的原理。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #ldap 安裝配置 環境Centos7#安裝 yum install -y openldap openldap-clients openldap-servers migrationtools pam_ldap python-ldap# 關閉防火牆 systemctl stop firewalld. ...
  • windows上有各種軟體可以進行“一鍵加速”之類的操作,釋放掉一些記憶體(雖然我暫時不知道是怎麼辦到的,有待後續學習)。而任務管理器也可以很方便地查看各進程使用的記憶體情況,如下圖: 同樣地,linux下也有一些方法來查看記憶體的使用情況。 一、free 對於free命令,可以加上-m參數,使其顯示單位 ...
  • 扒完了 "字元設備" ,我們來看看平臺匯流排設備,平臺匯流排是Linux中的一種虛擬匯流排,我們知道, 匯流排+設備+驅動 是Linux驅動模型的三大組件,設計這樣的模型就是將驅動代碼和設備信息相分離,對於稍微複雜一點的驅動,都要使用這種結構,我在 ""Linux設備管理(一)_kobject, kset, ...
  • 模式 ESC\Ctrl+c:退出編輯模式 ZZ\wq:命令模式下保存退出 編輯 i:進入編輯模式 I:轉到行首非空字元開始編輯 s:刪除當前字元進入編輯模式 a:從當前字元後開始編輯 A:從當前行末非空字元開始編輯 移動 H J K L:左下上右 0: 數字零,到行頭 ^:到本行第一個不是blank ...
  • 本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 上一篇文章我們介紹了有關conflucence的安裝與破解,這篇文章我們再來介紹下有關jira的相關安裝與破解。 jira是Atlassian公司出品的項目與事務跟蹤工具,被廣泛應用於缺陷... ...
  • 主要是軟體源出現了問題 我做的方式可能比較粗暴 ls -l /etc/yum.repos.d/ /*查看軟體源*/ rm -rf /etc/yum.repos.d/ /*全刪了*/ mkdir /etc/yum.repos.d/ /*新建*/ wget -O /etc/yum.repos.d/Cen ...
  • 源代碼軟體的優點: 獲得最新版,能及時修複bug; 能自行修改和定製; 源代碼打包形式: .tar.gz和.tar.bz2格式居多; 完整性校驗: md5sum校驗工具 確認源代碼編譯環境: 需安裝支持C/C++程式語言的編譯器。 編譯安裝過程: 下載並解壓—>./configure配置(安裝目錄、... ...
  • /****************************************** *效果圖(我不是給這游戲打廣告,只是隨手拿了一張圖而已) *說明:1.圖片是24位或32位bmp圖 2.屏幕是32位屏幕 3.不同的設備,可能設備文件不同 4.需要在root用戶下執行 ************* ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...