《現(xiàn)代操作系統(tǒng)》——1引論

《計(jì)算機(jī)組成與體系結(jié)構(gòu)》——7操作系統(tǒng)支持就已經(jīng)知道齿坷,操作系統(tǒng)并不是和計(jì)算機(jī)一起出現(xiàn)的產(chǎn)物桂肌,然后呢,OS的主要任務(wù)就是任務(wù)的調(diào)度和存儲的管理永淌!因此崎场,在學(xué)習(xí)的時(shí)候,應(yīng)該把重點(diǎn)放在進(jìn)程的理解和文件的管理上遂蛀。

  • 1 引論
  • 2 進(jìn)程與線程
  • 3 內(nèi)存管理
  • 4 文件系統(tǒng)
  • 5 輸入/輸出
  • 6 死鎖

其他的章節(jié)(7-13)可以繼續(xù)了解谭跨。


1.2 操作系統(tǒng)的歷史

  • 第一代(1945~1955):真空管和穿孔卡片
    機(jī)器語言
  • 第二代(1955~1965):晶體管和批處理系統(tǒng)
    FORTRAN或匯編語言
  • 第三代(1965~1980):集成電路和多道程序設(shè)計(jì)
    IBM 360是第一個(gè)采用(小規(guī)模)集成電路的主流機(jī)型,與采用分立晶體管制造的第二代計(jì)算機(jī)相比李滴,其性能/價(jià)格比有很大提高饺蚊。在7094上0,若當(dāng)前作業(yè)因等待磁帶或其他I/O操作而暫停悬嗓,CPU就只能簡單地踏步直到該I/O完成。解決辦法是將內(nèi)存分為幾個(gè)部分裕坊,每一部分存放不同的作業(yè)包竹,當(dāng)一個(gè)作業(yè)等待I/O操作完成時(shí),另一個(gè)作業(yè)可以使用CPU籍凝。
  • 第四代(1980年至今):個(gè)人計(jì)算機(jī)
    x86代表所有使用指令集體系結(jié)構(gòu)家族的現(xiàn)代處理器周瞎,這類處理器的源頭可以追溯到20世紀(jì)70年代的8086芯片。
  • 第五代(1990年至今):移動(dòng)計(jì)算機(jī)

1.3 計(jì)算機(jī)硬件簡介

處理器

【圖】
每個(gè)CPU都有一套可執(zhí)行的專門指令集饵蒂。所以声诸,x86處理器不能執(zhí)行ARM程序,而ARM處理器也不能執(zhí)行x86程序退盯。
除了用來保存變量和臨時(shí)結(jié)果的通用寄存器外彼乌,多數(shù)計(jì)算機(jī)還有一些對程序員可見的專用寄存器泻肯,其中之一時(shí)程序計(jì)數(shù)器,它保存了將要取出的下一條指令的內(nèi)存地址慰照。在指令取出之后灶挟,程序計(jì)數(shù)器就被更新以便指向后繼的指令。
另一個(gè)寄存器時(shí)堆棧指針毒租,它指向內(nèi)存中當(dāng)前棧的頂端稚铣。該棧包含了每個(gè)執(zhí)行過程的棧幀。一個(gè)過程的棧幀中保存了有關(guān)的輸入?yún)?shù)墅垮、局部變量以及那些沒有保存在寄存器的臨時(shí)變量惕医。
還有程序狀態(tài)字(PSW)寄存器。這個(gè)寄存器包含了條件碼位算色、CPU優(yōu)先級抬伺、模式(用戶態(tài)或內(nèi)核態(tài)),以及各種其他控制位剃允。用戶程序通常突入整個(gè)PSW沛简,但是,只對其中的少量字段寫入斥废。在系統(tǒng)調(diào)用和I/O中椒楣,PSW的作用很重要。

流水線與超標(biāo)量:在超變量中牡肉,有多個(gè)執(zhí)行單元捧灰,而不是單個(gè)流水線。

多數(shù)CPU都有兩種模式统锤,內(nèi)核態(tài)用戶態(tài)毛俏。
用戶在用戶態(tài)下運(yùn)行,僅允許執(zhí)行整個(gè)指令集的一個(gè)子集和訪問所有功能的一個(gè)子集饲窿。以搬而言煌寇,在用戶態(tài)中有關(guān)I/O和內(nèi)存保護(hù)的所有指令是禁止的。當(dāng)然逾雄,將PSW中的模式位設(shè)置成內(nèi)核態(tài)也是禁止的阀溶。為了從操作系統(tǒng)中獲得服務(wù),用戶程序必須使用系統(tǒng)調(diào)用以陷入內(nèi)核并調(diào)用操作系統(tǒng)鸦泳。

