操作系統(tǒng)的特征
1琐簇、并發(fā) 2、共享 3座享、虛擬 4婉商、異步
對于單核CPU,同一時刻只能執(zhí)行一個程序渣叛,只能并發(fā)
對于多核CPU丈秩,同一時刻只能執(zhí)行多個程序,可以并行
操作系統(tǒng)提供了兩類接口:
(1)命令接口
使用命令接口進(jìn)行作業(yè)控制的主要方式有兩種淳衙,即聯(lián)機(jī)控制方式和脫機(jī)控制方式蘑秽。
作用:用戶利用這些操作命令來組織和控制作業(yè)的執(zhí)行饺著。
命令接口分為兩種:
- 聯(lián)機(jī)命令接口:交互式命令接口,適用于分時或?qū)崟r系統(tǒng)的接口肠牲,它由一組鍵盤操作命令組成幼衰。用戶通過控制臺或終端輸入操作命令,向操作系統(tǒng)提出各種服務(wù)請求埂材。
- 脫機(jī)命令接口:批處理命令接口塑顺,適用于批處理操作系統(tǒng),它由一組作業(yè)控制命令組成俏险。脫機(jī)用戶不能直接干預(yù)作業(yè)的運(yùn)行严拒,而應(yīng)事先用響應(yīng)的作業(yè)控制命令寫成一份作業(yè)操作書,連同作業(yè)一起交給系統(tǒng)竖独。系統(tǒng)調(diào)度到該作業(yè)時裤唠,由系統(tǒng)中的命令解釋程序逐條解釋執(zhí)行作業(yè)說明書上的命令,從而間接控制作業(yè)的運(yùn)行莹痢。
(2)程序接口
程序接口由一組系統(tǒng)調(diào)用(廣義指令)組成种蘸。用戶通過在程序中使用這些系統(tǒng)調(diào)用來請求操作系統(tǒng)為其服務(wù)。
圖形接口:圖形用戶界面GUI竞膳,最終是通過調(diào)用程序接口實現(xiàn)的航瞭,圖形接口不是操作系統(tǒng)的一部分,但圖形接口所調(diào)用的系統(tǒng)調(diào)用命令操作系統(tǒng)的一部分坦辟。
- 從用戶角度看:計算機(jī)是為用戶提供服務(wù)的刊侯,計算所完成的工作都是為了滿足用戶的計算或處理需求。引入操作系統(tǒng)是讓計算機(jī)為用戶更好的提供服務(wù)锉走。
- 從系統(tǒng)管理人員角度看:操作系統(tǒng)的引入是為了合理地組織計算機(jī)工作流程滨彻,管理和分配計算硬件與軟件資源,從而使之高效的工作挪蹭。
總結(jié):操作系統(tǒng)是計算機(jī)資源的管理者亭饵。
并發(fā):指兩個或者多個時間在同一時間間隔內(nèi)發(fā)生。這些事件宏觀上是同時發(fā)生的梁厉,但微觀上是交替發(fā)生的辜羊;
并行:指兩個或者多個事件在同一時刻同時發(fā)生;
并行(parallel):指在同一時刻词顾,有多條指令在多個處理器上同時執(zhí)行只冻。所以無論從微觀還是從宏觀來看,二者都是一起執(zhí)行的计技。
注意:
- 并行在多處理器系統(tǒng)中存在萌衬,而并發(fā)可以在單處理器和多處理器系統(tǒng)中都存在,并發(fā)能夠在單處理器系統(tǒng)中存在是因為并發(fā)是并行的假象它抱,并行要求程序能夠同時執(zhí)行多個操作秕豫,而并發(fā)只是要求程序假裝同時執(zhí)行多個操作(每個小時間片執(zhí)行—個操作,多個操作快速切換執(zhí)行)观蓄。
- 當(dāng)有多個線程在操作時混移,如果系統(tǒng)只有一個CPU,則它根本不可能真正同時進(jìn)行一個以上的線程侮穿,它只能把CPU運(yùn)行時間劃分成若千個時間段歌径,再將時間段分配給各個線程執(zhí)行,在一個時間段的線程代碼運(yùn)行時,其它線程處于掛起狀態(tài).這種方式我們稱之為并發(fā)(Concurrent)亲茅。
- 當(dāng)系統(tǒng)有一個以上CPU時回铛,則線程的操作有可能并發(fā)。當(dāng)一個CPU執(zhí)行一個線程時克锣,另一個CPU 可以執(zhí)行另一個線程茵肃,兩個線程互不搶占CPU資源,可以同時進(jìn)行袭祟,這種方式我們稱之為并行(Parallel)验残。
共享:即資源共享,是指系統(tǒng)中的資源可供內(nèi)存中多個并發(fā)執(zhí)行的進(jìn)程共同使用榕酒。
- 互斥共享:系統(tǒng)中的某些資源胚膊,雖然可以提供給多個進(jìn)程使用,但是一個時間段內(nèi)只允許一個進(jìn)程訪問該資源想鹰;
-
同時共享方式:系統(tǒng)中的某些資源紊婉,允許一個時間段內(nèi)多個進(jìn)程“同時”對它們進(jìn)行訪問;(磁盤共享辑舷,而非攝像頭)
所謂“同時”往往是宏觀上的喻犁,而在微觀上,這些進(jìn)程可能是交替地對該資源進(jìn)行訪問的(即分時共享)何缓;
虛擬:是指把一個物理上的實體變?yōu)槿舾蓚€邏輯上的對應(yīng)物肢础。物理實體(前者)是實際存在的,而邏輯上對應(yīng)物(后者)是用戶感受到的
- 空分復(fù)用技術(shù)碌廓,如虛擬存儲器技術(shù)传轰;解決現(xiàn)有運(yùn)行內(nèi)存小于所需運(yùn)行內(nèi)存的情況,
- 時分復(fù)用技術(shù)谷婆,如虛擬處理器慨蛙;解決單核CPU同時處理多個進(jìn)程辽聊,微觀上處理機(jī)在各個微小的時間段內(nèi)交替著為各個進(jìn)程服務(wù);
細(xì)節(jié)點(diǎn):
現(xiàn)代操作系統(tǒng)最基本的兩個特征是并發(fā)和共享期贫。并發(fā)性和共享性是互為存在條件跟匆,兩者缺一不可。沒有并發(fā)和共享通砍,就談不上虛擬和異步玛臂。
系統(tǒng)調(diào)用是操作系統(tǒng)為應(yīng)用程序使用內(nèi)核功能所提供的接口,只能通過用戶程序間接使用封孙。
廣義指令就是系統(tǒng)調(diào)用命令迹冤,命令解釋器屬于命令接口,shell是命令解析器敛瓷,也屬于命令接口叁巨,系統(tǒng)中的緩存全部由操作系統(tǒng)管理,操作系統(tǒng)不提供管理系統(tǒng)緩存的系統(tǒng)調(diào)用呐籽。
引入多道程序設(shè)計后锋勺,程序的執(zhí)行就是去了封閉性和順序性。程序執(zhí)行因為共享資源及相互協(xié)同的原因產(chǎn)生了競爭狡蝶,相互制約庶橱。考慮到競爭的公平性贪惹,程序的執(zhí)行是斷續(xù)的苏章。順序性是單道程序設(shè)計的基本特征。
計算機(jī)開機(jī)后奏瞬,操作系統(tǒng)的程序會被自動加載到內(nèi)存中的系統(tǒng)區(qū)枫绅,這段區(qū)域就是RAM。
庫函數(shù)與系統(tǒng)調(diào)用的區(qū)別與聯(lián)系
- 庫函數(shù)是語言或應(yīng)用程序的一部分硼端,可以運(yùn)行在用戶空間中并淋。
- 而系統(tǒng)調(diào)用是操作系統(tǒng)的一部分,是內(nèi)核為用戶提供的程序接口珍昨,運(yùn)行在內(nèi)核空間中县耽。
- 而且許多庫函數(shù)都會使用系統(tǒng)調(diào)用來實現(xiàn)功能。未使用系統(tǒng)調(diào)用的庫函數(shù)镣典,其執(zhí)行效率通常要比系統(tǒng)調(diào)用的高兔毙。因為使用系統(tǒng)調(diào)用時,需要上下文的切換及狀態(tài)的轉(zhuǎn)換(由用戶態(tài)到內(nèi)核態(tài))
- 上下文切換指的是內(nèi)核(操作系統(tǒng)的核心)在CPU上對進(jìn)程或者線程進(jìn)行切換兄春。在進(jìn)程A切換到進(jìn)程B的過程中澎剥,先保存A進(jìn)程的上下文,以便于等A恢復(fù)運(yùn)行的時候赶舆,能夠知道A進(jìn)程的下一條指令是啥肴裙。然后將要運(yùn)行的B進(jìn)程的上下文恢復(fù)到寄存器中趾唱。這個過程被稱為上下文切換。
操作系統(tǒng)的歷史
單道批處理
系統(tǒng)對作業(yè)處理成批進(jìn)行蜻懦,但內(nèi)存中始終保持一道作業(yè)。
特點(diǎn)
- 自動性夕晓。 磁盤上作業(yè)自動逐個運(yùn)行宛乃,無須人工干預(yù)。
- 順序性蒸辆。 各道作業(yè)完成順序與它們進(jìn)入內(nèi)存的順序一致征炼。
- 單道性。 程序每次僅從磁盤上調(diào)入一道程序運(yùn)行躬贡。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):為解決CPU等待手工操作谆奥,CPU利用不充分。
缺點(diǎn):CPU與I/O設(shè)備速度不匹配拂玻,當(dāng)主機(jī)內(nèi)存中僅存的一道作業(yè)在運(yùn)行期間發(fā)出輸入/輸出請求后酸些,CPU處于等待低速的I/O完成狀態(tài),并且缺少人機(jī)交互能力。
因此為了進(jìn)一步提高資源的利用率和系統(tǒng)吞吐量檐蚜,引入了多道程序設(shè)計魄懂。
多道批處理
多個程序同時進(jìn)入內(nèi)存并允許它們在CPU中交替運(yùn)行,這些程序共享系統(tǒng)的各種硬/軟件資源闯第。當(dāng)一道程序因I/O請求而暫停運(yùn)行時市栗,CPU便立即轉(zhuǎn)去運(yùn)行另一道程序。
特點(diǎn)
- 多道:內(nèi)存中同時存放多道相互獨(dú)立的程序咳短。
- 宏觀上并行: 同時進(jìn)入系統(tǒng)的多道程序都處于運(yùn)行過程中填帽。
- 微觀上串行: 多道程序輪流占用CPU,交替執(zhí)行咙好。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn): 資源利用率高篡腌;系統(tǒng)吞吐量大。
缺點(diǎn): 用戶響應(yīng)時間長敷扫;缺少人機(jī)交互能力哀蘑,用戶不了解程序運(yùn)行情況,也不能控制計算機(jī)葵第。
【擴(kuò)展】后來“通道”和“中斷”技術(shù)的出現(xiàn),使得多道批處理系統(tǒng)的I/O設(shè)備可與CPU并行工作绘迁。
分時操作系統(tǒng)
分時技術(shù): 把處理器的運(yùn)行時間分成很短的時間片,按時間片輪流把處理器分配給各聯(lián)機(jī)作業(yè)使用卒密。由于計算機(jī)運(yùn)轉(zhuǎn)快缀台,每個用戶感覺自己獨(dú)占了一臺計算機(jī)。
分時操作系統(tǒng): 多個用戶通過終端同時共享一臺主機(jī)哮奇,用戶可同時與主機(jī)交互而互不干擾膛腐。
多道批處理系統(tǒng) | 分時操作系統(tǒng) |
---|---|
作業(yè)自動控制而無須人工干預(yù) | 人機(jī)交互 |
特點(diǎn)
- 同時性睛约。 又稱多路性,允許多個終端同時使用一臺計算機(jī)哲身。
- 交互性辩涝。 用戶通過終端采用人機(jī)對話方式直接控制程序運(yùn)行。
- 獨(dú)立性勘天。 系統(tǒng)中的多個終端用戶互不干擾怔揩,操作獨(dú)立。
- 及時性脯丝。 用戶請求能在短時間內(nèi)得到響應(yīng)商膊。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):采用時間片輪轉(zhuǎn)方式,較好地解決人機(jī)交互問題宠进。
缺點(diǎn):無法在規(guī)定的時間(比時間片的時間還短)內(nèi)做出處理晕拆。
實時操作系統(tǒng)
能在某個時間限制內(nèi)完成某些緊急任務(wù)而不需要時間排隊。
硬實時系統(tǒng) | 軟實時系統(tǒng) |
---|---|
某動作必須絕對在規(guī)定時刻(時間范圍)發(fā)生 | 能夠接受偶爾違反時間規(guī)定且不會引起任何永久性的損害 |
飛行器的飛行自動控制系統(tǒng) | 飛機(jī)訂票系統(tǒng)材蹬、銀行管理系統(tǒng) |
特點(diǎn)
- 及時性实幕。 計算機(jī)收到外部命令后及時進(jìn)行處理,并在嚴(yán)格的時限內(nèi)處理完接收的事件赚导。
- 可靠性茬缩。實時系統(tǒng)要求系統(tǒng)高度可靠。因為任何差錯都可能帶來巨大的經(jīng)濟(jì)損失甚至無法預(yù)料的災(zāi)難性后果吼旧。
網(wǎng)絡(luò)操作系統(tǒng)與分布式計算機(jī)系統(tǒng)
辨析 | 網(wǎng)絡(luò)操作系統(tǒng) | 分布式計算機(jī)系統(tǒng) |
---|---|---|
定義 | 把計算機(jī)網(wǎng)絡(luò)中的各臺計算機(jī)有機(jī)結(jié)合凰锡,實現(xiàn)各臺計算機(jī)之間的數(shù)據(jù)傳輸 | (1)系統(tǒng)中任意兩臺計算機(jī)通過通信方式交換信息;(2)每臺計算機(jī)地位同等圈暗,沒有主機(jī)和從機(jī)掂为;(3)與網(wǎng)絡(luò)操作系統(tǒng)的本質(zhì)不同: 任何工作分布在幾臺機(jī)上,并行工作员串、協(xié)同完成勇哗。 |
特點(diǎn) | 網(wǎng)絡(luò)中資源共享,各臺計算機(jī)之間的通信 | 分布性寸齐,并行性 |
細(xì)節(jié)點(diǎn):
- 單道\多道批處理操作系統(tǒng)的主要缺點(diǎn)是缺少人機(jī)交互能力欲诺。
- 操作系統(tǒng)的基本類型主要有批處理操作系統(tǒng)、分時操作系統(tǒng)渺鹦、實時操作系統(tǒng)扰法。
- 后來多道批處理系統(tǒng)的I/O設(shè)備可與CPU并行工作,這是借助于中斷技術(shù)實現(xiàn)的毅厚。
- 實時性和可靠性是實時操作系統(tǒng)最重要的兩個目標(biāo)塞颁,因此為了保證快速處理高優(yōu)先級任務(wù)時,允許浪費(fèi)一些系統(tǒng)資源。
- 要求快速響應(yīng)用戶是導(dǎo)致分時系統(tǒng)出現(xiàn)的重要原因祠锣。
- 多任務(wù)操作系統(tǒng)可在同一時間內(nèi)運(yùn)行多個應(yīng)用程序酷窥,但多個任務(wù)必須互斥地訪問共享資源,為達(dá)到這一目標(biāo)必須對共享資源進(jìn)行必要的保護(hù)伴网。
操作系統(tǒng)的運(yùn)行機(jī)制
為了確保操作系統(tǒng)的正確運(yùn)行蓬推,必須區(qū)分操作系統(tǒng)代碼和用戶代碼的執(zhí)行。大多數(shù)計算機(jī)系統(tǒng)采用硬件支持澡腾,以便區(qū)分各種執(zhí)行模式拳氢。
計算機(jī)硬件可以通過一個模式位(mode bit)來表示當(dāng)前模式:內(nèi)核模式(0)和用戶模式(1)。
有了模式位蛋铆,就可區(qū)分為操作系統(tǒng)執(zhí)行的任務(wù)和為用戶執(zhí)行的任務(wù)。當(dāng)計算機(jī)系統(tǒng)執(zhí)行用戶應(yīng)用時放接,系統(tǒng)處于用戶模式刺啦。然而,當(dāng)用戶應(yīng)用通過系統(tǒng)調(diào)用纠脾,請求操作系統(tǒng)服務(wù)時玛瘸,系統(tǒng)必須從用戶模式切換到內(nèi)核模式,以滿足請求苟蹈。
特權(quán)指令
指計算機(jī)中不允許用戶直接使用的指令糊渊。I/O指令,置中斷指令慧脱,存取用于內(nèi)存保護(hù)的寄存器渺绒,送程序狀態(tài)字到程序狀態(tài)字寄存器(PSWR)的指令等。
硬件只有在內(nèi)核模式下才允許執(zhí)行特權(quán)指令菱鸥。如果在用戶模式下試圖執(zhí)行特權(quán)指令宗兼,那么硬件并不執(zhí)行該指令,而是認(rèn)為該指令非法氮采,并將其以陷阱形式通知操作系統(tǒng)殷绍。
系統(tǒng)調(diào)用
計算機(jī)系統(tǒng)的各種硬件資源是有限,為了更好的管理這些資源鹊漠,進(jìn)程是不允許直接操作的主到,所有對這些資源的訪問都必須有操作系統(tǒng)控制。也就是說操作系統(tǒng)是使用這些資源的唯一入口躯概,而這個入口就是操作系統(tǒng)提供的系統(tǒng)調(diào)用登钥。一般地,系統(tǒng)調(diào)用都是通過中斷實現(xiàn)的楞陷,比如怔鳖,linux下中斷號0x80就是進(jìn)行系統(tǒng)調(diào)用的。
系統(tǒng)調(diào)用的過程
當(dāng)要執(zhí)行系統(tǒng)調(diào)用時,硬件通常將它作為軟件中斷结执《嚷剑控制通過中斷向量轉(zhuǎn)到操作系統(tǒng)的中斷服務(wù)程序,并且模式位也設(shè)為內(nèi)核模式献幔。系統(tǒng)調(diào)用服務(wù)程序是操作系統(tǒng)的一部分懂傀。內(nèi)核檢查中斷指令,判斷發(fā)生了什么系統(tǒng)調(diào)用蜡感;參數(shù)表示用戶程序請求何種服務(wù)蹬蚁。請求所需的其他信息可以通過寄存器、堆椫P耍或內(nèi)存(內(nèi)存指針也可通過寄存器傳遞)來傳遞犀斋。內(nèi)核首先驗證參數(shù)是否正確和合法,然后執(zhí)行請求情连,最后控制返回到系統(tǒng)調(diào)用之后的指令叽粹。
如果雙重模式?jīng)]有硬件支持,則操作系統(tǒng)會有嚴(yán)重缺點(diǎn)却舀。運(yùn)行出錯的程序可以通過寫入數(shù)據(jù)而清除整個操作系統(tǒng)虫几,多個程序可以同時寫入同一設(shè)備,進(jìn)而可能引起災(zāi)難結(jié)果挽拔。
一旦硬件保護(hù)到位辆脸,就可檢測模式錯誤。這些錯誤通常由操作系統(tǒng)處理螃诅。如果一個用戶程序出錯啡氢,如試圖執(zhí)行非法指令或者訪問不屬于自己的地址空間內(nèi)存,則通過硬件陷到操作系統(tǒng)州刽。陷阱如同中斷一樣空执,通過中斷向量可將控制轉(zhuǎn)到操作系統(tǒng)。當(dāng)一個程序出錯時穗椅,可由操作系統(tǒng)來異常終止辨绊。這種情況的處理代碼與用戶請求的異常終止一樣。操作系統(tǒng)會給出一個適當(dāng)?shù)某鲥e信息匹表,并倒出(dump)程序內(nèi)存门坷。倒出內(nèi)存信息通常寫到文件,這樣用戶或程序員可檢查它袍镀,糾正錯誤并重新啟動程序默蚌。
中斷機(jī)制
引入中斷技術(shù)的初衷是提高多道程序運(yùn)行環(huán)境中CPU的利用率。如苇羡,鍵盤或鼠標(biāo)信息的輸入绸吸、進(jìn)程的管理和調(diào)度、系統(tǒng)功能的調(diào)用、設(shè)備驅(qū)動锦茁、文件訪問等攘轩。都依賴于中斷機(jī)制。
系統(tǒng)控制的數(shù)據(jù)結(jié)構(gòu)及處理
系統(tǒng)中用來登記狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu)很多码俩,比如:作業(yè)控制塊度帮、進(jìn)程控制塊、設(shè)備控制塊稿存、各類鏈表等笨篷。為了實現(xiàn)有效的管理,系統(tǒng)需要一些基本的操作瓣履,常見的操作有以下三種:
管理 | 功能 |
---|---|
進(jìn)程管理 | 進(jìn)程狀態(tài)管理率翅、進(jìn)程調(diào)度和分配、創(chuàng)建和撤銷進(jìn)程控制塊等袖迎。 |
存儲器管理 | 存儲器的空間分配和回收安聘、內(nèi)存信息保護(hù)程序、代碼對換程序等瓢棒。 |
設(shè)備管理 | 緩沖區(qū)管理、設(shè)備分配和回收等丘喻。 |
中斷與異常
1.中斷的引入——為了支持CPU和設(shè)備之間的并行操作
中斷也稱外中斷脯宿,指來自CPU執(zhí)行指令以外的事件的發(fā)生,如設(shè)備發(fā)出的I/O結(jié)束中斷泉粉、時鐘中斷等连霉。這一類中斷通常是與當(dāng)前執(zhí)行的指令無關(guān)的事件。
2.異常的引入——表示CPU執(zhí)行指令本身時出現(xiàn)的問題
異常也稱內(nèi)中斷嗡靡、例外或陷入跺撼,指源自CPU執(zhí)行指令內(nèi)部的事件,如程序的非法操作碼讨彼、地址越界歉井、算術(shù)溢出、缺頁異常等哈误。對異常的處理一般要依賴與當(dāng)前程序的運(yùn)行現(xiàn)場哩至,不能被屏蔽。
中斷執(zhí)行的過程
以下是多重中斷的流程蜜自,其中菩貌,1~3步是由硬件(中斷隱指令)完成的;4-9步是由中斷服務(wù)程序完成的重荠。內(nèi)核
- 大內(nèi)核:是將操作系統(tǒng)功能作為一個緊密結(jié)合的整體放到內(nèi)核箭阶。由于各模塊共享信息,因此有很高的性能。
- 微內(nèi)核:在微內(nèi)核結(jié)構(gòu)下仇参,操作系統(tǒng)被劃分成小的嘹叫、定義良好的模塊,只有微內(nèi)核這一個模塊運(yùn)行在內(nèi)核態(tài)冈敛,其余模塊運(yùn)行在用戶態(tài)待笑。因為需要頻繁地在用戶態(tài)和核心態(tài)之間進(jìn)行切換攒霹,所以會有一定的性能損失恰聘。