存儲器管理書
㈠ 8086cpu為什麼要對存儲器採用分段管理一個邏輯段最多包含多少個存儲單元
只要學過匯編的人都知道8086處理器對存儲器採用分段管理機制,為什麼要這么設計呢?採用線性地址直接訪問存儲器該多好,直接明了。
其實Intel的工程師絕對不會那麼傻,當然是有他的道理:
首先,地址匯流排有20根,可定址1M的地址空間,而寄存器是16位,僅能定址64K,總不能白白浪費多出來的空間。要知道在8086的那個年代,內存是非常昂貴的。
所以Intel的工程師想出了分段管理的方法:段地址x4+偏移地址。
另外,分段管理還有利於代碼的組織,對內存實現有效的管理。例如,將代碼段、數據段隔離等。
學習過程中,如果按照書中所描述,照搬的學習,既不方便記憶,也不能將知識融會貫通。
㈡ 請教下:關於存儲器(SRAM.DRAM.DDR.Flash),和IC集成電路,方面的書籍
單片機,模擬電路,數字電路,半導體物理,這些類的就有
㈢ 分頁和分段存儲管理有何區別
基本分段存儲管理方式和基本分頁存儲管理方式二者的理論基礎都是相對差不多的,二者都是建立在內存分區管理思想和程序局部性原理的基礎之上。 基本分頁存儲管理方式在存儲器管理中,連續分配方式會形成許多「碎片」,雖然可通過「緊湊」方法將許多碎片拼接成可用的大塊空間,但須為之付出很大開銷。 在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程序段MAIN、子程序段X、數據段D及棧段S等。基本分段存儲管理方式和基本分頁存儲管理方式原理的結合就是段頁式系統的基本原理,即先將用戶程序分成若干個段,再把每個段分成若干個頁,並為每一個段賦予一個段名。頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。段是信息的邏輯單位,它含有一組其意義相對完整的信息。頁和分段系統有許多相似之處,但在概念上兩者完全不同,主要表現在: 1、頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率;或者說,分頁僅僅是由於系統管理的需要,而不是用戶的需要。 段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。 2、頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。
㈣ 第三章 處理機的調度與死鎖
在多道程序系統中,調度的實質是一種資源分配,處理機調度是對處理機資源進行分配。處理機調度演算法是指根據處理機分配策略所規定的處理機分配演算法。
在多道程序系統中,進程的數量遠遠多於處理機的個數,因此進程爭用處理機的情況在所難免。處理機調度是對處理機進行分配,即從就緒隊列中按照一定的演算法(公平、高效)選擇一個進程並將處理機分配給它運行,以實現進程的並發執行。
高級調度又稱 長程調度 或 作業調度 ,它調度的對象是 作業 。其主要功能是根據某種演算法,決定將外存上處於後備隊列中的哪幾個作業調入內存,為它們創建進程、分配必要的資源,並將其放入就緒隊列。
高級調度主要用於多道批處理系統中,在分時系統和實時系統中不設置高級調度。高級調度的執行頻率較低,通常為幾分鍾一次。
低級調度又稱為 進程調度 或 短程調度 ,其所調度的對象是 進程 或 內核級線程 。其主要功能是根據某種演算法決定就緒隊列中哪個進程應獲得處理機,並由分派程序將處理機分配給被選中的進程。
進程調度是最基本的一種調度,在多道批處理、分時系統和實時系統三種類型的OS中都必須設置這種調度。進程調度的頻率很高,一般幾十毫秒一次。
中級調度又稱 內存調度 。引入中級調度的目的主要是提高內存的吞吐率和系統吞吐量。為此應把那些暫時不能運行的進程調至外存等待,此時進程的狀態稱為 就緒駐外存狀態(或掛起狀態) 。當它們已具備運行條件且內存又稍有空閑時,由中級調度來決定把外存上那些已具備運行條件的就緒進程再重新調入內存,並修改其狀態為就緒狀態,掛在就緒隊列上等待。中級調度實際上就是存儲器管理中的對換功能。
為了管理和調度作業,在多道批處理系統中,為每個作業設置一個作業控制塊JCB,它是作業在系統中存在的標志,其中保存了系統對作業進行管理和調度所需的全部信息,例如 作業標識 、 用戶名稱 、 用戶賬號 、 作業類型(CPU繁忙型、I/O繁忙型、批量型、終端型) 、 作業狀態 、 調度信息(優先順序、作業運行時間) 、 資源需求(預計運行時間、要求內存大小等) 、 資源使用情況 等。
每當一個作業進入系統時,由「作業注冊」程序為該作業建立一個JCB,再根據作業類型放到相應的後備隊列中等待調度。調度程序根據一定的調度演算法來調度它們,被調度的作業將被裝入內存。在作業運行期間,系統根據JCB中的信息和作業說明書對作業進行控制。當一個作業執行完畢後,系統負責回收分配給它的資源,並撤銷該JCB。
作業調度的主要任務是 根據JCB中的信息,檢查系統中的資源是否滿足作業對資源的需求,以及按照一定的調度演算法,從外存的後備隊列中選取某些作業調入內存,並為它們創建進程、分配必要的資源,然後將新創建的進程排在就緒隊列上等待調度 。因此也把作業調度稱為「接納調度」。在每次執行作業調度時,都需要決定 接納多少個作業 和 接納哪些作業 。
進程調度和切換的程序是操作系統的內核程序。請求調度的事件發生後,才可能運行進程調度程序,調度了新的就緒進程後,才會進行進程間的切換。在實際設計中,操作系統的內核程序運行時,若發生了引起進程調度的因素,也不一定能夠馬上進行進程調度與切換。
不能進行進程調度與切換的原因有:
若上述過程中發生了引起調度的條件,不能馬上進行進程的調度與切換,應置系統的請求調度標志,直到上述過程結束後再進行相應的調度與切換。
應該進行進程的調度與切換的情況如下:
進程切換往往在調度完成後立刻發生。
進程調度方式是指 某個進程正在處理機上執行時,若有某個更為重要或緊迫的進程需要處理,即有更高優先權的進程進入就緒隊列,此時應該如何分配處理機。
進程調度通常有 非剝奪調度方式 和 剝奪調度方式 兩種方式。
又稱 非搶占方式 ,是指當一個進程正在處理機上執行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,直到該進程完成或發生某種事件而進入阻塞狀態時,才把處理機分配給更為重要或緊迫的進程。在非剝奪調度方式下,一旦把CPU分配給一個進程,該進程就會保持CPU直到終止或轉換到等待態。
非剝奪調度方式適合大多數的批處理系統,但不能用於分時系統和大多數的實時系統。
又稱 搶占方式 ,是指當一個進程在處理機上執行時,若有某個更為重要或緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給這個更為重要或緊迫的進程。
採用剝奪調度方式,對提高系統吞吐率和響應效率都有明顯的好處,但「剝奪」必須遵循一定的原則,主要有優先權、短進程優先、時間片原則等。
FCFS調度演算法既可以用於作業調度,又可以用於進程調度。在作業調度中, 演算法每次從後備隊列中選擇最先進入該隊列的一個或幾個作業,將它們調入內存,分配必要的資源,創建進程並放入就緒隊列。
在進程調度中,FCFS調度演算法每次從就緒隊列中選擇最先進入該隊列的進程,將處理機分配給它,直到進程完成或因某種原因而阻塞才釋放處理機。
FCFS調度演算法屬於不可剝奪演算法。若一個長作業先到達系統,就會使後面許多短作業等待很長時間,因此它不能作為分時系統和實時系統的主要調度策略。但它常被結合在其它調度策略中使用,如在使用優先順序作為調度策略的系統中,往往對多個具有相同優先順序的進程按FCFS處理。
特點:
短作業優先調度演算法是對短作業優先調度的演算法。短作業優先演算法從後備隊列中選擇一個或若干估計運行時間最短的進程,將它們調入內存執行;短進程優先演算法從就緒隊列中選擇一個估計運行時間最短的進程,將處理機分配給它,直到完成或發生某事件而阻塞時,才釋放處理機。
特點:
優先順序調度演算法又可稱為優先權調度演算法,既可以用於作業調度,又可以用於進程調度。該演算法中的優先順序用於描述作業的緊迫程度。在作業調度中,優先順序調度演算法每次從後備作業隊列中選擇優先順序最高的一個或幾個作業,將它們調入內存,分配必要的資源,創建進程並放入就緒隊列。在進程調度中,優先順序調度演算法每次從就緒隊列中選擇優先順序最高的進程,將處理機分配給它。
該演算法按照更高優先順序的進程是否搶占正在執行的進程可分為兩種:
根據進程的優先順序是否改變,可將進程的優先順序分為以下兩種:
一般來說,進程優先順序的設置可以參照以下原則:
高響應比優先調度演算法主要用於作業調度,是對FCFS調度演算法和SJF調度演算法的一種綜合平衡,同時考慮了每個作業的等待事件和估計的運行時間。在每次進行作業調度時,先計算後備隊列中每個作業的響應比,從中選出響應比最高的作業投入運行。
響應比的計算公式為: 響應比Rp = (等待時間 + 要求服務時間)/ 要求服務時間
特徵:
時間片輪轉調度演算法主要用於分時系統。系統將所有就緒進程按到達時間的先後次序排成一個隊列,進程調度程序總是選擇就緒隊列中的第一個進程執行,即先來先服務原則,但僅能運行一個時間片(如100ms)。在使用完一個時間片後,即使進程未完成其運行,它也必須釋放處理機給下一個就緒的進程,而被剝奪處理機的進程返回就緒隊列的末尾重新排隊,等候再次運行。
時間片的大小對性能影響很大。若時間片足夠大以至於所有進程都能在一個時間片內執行完畢,則該演算法就退化為先來先服務調度演算法;若時間片很小,則處理機將在進程間過於頻繁地切換,使處理機的開銷增大,而真正用於運行用戶進程的時間將減少。
時間片的長短通常由以下因素確定:
多級反饋隊列調度演算法是時間片輪轉調度演算法和優先順序調度演算法的綜合與發展。多級反饋隊列調度演算法可以兼顧多方面的系統目標,如為提高系統吞吐量和縮短平均周轉時間而照顧短進程;為獲得較好的I/O設備利用率和縮短響應時間而照顧I/O型進程;不必事先估計進程的執行時間。
該演算法的實現思想如下:
優點:
死鎖是指多個進程因競爭資源而造成的一種僵局(互相等待),若無外力作用,這些進程都將無法向前推進。
為使系統不發生死鎖,必須破壞死鎖的四個必要條件之一,或允許死鎖產生,但當死鎖發生時能檢測出死鎖,並有能力實現恢復。
設置某些限制條件,破壞產生死鎖的四個必要條件中的一個或幾個,以防止發生死鎖。
在資源的動態分配過程中,用某種方法防止系統進入不安全狀態,從而避免死鎖。
無需採取任何限制性措施,允許進程在運行的過程中發生死鎖,通過系統的檢測機構及時地檢測出死鎖的發生,然後採取某種措施解除死鎖。
死鎖的預防和避免都屬於事先預防策略,預防死鎖的限制條件比較嚴格,實現起來較為簡單,但往往導致系統的效率低,資源利用率低;避免死鎖的限制條件比較寬松,資源分配後需要通過演算法來判斷是否進入不安全狀態,實現起來比較復雜。
死鎖的幾種處理策略如下:
防止死鎖的發生只需要破壞死鎖產生的4個必要條件的其中之一即可。
特點:把只能互斥使用的資源改造成允許共享使用,則系統就不會進入死鎖狀態。如操作系統使用SPOOLing技術把獨占設備在邏輯上改造成共享設備。
缺點:並不是所有的資源都可以改造成可以共享使用的資源,並且為了系統安全,很多地方還必須保持這種互斥性。因此,很多時候都無法破壞這種互斥條件。
特點:
缺點:
特點:可採用靜態分配方法,即進程運行之前一次申請完它所需要的全部資源,在它的資源尚未得到滿足前,不把它投入運行。一旦投入運行,這些資源就一直歸它所有,不再提出申請其他資源的請求。這種方法實現起來簡單。
缺點:有些資源可能只需要使用很短的時間,因此如果進程的整個運行期間都一直保持著所有資源,就會造成嚴重的資源浪費,資源利用率極低。另外,該策略也有可能導致某些進程飢餓。
特點:採用順序資源分配法,首先給系統中的資源編號,規定每個進程都必須按照編號遞增的順序請求資源,同類資源一次申請完。也就是說,只要進程提出申請分配資源Ri,則該進程在以後的資源申請中就只能申請編號大於Ri的資源(一個進程只有已佔有我號的資源時,才有資格申請更大編號的資源)。按此規則,已持有更大編號資源的進程不可能逆向地申請我號的資源,從而就不會產生循環等待現象。
缺點:
所謂安全序列,就是指如果系統按照這種序列分配資源,則每個進程都能順利完成。只要找出一個安全序列,系統就是安全狀態。安全序列可能有多個。
如果分配了資源之後,系統找不到安全序列,則系統就進入了不安全狀態。這就意味著之後可能所有進程都無法順利執行下去。當然,如果有進程提前歸還了一些資源,那系統也有可能提前回到安全狀態。
如果系統處於安全狀態,那麼就一定不會發生死鎖;如果系統進入不安全狀態,就可能發生死鎖(處於不安全狀態未必就發生了死鎖,但發生死鎖時系統一定處於不安全狀態)。因此可以在資源分配前預先判斷這次分配是否會導致系統進入不安全狀態,以此決定是否答應資源分配請求。
設Requesti是進程Pi的請求向量,Requesti[j] = K表示進程Pi需要j類資源K個。當Pi發出資源請求後,系統按照如下步驟進行檢查:
安全性演算法描述如下:
若系統在為進程分配資源時不採取任何措施,則應該提供死鎖檢測與解除的手段。
系統死鎖可用資源分配圖描述。如下圖所示,圓圈代表一個進程,框代表一類資源,由於一種資源可能有多個,所以用框中的一個圓代表一類資源中的一個資源。從進程到資源的有向邊稱為請求邊,表示該進程申請一個單位的該類資源;從資源到進程的邊稱為分配邊,表示該類資源已經有一個資源分配給了該進程。
通過簡化資源分配圖可以檢測系統狀態S是否為死鎖狀態。簡化方法如下:
㈤ orcale plsql建立存儲過程 .建立存儲過程完成圖書管理系統中的借書功能。
這種圖書功能為什麼還要自己做呢,直接在網上一套圖書管理系統就行啦,建意可以去看看建碩自定義管理系統里圖書管理不錯的,系統可以很方便借書、還書、查找、列印、導出、統計、報表等操作。可以自定義圖書類別,讀者類別,方便添加圖書、管理圖書、添加讀者、管理讀者。提供完善的借書和還書操作,擁有完全獨立的資料庫系統,是您的數據安全得到了保障,數據管理為您提供:圖書管理,讀者管理。數據查詢為您提供:借閱情況,書庫查詢,讀者查詢