
計(jì)算機(jī)系統(tǒng)是由處理器、主存、磁盤、i/o設(shè)備等等 組成。
而操作系統(tǒng)是一個(gè)軟件,用于管理計(jì)算機(jī)系統(tǒng)。
與用戶交互的 基于文本的稱為shell 基于界面的稱為GUI 但這些并不屬于操作系統(tǒng)

? ? ? ?
這里的用戶接口程序就是 我們的Shell(命令行)和GUI(window的桌面)
多數(shù)計(jì)算機(jī)有兩種運(yùn)行模式:內(nèi)核態(tài)和用戶態(tài)
操作系統(tǒng)運(yùn)行在內(nèi)核態(tài)中(也稱為管態(tài)、核心態(tài))
在這個(gè)模式中
操作系統(tǒng)對(duì)所有硬件具有完全訪問(wèn)權(quán),可以運(yùn)行任何計(jì)算機(jī)課執(zhí)行的指令。
而其余軟件運(yùn)行在用戶態(tài),只使用了機(jī)器指令中的一個(gè)子集,比如一些i/o指令時(shí)禁止的。
操作系統(tǒng)與普通軟件的主要區(qū)別是
普通軟件你不喜歡可以更換,或?qū)懸粋€(gè)但操作系統(tǒng)卻不能寫,這是受硬件保護(hù)的。
但嵌入式操作系統(tǒng)(它沒(méi)有內(nèi)核態(tài))和解釋系統(tǒng)(java的操作系統(tǒng))除外。
linux與window的源代碼有500萬(wàn)行,如果包括共享庫(kù),則應(yīng)該有7000萬(wàn)行
一本書1000頁(yè),一頁(yè)50行,也要100本書?;揪褪且粋€(gè)書架。如果包括共享庫(kù)起碼要10-20個(gè)書架。所以,操作系統(tǒng)是大型、復(fù)雜、且長(zhǎng)壽的。
壽命長(zhǎng)是因?yàn)?,一旦編寫出?lái),所有者就不愿丟棄去在寫一個(gè)。
什么是操作系統(tǒng)
它是在內(nèi)核態(tài)運(yùn)行的軟件
操作系統(tǒng)有兩個(gè)基本上的獨(dú)立任務(wù);為應(yīng)用程序提供抽象、管理硬件資源
硬件為操作系統(tǒng)提供了丑陋的接口,而操作系統(tǒng)又為用戶(應(yīng)用程序)提供美麗的接口
操作系統(tǒng)的歷史
從1945 第一代計(jì)算機(jī): 真空管和穿孔卡片? 到1955年 第二代 晶體管和批處理系統(tǒng) 到1965年 第三代集成電路和多道程序設(shè)計(jì) 到1980 第四代個(gè)人計(jì)算機(jī) 到1990年 第五代移動(dòng)計(jì)算機(jī)
計(jì)算機(jī)硬件

現(xiàn)在的計(jì)算機(jī)都可看做這個(gè)模型(目前還是夠用的)
操作系統(tǒng)擴(kuò)展了計(jì)算機(jī)的指令集、它要做的是了解大量硬件? 并了解硬件如何面對(duì)程序員,在這里簡(jiǎn)要了解一下硬件。
如需詳細(xì)了解請(qǐng)查閱 Tanenbaum和Autiin(2012) Patterson和Hennessy(2013)
處理器

他的一生都在 從內(nèi)存中取出指令,解碼-確定其類型與操作數(shù)之中(取指,解碼)每個(gè)CPU都有一套可執(zhí)行的指令集(x86不能執(zhí)行ARM程序 反過(guò)來(lái)也不行)
cpu內(nèi)有個(gè)臨時(shí)寄存器。由于取指比解碼的時(shí)間長(zhǎng),所以就有處理臨時(shí)數(shù)據(jù)的寄存器,這個(gè)臨時(shí)寄存器在cpu內(nèi),有了這個(gè)臨時(shí)寄存器就可以從內(nèi)存讀取到臨時(shí)寄存器里,也可以將變量和結(jié)果保存在這個(gè)臨時(shí)寄存器上,也可以從臨時(shí)寄存器存入內(nèi)存。
有個(gè)專用寄存器。他保存了下一個(gè)要讀取指令的地址,指向下一個(gè)后續(xù)指令。
有一個(gè)堆棧指針寄存器。指向內(nèi)存中棧的頂端,該棧包含每個(gè)指執(zhí)行過(guò)程的棧幀。一個(gè)棧幀保存了有關(guān)的輸入?yún)?shù)、局部變量、及沒(méi)保存在寄存器中的臨時(shí)變量。
有一個(gè)程序狀態(tài)字(Program Status Word? (PSW))寄存器。保存著包含條件的碼位,cpu優(yōu)先級(jí)、模式,及各種其他控制位。
所有cpu有四個(gè)寄存器
臨時(shí)寄存器 、專用寄存器、 堆棧指針寄存器 、程序狀態(tài)字寄存器(PSW)
操作系統(tǒng)必須了解每一個(gè)寄存器
因?yàn)樵诙嗦窂?fù)用(同時(shí)使用)的操作系統(tǒng)中,操作系統(tǒng)不停的啟動(dòng)關(guān)停程序
每關(guān)停一次,就必須知道這些寄存器運(yùn)行到了哪里,等待啟動(dòng)繼續(xù)運(yùn)行
為了性能,設(shè)計(jì)師早就放棄了同時(shí)讀取、解碼、執(zhí)行的簡(jiǎn)單模型?,F(xiàn)在的cpu有單獨(dú)的取指單元,取n指令時(shí),可以對(duì)n+1指令解碼,這樣的機(jī)制稱為流水線。