兩種架構(gòu)的4核芯片.png

多線程和多核芯片
多線程允許CPU保持兩個(gè)不同的線程狀態(tài)银锻,然后在納秒級的時(shí)間尺度內(nèi)來回切換。多線程并不是真正的并行處理做鹰!在一個(gè)時(shí)刻只有一個(gè)進(jìn)程在運(yùn)行击纬,但是線程的切換時(shí)間則減少那納秒的數(shù)量級。
除了多線程钾麸,還出現(xiàn)了包含2個(gè)或4個(gè)完整處理其或內(nèi)核的CPU芯片更振。
核心數(shù)量更多的GPU炕桨,它們擅長處理大量并行的簡單計(jì)算,比如在圖像應(yīng)用中渲染多邊形殃饿,它們不太能圣人串行任務(wù)谋作,并且很難編程。雖然GPU對操作系統(tǒng)很有用乎芳,但操作系統(tǒng)本身不太可能運(yùn)行在GPU上遵蚜。

存儲器

典型的存儲層次結(jié)構(gòu).png

寄存器與CPU相同的材料制成,所以和CPU一樣快奈惑。其典型的存儲容量是吭净,在32位CPU中為32*32位,而在6位CPU中為64*64位(1KB)肴甸。

高速緩存寂殉,它多數(shù)由硬件控制。主存被分割成高速緩存行原在,其典型大小為64字節(jié)友扰。當(dāng)某一個(gè)程序需要讀一個(gè)存儲字時(shí),高速緩存硬件檢查所需要的高速緩存行是否在高速緩存中庶柿。如果是村怪,稱為高速緩存命中,緩存滿足了請求浮庐,就不需要通過總線把訪問請求送往主存甚负。高速緩存命中通常需要兩個(gè)時(shí)鐘周期(cycle)

L1緩存用來存儲已解碼的指令审残,它總是在CPU內(nèi)部梭域,多數(shù)芯片安排由第二個(gè)L1緩存,用來存儲那些頻繁使用的數(shù)據(jù)字搅轿。另外病涨,往往還設(shè)計(jì)由第二級緩存,用來存放進(jìn)來使用過的若干兆字節(jié)的內(nèi)存字璧坟。兩個(gè)級別的緩存差別在于没宾,對L1緩存的訪問,不存在任何延時(shí)沸柔;而對L2緩存的訪問會延時(shí)1或2個(gè)時(shí)鐘周期。

主存(RAM)铲敛,P.S.也就是我們說的內(nèi)存褐澎。

4核芯片.png

只讀存儲器(ROM),用于啟動(dòng)計(jì)算機(jī)的引導(dǎo)加載模塊就放在ROM中伐蒋。

另外工三,還有最新出現(xiàn)的閃存迁酸,它也是非易失性的,但是可以擦除和重寫俭正。它的性能介于主存和磁盤之間奸鬓。
CMOS存儲器,用于保持當(dāng)前時(shí)間和日期掸读。它由一塊小電池驅(qū)動(dòng)串远,即使電腦沒有上電,時(shí)間仍然可以正確更新儿惫。之所以采用CMOS是因?yàn)樗牡碾娔芊浅I佟?/p>

磁盤

機(jī)械臂從一個(gè)柱面移到相鄰的柱面大約需要1ms澡罚。而隨機(jī)一道一個(gè)柱面的典型時(shí)間為5ms-10ms,其具體時(shí)間取決于驅(qū)動(dòng)器肾请。一旦磁臂到達(dá)正確的磁道上留搔,驅(qū)動(dòng)器必須等待所需的扇區(qū)旋轉(zhuǎn)到磁頭之下,這就增加了5ms-10ms的時(shí)延铛铁,其具體時(shí)延取決于驅(qū)動(dòng)器的轉(zhuǎn)速隔显。

所以整個(gè)時(shí)延=尋道時(shí)延+旋轉(zhuǎn)時(shí)延+讀(寫)時(shí)延

與磁盤有點(diǎn)類似的是固態(tài)硬盤,它的存儲介質(zhì)是閃存饵逐。

虛擬內(nèi)存機(jī)制:有時(shí)我們需要把程序放到磁盤上括眠,而將主存作為一種緩存,用來保存最頻繁使用的部分程序梳毙。這時(shí)需要快速地映像內(nèi)存地址哺窄,以便把程序生成的地址轉(zhuǎn)換為有關(guān)字節(jié)在RAM中的物理地址。該映射由CPU中的一個(gè)稱為存儲器管理單元(MMU)的部件來完成账锹。

