作業系統基礎知識
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 將程序的邏輯位址空間分成若干頁,以頁為單位將若干頁分別裝入到多個可以不相鄰的物理快中。為了滿足使用者的程式設計需求,將程式根據段進行儲存 首先將程式進行分段,每個段再分割成多個頁。...