比流水線更厲害的是超標(biāo)量cpu。這種機(jī)制在解碼單元和執(zhí)行單元之間添加了一個(gè)保持緩沖區(qū),兩旁有很多的執(zhí)行單元,一旦有空閑的執(zhí)行單元就立馬檢查緩沖區(qū)是否有可執(zhí)行的指令。
前面說(shuō)過(guò),用戶態(tài)運(yùn)行下的程序只能執(zhí)行cup整個(gè)指令集的子集,而這些都是由PSW一個(gè)二進(jìn)制位控制,用戶態(tài)下很多有關(guān)I/O和內(nèi)存保護(hù)的所有指令的是禁止的
為了從操作系統(tǒng)中獲取這些服務(wù),用戶程序必須使用系統(tǒng)調(diào)用(system call),在這里先把他看成是特殊的用戶指令,是用戶從用戶態(tài)切換到內(nèi)核態(tài)的能力
但是計(jì)算機(jī)使用陷阱來(lái)執(zhí)行系統(tǒng)調(diào)用而非指令,其他多數(shù)陷阱是由硬件引起的,用來(lái)警告有異常情況的發(fā)生。
多線程與多核芯片

moore定律是芯片中的晶體管沒(méi)18個(gè)月翻一倍。它已經(jīng)保持了30年,有望再保持10年,這么多的晶體管的必然結(jié)果是,在cpu中加入了更大的緩存(后面解釋),隨后某種控制邏輯也會(huì)出現(xiàn),比如多線程或超線程
多線程允許cpu保持兩個(gè)不同的線程狀態(tài),然后再納秒級(jí)的時(shí)間尺度來(lái)回切換。(線程是一種輕量級(jí)進(jìn)程,后面解釋)
多線程對(duì)操作系統(tǒng)是有益的,因?yàn)橐粋€(gè)線程相當(dāng)于單個(gè)cpu,對(duì)于實(shí)際只有兩個(gè)cpu的操作系統(tǒng)來(lái)說(shuō),則相當(dāng)于4個(gè)cpu。
除了多線程外,還有多核,就是一個(gè)多核芯片可以安放多小芯片,每個(gè)小芯片相當(dāng)于cpu,目前最多的有60多個(gè)核,如Intel Xeon Phi等
但操作系統(tǒng)使用這類多核芯片,必須使用多處理器操作系統(tǒng)
論數(shù)量最多的沒(méi)什么贏過(guò)GPU(顯卡的組成部分)的,GPU是由成千上萬(wàn)個(gè)微核組成的處理器,擅長(zhǎng)圖形渲染,但不能勝任串行任務(wù),且很難編程。GPU在加密及網(wǎng)絡(luò)傳輸方面對(duì)操作系統(tǒng)很有用,但讓他運(yùn)行在GPU上就不太可能了。
存儲(chǔ)器

任何一種計(jì)算機(jī)中,第二種主要部件都是存儲(chǔ)器
理想的儲(chǔ)存器應(yīng)有三個(gè)目標(biāo)
極為迅速,cpu不會(huì)受到儲(chǔ)存器限制
充分大
非常便宜
但目前是無(wú)法同時(shí)滿足著三個(gè)目標(biāo)
頂層是存儲(chǔ)器,寄存器在cpu中,沒(méi)有時(shí)延,容量為 在32位CPU為32*32,64位中則64*64,其儲(chǔ)存容量都小于1kb
下一層是高速緩存,當(dāng)某個(gè)程序讀取存儲(chǔ)字時(shí),先會(huì)檢查高速緩存中是否有對(duì)應(yīng)的字,是,則被稱為高速緩存命中,就不需要通過(guò)主線去訪問(wèn)主存了,當(dāng)高速緩存的價(jià)格昂貴,大小有限。
操作系統(tǒng)一直在使用緩存,避免重復(fù)地調(diào)取主存中的文件,以提高效率
緩存是一個(gè)好方法,在現(xiàn)代CPU中設(shè)計(jì)了兩個(gè)緩存
第一級(jí)稱為L(zhǎng)1緩存,在CPU中,將以解碼的指令調(diào)入cpu執(zhí)行,無(wú)延遲
第二級(jí)稱為L(zhǎng)2緩存,在CPU外,用來(lái)存放使用過(guò)的內(nèi)存字,有1-2個(gè)時(shí)鐘周期延遲

再往下一層是主存,通常稱為隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)
除主存之外,還有一類 非易失性訪問(wèn)存儲(chǔ)器
只讀存儲(chǔ)器(ROM) 閃存? 電可擦除可編程存儲(chǔ)器(EEPROM)
前一個(gè)在出廠時(shí)就已寫好,不能被更改,后兩個(gè)則可以被更改
還有易失的CMOS存儲(chǔ)器 它靠一塊小電池驅(qū)動(dòng)保持時(shí)間和啟動(dòng)磁盤等配置,計(jì)算機(jī)
沒(méi)上電也可更新時(shí)間?