虛擬化 作業系統基礎知識

2021-09-25 22:25:41 字數 4318 閱讀 6060

作業系統基礎知識

1、計算機構架

硬體(未加任何修飾的裝置)—–> 軟體(抽象易於接受的介面)即作業系統 ——-> 系統呼叫(開發應用程式)過於底層,比硬體介面易於使用 —–> 公共功能抽取出來形成了庫稱為api (系統應用程式設計介面)

使用者態:執行在使用者空間,不需要核心執行特權操作,環0

核心態:執行系統空間的,需要呼叫核心完成特卻操作,環3。

2、計算機發展

第一代:真空管,穿孔卡片

第二代:電晶體,批處理系統

mainframe

fortran

批處理:多個程式穿行執行。

第三代:積體電路,多道程式設計,time sharing 分時系統出現。

多道程式:監控程式,程序級概念。

***:pc

lsi:大規模積體電路。電晶體密度已經很高,肉眼看不見了—–> cp/m 1974

3、計算機幾大主件

cpu主要功能:從記憶體中取到指令、解碼、執行

cpu三元件:

1、取指單元

2、解碼單元

3、執行單元

乙個晶元來完成,多級流水線完成。

暫存器:跟cpu速度相等。

(1、)臨時程式取來後存放位置—–>暫存器

(2、)執行的位置——->指令計數器,執行完一條指令就只想下一條指令的位置。

mmu:記憶體控制單元,星型系統才有的元件。目的讓記憶體分頁。memory page,page table就放這裡的。

memory:記憶體

vga :圖形顯示

kb :鍵盤

hd c:硬碟控制器

匯流排:連線mmu、memory、vga、kb、hdc等

4、cpu與記憶體如何工作的

執行的程式**例項就是程序。

程序切換:儲存現場、恢復現場—–>上下文切換

記憶體為每個程序維護乙個:task struck (核心使用)

cpu主要調優:cpu程序的親源性

cpu頻率很難超過4g,即便突破也很難繼續18個月發展。——> 多核心超執行緒

超執行緒即多執行緒:讓乙個cpu能夠在兩個不同的執行緒間切換,cpu內部引入乙個獨特的暫存器裝置,乙個cpu核心 能執行執行緒。

i3兩個物理邏輯核心4個。

cpu頻率:一秒鐘完成多少次操作。3g=3*1024*1024*1024

5、執行緒與執行緒

乙個程序跑在多個cpu上—–>劃分多個並行執行流——>每乙個執行流做成乙個執行緒。

弊端:1、乙個執行緒需要另乙個執行緒的結果

2、執行緒共享程序開啟的資源,乙個執行緒需要使用另乙個執行緒正在使用的資源。

程式設計師需要充分考慮這樣帶來的效能的瓶頸。

程序繫結:—->提高快取命中率

1、排程也依然是程序級別的,快取難以命中。

2、核心管理程序佇列1秒鐘rebalanced一次。

6、快取記憶體等

多cpu每顆多核: smp

cpu 插槽:cpu socket

伺服器:使用記憶體匯流排直接與cpu相連

北橋:pci-e網絡卡

cpu速度快於memory,加入快取。

程式區域性性原理:

空間區域性性:乙個資料被訪問到後,離這個很近的其它資料也可能會很快訪問。

時間區域性性:乙個剛執行的程式或者資料很快會再次被訪問到

機械硬碟—-> 固態硬碟 —-> 記憶體 —-> **快取 —–> 二級快取 —–> 一級快取 —–> 暫存器

1、2級快取在核心中 3級快取多核心公用。

多顆cpu爭用:numa 非一直記憶體訪問:每顆cpu都自己的專用的外部記憶體空間(可以理解為自己獨有的**快取一樣)這個記憶體沒有才到外部共享記憶體空間去取。

乙個程序的資料在第一顆cpu自己專用記憶體空間裡,被rebanlance到第二顆cpu,這中間需要時間。造成效能降低,得做cpu繫結。

7、同步問題處理方式

為了保證資料盡快儲存到記憶體:

write through: 一直等到寫入到記憶體才能做其它事情。

write back:寫到一級快取就可以繼續做其它事情。

記憶體資料寫入硬碟也是先寫入硬碟快取中,回寫完成。

記憶體資料寫入硬碟,寫入硬碟快取,再寫到硬碟上,通寫完成。

cpu快取n路關聯與調優關係不大,n-way associate。完全關聯效能好,但是造價高。

8、io裝置的部分:裝置控制器和裝置本身

(1)控制器:整合在主機板上的一塊晶元或一組晶元,接受乙個作業系統命令轉化為實際操作。

裝置本身:ide、sata等,把指令轉化為硬體操作

(2)驅動程式:通常應該由裝置生產商;位於核心中

(3)每個控制器都有少量的用於通訊的暫存器,每個暫存器表現為乙個i/o埠;

(4)最小化的磁碟控制器都有最指定磁碟位址、扇區位址,寫入或者讀取的儲存空間也就是暫存器,整合在控制器內部的,驅動程式獲得作業系統獲得命令然後翻譯成對裝置的基本操作,並放置在對應裝置的暫存器上。

(5)所有的暫存器組合成為裝置的io位址空間;cpu通過匯流排io埠與裝置打交道的位址。