I/O設(shè)備

I/O設(shè)備一般包括兩個(gè)部分:設(shè)備控制器和設(shè)備本身萌业。SATA(Serial ATA,串行高級技術(shù)附件)磁盤控制器可以適配任何一種SATA磁盤奸柬。
專門與控制器對話生年,發(fā)出命令并接收相應(yīng)的軟件,稱為設(shè)備驅(qū)動(dòng)程序廓奕。一般情況下抱婉,必須把設(shè)備驅(qū)動(dòng)程序裝入操作系統(tǒng)中,這樣它可在核心態(tài)運(yùn)行桌粉。(具體的裝入方式和中斷處理請看書1.3.4 p17蒸绩。)

總線

一個(gè)大型x86系統(tǒng)的結(jié)構(gòu).png

在傳統(tǒng)的PCI總線上,一個(gè)32位數(shù)據(jù)通過32條并行的導(dǎo)線發(fā)送铃肯。與之相反患亿,PCIe使用串行總線架構(gòu),通過一條被稱為數(shù)據(jù)鏈路傳遞集合了所有位的一條消息押逼,這非常像網(wǎng)絡(luò)包步藕。
USB:集中式總線惦界,其根設(shè)備沒1ms輪詢一次I/O設(shè)備,看是否有信息收發(fā)咙冗。

1.5 操作系統(tǒng)概念

時(shí)刻記得:操作系統(tǒng)的兩個(gè)任務(wù)沾歪,任務(wù)調(diào)度和文件管理。

文件

進(jìn)程和文件層次都可以組織成樹狀結(jié)構(gòu)雾消,但這兩種樹狀結(jié)構(gòu)有不少不同之處灾搏。一般進(jìn)程的樹狀結(jié)構(gòu)層次不深(很少超過三層),而文件的樹狀結(jié)構(gòu)常常多達(dá)四層仪或、五層或更多層确镊。進(jìn)程樹層次結(jié)構(gòu)是暫時(shí)的,通常最多存在幾分鐘范删,而目錄層次則可能存在數(shù)年之久蕾域。

在讀寫文件之前,首先要打開文件到旦,檢查其訪問權(quán)限旨巷。若權(quán)限許可,系統(tǒng)會返回一個(gè)小整數(shù)添忘,稱作文件描述符采呐,供后續(xù)操作使用。若禁止訪問搁骑,系統(tǒng)則返回一個(gè)錯(cuò)誤碼斧吐。

本小節(jié)討論的最后一個(gè)特性既與進(jìn)程有關(guān)也與文件有關(guān):管道。管道(pipe)是一種虛文件仲器,它可以連接兩個(gè)進(jìn)程煤率。當(dāng)進(jìn)程A想對進(jìn)程B發(fā)送數(shù)據(jù)時(shí),它把數(shù)據(jù)寫到管道上乏冀,仿佛管道就是輸出文件一樣蝶糯。

由管道連接的兩個(gè)進(jìn)程.png

保護(hù)

UNIX操作系統(tǒng)通過對每個(gè)為念賦予一個(gè)9位的二進(jìn)制保護(hù)碼,對UNIX中的文件實(shí)現(xiàn)保護(hù)辆沦。該保護(hù)代碼有3個(gè)字段昼捍,一個(gè)用于所有者,一個(gè)用于所有者同組的其他成員肢扯,一個(gè)用于其他人妒茬。這些位就是知名的rwx位。對于一個(gè)目錄來說蔚晨,x的含義是允許查詢郊闯。

shell

操作系統(tǒng)是進(jìn)行系統(tǒng)調(diào)用的代碼。shell本身不是操作系統(tǒng)的一部分,但它體現(xiàn)了許多操作系統(tǒng)的特性团赁,并很好地說明了系統(tǒng)調(diào)用的具體用法。

用戶登陸時(shí)谨履,同時(shí)啟動(dòng)了一個(gè)shell欢摄。它以終端作為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。首先顯示提示符(如$)笋粟,提示用戶shell正在等待接收命令怀挠。假如用戶鍵入
$ date

shell創(chuàng)建一個(gè)子進(jìn)程,并運(yùn)行date程序作為子進(jìn)程害捕。在該子進(jìn)程運(yùn)行期間绿淋,shell等待它結(jié)束。在子進(jìn)程結(jié)束后尝盼,shell再次顯示提示符吞滞,并等待下一行輸入。

