執行狀態:執行的所有所資源都已經配備足夠了,並且給他cpu資源
就緒狀態:其他的所有資源都配足夠了,只缺cpu資源----萬事俱備只欠東風
等待狀態:除了沒有cpu資源,還缺其他資源(不是必須缺少,但是肯定缺cpu資源)
執行時缺少某個資源,進入等待狀態,等到資源配備足夠以後,**不能直接**進入執行狀態,
要重新排隊獲取到最為核心的cpu資源之後才能進入執行態(時間片),在所屬的時間片到達之前需要等待
時間片輪**乙個程序從就緒到執行,只能夠執行乙個時間片,執行完之後重新回到就緒態,等待下一次的時間片到達,再次執行
靜止就緒:掛起操作(人為),人為的將程序掛起,但是並不缺其他的資源
eg:聽歌接到**,暫停歌曲(掛起)
阻塞對應著之前三態模型的等待
活躍是系統的
靜止是使用者的
考慮哪些任務是有先後順序的,哪些工作是可以並行的
**前驅圖的目的**:要完成的一些活動的先後的約束關係
**互斥的反義詞:共享**
**同步的反義詞:非同步** 互斥
同乙個資源不能服務於很多程序
同步和互斥不是對立的
單緩衝區中同步與互斥同時存在
同步:生產者必須等待消費者使用了市場裡的產品後才能繼續往市場裡放產品,出現了
明顯的等待,這就是同步
互斥:市場(資源)裡一次只能放乙個產品,生產者(程序)不能同時"放"(放
也是乙個程序)多個產品到市場(使用資源)
多緩衝區無非是一次多放了幾個產品,與單緩衝區一樣
程序管理
臨界區:是訪問臨界資源的**
訊號量:
pv操作:兩大原子操作的組合 p操作+v操作
p操作:
就是對訊號量進行自減1(目的:為了加鎖),當訊號量<0時將其放入程序等待佇列中去
即,哪怕(訊號量)沒有了,依舊可以執行,只有(訊號量)為負數才會停止,被
放入程序等待佇列
v操作:
對訊號量進行自加1(目的:為了解鎖),當訊號量<=0時將其放入程序等待佇列
即,一旦(訊號量)沒有了,就立刻放入程序等待佇列,
p操作和v操作相互交叉出現在兩個不同的程序之間可以實現兩個程序的互鎖與解鎖
生產者先執行
這樣可能市場已經滿了,但是生產者依舊會往裡面放東西,造成溢位
消費者先執行
由於初態沒有產品,消費者去取就會發生問題
p操作訊號量自減一,沒有小於0就繼續執行
加鎖和解鎖
p加鎖 v解鎖
這樣p和v分別出現在生產者和消費者的隊伍裡,實現了雙方的互鎖與解鎖
第一類問題:
給定一定數量的程序,告訴每乙個程序需要多少資源,要計算的是系統最少具有多少資源就不可能發生死鎖
第二類問題:
死鎖的預防和避免的問題
死鎖概念:
系統沒有足夠的資源,有的程序缺少資源,但是又不願意釋放自己占用的資源,使整個系統沒有多餘的資源分配給缺少資源的程序,造成系統無法執行的情況
即使系統只有五個資源呢也有可能避免死鎖的產生,即限制一次只分配乙個資源
系統有13個資源:
先給每個程序都分配4個資源,那麼無論把最後乙個資源給誰都不會發生死鎖的情況
不發生死鎖的最少的資源數:num=k*(n-1)+1
k為程序個數,n為每個程序所需要的資源數(預設每個程序所需要的資源數都相等)
方法:先預先給每個程序分配"所需資源數-1"個資源
邏輯位址與實體地址之間的轉化
把使用者程式等分為同樣大小的頁,把記憶體當中的儲存區也分為同樣大小的頁(和使用者程式的頁相同),用多少放多少頁進去記憶體
使用者程式的頁號對於記憶體中的塊號
由於需要查表才能進行使用者程式的頁和記憶體中的對應關係的確定
頁內位址相同
但是頁號和塊號不一定相等,需要查表才能得知
物理塊號==頁幀號
第乙個問題:
給出了邏輯位址5a29h,求實體地址
由於頁面的大小是4k==2^12,所以可以得知頁內位址是12位
按照邏輯結構進行劃分,比如main乙個段,func1乙個段,func2乙個段。。。。。。
所以每個段的大小不確定
快表是放在cache當中的
慢表(段表、頁表)是放在記憶體當中的
**應用於分層的儲存體系當中**
將記憶體和cache當中的暫時不用的頁淘汰出去
上面兩個一般不用
最優:知道要訪問的序列是怎麼樣的,知道什麼時候淘汰什麼頁面淘汰什麼頁面,沒有普
遍的規律,沒法直接應用。主要起到乙個對比的作用(寫出來,與其他的演算法進行對比)
抖動:分配更多資源,希望把事情做的更好一些,但是卻使效率降低了。
比如:分配三個頁面,缺頁次數為10次,增加到4個頁面,但是缺頁次數增加到
了10次以上
先要在記憶體上查一下表才能讀取相應的塊,每讀乙個塊要訪問兩次記憶體
預設指令無論他是佔到幾個頁
注意頁和塊的物件的不同
對程式進行分頁儲存
對記憶體進行分塊儲存
所以說兩者一定程度是相同的,只是針對的物件不同
作業系統思考 第零章 前言
原文 chapter 0 preface 譯者 飛龍 協議 cc by nc sa 4.0 在許多電腦科學的課程中,作業系統都是高階話題。學生在上這門課之前,它們已經知道了如何使用c語言程式設計,他們也可能上過計算機體系結構 組成原理 的課程。通常這門課的目標是讓學生們接觸作業系統的設計與實現,並帶...
作業系統筆記 第9章 同步
合作的執行緒 執行緒之間對共享資源協同合作,程序 執行緒 計算機 裝置需要合作。程式可以呼叫函式fork 建立乙個新程序 假設兩個程序併發執行 同步互斥產生的背景 不確定性要求並行程式的正確性 race condition 競態條件 atomic operation 原子操作 實際上作業系統的操作往...
作業系統 第6章併發程式設計
1 併發程式設計 2定義 把乙個具體問題求解 設計成 若干個 可同時執行 的程式模組的方法。3目的 充分利用cpu的每乙個核,以達到最高的處理效能。4特性 5 1.並行性 多個程序在多道程式系統中併發執行或者 在多處理器系統中並行執行,提高計算效率 6 2.共享性 多個程序共享軟體資源,輸入和計算共...