(6)io裝置位址每次開機都不同,除少量總所周知位址(鍵盤)。

9、io排程

實現輸入、輸出:

三種方式:

1、輪詢:忙等待;使用者程式發起乙個系統呼叫,核心將其翻譯程乙個裝置驅動的過程呼叫,然後裝置驅動程式啟動i/o,並在固定週期內遍歷檢查是每個i/o否有資料。

2、中斷:中斷向量,中斷號,如果i/o裝置能發出通知,終斷cpu正在執行的操作,並讓cpu通知核心獲取中斷請求。通常有個可程式設計中斷控制器,每個i/o裝置啟動向中斷控制器申請乙個中斷相量。當這個i/o裝置有資料到達時,立即向中斷裝置控制器

發中斷請求,中斷控制器通過中斷相量判斷是那個i/o裝置發出的中斷,通過匯流排通知cpu讀取那個i/o埠的資料,cpu觸發中斷切換,由核心發出指令獲取其中斷請求,並獲取請求的資料。

網絡卡都有自己的傳送、接受緩衝,當乙個資料報到達網絡卡是網絡卡把資料報收到自己的接收緩衝中,並發出乙個中斷請求。核心開始處理中斷,發現是可以接受的資料,於是就把資料報放到了核心的緩衝區中。

核心處理中斷分為兩步:

中斷上半部、中斷的下半部

上半部:把資料報緩衝到核心緩衝區的過程。(立即處理)

下半部:真正處理這個資料報的程序是下半部。(未必)

3、dma:直接記憶體訪問,i/o自帶的智慧型晶元。cpu告訴dma匯流排讓你使用,並提供一大段記憶體空間供你使用,dma讀完資料後,再次發出中斷請求,通知cpu資料已經讀取完畢。cpu通知核心資料已經讀取完畢,現在大多數平凡使用的i/o都帶有dma晶元。

cpu控制器控制匯流排使用(一根匯流排三種功能):

1、位址匯流排:完成對應裝置定址的

2、控制匯流排:控制各裝置協調的

3、資料匯流排:完成資料傳輸

10、os:

cpu: 時間片,time slice

memory: 虛擬位址空間

cpu字長,32bit位址匯流排,能表示2的32次方 4g位元組 1024* 1024* 1024 64bit 1024*1024*1024 *4

32個0 --32個1

os在ram中就在低位址空間

os在rom中os就在高位址空間

os在ram中就在低位址空間,rom驅動在高位址空間

memory:引入虛擬位址空間。

i/o:檔案

11、程序:task struct

(1)核心為每個程序維護的乙個資料結構,通過乙個鍊錶的形式。專門有儲存cpu暫存器狀態資料cpu把記憶體切割為頁框(page frame)4g 1024* 1024=1m

(2)**段–靜態變數(資料段)—堆—-共享庫(對映)—-棧

堆:開啟的檔案,檔案的資料流

棧:申明的變數

資料段:靜態全域性變數

(3)對程序來說4k是乙個頁面,對於物理記憶體來說4k就是乙個頁框

(4)虛擬的記憶體是連續,而實際儲存的物理記憶體是離散的。每個程序的線性位址空間被對映到了物理記憶體位址空間

12、mmu:

(1)當cpu執行乙個程序,那麼程式告訴cpu載入的是線性位址空間,而cpu必須在物理內訪問資料。cpu吧線性位址轉換為實體地址。

(2)每個task stuct 又核心維護乙個頁表。核心分配給程序那些物理記憶體都放在對映表。

(3)cpu就要裝載這個表。每個線性位址轉換為多級對映。計算頁表對映由cpu mmu來完成,當程序切換,mmu也要切換。

(4)當程式告訴cup乙個線性位址,mmu來計算實體地址,然後給cpu取址。在mmu前加快取,先查快取,再查mmu

調優,讓條目少些,4k頁框 改為4m,減少對映條目數提高命中率。這個快取就叫tlb translant look buffeer

程序切換,tlb不被清空。

64bit tlb是實體地址轉換到線性位址。

虛擬化,最好直接虛擬機器轉化到物理。

mmu位址轉換,訪問保護。

作業系統基礎知識

最近複習自考的作業系統資料主要分為六部分介紹作業系統知識,分別為 引論 處理器管理 儲存管理 檔案管理 裝置管理和併發程序。作業系統在計算機系統硬體和軟體中起到乙個承上啟下的作用,類似於三層架構中的業務邏輯層 個人之見 最近的博文將會分章節對作業系統知識總結。引論 有關作業系統的基礎知識 什麼是作業...

作業系統 基礎知識

作業系統的定義 作業系統 operating system,os 是指控制和管理整個計算機系統的硬體與軟體資源,合理地組織 排程計算機地工作與資源地分配,進而為使用者和其他軟體提供方便介面與環境的程式集合。作業系統是計算機系統中最基本的系統軟體。2.作業系統的特徵 併發 共享 虛擬 非同步 其中最基...

作業系統基礎知識整理

見之前的文章 遠端程序呼叫 remote procedure calls 利用中間的傳輸者stub進行,可模擬aidl 將程序的邏輯位址空間分成若干頁,以頁為單位將若干頁分別裝入到多個可以不相鄰的物理快中。為了滿足使用者的程式設計需求,將程式根據段進行儲存 首先將程式進行分段,每個段再分割成多個頁。...