第一篇:操作系統(tǒng)概念總結(jié)
操作系統(tǒng):
是管理系統(tǒng)資源,控制程序執(zhí)行,協(xié)調(diào)硬件使用的最基本的系統(tǒng)軟件,在硬件的基礎(chǔ)上提供一個基本的應(yīng)用程序運行環(huán)境。
多道程序multiprogramming:
在計算機內(nèi)存中存放多個作業(yè),這幾個作業(yè)通過調(diào)度程序輪流占用cpu。
分時系統(tǒng) time-sharing:
允許多個用戶同時以交互方式使用計算機,共享主機資源。
內(nèi)核 kernel:
操作系統(tǒng)最基本的部分,提供進程和內(nèi)存管理功能,具有訪問硬件和所有內(nèi)存空間的權(quán)限。微內(nèi)核 microkernel:
提供最小的進程和內(nèi)存管理及通信功能的內(nèi)核模塊
系統(tǒng)調(diào)用 system call:
由操作系統(tǒng)實現(xiàn)的對系統(tǒng)功能調(diào)用的應(yīng)用編程接口。
虛擬機 virtual machine:
通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。中斷/陷阱 interrupt:
指系統(tǒng)發(fā)生某個事件后,cpu暫停正在執(zhí)行的某個程序,轉(zhuǎn)去執(zhí)行處理該事件的程序的過程。
直接內(nèi)存訪問 DMA:
直接內(nèi)存訪問是一種硬件機制,它允許I/O設(shè)備和內(nèi)存之間直接傳輸它們的I/O數(shù)據(jù),而不需要CPU的參與。使用這種機制可以大大提高與設(shè)備通信的吞吐量。
C/S模型:
將應(yīng)用程序分成需要訪問文件的前端客戶端和包含文件的后臺服務(wù)器,客戶端通過向特定服務(wù)器發(fā)送請求獲得資源。
進程 process:
指正在執(zhí)行中的程序,是一個活動實體。
高速緩存一致性 caching coherency:
對于多處理器環(huán)境,每個CPU不但要維護自己的內(nèi)部寄存器,還要維護本地高速緩存。由于多個CPU可并發(fā)執(zhí)行,必須確保在一個高速緩存中對A的值所做更新立即反映在所有其他A所在的高速緩存中。
進程控制塊 PCB:
進程在操作系統(tǒng)里的表示方法,包括進程狀態(tài)、進程號等信息。
進程間通信 IPC:
協(xié)作進程見通信的一種機制,允許進程不必通過共同地址空間共享來通信和同步。雙重模式 dual mode:
指操作系統(tǒng)提供的兩種執(zhí)行模式:用戶模式和監(jiān)控模式。目的是保護操作系統(tǒng)和其他所有程序數(shù)據(jù)不受錯誤用戶程序的影響。
套接字 socket:
可定義為通信的端點,由IP地址和端口號組成。每個參與通信的進程都擁有一個套接字。線程 thread:
又稱輕量級進程,是cpu使用的基本單元,由線程號、程序計數(shù)器、寄存器集合和堆棧組成。
用戶級線程 user thread:
用戶線程在內(nèi)核之上支持,并在用戶層通過線程庫來實現(xiàn)。無需內(nèi)核干預(yù),因此線程易于創(chuàng)建和管理,但有可能會引起擁有該線程的整個進程的阻塞。
內(nèi)核級線程 kernel thread:
由操作系統(tǒng)直接支持,內(nèi)核在其空間里創(chuàng)建、管理的線程。
短期調(diào)度程序 short-term scheduler:
又稱CPU調(diào)度程序,從就緒可執(zhí)行的進程中選擇進程,并為其中之一分配CPU。中期調(diào)度程序 mid-term scheduler:
中期調(diào)度程序采用交換方案,能將進程移出內(nèi)存,降低多道程序設(shè)計的程度。之后進程能被重新調(diào)入內(nèi)存并從中斷處開始執(zhí)行。
長期調(diào)度程序 long-term scheduler:
又稱作業(yè)調(diào)度程序,是從大容量存儲設(shè)備的緩沖池中選擇進程將它們裝入內(nèi)存以執(zhí)行。交換 swap:
當(dāng)內(nèi)存剩余空間不夠大時,進程可以暫時從內(nèi)存中交換到硬盤上的特定存儲空間,等到需要執(zhí)行時再調(diào)回內(nèi)存。
上下文切換 context :
將CPU切換到另一個進程需要保存原來進程的狀態(tài)并裝入新進程的保存狀態(tài)。當(dāng)發(fā)生上下文切換時,內(nèi)核會將舊進程的關(guān)聯(lián)狀態(tài)保存在其進程控制塊中,然后裝入經(jīng)調(diào)度要執(zhí)行的新進程的已保存的關(guān)聯(lián)狀態(tài)。
分派程序 dispatch:
分派程序是一個模塊,用來將CPU的控制權(quán)交給由短期調(diào)度程序所選擇的進程,其功能包括切換上下文、切換到用戶模式、跳轉(zhuǎn)到用戶程序的合適位置重新啟動用戶程序。進程同步 process synchronization:
多進程的一些操作執(zhí)行的時序上存在一定的制約條件。
競爭條件 race condition:
多個進程并發(fā)訪問和操作統(tǒng)一數(shù)據(jù)且執(zhí)行結(jié)果與訪問發(fā)生的特定順序相關(guān)。
臨界區(qū) critical section:
一個代碼段,在該代碼段里進程會可能改變共享數(shù)據(jù)。
互斥 mutual exclusion:
如果進程Pi在其臨界區(qū)內(nèi)執(zhí)行,那么其他進程都不能在臨界區(qū)內(nèi)執(zhí)行。
前進要求 progress:
當(dāng)無進程在臨界區(qū)執(zhí)行時,其他申請進入臨界區(qū)的進程應(yīng)選擇一個進入臨界區(qū)。有限等待 bounded waiting:
任何在進入?yún)^(qū)等待進入臨界區(qū)的進程都應(yīng)在有限時間內(nèi)能夠進入臨界區(qū),即進程不會在進入?yún)^(qū)餓死。
信號量 semaphore:
內(nèi)核定義的一種特殊數(shù)據(jù)結(jié)構(gòu),其表現(xiàn)值的數(shù)據(jù)類型為整型,用于解決進程同步的問題。忙等待 busy-waiting:
當(dāng)一個進程位于其臨界區(qū)內(nèi)時,其他試圖進入臨界區(qū)的進程都必須在進入?yún)^(qū)內(nèi)連續(xù)空循環(huán)。饑餓 starvation:
又稱餓死或無限期阻塞,進程在信號量內(nèi)有可能可以前進,但是卻無窮等待的情況。管程 monitor:
一個管程定義了一個數(shù)據(jù)結(jié)構(gòu)以及能為并發(fā)進程所調(diào)用的一組操作,這組操作能同步進程和改變管程中的數(shù)據(jù)。
互斥 mutual exclusion:
如果一個進程占有R資源,其他進程申請該資源時申請進程必須等待直到該資源釋放為止。
占有等待hold and wait:
一個進程必須占有至少一個資源,并在等待著另外的資源,而被等待資源則被其他進程所占有。
非搶占 non-preemption:
當(dāng)一個進程擁有R資源時,其他進程不能搶占該進程的R資源。
循環(huán)等待circular wait:
一組進程{P0,P1…Pn},P0等待的P1的資源,P1等待P2的資源……Pn等待P0的資源。安全狀態(tài) safe state:
如果資源申請分配存在一個安全序列,那么系統(tǒng)處于安全狀態(tài)。
安全序列 safe queue:
系統(tǒng)能按某個順序為每個進程分配資源(不超過其最大值)并能避免死鎖,那么該順序為一個安全序列。
地址捆綁 address binding:
由一個地址空間向另一個地址空間的映射。
頁表 page table:
頁表相當(dāng)于一個邏輯地址空間與物理地址空間的映射表,包含每一頁的物理地址的基地址。內(nèi)存管理單元 MMU:
它是CPU中用來管理虛擬存儲器、物理存儲器的控制線路,同時也負責(zé)虛擬地址映射為物理地址,以及提供硬件機制的內(nèi)存訪問授權(quán)。
內(nèi)部碎片 internal fragmentation:
當(dāng)一個進程裝入到固定大小的分割塊(比如頁)時,假如進程小于分割塊,則剩余的空間將無法被系統(tǒng)使用,稱為內(nèi)部碎片。
外部碎片 external fragmentation:
因為進程持續(xù)地被裝入和替換,使得可用的內(nèi)存空間被分割成許多不連續(xù)的區(qū)塊。這些不連續(xù)區(qū)塊之間產(chǎn)生的零碎的內(nèi)存剩余空間則稱外部碎片。
旁路轉(zhuǎn)換緩沖 TLB:
又稱頁表緩沖,由于查詢存儲在內(nèi)存的頁表付出的代價很大,由此產(chǎn)生了TLB。其功能作用類似cache,但里面存放的內(nèi)容是頁表。
虛擬內(nèi)存 virtual memory:
用戶視角認為虛擬內(nèi)存是一個巨大連續(xù)的可用內(nèi)存,而實際上虛擬內(nèi)存是利用硬盤的一個存儲空間與主存不停地進行交換而實現(xiàn)的。虛擬內(nèi)存將用戶邏輯內(nèi)存和物理內(nèi)存分開,用戶也不再受內(nèi)存存儲的限制。
頁錯誤 page faults:
當(dāng)進程試圖訪問那些尚未調(diào)入到內(nèi)存的頁時,這種標記為無效的訪問會產(chǎn)生頁錯誤中斷。寫時拷貝 copy-on-writing:
如果任何一個進程需要對共享頁進行寫操作,那么就創(chuàng)建一個共享頁的拷貝,進程則修改創(chuàng)建出來的拷貝頁。
系統(tǒng)顛簸 thrashing:
當(dāng)一個進程在換頁上用的時間要多于執(zhí)行時間,也即頁調(diào)度過于頻繁,那么這個進程就在顛簸。
文件 file:
記錄在外存上相關(guān)信息的具有名稱的集合,是邏輯外存的最小分配單元,可存儲不同類型的數(shù)據(jù)信息。
文件重定向 file reposition:
又稱文件尋址,高速緩存 Cache:
高速緩存是為了解決CPU與主存存取速度不匹配的問題而出現(xiàn)的,是除寄存器外目前速度最快的存儲器,在CPU與主存之間充當(dāng)緩沖區(qū)的作用。
引導(dǎo) bootstrap:
指使用一個很小的程序(引導(dǎo)程序)將某個特定的程序(通常是指操作系統(tǒng))裝入內(nèi)存中。引導(dǎo)塊 boot block:
引導(dǎo)塊位于文件卷最開始的第一扇區(qū),為根文件系統(tǒng)所特有,用于將操作系統(tǒng)的啟動程序裝入內(nèi)存中。
虛擬文件系統(tǒng) VFS:
虛擬文件系統(tǒng)(VFS)是一種用于網(wǎng)絡(luò)環(huán)境的分布式文件系統(tǒng),是允許和操作系統(tǒng)使用不同的文件系統(tǒng)實現(xiàn)的接口,它將文件系統(tǒng)通用操作和具體實現(xiàn)分開。
輪詢 polling:
主機在不斷循環(huán)中不斷讀取狀態(tài)寄存器直到忙位被清除。
內(nèi)存映射I/OMMIO:
它是PCI規(guī)范的一部分,I/O設(shè)備控制寄存器映射到CPU的地址空間。從處理器的角度看,內(nèi)存映射I/O后訪問系統(tǒng)I/O設(shè)備和訪問內(nèi)存一樣
第二篇:操作系統(tǒng)總結(jié)
什么是OS,OS有哪幾個特征?其最基本的特征是什么?
答:操作系統(tǒng)是為了達到方便用戶和提高利用率的目的而設(shè)計的,控制和管理計算機硬件和軟件資源,合理的組織計算機工作流程的程序的集合它具有并發(fā),共享,虛擬,異步性四個基本特征。其中最基本的特征為并發(fā)性
2什么是進程及與程序的區(qū)別與聯(lián)系,為什么PCB是進程存在的唯一標志?
進程是程序的一次執(zhí)行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。
區(qū)別:(1)進程是動態(tài)的,程序是靜態(tài)的。(2)進程具有并發(fā)性,而程序沒有(3)進程是資源分配和處理機調(diào)度的獨立單位,其并發(fā)性受系統(tǒng)制約(4)一個程序多次執(zhí)行,對應(yīng)多個進程,不同的進程可以包含同一程序PCB:因為在進程的整個生命期中,系統(tǒng)總是通過PCB對進程進行控制的3處理機三級調(diào)度分別完成什么工作?
(1)高級調(diào)度:就是作業(yè)調(diào)度,用于決定把外存上處于后備隊列中的哪些作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進程,分配必要的資源,然后,再將新創(chuàng)建的進程排在就緒隊列上,準備執(zhí)行
(2)低級調(diào)度:就是進程調(diào)度,它決定就緒隊列中的哪個進程將獲得處理機,然后由分派程序執(zhí)行把處理機分配給該進程的操作
(3)中級調(diào)度:實際上就是存儲器管理中的對換功能試說明引起進程調(diào)度的時機是什么?
(1)進程完畢(2)時間片用完(3)I/O請求發(fā)生某個事件(4)原語:wait操作,阻塞(5)高優(yōu)先者進入 5什么是臨界資源和臨界區(qū)?
一次僅允許一個進程訪問的資源稱為臨界資源。訪問臨界資源的代碼段稱為臨街區(qū)
6試修改下面生產(chǎn)者---消費問題中,如果將兩個wait操作即wait(full)和wati(mutex)互換 位置,或者將signal(mutex)與signal(full)互換位置,結(jié)果會如何?
(1)wait(full)和wait(mutex)互換位置后,因為mutex在這兒是全局變量,執(zhí)行完wait(mutex),則mutex賦值為0,倘若full 也為0,則該生產(chǎn)者進程就會轉(zhuǎn)入進程鏈表進行等待,而生產(chǎn)者進程會因全局變量mutex為0 而進行等待,使full 始終為0,這樣就形成了死鎖.(2)而signal(mutex)與signal(full)互換位置后,從邏輯上來說應(yīng)該是一樣的.7什么是死鎖?死鎖產(chǎn)生的有哪些
死鎖是因多個進程因競爭資源而造成的一種僵局(1)互斥條件:一個資源每次只能被一個進程使用。(2)請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3)不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。(4)環(huán)路等待條件:若干進程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。同步機制應(yīng)遵循的基本準則是什么?
(1)空閑讓進(2)忙則等待(3)有限等待(4)讓權(quán)等待.程序有幾種連接方式
(1)靜態(tài)鏈接方式(2)裝入時動態(tài)鏈接(3)運行時動態(tài)鏈接
10什么是動態(tài)重定位方式及為什么要引入動態(tài)重定位方式及如何實現(xiàn)?
程序和數(shù)據(jù)裝入內(nèi)存時需對目標程序中的地址進行修改。這種把邏輯地址轉(zhuǎn)變?yōu)閮?nèi)存的物理地址的過程叫重定位
11什么是分頁,什么是分段,在存儲管理中兩者的區(qū)別
(1)分頁是將一個進程的邏輯地址空間分成若干大小相等的部分,每一部分稱作頁面,內(nèi)存劃分成與頁面大小相等的物理塊,進程的任何一頁可放入內(nèi)存的任何一個物理塊中,段是信息的邏輯單位,含有一組意義相對完整的信息,更好的來滿足用戶的需要。
(2)分段是一組邏輯信息的集合,即一個作業(yè)中相對獨立的部分。多個段在內(nèi)存中占有離
散的內(nèi)存單元,對每個段,在內(nèi)存占有一連續(xù)的內(nèi)存空間,其內(nèi)存的分配與回收同可變分區(qū)的內(nèi)存分配與回收辦法
分頁與分段的主要區(qū)別是?
(1)頁是信息的物理單位,分頁是為了實現(xiàn)離散分配方式,以消減內(nèi)存的外零頭,提高內(nèi)存的利用率(2)頁的大小固定,并且有系統(tǒng)決定,而段的長度不固定決定于用戶所編寫的程序(3)分頁作業(yè)的地址空間是一維的,段是二維的。
12動態(tài)分區(qū)存儲管理中內(nèi)存的回收方式
13.什么是對換,對換的分類及主要用途在進程換出時應(yīng)遵循什么原則
對換是把內(nèi)存中暫時不能運行的進程或者暫時不用的程序和數(shù)據(jù)調(diào)出到外存上,以便騰出足夠的內(nèi)存空間,再把因具備運行條件的進程或者進程所需要的程序或數(shù)據(jù)調(diào)入內(nèi)存。
分類:(1)整體對換(進程對換):以整個進程為單位(2)頁面對換(分段對換/部分對換):以頁和段為單位
規(guī)則:內(nèi)存空間不夠用才換出。系統(tǒng)處于阻塞狀態(tài),且優(yōu)先級最低的進程最先換出。若換入:系統(tǒng)處于就緒狀態(tài),且優(yōu)先級最高的進程最先換入,直至無可換入的進程為止。
14.什么是虛擬存儲器虛擬存儲器具有哪些特性,最基本的特性是什么?虛擬存儲器的容量受哪兩方面的限制?
虛擬存儲器:是指具有請求調(diào)入功能和置換功能,能從邏輯上對內(nèi)存容量進行擴充的一種存儲器系統(tǒng)。
特征:(1)離散性(最基本的特征)(2)多次性(3)對換性(4)虛擬性
虛擬存儲器的容量主要受指令中表示地址的字長和外存的容量的限制。
15.在沒有快表的分頁存儲管理中取一條指令需訪問幾次內(nèi)存及訪問內(nèi)存的目的,及具有快表的分頁存儲管理系統(tǒng)的地址變換過程。
兩次。第一次:訪問內(nèi)存中的頁表,從中找到頁的物理塊號,再將塊號與頁內(nèi)偏移量W拼接,形成物理地址。第二次:從第一次所得的物理地址中獲得所需數(shù)據(jù)
地址變換過程:CPU給出有效地址后,地址變換機構(gòu)將頁號與快表中的所有頁號進行比較,若有與此相匹配的頁號,則表示所訪問的頁在快表中,從中讀出物理塊號與頁內(nèi)地址相拼接,得到物理地址;若訪問的頁不在快表中,則要訪問在內(nèi)存中的頁表,從頁表中讀出物理塊號與頁內(nèi)地址相拼接,得到物理地址,同時,還應(yīng)將此頁表項寫入快表中,若此時快表已滿,則OS必須找到一個老的并且被認為不再需要的頁表項將它換出。
16.什么是緊湊技術(shù)及為什么要引入
緊湊:把原來多個分散的小分區(qū)拼接成一個大分區(qū)的方法
引入:提高內(nèi)存的利用率,讓大容量的作業(yè)可以裝入并且減少零頭或碎片
17程序的局部性原理是什么局限性的兩個主要表現(xiàn)方面
局部性原理:(1)程序執(zhí)行時,除少部分轉(zhuǎn)移和過程調(diào)用指令外,大多數(shù)條件下任是順序執(zhí)行的(2)過程調(diào)用將會使程序的執(zhí)行軌跡由一部分區(qū)域轉(zhuǎn)至另一部分區(qū)域,但經(jīng)驗就看出過程調(diào)用的深度在大多數(shù)情況下不會超過5(3)程序中存在許多循環(huán)結(jié)構(gòu),這些雖然只能由少數(shù)指令構(gòu)成但它們將多次執(zhí)行(4)程序中還包括許多對數(shù)據(jù)結(jié)構(gòu)的處理
主要表現(xiàn)在:(1)時間局限性(2)空間局限性
18.什么是spooling技術(shù)spooling系統(tǒng)有哪些組成Spooling技術(shù)是對脫機輸入,輸出系統(tǒng)的模擬。
組成:(1)輸入井和輸出井(2)輸出緩沖區(qū)和輸入緩沖區(qū)(3)輸入進程SPi和輸出進程SPo(4)請求打印隊列
特點:(1)提高了I/O的速度(2)將獨占設(shè)備改為共享設(shè)備(3)實現(xiàn)了虛擬設(shè)備功能
第三篇:操作系統(tǒng)總結(jié)
第一部分概述
一、導(dǎo)論
1.操作系統(tǒng)做什么
① 馮諾依曼體系結(jié)構(gòu)
② OS角色:對上:控制程序正確執(zhí)行,使用方便;對下:資源分配器
③ 核心功能:進程管理,內(nèi)存管理,文件管理,輸入輸出,保護和安全
2.計算機系統(tǒng)組織
① 中斷
② 存儲結(jié)構(gòu):寄存器→高速緩存→主存→電子磁盤→光盤→磁帶
③ I/O結(jié)構(gòu):I/O的同步、異步;慢速設(shè)備(中斷)快速設(shè)備(DMA)
3.操作系統(tǒng)結(jié)構(gòu):多道(使CPU總有一個任務(wù)執(zhí)行)、分時(高頻率切換任務(wù))
4.進程管理
① 進程有其生命周期,進程是執(zhí)行中的程序
② 管理活動:創(chuàng)建或刪除用戶或系統(tǒng)進程;掛起或重啟進程;防死鎖;提供進程
同步、通信機制
③ 目的:使進程可以運行,相互協(xié)調(diào)不死鎖
5.內(nèi)存管理
① 目標:內(nèi)核健壯
② 保護方法:獨立操作模式:用戶模式,內(nèi)核模式;計數(shù)器定時中斷防止死循環(huán)
6.存儲管理
① 解決問題:速度匹配→緩存(緩存的命中率)
② 等級問題:一致性;多處理器下各緩存的一致性
二、操作系統(tǒng)結(jié)構(gòu)
1.操作系統(tǒng)服務(wù):用戶界面,程序執(zhí)行,I/O操作,文件系統(tǒng)操作,通信,錯誤檢測,資源分配,統(tǒng)計,保護和安全。
2.操作系統(tǒng)的用戶界面:命令解釋程序,圖形用戶界面
3.系統(tǒng)調(diào)用類型:進程控制,文件管理,設(shè)備管理,信息維護,通信
4.系統(tǒng)程序分類:文件管理,狀態(tài)信息,文件修改,程序設(shè)計語言支持,程序裝入和
執(zhí)行,通信,系統(tǒng)工具,應(yīng)用程序。
5.操作系統(tǒng)結(jié)構(gòu):
① 簡單結(jié)構(gòu)(MS-DOS):小空間多功能,應(yīng)用程序直接操作硬件,不安全,無模塊,接口和功能層次沒有區(qū)分
② 分層法:難劃分,效率低,但是構(gòu)造和調(diào)試簡單化
③ 微內(nèi)核:包括最小的進程和內(nèi)存管理以及通信,便于擴充操作系統(tǒng)。
④ 模塊化:動態(tài)加載模塊,允許內(nèi)核提供核心服務(wù),也能動態(tài)的實現(xiàn)特定的功能 ⑤ 組合結(jié)構(gòu)
第二部分進程管理
一、進程
1.進程的概念
① 進程通常包括:程序計數(shù)器,棧,數(shù)據(jù)段
② 進程狀態(tài):新建,運行,等待,就緒,終止
③ 進程控制塊PCB:進程狀態(tài),程序計數(shù)器,CPU寄存器,CPU調(diào)度信息,內(nèi)存
管理信息,記賬信息,I/O狀態(tài)信息
④
2.進程調(diào)度
① 調(diào)度隊列:作業(yè)隊列,就緒隊列,設(shè)備隊列P80
② 調(diào)度程序:長期調(diào)度程序(作業(yè)調(diào)度程序):從作業(yè)池中選擇進程,并裝入內(nèi)存
準備執(zhí)行。短期調(diào)度程序(CPU調(diào)度程序):從準備執(zhí)行的進程中選擇進程,并為之分配CPU時間。中期調(diào)度程序:能將進程從內(nèi)存中移出。
長短期的區(qū)別是執(zhí)行頻率;長期調(diào)度控制多道程序設(shè)計的程度,中期調(diào)度可以降低多道。
③ I/O綁定進程,CPU綁定進程
④ 上下文切換:將CPU切換到另一個進程需要保存當(dāng)前進程的狀態(tài)和恢復(fù)另一進
程的狀態(tài)。
3.進程操作
① 進程創(chuàng)程:創(chuàng)建新進程的執(zhí)行方式(父子進程并發(fā)執(zhí)行;父進程等待直到某個
或全部子進程執(zhí)行完畢)
新進程地址空間(子進程是父進程的副本;子進程裝入另一個新程序)
資源共享(所有/子集/不共享)
② 進程終止
父進程終止子進程的原因(子進程使用了超過它分配的資源;分配給子程序的任務(wù)不需要了;父進程結(jié)束)
4.進程間通信
① 通信基本模型:共享內(nèi)存,消息傳遞
② 共享內(nèi)存:消費者可能等待生產(chǎn)者;無限緩沖區(qū),有限緩沖區(qū)的區(qū)別
③ 消息傳遞:
命名:直接通信(對稱尋址:接受者命名發(fā)送者;非對稱尋址:接受者不需要命名發(fā)送者)間接通信(郵箱、端口的參與)
同步:阻塞與非阻塞(發(fā)送,接收),同步與異步
緩沖:零容量(無緩沖);有限容量、無限容量(自動緩沖)
5.客戶機-服務(wù)器通信:套接字SOCKET,RPC遠程調(diào)用,RMI遠程方法調(diào)用
二、線程
1.概述:多線程優(yōu)點:響應(yīng)度高,資源共享,經(jīng)濟,多處理器體系結(jié)構(gòu)的利用
2.多線程模型:用戶層的用戶線程或內(nèi)核層的內(nèi)核線程,用戶線程受內(nèi)核支持,而無
需內(nèi)核管理,而內(nèi)核線程由操作系統(tǒng)直接支持和管理,這兩種方法支持多線程。① 多對一模型(效率比較高,阻塞系統(tǒng)調(diào)用的后果)
② 一對一模型(更好的并發(fā)功能,缺點是創(chuàng)建一個用戶線程就需要一個內(nèi)核進程)③ 多對多模型(用戶可以創(chuàng)建任意多的線程;二級模型=多對多+一對一)
3.多線程問題
① 系統(tǒng)調(diào)用fork().exex()
② 線程取消異步取消(立即終止),延遲取消(檢查是否應(yīng)該終止)
③ 信號處理:信號必須有一個處理程序
④ 線程池:優(yōu)點(處理請求速度快,線程數(shù)量可控制)
三、CPU調(diào)度
1.基本概念
① CPU區(qū)間和I/O區(qū)間的概念
② 搶占與非搶占調(diào)度的概念(發(fā)生在:一個進程從運行切換到等待、運行切換到
就緒、等待切換到就緒、以及終止,1,4非搶占,2,3搶占)
2.調(diào)度準則:CPU利用率(使CPU盡量忙),吞吐量(測量工作的方法),周轉(zhuǎn)時間(從
進程提交到完成的時間),等待時間,響應(yīng)時間
3.調(diào)度算法
① 先到先服務(wù)調(diào)度FCFS(非搶占的)
② 最短作業(yè)優(yōu)先調(diào)度SJF(搶占,最優(yōu)算法,難知道下一CPU區(qū)間長度,用于長
期調(diào)度)
③ 最短剩余時間優(yōu)先調(diào)度SRTF(強占式的SJF,適合長期調(diào)度)
④ 優(yōu)先級調(diào)度(問題:無窮阻塞或饑餓,老化來解決;非搶占方式不用占用CPU
切換)
⑤ 輪轉(zhuǎn)調(diào)度RR(專為分時系統(tǒng)設(shè)計,是可搶占的,時間片過大變?yōu)镕CFS,時間片
過小等待時間段,但是切換頻繁)
⑥ 多級隊列調(diào)度(前臺與后臺的調(diào)度算法不同,RR與FCFS)?
⑦ 多級反饋隊列調(diào)度
⑧ 實時調(diào)度:硬實時(在特定硬件上保證時間),軟實時:盡力而為,優(yōu)先級不變,沒有饑餓現(xiàn)象
4.算法評估
① 確定性模型甘特圖
② 排隊模型 N=入*W(N平均隊列長度,W為隊列的平均等待時間,入為新進程
到達隊列的平均到達率)
③ 模擬
④ 實現(xiàn)
四、進程同步
1. 背景:競爭條件:共享內(nèi)存,共享變量
2. 臨界區(qū)問題
① 臨界區(qū)解決方案:進入去,臨界區(qū),退出區(qū),剩余區(qū)
② 效果:互斥,有空讓進,有限等待
③ 證明:1.互斥,臨界區(qū)一個時間只能有一個進程2.前進,臨界區(qū)內(nèi)無進程執(zhí)行,那么只有那些不在剩余區(qū)內(nèi)執(zhí)行的進程可參加選擇,這種選擇不能無限延遲3.有限等待,從一個進程做出進入臨界區(qū)的請求,知道該請求允許為止,其他進程允許進入其臨界區(qū)的次數(shù)有上限。
④ PETERSON算法
3. 信號量:計數(shù)信號量,二進制信號量
① 技術(shù)信號量用于控制訪問:當(dāng)每個線程需要使用資源時,需要對該信號量執(zhí)行
acquire()操作,當(dāng)線程釋放資源時,需要對該信號執(zhí)行release()操作。
② 用信號量解決同步問題
4. 管程:管程結(jié)構(gòu)確保一次只有一個進程能在管程內(nèi)活動
5. 經(jīng)典同步問題
① 生產(chǎn)者消費者問題
② 讀者寫者問題
③ 哲學(xué)家吃飯問題
五、死鎖
1.死鎖特征
① 必要條件:互斥,占有并等待,非搶占,循環(huán)等待
② 資源分配圖:分配圖沒有環(huán)則沒有死鎖,有環(huán)則有死鎖;有環(huán)則可能有死鎖。
2.死鎖預(yù)防
① 互斥:通常不能通過否定互斥條件來預(yù)防死鎖:有的資源本身就是非共享的。② 占有并等待:協(xié)議一:每個進程在執(zhí)行前申請并獲得所有資源;協(xié)議二,允許
進程在沒有資源時才可以申請資源。協(xié)議缺點:資源利用率低,可能發(fā)生饑餓。③ 非搶占:協(xié)議:如果一個進程占有資源并申請另一個不能立即分配的資源,那
么其現(xiàn)在已分配的資源都可被搶占。
④ 循環(huán)等待:對所有資源類型進行完全排序,且要求每個進程按遞增順序來申請
資源。
3.死鎖避免
① 安全狀態(tài):如果系統(tǒng)能按某個順序為每個進程分配資源并能避免死鎖,那么系統(tǒng)
狀態(tài)就是安全的。
② 單實例:資源分配圖:申請邊,分配邊,需求邊
③ 多實例:銀行家算法Available(向量),Max(矩陣),Allocation(矩陣),Need(矩
陣),4.死鎖檢測
① 單實例:等待圖:當(dāng)且僅當(dāng)?shù)却龍D中有一個環(huán)時,系統(tǒng)存在死鎖
② 多實例:類似銀行家算法
5.死鎖恢復(fù)
① 進程終止:終止所有死鎖進程;一次只終止一個進程,直到取消死鎖循環(huán)為止 ② 資源搶占:問題:選擇一個犧牲品;回滾;饑餓
第三部分內(nèi)存管理
一、內(nèi)存管理
1.背景
① 地址綁定:編譯時(編譯時就知道進程將在內(nèi)存中的駐留地址,那么就可以生
成絕對代碼),加載時(生成可重定位的代碼),運行時(如果進程在執(zhí)行時可以從一個內(nèi)存段移到另一個內(nèi)存段,那么綁定必須延遲到執(zhí)行時才進行)
② 邏輯地址(CPU所生成的地址)物理地址(內(nèi)存單元所看到的地址)
③ 動態(tài)加載(子程序只在調(diào)用時加載,優(yōu)點不用的子程序絕不會被加載)④ 動態(tài)鏈接與共享庫(將連接延遲到運行時)
2.交換(沒看)
3.連續(xù)內(nèi)存分配:單分區(qū),多分區(qū)
4.非連續(xù)內(nèi)存分配:分頁(分頁技術(shù)不會產(chǎn)生外部碎片)
5.動態(tài)存儲分配問題:首次適應(yīng),最佳適應(yīng),最差適應(yīng)
6.頁表結(jié)構(gòu):層次頁表,哈希頁表,反向頁表
二、虛擬內(nèi)存
1.背景
① 多道盡可能多的程序,這也是內(nèi)存管理的目標
② 虛擬內(nèi)存好處:可以運行比物理內(nèi)存大的程序;更快的啟動和響應(yīng)(載入更快);
更多的多道;更容易的共享文件盒地址空間;更少的輸入輸出。
2.按需調(diào)頁:在需要時才調(diào)入頁
① 有效位-無效位來來確定頁是否在內(nèi)存
② 有幀就加入,無幀就換頁,頁錯誤處理流程:檢查內(nèi)部表確定引用是否合法→
非法則終止,合法則調(diào)入→找到空閑幀,裝入內(nèi)存→修改內(nèi)部表→重啟指令 ③ 按需調(diào)頁的有效訪問時間:effective access time=(1-p)*ma+p*處理頁錯誤的時間
3.頁面置換(引用串)
① FIFO 先入先出
② 最優(yōu)算法:向后看,換頁的時候看內(nèi)存中哪個頁最晚用;是所有算法中產(chǎn)生頁
錯誤最低的算法;問題:需要引用串的未來知識
③ LRU最近最少使用算法:往前看,內(nèi)存中哪頁在列表序列中離的最遠,無Belady
異常
④ 算法實現(xiàn):計數(shù)器(最近最少使用:換計數(shù)器值最小的)代價大:系統(tǒng)級,可
能溢出,一定會寫全表
頁碼堆棧:每當(dāng)引用一個頁,該頁就從棧中刪除并放在棧頂。嚴格實現(xiàn),但是代價高。
二次機會:引用位,引用時改為1,;換頁時,是1則置零,是0則換
計數(shù)算法:LFU最不經(jīng)常使用,MFU最經(jīng)常使用(可采用老化)
4.幀分配
① 分配策略限制:所分配的幀不能超過可用幀的數(shù)量,大于最小需求
② 每個進程幀的最少數(shù)量是由體系結(jié)構(gòu)決定的,而最大數(shù)量幀是由可用物理內(nèi)存
決定的。
③ 當(dāng)指令完成之前出現(xiàn)頁錯誤,該指令必須重新執(zhí)行
④ 幀分配方法:
固定分配:平均分配、按比例分配
優(yōu)先級分配:全局置換(幀數(shù)可變),局部置換(固定);全局置換算法的一個問題是進程不能控制其頁錯誤率,但是全局置換通常會有更好的系統(tǒng)吞吐量,且更為常用。
5.系統(tǒng)顛簸
① 顛簸產(chǎn)生的原因:搶幀→I/O上升→CPU使用率降低→多道繼續(xù)增加→忙于換頁 ② 工作集合策略防止了顛簸,并盡可能的提高了多道程序的程度,可以通過頁錯
誤頻率PFF來直接測量和控制頁錯誤以防止顛簸。上限之上分配更多,下限之下,減少幀數(shù)
6.其他問題
① 預(yù)調(diào)頁關(guān)鍵問題:采用預(yù)調(diào)頁的成本是否小于處理響應(yīng)頁錯誤的成本。② 頁大小問題:最佳頁大小的選擇,大頁,小頁
③ 優(yōu)化程序結(jié)構(gòu)
第四部分存儲管理
一、文件系統(tǒng)接口
1.文件概念
① 文件是邏輯外存的最小分配單元,即數(shù)據(jù)除非在文件中,否則不能寫到內(nèi)存中。② 文件操作:寫,讀,重定位,刪除,截短
③ 文件加鎖:共享鎖,專用鎖;強制,建議文件加鎖機制
2.訪問方法:順序訪問,直接訪問,其他方法(索引)
3.目錄結(jié)構(gòu)
① 目錄操作:創(chuàng)建文件,刪除文件,遍歷目錄,重命名文件,跟蹤文件系統(tǒng) ② 評價目錄結(jié)構(gòu):命名(不同文件同名),分組(同一文件不同命名)
③ 單層結(jié)構(gòu)目錄(命名,分組均無),雙層結(jié)構(gòu)目錄(可命名不可分組),樹狀結(jié)
構(gòu)(絕對,相對路徑;可命名分組),無環(huán)圖目錄(硬鏈接,軟鏈接),通用圖目錄
二、文件系統(tǒng)實現(xiàn)
1.文件系統(tǒng)結(jié)構(gòu):應(yīng)用程序→邏輯文件系統(tǒng)→文件組織模塊→基本文件系統(tǒng)→I/O控
制→設(shè)備
2.目錄實現(xiàn):線性列表(編程簡單,運行費時,查找文件需要線性搜索)
哈希表(采取策略避免沖突)
3.分配方法
① 連續(xù)分配:每個文件在磁盤上占有一組連續(xù)的塊;困難時為新文件找到空間,外部碎片問題也可能很大,確定文件分配多大空間,② 鏈接分配:解決了連續(xù)分配的所有問題;必須順序訪問文件,指針需要空間,由于指針分配在整個磁盤,可靠性就成了一個問題。
FAT文件分配表:改善了隨機訪問時間,但是需要大量磁頭尋道時間
③ 索引分配:把所有指針都放在一起,構(gòu)成索引塊;支持直接訪問,且沒有外部
碎片問題,但是會浪費空間;索引塊分多大是個問題
鏈接方案(一個索引塊可以指向另一索引塊構(gòu)成鏈接)
多層索引(第一個索引塊指向第二個索引塊,第二個指向文件數(shù)據(jù)塊)
組合方案P404 N級間接塊(計算)
4.空閑空間管理:為向量(1空0滿)塊號碼計算:(值為0的數(shù)字)*(一個字的位
數(shù))+第一個值為1的位的偏移;鏈表(所有空閑的塊用鏈表鏈接起來);組(將N個空閑塊的地址存儲在第一個空閑塊中);計數(shù)()
第四篇:操作系統(tǒng)總結(jié)
操作系統(tǒng)基本基礎(chǔ)概念
多任務(wù)是指用戶可以在同一時間內(nèi)運行多個應(yīng)用程序,每個應(yīng)用程序被稱作一個任務(wù)。像Windows、LINUX就是支持多任務(wù)的操作系統(tǒng)。每個任務(wù)使用由操作系統(tǒng)分配的短暫的時間片(Timeslice)輪流使用CPU,由于CPU對每個時間片的處理速度非常快,在用戶看來好像這些任務(wù)在同時執(zhí)行,這叫做時間片輪轉(zhuǎn)調(diào)度法。還有更多的多任務(wù)調(diào)度方法。
實時系統(tǒng)
(REAL TIME system)是指系統(tǒng)能及時的響應(yīng)外部時間的請求,在規(guī)定的時間內(nèi)完成對該事件的處理,并控制所有實時任務(wù)協(xié)調(diào)一致的運行。分為硬實時任務(wù)和軟實時任務(wù),系統(tǒng)對任務(wù)的截止時間有要求否則會出現(xiàn)難以預(yù)測的結(jié)果,這就是硬實時任務(wù),反之要求不是很嚴格則為軟實時任務(wù)。
操作系統(tǒng)的基本特性
并發(fā)與并行:并發(fā)性是兩個或多個事件在同一時刻發(fā)生。而并行性是兩個或多個事件在同一時間間隔內(nèi)發(fā)生。
進程:為了使多個程序能并發(fā)的執(zhí)行,系統(tǒng)必須為每個程序建立進程(process)。簡單說來~進程是指在操作系統(tǒng)中能獨立運行并作為資源分配的基本單位。他是由一組機器指令數(shù)據(jù)、堆棧等組成的,是一個能獨立運行的活動實體。多個進程之間可以并發(fā)的執(zhí)行和交換信息。一個進程在運行時需要一定的資源,如CPU、內(nèi)存空間、IO設(shè)備等。
我的注解:進程很重要。Linux的進程之間的關(guān)系可以這樣描述:一個完整的main函數(shù)運行的時候,在linux里是以進程的形式存在的。系統(tǒng)啟動之后運行的第一個進程的進程號是1,叫做init進程,一切進程都從它派生出來,一個父進程可以派生另一個進程,即為子進程,這倆進程為并行關(guān)系。子進程也可以創(chuàng)建子進程。
進程的創(chuàng)建在linux里邊用fork()函數(shù)它有兩個返回值,一個是在父進程中返回,返回的是子進程號,一個是在子進程中返回,如果子進程創(chuàng)建成功,則返回的是0。子進程是父進程的一個拷貝,現(xiàn)代的進程創(chuàng)建都用vfork()創(chuàng)建子進程之后,并不拷貝全部的進程空間,只有在用到時才拷貝,叫做寫時復(fù)制技術(shù)(copy on write)。
Linux里邊這樣創(chuàng)建子進程:
pid_t pid=fork();//這里的pid_t是一種數(shù)據(jù)類型(如int),這里代表進程號(實質(zhì)上也是個整形變量int)
If(pid==0){這里邊就是子進程代碼}
Else if(pid>0){這里邊是父進程代碼,pid的值是子進程的進程號PID}
線程:通常在一個進程中可以包含若干個線程,他們可以利用進程所擁有的資源。在引入線程的操作系統(tǒng)中,一般都把進程作為分配資源的基本單位。而把線程作為獨立運行和獨立調(diào)度的基本單位。優(yōu)點:運行效率更高。
進程的狀態(tài):一般分為就緒狀態(tài)。執(zhí)行狀態(tài)。阻塞狀態(tài)。
操作系統(tǒng)產(chǎn)生死鎖的原因:1.競爭資源。2.進程間推進順序非法。比如說:一個進程占有一個資源A,當(dāng)他運行到需要用到被另一個進程占用的資源B時,沒有得到,于是進入等待退出運行,而這個占有資源B的進程還想得到資源A,但是占有A的進程此刻在休眠,也沒得到,所以這個進程也進入等待退出運行。這樣兩兩相互等待造成了死鎖。解決方法:1.在進程運行開始時就把所有資源占好。2.按順序加鎖。比如要得到資源B首先要對A加鎖,如果得不到就不能加鎖。所有進程都按照這個方法進行。
第五篇:操作系統(tǒng)重點總結(jié)
CPU內(nèi)部結(jié)構(gòu)
8086分為兩個部分:總線接口部件BIU和執(zhí)行部件EU
BIU主要功能負責(zé)CPU與存儲器、I/O接口之間的信息傳遞。
BIU部件包括(1).四個段地址寄存器:代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器ss、附加段寄存器ES、(2).指令指針寄存器IP、(3).20位地址加法器、(4).6B的指令隊列、(5).總線控制邏輯電路。
EU主要功能負責(zé)指令的執(zhí)行。EU部件包括(1).四個通用寄存器:累加器AX、基址寄存器BX、計數(shù)器CX、數(shù)據(jù)寄存器DX。(2).四個專用寄存器:堆棧指針寄存器SP、基址指針寄存器BP、源變址寄存器SI、目的變址寄存器DI。(3).算數(shù)邏輯單元ALU。(4).標志寄存器FR。(5).EU控制電路。
CPU寄存器
1.通用寄存器AX,BX,CX,DX,每一個寄存器都是16位的,既可以作為16位,又可以拆成高、低8位,分別作為兩個獨立8位寄存器使用。AX(AH,AL)累加器 BX(BH,BL)基址寄存器 CX(CH,CL)技術(shù)寄存器 DX(DH,DL)數(shù)據(jù)寄存器 2.專用寄存器SP,BP,SI,DI
SP堆棧指針寄存器:在堆棧中存放棧頂偏移指針,永遠指向堆棧的棧頂。BP基址指針寄存器:一般也用來存放訪問內(nèi)存時的基地址。
SI源變址寄存器、DI目的變址寄存器:它們常常用在變址尋址方式中。3.段寄存器CS,DS,SS,ES CS代碼段寄存器。DS數(shù)據(jù)段寄存器。SS堆棧段寄存器。ES附加段寄存器。
每一個段寄存器都是16位。4.指令指針寄存器IP
16位的指令指針寄存器IP 用于存放
下一條執(zhí)行指令的偏移地址。CPU取指令總以CS為段基址,以IP 位段內(nèi)偏移地址。當(dāng)CPU從CS段內(nèi)偏移地址為(IP)的內(nèi)存單元中取出指令代碼的一個字節(jié)后,IP 會自動加1,從而指向代碼的下一個字節(jié),用戶不能直接訪問IP寄存器。5.標志寄存器FR
它是16位寄存器,但只使用其中的9位,這9位包括6個狀態(tài)標志位和3個控制標志位。狀態(tài)標志記錄了前面算術(shù)邏輯運算結(jié)果的一些特征;控制標志是用戶自己通過指令設(shè)置的,設(shè)置后將對其后的操作產(chǎn)生控制作用。
指令、偽指令與宏指令
指令語句是可執(zhí)行語句,在匯編中要產(chǎn)生對應(yīng)的機器代碼,與機器指令有一一對應(yīng)關(guān)系,是CPU指令系統(tǒng)中的指令的符號形式,CPU根據(jù)這些代碼執(zhí)行相應(yīng)的操作。
偽指令語句是不可執(zhí)行語句,沒有機器指令與其對應(yīng),在匯編中不產(chǎn)生機器代碼,是匯編程序支持的一種命令,在匯編程序?qū)R編語言源程序匯編期間由匯編程序執(zhí)行,告訴匯編程序如何匯編源程序,可以完成數(shù)據(jù)的定義、內(nèi)存的分配等功能。
宏指令語句是以一條宏指令代表一段程序,經(jīng)過定義之后,在程序中出現(xiàn)該程序段的地方均可用宏指令代替,簡化了程序設(shè)計。在匯編時,凡出現(xiàn)宏指令語句的位置都會被換成相應(yīng)的程序段。
DOS系統(tǒng)功能調(diào)用
DOS功能模塊位于BIOS的上層,對硬件的以來較小,DOS功能既可用于操作系統(tǒng)管理,又可用于匯編程序的設(shè)計。(1).設(shè)置所要調(diào)用功能的入口參數(shù)(2).在AH寄存器中存入搜要調(diào)用功能的功能號。
(3).通過INT n(系統(tǒng)功能調(diào)用用INT 21H)指令自動轉(zhuǎn)入中斷子程序入口。(4).相應(yīng)中斷子程序運行完畢,可按規(guī)
定取得出口參數(shù)。
CPU與外設(shè)間信息調(diào)用
微機與外設(shè)之間的信息傳遞實際上是CPU與接口之間的信息傳遞,它們之間信息傳遞的主要方式有以下五種:(1).無條件傳送方式:又稱為同步方式,它所有的操作均由執(zhí)行程序完成,主要適用于CPU或外圍設(shè)備始終是準備好了的情況,或者危機和外設(shè)是完全同步的情況。
(2).程序查詢方式:(3).中斷處理方式:(4).DMA控制方式:(5).I/O處理機方式:
8259A工作方式 1.中斷觸發(fā)方式(1).邊沿觸發(fā)方式。(2).電平觸發(fā)方式。2.連接系統(tǒng)總線方式
該方式用來確定系統(tǒng)總線與8259A數(shù)據(jù)總線之間是否需要進行緩沖。(1).緩沖方式。(2).非緩沖方式。3.屏蔽中斷源的方式
8259A 8個中斷請求線上的每一個都可以根據(jù)需要決定是否屏蔽,屏蔽是通過編程使屏蔽寄存器IMR相應(yīng)位置0或置1,從而允許或禁止該位所對應(yīng)的中斷。
(1).普通屏蔽方式。(2).特殊屏蔽方式。4.優(yōu)先級排隊的方式
8259A對中斷優(yōu)先級的管理是中斷管理的核心問題。(1).全嵌套方式(2).特殊全嵌套方式(3).優(yōu)先權(quán)自動循環(huán)方式(4).優(yōu)先權(quán)特殊自動循環(huán)方式 5.中斷結(jié)束方式(1).自動中斷結(jié)束方式。(2).普通中斷結(jié)束方式。(3).特殊中斷結(jié)束方式。