一、目前使用的計算機基本上是馮·諾依曼(Von Neumann)式的結構,其基本特色是處理器按指令地址的指示順序執行指令,這樣的處理器稱爲順序處理器。 算法
二、進程的順序性是指進程在順序處理器上的執行是嚴格按序的,即按照程序規定的操做順序,只有在前一個操做結束後才能開始後繼操做。安全
三、當一個進程獨佔處理器順序執行時,它具備兩個特性:(1)封閉性;(2)可再現性。併發
四、進程的併發性:在一個進程的工做沒有所有完成以前,另外一個進程就能夠開始工做,咱們說這些進程是可同時執行的,或稱它們具備併發性,而且把可同時執行的進程稱爲併發進程。進程的併發執行會破壞「封閉性」和「可再現性」。工具
五、併發進程的執行速度受自身緣由以及進程調度策略的影響。測試
六、併發進程交替使用共享資源會出現與時間有關的錯誤。spa
七、咱們把併發進程中與共享變量有關的程序段稱爲臨界區。操作系統
八、相關臨界區是指併發進程中涉及到相同變量的那些臨界區。xml
九、對若干個併發進程共享某一變量的相關臨界區的管理有三個要求:進程
(1)一次最多一個進程可以進入臨界區。當有進程在臨界區執行時,其餘想進入臨界區執行的進程必須等待;資源
(2)不能讓一個進程無限制地在臨界區執行,即任何一個進入臨界區的進程必須在有限的時間內退出臨界區;
(3)不能強迫一個進程無限制地等待進入它的臨界區,即有進程退出臨界區時應讓一個等待進入臨界區的進程進入它的臨界區執行。
十、PV操做由P操做和V操做組成。它們是兩個不可中斷的過程,這種不可中斷的過程稱爲原語。所以,P操做和V操做也可稱爲P操做原語和V操做原語,簡稱PV操做。
十一、PV操做是對信號量進行操做,它們的定義以下:
(1)P操做P(S):將信號量S減去1,若結果小於0,則把調用P(S)的進程置成等待信號量S的狀態。
(2)V操做V(S):將信號量S加1,若結果不大於0,則釋放一個等待信號量S的進程。
十二、進程的互斥是指當有若干個進程都要使用某一共享資源時,任什麼時候刻最多隻容許一個進程去使用該資源,其餘要使用它的進程必須等待,直到該資源的佔用者釋放了該資源。
1三、PV操做是一種可實現進程互斥地進入相關臨界區的工具,但只有合理地使用該工具,才能既保持進程的併發性,又避免交叉使用共享資源形成的錯誤。在解決具體問題時,應驗證是否符合對相關臨界區的管理要求。粗心的使用PV操做可能會違反對臨界區的管理要求。
1四、進程的同步是指在併發進程之間存在的一種制約關係,一個進程的執行依賴另外一個進程的消息,當一個進程沒有獲得另外一個進程的消息時應等待,直到消息到達才被喚醒。
1五、進程的互斥其實是進程同步的一種特殊狀況。實現進程互斥時用P操做測試是否可使用共享資源,這至關於測試「資源已可以使用」的消息是否到達;用V操做歸還共享資源,這至關於發送了「共享資源已空閒」的消息。因此,常常把進程的互斥與進程的同步統稱爲進程的同步,把用來解決進程互斥與進程同步的機制(如PV操做)統稱爲同步機制。
1六、進程的互斥與進程的同步是有差異的,進程的互斥是進程之間競爭共享資源使用權;而進程同步的狀況就不一樣了,涉及共享資源的併發進程之間有一種必然的依賴關係。因此,用PV操做管理共同資源時,必定要正確區分互斥與同步。最關鍵的是確切地定義信號量,以及合理的調用各信號量上的P操做和V操做。
1七、咱們把經過專門的通訊機制實現進程間交換大量信息的通訊方式稱爲進程通訊。目前經常使用的高級通訊方式有信箱通訊、消息緩衝通訊、管道通訊等。
1八、一個進程採用信箱方式進行通訊時,應先組織好一封信,信件的內容應包括:發送者名(進程名),信息(或信息存放的地址和長度),等/不等回信,回信存放地址。
1九、若干個進程均可向同一進程發送信件。接收信件的進程能夠設立一個信箱。信箱的大小決定了信箱中能夠容納的信件數,每一個信箱由「信箱說明」和「信箱體」兩部分組成。
20、信箱通訊須要用到兩個通訊原語:發送原語(send)和接收原語(receive)。
2一、使用信箱通訊時,爲避免信件的丟失和錯誤地索取信件,通訊時應遵循以下規則:
(1)若發送信件時信箱已滿,則應把發送信件的進程置成「等信箱」狀態,直到信箱有空時才被釋放;
(2)若取信件時信箱中無信,則應把接收信件的進程置成「等信件」狀態,直到信箱中有信件時才被釋放。
2二、若系統中存在一組進程(兩個或多個進程),它們中的每個進程都佔用了某種資源而又都在等待該組進程中另外一個進程所佔用的資源,這種等待永遠不能結束,則說系統出現了死鎖,或說這組進程進入了死鎖狀態。
2三、造成死鎖的原由是系統提供的資源數比進程要求的資源數少,或者是若干個進程要求的資源總數大於系統能提供的資源數。這時,進程間就會出現競爭資源的現象,對進程競爭的資源若是管理或分配不當,就會引發死鎖。死鎖的出現與資源分配策略和併發執行的速度有關。PV操做可實現進程的同步和共享資源的互斥使用,但不能排除死鎖。
2四、系統產生死鎖的四個必要條件:(1)互斥地使用資源;(2)佔有且等待資源;(3)非搶奪式分配;(4)循環等待資源。
2五、防止死鎖的資源分配策略有:
(1)靜態分配資源:是指進程必須在開始執行前就申請本身所要的所有資源,僅當系統能知足進程的所有資源申請要求且把資源分配給進程後,該進程纔開始執行;
(2)按序分配資源:是指對系統中每個資源給一個編號。規定任何一個進程申請兩個以上資源時,老是先申請編號小的資源,再申請編號大的資源。
(3)剝奪式分配資源:是指當一個進程申請資源得不到知足時,可從另外一個進程那裏去剝奪。
26、若是操做系統能保證全部的進程在有限時間內獲得須要的所有資源,則稱系統處於安全狀態,不然就說系統是不安全的。
27、死鎖的避免:古典的測試方法:銀行家算法:該算法規定,只有當系統現存的資源可以知足進程的最大需求量時,才把資源分配給該進程。
28、銀行家算法是在保證至少有一個進程能獲得所需的所有資源的前提下進行資源分配的,避免了進程共享資源時可能發生的死鎖,但這種算法必須不斷測試各個進程佔用和申請資源的狀況,需花費較多的時間。
29、死鎖的檢測:設置兩張表格來記錄進程使用和等待資源的狀況。「死鎖檢測」程序定時地檢測這兩張表。若是發現有循環等待資源的進程,則就有死鎖出現了。檢測到死鎖後,可採用搶奪某些進程佔用的資源,或強迫進程結束,從新啓動操做系統等辦法來解除死鎖。