現(xiàn)在盾沫,許多個(gè)人計(jì)算機(jī)使用GUI裁赠。事實(shí)上,GUI與shell類似赴精,GUI只是運(yùn)行在操作系統(tǒng)頂部的程序佩捞。

1.6 系統(tǒng)調(diào)用

記住下列事項(xiàng)是有益的。任何單CPU計(jì)算機(jī)一次只能執(zhí)行一條指令蕾哟。如果一個(gè)進(jìn)程正在用戶態(tài)運(yùn)行一個(gè)用戶程序一忱,并且需要一個(gè)系統(tǒng)服務(wù),比如從一個(gè)文件讀數(shù)據(jù)谭确,那么它就必須執(zhí)行一個(gè)陷阱或系統(tǒng)調(diào)用指令帘营,將控制轉(zhuǎn)移到操作系統(tǒng)。操作系統(tǒng)接著通過參數(shù)檢查找出所需要的調(diào)用進(jìn)程琼富。然后仪吧,它執(zhí)行系統(tǒng)調(diào)用,并把控制返回給在系統(tǒng)調(diào)用后面跟隨的指令鞠眉。

用于進(jìn)程管理的系統(tǒng)調(diào)用

在UNIX中的進(jìn)程將其存儲空間劃分為三段:正文段(如程序代碼)薯鼠、數(shù)據(jù)段(如變量)以及堆棧。數(shù)據(jù)向上增長而堆棧向下增長械蹋。

進(jìn)程.png

用于文件管理的系統(tǒng)調(diào)用

  • open 打開一個(gè)文件
  • close 關(guān)閉文件
  • read 讀
  • write 寫
  • lseek 移動(dòng)文件指針
  • stat 返回文件信息

用于目錄管理的系統(tǒng)調(diào)用

  • mkdir
  • rmdir
  • link 允許同一個(gè)文件以兩個(gè)或多個(gè)名稱出現(xiàn)
  • mount 允許將兩個(gè)文件系統(tǒng)合并為一個(gè)

各種系統(tǒng)調(diào)用

  • chdir
  • chmod 改變文件的權(quán)限
  • kill
  • time 以秒為單位返回當(dāng)前時(shí)間

習(xí)題

  1. 內(nèi)核態(tài)和用戶態(tài)有哪些區(qū)別出皇?
    答:大多數(shù)現(xiàn)代CPU提供兩種執(zhí)行模式:內(nèi)核態(tài)和用戶態(tài)。 CPU可以執(zhí)行其指令集中的每條指令哗戈,并在內(nèi)核態(tài)下執(zhí)行時(shí)使用硬件的各種功能郊艘。 但是用戶態(tài)只能執(zhí)行部分指令,執(zhí)行時(shí)僅使用部分功能。追yi流年
    把操作系統(tǒng)的核心功能放在內(nèi)核態(tài)纱注,保證系統(tǒng)可以穩(wěn)健運(yùn)行畏浆,而其他功能放在用戶態(tài),方便調(diào)用而且不容易造成系統(tǒng)的崩潰狞贱。

x. 陷阱指令刻获、中斷和異常的區(qū)別?
答:操作系統(tǒng)中陷阱瞎嬉,中斷和異常的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝎毡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子氧枣,更是在濱河造成了極大的恐慌沐兵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件便监,死亡現(xiàn)場離奇詭異扎谎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)茬贵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門簿透,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人解藻,你說我怎么就攤上這事老充。” “怎么了螟左?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵啡浊,是天一觀的道長。 經(jīng)常有香客問我胶背,道長巷嚣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任钳吟,我火速辦了婚禮廷粒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘红且。我一直安慰自己坝茎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布暇番。 她就那樣靜靜地躺著嗤放,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壁酬。 梳的紋絲不亂的頭發(fā)上次酌,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天恨课,我揣著相機(jī)與錄音,去河邊找鬼岳服。 笑死剂公,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吊宋。 我是一名探鬼主播诬留,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贫母!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盒刚,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤腺劣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后因块,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橘原,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年涡上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趾断。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吩愧,死狀恐怖芋酌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情雁佳,我是刑警寧澤脐帝,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站糖权,受9級特大地震影響堵腹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜星澳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一疚顷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禁偎,春花似錦腿堤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至装处,卻和暖如春误债,著一層夾襖步出監(jiān)牢的瞬間浸船,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工寝蹈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留李命,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓箫老,卻偏偏與公主長得像封字,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子耍鬓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354