- 相關(guān)推薦
操作系統(tǒng)學(xué)結(jié)
經(jīng)過(guò)一天半的戰(zhàn)斗,終于把操作系統(tǒng)概論這本書(shū)給拿下了。對(duì)于曾經(jīng)專業(yè)課學(xué)過(guò)一些電腦硬件知識(shí)的我來(lái)說(shuō),這本書(shū)更加吸引我,以前一些聽(tīng)過(guò)的名詞或高大上的詞語(yǔ)在這本書(shū)上被詳細(xì)介紹了,看的非常有收獲。下面來(lái)總結(jié)下自己的收獲:
首先第一章引論,在這里首先介紹了計(jì)算機(jī)系統(tǒng),包括了軟件和硬件兩部分。
接下來(lái)就是第一章的重點(diǎn):操作系統(tǒng)。如下圖:
當(dāng)前流行的操作系統(tǒng)有windows、unix、linux等。微軟的windows系統(tǒng)經(jīng)歷了一個(gè)從簡(jiǎn)單到復(fù)雜,從低級(jí)到高級(jí)的過(guò)程;從ms-dos---windows 3---windows 95---windows 98---windows nt---windows 2000,再到現(xiàn)在win7、8甚至win10,微軟始終在進(jìn)步。unix是一個(gè)通用的交互式分時(shí)操作系統(tǒng),有at&t公司下屬的bell實(shí)驗(yàn)室開(kāi)發(fā),在誕生后,源代碼就一直公開(kāi),用戶可以參與到unix的升級(jí)中。unix的特點(diǎn):1.短小精悍;2.可裝卸的多層次文件系統(tǒng);3.可移植性好;4.網(wǎng)絡(luò)通信功能強(qiáng)。linux是網(wǎng)絡(luò)時(shí)代的產(chǎn)品,繼承于unix,并做了很多改進(jìn)。
第一章總領(lǐng)了全書(shū),后面的二三四五六章都是講的計(jì)算機(jī)的各種管理,總結(jié)如下圖:
在這里我把每章中的重點(diǎn)用紅色的顏色標(biāo)記出來(lái)了,這樣在精讀的時(shí)候就可以有重點(diǎn)的向外擴(kuò)散,抓住考點(diǎn),征服考試。第一遍閱讀畫(huà)的有點(diǎn)粗糙,在精讀的時(shí)候再大大的豐富下。
操作系統(tǒng)學(xué)結(jié) [篇2]
這里的設(shè)備指的是i/o設(shè)備,即馮若依曼所提出的計(jì)算機(jī)五大部件的輸入/輸出部件,在五大部件中占其二,可想其重要行了,現(xiàn)在,開(kāi)始我的總結(jié)之旅了
i/o系統(tǒng)可以分為:微機(jī)i/o設(shè)備 和主機(jī)i/o設(shè)備。這兩個(gè)之間的區(qū)別和聯(lián)系,我還是不太清楚。感覺(jué)微機(jī)i/o比主機(jī)i/o要簡(jiǎn)單。
對(duì)i/o系統(tǒng)的管理有以下幾種管理方式:
程序控制方式:這種方式好比學(xué)51單片機(jī)編匯編時(shí)反復(fù)去檢測(cè)一個(gè)端口是否有要求的信號(hào)來(lái)一樣,簡(jiǎn)單,但對(duì)cpu利用率太太太太太低了。
中斷方式:這種方式應(yīng)該用的比較多吧,曾經(jīng)有老師在課堂上這樣形象地描繪中斷這個(gè)東西,比如說(shuō)你編程,突然,你的朋友來(lái)了個(gè)電話,很明顯,你不能置之不理,所以,你接了這個(gè)電話,掛電話之后,你就會(huì)返回剛才編程思路被打斷的地方,繼續(xù)編程了。但這種方式的致命缺點(diǎn)就是,每次傳送的數(shù)據(jù)量太少了,若要傳輸大量的設(shè)備,很明顯,設(shè)備將要進(jìn)行n多次的中斷,我們知道,我一次中斷,會(huì)保存當(dāng)前的psw,register等等信息,所以,是有開(kāi)銷的,若進(jìn)行很多次中斷,cpu的利用率同樣很多,因?yàn),很多cpu時(shí)間用到對(duì)中斷的處理上了。
dma方式:這種方式是現(xiàn)在廣泛運(yùn)用的管理方式了,向我們現(xiàn)在聽(tīng)說(shuō)的什么打開(kāi)dma啊之類的就是指的這個(gè)東西。dma全稱是directmemoryaccess(直接內(nèi)存讀寫(xiě))。它的優(yōu)點(diǎn)不用說(shuō),因?yàn)橛衐irect,所以,是很快的。cpu僅僅是干預(yù)開(kāi)始和結(jié)束,其他一概由dma控制器來(lái)完成,所以,大大的節(jié)省了大量的cpu時(shí)間。
通道方式:通道完成主存儲(chǔ)器和外設(shè)之間的信息傳輸,由于通道這種東西平時(shí)沒(méi)看到過(guò),對(duì)這種方式?jīng)]有什么理解,按照書(shū)上所說(shuō),這加大了i/o和cpu并行工作的程度。想想也是,cpu僅僅控制通道,通道就可以控制mm和i/o設(shè)備之間的信息傳輸,在后面的章節(jié)中,課本對(duì)通道的工作過(guò)程有了更詳細(xì)的描述,就是cpu僅僅給出通道所要執(zhí)行的通道程序在內(nèi)存中的首地址,其余#url#的事情就有通道完成了,好像通道是一個(gè)附加的cpu,專門(mén)用來(lái)完成數(shù)據(jù)傳輸?shù)墓ぷ,的確加大了并行工作的程度。
設(shè)備管理的目標(biāo):提高設(shè)備利用率,為用戶提供方便,統(tǒng)一的界面。這里值得我好好理解。
這里的方便,指的是屏蔽設(shè)備的物理特性,用戶只需要知道操作而不必知道每一個(gè)設(shè)備具體的工作原理。這里的統(tǒng)一指的是不同的設(shè)備用統(tǒng)一的操作方式,這樣,用戶在操作的時(shí)候,對(duì)不同的設(shè)備,好像是用同一種操作命令,如winxp中對(duì)硬盤(pán)和u盤(pán)的操作好像是一樣的,比如同樣的復(fù)制命令等等,統(tǒng)一、簡(jiǎn)化了用戶的使用。把方便和統(tǒng)一結(jié)合起來(lái)看,就是讓用戶面對(duì)的不再是一個(gè)個(gè)的物理設(shè)備,而是一組具有相同特征的邏輯設(shè)備。
設(shè)備管理的主要技術(shù):中斷技術(shù),dma技術(shù),通道技術(shù),緩沖技術(shù)
android logcat 如何獲取輸出所有內(nèi)容? 想要的東東沒(méi)有輸出
。我覺(jué)得前三個(gè)主要是通過(guò)硬件來(lái)實(shí)現(xiàn)的,而緩沖技術(shù),借助硬件,主要是以某種算法,以軟件實(shí)現(xiàn)的。前面一直再說(shuō)硬件,現(xiàn)在開(kāi)始說(shuō)軟件了。
設(shè)備管理軟件的基本思想是分層構(gòu)造。想想也是#url#,為了實(shí)現(xiàn)設(shè)備管理的目標(biāo):為用戶提供方便,統(tǒng)一的界面,如果不通過(guò)分層的思想,層層抽象,是達(dá)不到這個(gè)目的的。
設(shè)備管理軟件的目標(biāo):設(shè)備獨(dú)立性 和統(tǒng)一命名。設(shè)備獨(dú)立性可以這樣來(lái)理解,當(dāng)最底層的物理設(shè)備變化的時(shí)候,面向用戶的那一層軟件并不用變,因?yàn),它的下層的軟件把這種變化屏蔽了,具體的情況就是,當(dāng)硬件變化后,我們僅僅改變了驅(qū)動(dòng)程序,但驅(qū)動(dòng)程序與上層軟件的接口并沒(méi)有變,所以,我們的上層軟件就不用變化了。提高了軟件的復(fù)用。這個(gè)原理很像我們?cè)跀?shù)據(jù)庫(kù)中學(xué)的三級(jí)模式,兩級(jí)映像,不光提供了物理獨(dú)立性,還提供了邏輯獨(dú)立性。統(tǒng)一命名比較難懂,通過(guò)例子來(lái)說(shuō)明吧,在winxp中,西部數(shù)據(jù)和 邁拓的硬盤(pán)被當(dāng)作同樣的硬盤(pán)設(shè)備來(lái)使用,在unix中,i/o設(shè)備被當(dāng)作文件來(lái)處理,這樣,可以通過(guò)路徑來(lái)訪問(wèn)i/o設(shè)備。
操作系統(tǒng)學(xué)結(jié) [篇3]
1.聯(lián)機(jī)命令的類型:系統(tǒng)訪問(wèn)類型;磁盤(pán)操作類型;文件操作類型;目標(biāo)操作類型;通信類;其他命令
2.操作系統(tǒng)的目標(biāo):方便性、有效性、可擴(kuò)充性、開(kāi)放性。
3.操作系統(tǒng)的作用:os作為用戶與計(jì)算機(jī)硬件系統(tǒng)之間的接口;os作為計(jì)算機(jī)系統(tǒng)資源的管理者;os用作擴(kuò)充機(jī)器。
4.操作系統(tǒng)的基本特性:并發(fā)、共享、虛擬、異步。
5.操作系統(tǒng)的功能:處理機(jī)管理(進(jìn)程控制、進(jìn)程通信、調(diào)度)、存儲(chǔ)器管理(內(nèi)存分配、內(nèi)存保護(hù)、地址映射、內(nèi)存擴(kuò)充。)、設(shè)備管理(緩沖管理、設(shè)備管理、設(shè)備處理)、文件管理(文件存儲(chǔ)空間的管理、目錄管理、文件的讀/寫(xiě)管理和保護(hù))。
6.常見(jiàn)的操作系統(tǒng)接口有:命令接口、程序接口、圖形接口。
7.單緩沖和雙緩沖的區(qū)別:兩臺(tái)機(jī)器之間的通信,配置單緩沖則在任意時(shí)刻都只能實(shí)現(xiàn)但方向的數(shù)據(jù)傳輸,絕不允許雙方同時(shí)向?qū)Ψ桨l(fā)送數(shù)據(jù)。在兩臺(tái)機(jī)器中設(shè)置兩個(gè)緩沖區(qū),一個(gè)用作發(fā)送緩沖區(qū),另一個(gè)用作接受緩沖區(qū),可實(shí)現(xiàn)雙向數(shù)據(jù)傳輸。
8.操作系統(tǒng)的定義:是一組控制和管理計(jì)算機(jī)硬件和軟件資源,合理的對(duì)各類作業(yè)進(jìn)行調(diào)度以及方便用戶使用的程序集合。
9.高級(jí)調(diào)度(長(zhǎng)度調(diào)度或作業(yè)調(diào)度):用于決定把外存上處于后備隊(duì)列中那些作業(yè)調(diào)入內(nèi)存,并為他們創(chuàng)建進(jìn)程,分配必要的資源,然后再將新創(chuàng)建的進(jìn)程排列到就緒隊(duì)列上,準(zhǔn)備執(zhí)行。
10.低級(jí)調(diào)度(進(jìn)程調(diào)度或短程調(diào)度):用來(lái)決定就緒隊(duì)列中的哪個(gè)進(jìn)程應(yīng)獲得處理機(jī),然后再由分派程序執(zhí)行把處理機(jī)分配給該進(jìn)程的具體操作。
11.中級(jí)調(diào)度(中程調(diào)度)引入目的:為了提高內(nèi)存利用率和系統(tǒng)吞吐量。
12.進(jìn)程通信的類型:共享存儲(chǔ)系統(tǒng),消息傳遞系統(tǒng),管道通信,信號(hào)量通信。
13.產(chǎn)生死鎖的原因:競(jìng)爭(zhēng)資源,進(jìn)程間推進(jìn)順序非法
14.產(chǎn)生死鎖的必要條件:互斥條件,請(qǐng)求和保持條件,不剝奪條件,環(huán)路等待條件。
15.預(yù)防死鎖:(1)摒棄“請(qǐng)求和保持”條件:若系統(tǒng)有足夠的資源分配給某進(jìn)程,便可把其需要的所有資源分配給該進(jìn)程,則該進(jìn)程在整個(gè)運(yùn)行期間,便不會(huì)提出資源請(qǐng)求,從而摒棄了請(qǐng)求條件,在分配資源時(shí)只要有一種資源不能滿足其進(jìn)程的要求,即使其余所需的各資源都空閑,也不分配給該進(jìn)程,而該進(jìn)程等待。由于該進(jìn)程的等待時(shí)間,他并未占有任何資源,因而也摒棄了保持條件,從而可以避免發(fā)生死鎖。(2)摒棄“不剝奪”條件:當(dāng)一個(gè)已經(jīng)保持了某些資源的進(jìn)程,在提出新的資源請(qǐng)求而不能立即得到滿足時(shí),必須釋放它已經(jīng)保持了的所有資源,待以后需要時(shí)再重新申請(qǐng),即某一進(jìn)程已經(jīng)占有的資源,在運(yùn)行中會(huì)被暫時(shí)的釋放掉,也可被認(rèn)為是被剝奪了,從而摒棄了不剝奪條件。(3)摒棄“環(huán)路等待”條件:所以進(jìn)程對(duì)資源的請(qǐng)求必須嚴(yán)格按資源序號(hào)遞增的次序提出,這樣在所形成的資源分配圖中,不可能在出現(xiàn)環(huán)路,因而摒棄了環(huán)路等待條件。
16.為什么引入動(dòng)態(tài)重定位?如何實(shí)現(xiàn)?
答:為了在程序執(zhí)行過(guò)程中,每當(dāng)訪問(wèn)指令或數(shù)據(jù)時(shí),將要訪問(wèn)的程序或數(shù)據(jù)的邏輯地址轉(zhuǎn)換成物理地址,所以引入了動(dòng)態(tài)重定位.可在系統(tǒng)中增加一個(gè)重定位寄存器,用它來(lái)裝入(存放)程序在內(nèi)存中的起始地址,程序在執(zhí)行時(shí),真正訪問(wèn)的內(nèi)存地址是相對(duì)地址與重定位寄存器中的地址相加而形成的,從而實(shí)現(xiàn)動(dòng)態(tài)重定位.
17.進(jìn)程的三種基本狀態(tài):就緒狀態(tài),執(zhí)行狀態(tài),和阻塞狀態(tài)。
18.進(jìn)程控制塊(pcb)的作用:使一個(gè)在多道程序環(huán)境下不能獨(dú)立運(yùn)行的程序(數(shù)據(jù)),成為一個(gè)能獨(dú)立運(yùn)行的基本單位,一個(gè)能與其他進(jìn)程并發(fā)執(zhí)行的進(jìn)程。
19.進(jìn)程控制塊的定義:是進(jìn)程實(shí)體的一部分,是操作系統(tǒng)中最重要的記錄型數(shù)據(jù)結(jié)構(gòu)。
20.引入進(jìn)程的目的:為了使多個(gè)程序能并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量。
21.引入線程的目的:為了減少程序在并發(fā)執(zhí)行時(shí)所付出的空開(kāi)銷,使操作系統(tǒng)具有更好的并發(fā)性。
線程的屬性:輕型實(shí)體,獨(dú)立調(diào)度和分派的基本單位,可并發(fā)執(zhí)行,共享進(jìn)程資源。
22.分時(shí)系統(tǒng)的特征:多路性,獨(dú)立性,及時(shí)性和交互性。
23.進(jìn)程的特征:結(jié)構(gòu)特征,動(dòng)態(tài)性,并發(fā)性,獨(dú)立性和異步性。
24.多道批處理系統(tǒng)的特征:(1)提高cpu的利用率(2)提高內(nèi)存和輸入輸出設(shè)備的利用率(3)增加系統(tǒng)吞吐量:多道性,無(wú)序性和調(diào)度性(4)宏觀上并行微觀上串行
優(yōu)缺點(diǎn):資源利用率高,系統(tǒng)吞吐量大,平均周期長(zhǎng),無(wú)交互能力;需解決的問(wèn)題:處理機(jī)管理問(wèn)題,內(nèi)存管理問(wèn)題,輸入輸出設(shè)備管理問(wèn)題,作業(yè)管理問(wèn)題
25.單道批處理系統(tǒng)含義:由于系統(tǒng)對(duì)作業(yè)的處理都是成批地進(jìn)行的,且在內(nèi)存中始終只保持一道作業(yè)。單批道處理系統(tǒng)者在提高系統(tǒng)資源后利用率和系統(tǒng)吞吐量。
26.分時(shí)系統(tǒng)的定義:在一臺(tái)主機(jī)上接連了多個(gè)帶有顯示器和鍵盤(pán)的終端,同時(shí)允許多個(gè)用戶通過(guò)自己的終端以交互方式使用計(jì)算機(jī)共享主機(jī)中的資源。分時(shí)系統(tǒng)是為了滿足用戶要求所形成的一種新型os.
27.實(shí)時(shí)系統(tǒng)是指系統(tǒng)能及時(shí)響應(yīng)外部事件的請(qǐng)求,在規(guī)定時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致的運(yùn)行。
28.傳統(tǒng)的操作系統(tǒng)結(jié)構(gòu):模塊化的os結(jié)構(gòu),分層式操作系統(tǒng)結(jié)構(gòu),微內(nèi)核操作系統(tǒng)結(jié)構(gòu)(能有效地支持多處理機(jī)運(yùn)行,所以非常適用于分布式系統(tǒng)環(huán)境,具有以微內(nèi)核為操作系統(tǒng)核心,以客戶/服務(wù)為基礎(chǔ),并采用了面向?qū)ο蟪绦蛟O(shè)計(jì)方法的特征)。
29.程序的并發(fā)執(zhí)行的實(shí)質(zhì):宏觀下程序并行和微觀下程序串行
30.先來(lái)先服務(wù)調(diào)度算法:周轉(zhuǎn)時(shí)間=完成時(shí)間-到達(dá)或提交時(shí)間
帶權(quán)周轉(zhuǎn)時(shí)間=周轉(zhuǎn)時(shí)間/服務(wù)時(shí)間
31.常用的幾種實(shí)時(shí)調(diào)度算法:最早截止時(shí)間優(yōu)先即edf算法,最低松弛優(yōu)先即llf算法
32.多處理器系統(tǒng)的類型:緊密耦合mps和松弛耦合mps,對(duì)稱多處理器系統(tǒng)和非對(duì)稱多處理器系統(tǒng)
34.死鎖的解除:剝奪資源,撤銷進(jìn)程
35.內(nèi)存的連續(xù)分配方式:?jiǎn)我贿B續(xù)分配;固定分區(qū)分配;動(dòng)態(tài)分區(qū)分配;動(dòng)態(tài)重定位分配。
36.動(dòng)態(tài)分區(qū)分配算法間的區(qū)別:(1)首次適應(yīng)算法ff:分配內(nèi)存時(shí),順序查找,直到找到滿足要求的空閑分區(qū)為止,優(yōu)先利用內(nèi)存中的低址空閑區(qū)為大作業(yè)的內(nèi)存空間創(chuàng)造了條件,每次都從開(kāi)頭找,增加查找空閑分區(qū)時(shí)的開(kāi)銷。(2)循環(huán)首次適應(yīng)算法:從上次找到的空閑分區(qū)的下一個(gè)空閑分區(qū)開(kāi)始查找,直到找到一個(gè)能滿足要求的空閑分區(qū),從中劃出一塊與請(qǐng)求大小相等的的內(nèi)存空間分配給作業(yè),使內(nèi)存中的空閑分區(qū)分布均勻,減少查找空閑分區(qū)的開(kāi)銷,但會(huì)缺乏大的空閑分區(qū)。(3)最佳適應(yīng)算法:所有空閑分區(qū)按容量從小到大順序排列,每次分配內(nèi)存時(shí),把能滿足要求且最小的空閑分區(qū)分配給作業(yè)。但會(huì)留下許多難以利用的小空閑區(qū)。
37.引起進(jìn)程阻塞和喚醒的事件:請(qǐng)求系統(tǒng)服務(wù);啟動(dòng)某種操作;新數(shù)據(jù)尚未到達(dá);無(wú)新工作可做。
38.阻塞原語(yǔ):block();喚醒原語(yǔ):wakeup();掛起原語(yǔ):suspend();激活原語(yǔ):active()
39.臨界區(qū):每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段代碼。
40.進(jìn)程同步機(jī)制應(yīng)遵循的規(guī)則:空閑讓進(jìn);忙則等待;有限等待;讓權(quán)等待。
41.p、v操作:wait(s):while s≤0 do no-op
s:=s-1;
signal(s): s:=s+1;
42.文件的邏輯結(jié)構(gòu)是指從用戶的觀點(diǎn)出發(fā)所觀察到的文件組織形式,也就是用戶可以直接處理的數(shù)據(jù)及其結(jié)構(gòu),它獨(dú)立于物理特性。有記錄式文件和流式文件。
43.文件的物理結(jié)構(gòu)則是指文件在外存上的存儲(chǔ)組織形式,與存儲(chǔ)介質(zhì)的存儲(chǔ)性能有關(guān)。有連續(xù)文件、串連文件、索引文件。
44.什么是分頁(yè)?什么是分段?二者主要有何區(qū)別?
答:分頁(yè)是將一個(gè)進(jìn)程的邏輯地址空間分成若干大小相等的部分,每一部分稱作頁(yè)面。
分段是一組邏輯信息的集合,即一個(gè)作業(yè)中相對(duì)獨(dú)立的部分。
分頁(yè)和分段的主要區(qū)別是:分頁(yè)和分段都采用離散分配的方式,且都要通過(guò)地址映射機(jī)構(gòu)來(lái)實(shí)現(xiàn)地址變換,這是它們的共同點(diǎn);不同點(diǎn):頁(yè)是信息的物理單位,段是信息的邏輯單位;頁(yè)的大小是由系統(tǒng)固定的,段的長(zhǎng)度因段而異,由用戶決定;分頁(yè)的作業(yè)地址空間是一維的,分段的作業(yè)地址空間是二維的
45.spooling(假脫機(jī)操作)定義:在聯(lián)機(jī)情況下實(shí)現(xiàn)的同時(shí)外圍操作。
46.spooling技術(shù)是對(duì)脫機(jī)輸入、輸出系統(tǒng)的模擬。
47.spooling系統(tǒng)的特點(diǎn):提高了i/o的速度;將獨(dú)占設(shè)備改造為共享設(shè)備;實(shí)現(xiàn)了虛擬設(shè)備功能
操作系統(tǒng)學(xué)結(jié) [篇4]
1.進(jìn)程通信的方式
進(jìn)程通信ipc——inter process communication,通信方式主要有:
管道pipe,管道是一種半雙工單向通信的方式,適用于親緣關(guān)系的進(jìn)程,通常指父進(jìn)程與子進(jìn)程。有名管道named pipe,與管道類似,不同在于它適用于所有的進(jìn)程,而不知是親緣關(guān)系進(jìn)程。
信號(hào)量semophone,某個(gè)資源可能會(huì)被多個(gè)進(jìn)程同時(shí)訪問(wèn),為了保證進(jìn)程不沖突,使用信號(hào)量來(lái)確保同一時(shí)間只有一個(gè)進(jìn)程在訪問(wèn)資源。通常是一種鎖機(jī)制,用來(lái)使進(jìn)程與進(jìn)程或同一進(jìn)程間多個(gè)線程同步。
消息隊(duì)列message queue,存放于內(nèi)核中。
信號(hào)signal,用來(lái)通知某個(gè)接受進(jìn)程某個(gè)事件已經(jīng)發(fā)生。
共享內(nèi)存shared memory,有一個(gè)進(jìn)程創(chuàng)建出一片共享的內(nèi)存塊,可被其他進(jìn)程訪問(wèn),是最快的ipc方式。
套接字socket,socket是一種通信接口,通常適用于internet的通信。
2.線程同步的幾種方式
臨界區(qū),當(dāng)多個(gè)線程訪問(wèn)一個(gè)獨(dú)占資源時(shí),臨界區(qū)保證了同一時(shí)間只有一個(gè)線程在訪問(wèn),其他線程會(huì)被掛起,知道訪問(wèn)進(jìn)程退出臨界區(qū),在由其他線程競(jìng)爭(zhēng)。
互斥量,類似于臨界區(qū),不同的是互斥量支持進(jìn)程兼得同步,而臨界區(qū)是線程間的。
事件,某個(gè)事件發(fā)生后,可以去執(zhí)行接下來(lái)的任務(wù),允許進(jìn)程在執(zhí)行某個(gè)事件后,喚醒其他進(jìn)程去執(zhí)行任務(wù)。
信號(hào)量,當(dāng)需要限制訪問(wèn)共享資源的線程個(gè)數(shù)時(shí),使用信號(hào)量,信號(hào)量通過(guò)使用pv操作來(lái)實(shí)現(xiàn)同步。
3.線程實(shí)現(xiàn)的方式
線程分為內(nèi)核線程kst(kernal support thread)與用戶線程ult(user level thread)。
內(nèi)核線程由系統(tǒng)創(chuàng)建,管理,調(diào)度,所以系統(tǒng)回為線程安排時(shí)間片,一旦某個(gè)線程阻塞,不會(huì)影響其他線程,但是內(nèi)核線程有內(nèi)核管理,線程的創(chuàng)建以及用戶態(tài)/內(nèi)核態(tài)的模式切換代價(jià)都比較大,所以效率比較低。
用戶線程是由用戶程序來(lái)進(jìn)行創(chuàng)建,調(diào)度,管理。相對(duì)于內(nèi)核線程來(lái)說(shuō),更加靈活,由于是在用戶態(tài)上的管理,所以代價(jià)比內(nèi)核管理要少,效率更高,缺點(diǎn)是并發(fā)性不足,一旦一個(gè)線程進(jìn)入阻塞態(tài),那么其他線程都會(huì)阻塞,因?yàn)橛脩艟程沒(méi)有時(shí)間片的概念。
4.用戶態(tài)和內(nèi)核態(tài)的區(qū)別
用戶態(tài)和內(nèi)核態(tài)是操作系統(tǒng)運(yùn)行的兩種級(jí)別,當(dāng)一個(gè)進(jìn)程執(zhí)行系統(tǒng)調(diào)用而進(jìn)入內(nèi)核代碼中,稱其處于內(nèi)核態(tài),內(nèi)核態(tài)下cpu處于擁有系統(tǒng)最高權(quán)限的內(nèi)核代碼中,執(zhí)行內(nèi)核代碼會(huì)用到當(dāng)前進(jìn)程的內(nèi)核棧,每個(gè)進(jìn)程都有自己的內(nèi)核棧;當(dāng)進(jìn)程在執(zhí)行用戶代碼的時(shí)候,cpu處于系統(tǒng)最低權(quán)限的用戶代碼中運(yùn)行。
內(nèi)核態(tài)下cpu可以執(zhí)行任何指令,用戶態(tài)下只能執(zhí)行非特權(quán)指令。內(nèi)核態(tài)可以隨時(shí)切換到用戶態(tài),而用戶態(tài)切換大內(nèi)核態(tài)只有通過(guò)系統(tǒng)調(diào)用和中斷才行。一般一個(gè)程序是先在用戶態(tài)下執(zhí)行,需要使用系統(tǒng)調(diào)用時(shí),通過(guò)軟中斷來(lái)進(jìn)入內(nèi)核態(tài)。
5.用戶棧和內(nèi)核棧的區(qū)別
轉(zhuǎn):內(nèi)核創(chuàng)建進(jìn)程,會(huì)為進(jìn)程創(chuàng)建兩個(gè)棧,用戶棧和內(nèi)核棧。用戶!嬖谟谟脩艨臻g,當(dāng)進(jìn)程出于用戶態(tài)時(shí)cpu堆棧指針寄存器存放用戶棧的地址,使用用戶棧;當(dāng)進(jìn)程出于內(nèi)核態(tài)時(shí),cpu堆棧指針寄存器存放內(nèi)核棧地址,使用內(nèi)核棧。
當(dāng)由用戶態(tài)切換到內(nèi)核態(tài)時(shí),首先將用戶棧地址存在內(nèi)核棧,然后讓cpu堆棧指向內(nèi)存棧;由內(nèi)核態(tài)切換到用戶態(tài),將內(nèi)核棧保存的用戶棧地址回復(fù)為cpu堆棧指針內(nèi)容即可。
我們是如何知道內(nèi)核地址的呢?關(guān)鍵在于進(jìn)程從用戶態(tài)到內(nèi)核態(tài)轉(zhuǎn)換后,內(nèi)核棧總是空的,因?yàn)橛脩魬B(tài)使用用戶棧,轉(zhuǎn)換到內(nèi)核態(tài),內(nèi)核棧保存進(jìn)程在內(nèi)核中運(yùn)行的信息。但是進(jìn)程從內(nèi)核態(tài)再到用戶態(tài)時(shí),內(nèi)核棧就會(huì)被清空。(這個(gè)我認(rèn)為是因?yàn)橛脩魬B(tài)的權(quán)限原因,無(wú)法獲取內(nèi)核態(tài)的信息,所以為空)所以進(jìn)入內(nèi)核態(tài),只需將內(nèi)核棧棧頂?shù)刂吩O(shè)置為cpu堆棧內(nèi)容。
操作系統(tǒng)學(xué)結(jié) [篇5]
進(jìn)程
為描述和有效控制多個(gè)程序的并發(fā)執(zhí)行,引入“進(jìn)程”。什么是進(jìn)程呢?簡(jiǎn)單地說(shuō),進(jìn)程就是程序運(yùn)行的一個(gè)動(dòng)態(tài)實(shí)體。打個(gè)比方,如果把程序比作是菜譜,那么進(jìn)程就是廚師(可以比作操作系統(tǒng))炒菜的全過(guò)程。一個(gè)程序可以對(duì)應(yīng)多個(gè)進(jìn)程。另外再提一下線程的概念,進(jìn)程是線程的容器,進(jìn)程向操作系統(tǒng)申請(qǐng)資源,而運(yùn)行在進(jìn)程下的(多個(gè)線程)則直接使用該進(jìn)程所擁有的資源。就是說(shuō)進(jìn)程為其內(nèi)的多個(gè)線程提供了各種資源和環(huán)境,這些線程在進(jìn)程下可以方便的切換、通信和共享數(shù)據(jù)而不用操作系統(tǒng)的介入進(jìn)而效率大大提高;相比之下,進(jìn)程的切換、通信和共享數(shù)據(jù)要麻煩得多,需要切換到“管態(tài)”,耗費(fèi)大量的系統(tǒng)開(kāi)銷。
進(jìn)程由三部分組成,代碼段、數(shù)據(jù)段和pcb。結(jié)構(gòu)如下圖所示。
進(jìn)程調(diào)度
進(jìn)程調(diào)度主要是幾種經(jīng)典的算法,注意在了解算法之前應(yīng)該清楚目標(biāo)是什么。目標(biāo)主要考慮四方面:公平性,cpu利用率,系統(tǒng)吞吐量,進(jìn)程的響應(yīng)時(shí)間。用戶要求響應(yīng)時(shí)間盡量地短,系統(tǒng)則要求系統(tǒng)吞吐量高、cpu利用率高、各類資源平衡利用。
fcfs,先來(lái)先服務(wù),最簡(jiǎn)單的算法,基于fifo隊(duì)列。明顯的缺點(diǎn)就是對(duì)短進(jìn)程不公平,想象一下,你去超市只買(mǎi)一袋牛奶,而你前面排著10個(gè)人,每個(gè)人都是一大車(chē)的東西。
spf短進(jìn)程優(yōu)先調(diào)度是對(duì)fcfs的改進(jìn),有效地降低了平均等待時(shí)間,提高了系統(tǒng)的吞吐量(很適合批處理系統(tǒng))。但是缺點(diǎn)就是對(duì)長(zhǎng)進(jìn)程不利,甚至?xí)I死長(zhǎng)進(jìn)程(永遠(yuǎn)執(zhí)行不到——在1973年關(guān)閉mit的ibm7094時(shí),發(fā)現(xiàn)有一個(gè)低優(yōu)先權(quán)的進(jìn)程是1967年提交的但一直都未運(yùn)行)。該調(diào)度算法的最大難點(diǎn)在于對(duì)還沒(méi)有執(zhí)行的進(jìn)程,怎樣才能準(zhǔn)確預(yù)測(cè)它的執(zhí)行時(shí)間長(zhǎng)短,怎么選出“最短進(jìn)程”,書(shū)上說(shuō)是根據(jù)用戶提交時(shí)的估計(jì),其實(shí)我覺(jué)得還可以建立模型進(jìn)行估算(比如pcb中的數(shù)據(jù)信息可以搜集起來(lái)作為歷史數(shù)據(jù),根據(jù)歷史數(shù)據(jù)來(lái)預(yù)測(cè)未執(zhí)行的進(jìn)程),但無(wú)論如何都存在著不準(zhǔn)確性和巨大開(kāi)銷的危機(jī)。
高優(yōu)先權(quán)優(yōu)先調(diào)度算法,有效地分清任務(wù)的輕重緩急。打個(gè)比方,你用鼠標(biāo)點(diǎn)擊一個(gè)圖標(biāo),但是為了完成之前的事件,“鼠標(biāo)點(diǎn)擊”事件不得不等待,想想看,一個(gè)鼠標(biāo)點(diǎn)擊都要等個(gè)10分鐘那將是多大的災(zāi)難啊! 基于響應(yīng)比的優(yōu)先權(quán)是比較理想的一種調(diào)度,但又不可避免地帶來(lái)系統(tǒng)頻繁計(jì)算響應(yīng)比的開(kāi)銷。
時(shí)間片輪轉(zhuǎn)法有很好的交互性,其主要問(wèn)題是上下文切換需要額外系統(tǒng)開(kāi)銷,由此時(shí)間片大小的設(shè)置很重要。多級(jí)反饋隊(duì)列調(diào)度算法基于時(shí)間片算法,動(dòng)態(tài)地確定各進(jìn)程的優(yōu)先權(quán)并根據(jù)優(yōu)先權(quán)的不同設(shè)置不同大小的時(shí)間片獲得了很好的性能。
進(jìn)程同步
如何訪問(wèn)臨界資源是解決問(wèn)題的關(guān)鍵。如圖所示。
注意到,先申請(qǐng)資源信號(hào)量,再申請(qǐng)互斥信號(hào)量,互斥信號(hào)量嚴(yán)格地配對(duì),資源性信號(hào)量交叉配對(duì)。(如果先申請(qǐng)互斥信號(hào)量呢?——申請(qǐng)到使用權(quán)的進(jìn)程,如果阻塞等待資源時(shí),將永遠(yuǎn)阻塞!)另外,注意讀并發(fā)程序的方法。
死鎖問(wèn)題
由于多個(gè)進(jìn)程競(jìng)爭(zhēng)資源而引發(fā)的問(wèn)題。死鎖發(fā)生的四個(gè)必要條件:1.互斥;2.請(qǐng)求和保持:一個(gè)進(jìn)程占有一些資源而等待其他進(jìn)程的資源;3.不剝奪;4.環(huán)路等待。
解決方法
1. 預(yù)防死鎖:系統(tǒng)通過(guò)事先破壞死鎖的一個(gè)或者若干個(gè)必要條件。
互斥條件是不能破壞的,否則并發(fā)執(zhí)行就沒(méi)有意義了。
對(duì)于“請(qǐng)求保持”的破壞,可以要求進(jìn)程要么一次性申請(qǐng)到所需所有資源然后一次性釋放,要么等待,這樣很顯然會(huì)造成資源的極大浪費(fèi),因?yàn)閷?duì)于很多資源進(jìn)程可能只需要用一會(huì)兒,可是由于還有資源需要用而閑置那些已用完的資源。
對(duì)于“不剝奪”的破壞,很可能造成極大的系統(tǒng)資源和不必要的開(kāi)銷,因?yàn)槿绻麆儕Z了進(jìn)程對(duì)資源的使用權(quán)很可能要撤銷很多之前的操作,很多工作都白費(fèi)。
對(duì)于“環(huán)路等待”的破壞,則需要進(jìn)程按照嚴(yán)格的順序執(zhí)行。
2. 避免死鎖:引進(jìn)“安全系統(tǒng)”的概念,用銀行家算法可以有效地避免死鎖。
3. 檢測(cè)和解除:利用資源分配圖檢測(cè)死鎖狀態(tài)(實(shí)現(xiàn)時(shí)構(gòu)造類似于銀行家算法中的數(shù)據(jù)結(jié)構(gòu)),然后解除死鎖(兩種方法:剝奪;撤銷進(jìn)程)。
進(jìn)程間的通信
進(jìn)程間估計(jì)通信機(jī)制可歸結(jié)為三類:共享存儲(chǔ)器系統(tǒng)、消息傳遞系統(tǒng)和管道通信。
【操作系統(tǒng)學(xué)結(jié)】相關(guān)文章:
化工操作實(shí)結(jié)范文08-06
操作工實(shí)結(jié)范文08-07
助研實(shí)結(jié)08-06
管理系統(tǒng)學(xué)習(xí)心得體會(huì)05-22
科目三直線行駛的操作技巧與操作要求07-25
如意結(jié)的編織方法07-07
學(xué)結(jié)自我評(píng)價(jià)08-06
生化科室實(shí)結(jié)08-06