㈠ 計算機專業考研 專業課 參考資料
2023年最新考研專業課大合集網路網盤下載
鏈接:https://pan..com/s/1YgeRnPRdM1wjHhNn7BSmzg
簡介:2023年最新考研專業課,包括理工科、藝術、體育、管理、計算機、外語、醫葯等專業,講義、視頻大合集。
㈡ 計算機操作系統第三版 湯子瀛編著的 第四章的課後題答案能發給我一下嗎
第四章 存儲器管理
1. 為什麼要配置層次式存儲器?
這是因為:
a.設置多個存儲器可以使存儲器兩端的硬體能並行工作。
b.採用多級存儲系統,特別是Cache技術,這是一種減輕存儲器帶寬對系統性能影響的最佳結構方案。
c.在微處理機內部設置各種緩沖存儲器,以減輕對存儲器存取的壓力。增加CPU中寄存器的數量,也可大大緩解對存儲器的壓力。
2. 可採用哪幾種方式將程序裝入內存?它們分別適用於何種場合?
將程序裝入內存可採用的方式有:絕對裝入方式、重定位裝入方式、動態運行時裝入方式;絕對裝入方式適用於單道程序環境中,重定位裝入方式和動態運行時裝入方式適用於多道程序環境中。
3. 何為靜態鏈接?何謂裝入時動態鏈接和運行時動態鏈接?
a.靜態鏈接是指在程序運行之前,先將各自目標模塊及它們所需的庫函數,鏈接成一個完整的裝配模塊,以後不再拆開的鏈接方式。
b.裝入時動態鏈接是指將用戶源程序編譯後所得到的一組目標模塊,在裝入內存時,採用邊裝入邊鏈接的一種鏈接方式,即在裝入一個目標模塊時,若發生一個外部模塊調用事件,將引起裝入程序去找相應的外部目標模塊,把它裝入內存中,並修改目標模塊中的相對地址。
c.運行時動態鏈接是將對某些模塊的鏈接推遲到程序執行時才進行鏈接,也就是,在執行過程中,當發現一個被調用模塊尚未裝入內存時,立即由OS去找到該模塊並將之裝入內存,把它鏈接到調用者模塊上。
4. 在進行程序鏈接時,應完成哪些工作?
a.對相對地址進行修改
b.變換外部調用符號
6. 為什麼要引入動態重定位?如何實現?
a.程序在運行過程中經常要在內存中移動位置,為了保證這些被移動了的程序還能正常執行,必須對程序和數據的地址加以修改,即重定位。引入重定位的目的就是為了滿足程序的這種需要。
b.要在不影響指令執行速度的同時實現地址變換,必須有硬體地址變換機構的支持,即須在系統中增設一個重定位寄存器,用它來存放程序在內存中的起始地址。程序在執行時,真正訪問的內存地址是相對地址與重定位寄存器中的地址相加而形成的。
9. 分區存儲管理中常採用哪些分配策略?比較它們的優缺點。
分區存儲管理中常採用的分配策略有:首次適應演算法、循環首次適應演算法、最佳適應演算法、最壞適應演算法。
a.首次適應演算法的優缺點:保留了高址部分的大空閑區,有利於後到來的大型作業的分配;低址部分不斷被劃分,留下許多難以利用的、小的空閑區,且每次分區分配查找時都是從低址部分開始,會增加查找時的系統開銷。
b.循環首次適應演算法的優缺點:使內存中的空閑分區分布得更為均勻,減少了查找時的系統開銷;缺乏大的空閑分區,從而導致不能裝入大型作業。
c.最佳適應演算法的優缺點:每次分配給文件的都是最適合該文件大小的分區;內存中留下許多難以利用的小的空閑區。
d.最壞適應演算法的優缺點:給文件分配分區後剩下的的空閑區不至於太小,產生碎片的幾率最小,對中小型文件分配分區操作有利;使存儲器中缺乏大的空閑區,對大型文件的分區分配不利。
10. 在系統中引入對換後可帶來哪些好處?
能將內存中暫時不運行的進程或暫時不用的程序和數據,換到外存上,以騰出足夠的內存空間,把已具備運行條件的進程或進程所需的程序和數據換入內存,從而大大地提高了內存的利用率。
12. 在以進程為單位進行對換時,每次是否將整個進程換出?為什麼?
在以進程為單位進行對換時,並非每次將整個進程換出。這是因為:
a.從結構上講,進程是由程序段、數據段和進程式控制制塊組成的,其中進程式控制制塊總有部分或全部常駐內存,不被換出。
b.程序段和數據段可能正被若干進程共享,此時它們也不能被換出。
13. 為實現分頁存儲管理,需要哪些硬體支持?
需要有頁表機制、地址變換機構的硬體支持。
16. 為什麼說分段系統較之分頁系統更易於實現信息共享和保護?
a.對於分頁系統,每個頁面是分散存儲的,為了實現信息共享和保護,則頁面之間需要一一對應起來,為此需要建立大量的頁表項;
b.而對於分段系統,每個段都從0開始編址,並採用一段連續的地址空間,這樣在實現共享和保護時,只需為所要共享和保護的程序設置一個段表項,將其中的基址與內存地址一一對應起來即可。
17. 分頁和分段有何區別?
a.分頁和分段都採用離散分配的方式,且都要通過地址映射機構來實現地址變換,這是它們的共同點;
b.對於它們的不同點有三,第一,從功能上看,頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率,即滿足系統管理的需要,而不是用戶的需要;而段是信息的邏輯單位,它含有一組其意義相對完整的信息,目的是為了能更好地滿足用戶的需要;第二頁的大小固定且由系統確定,而段的長度卻不固定,決定於用戶所編寫的程序;第三分頁的作業地址空間是一維的,而分段的作業地址空間是二維的。
18. 試全面比較連續分配和離散分配方式。
a.連續分配是指為一個用戶程序分配一個連續的地址空間,包括單一連續分配方式和分區式分配方式,前者將內存分為系統區和用戶區,系統區供操作系統使用,用戶區供用戶使用,是最簡單的一種存儲方式,但只能用於單用戶單任務的操作系統中;分區式分配方式分為固定分區和動態分區,固定分區是最簡單的多道程序的存儲管理方式,由於每個分區的大小固定,必然會造成存儲空間的浪費;動態分區是根據進程的實際需要,動態地為之分配連續的內存空間,常用三種分配演算法: 首次適應演算法,該法容易留下許多難以利用的小空閑分區,加大查找開銷;循環首次適應演算法,該演算法能使內存中的空閑分區分布均勻,但會致使缺少大的空閑分區;最佳適應演算法,該演算法也易留下許多難以利用的小空閑區;
b.離散分配方式基於將一個進程直接分散地分配到許多不相鄰的分區中的思想,分為分頁式存儲管理,分段存儲管理和段頁式存儲管理. 分頁式存儲管理旨在提高內存利用率,滿足系統管理的需要,分段式存儲管理則旨在滿足用戶(程序員)的需要,在實現共享和保護方面優於分頁式存儲管理,而段頁式存儲管理則是將兩者結合起來,取長補短,即具有分段系統便於實現,可共享,易於保護,可動態鏈接等優點,又能像分頁系統那樣很好的解決外部碎片的問題,以及為各個分段可離散分配內存等問題,顯然是一種比較有效的存儲管理方式;
c.綜上可見,連續分配方式和離散分配方式各有各自的特點,應根據實際情況加以改進和利用.
19. 虛擬存儲器有哪些特徵?其中最本質的特徵是什麼?
特徵:離散性、多次性、對換性、虛擬性;
最本質的特徵:離散性;最重要的特徵:虛擬性。
20. 實現虛擬存儲器需要哪些硬體支持?
a.對於為實現請求分頁存儲管理方式的系統,除了需要一台具有一定容量的內存及外存的計算機外,還需要有頁表機制,缺頁中斷機構以及地址變換機構;
b.對於為實現請求分段存儲管理方式的系統,除了需要一台具有一定容量的內存及外存的計算機外,還需要有段表機制,缺段中斷機構以及地址變換機構;
21. 實現虛擬存儲器需要哪幾個關鍵技術?
a.分頁和分段都採用離散分配的方式,且都要通過地址映射機構來實現地址變換,這是它們的共同點;
25. 在請求分頁系統中,通常採用哪種頁面分配方式——物理塊分配策略?
三種分配方式:固定分配局部置換、可變分配全局置換、可變分配局部置換。
26. 在一個請求分頁系統中,採用FIFO頁面置換演算法時,假如一個作業的頁面走向為4、3、2、1、4、3、5、4、3、2、1、5,當分配給該作業的物理塊數M分別為3和4時,試計算在訪問過程中所發生的缺頁次數和缺頁率,並比較所得結果。
4 3 2 1 4 3 5 4 3 2 1 5
4
4 4 1 1 1 5 5 5
3 3 3 4 4 4 2 2
2 2 2 3 3 3 1
4 4 4 4 5 5 5 5 1 1
3 3 3 3 4 4 4 4 5
2 2 2 2 3 3 3 3
1 1 1 1 2 2 2
M=3時,採用FIFO頁面置換演算法的缺頁次數為9次,缺頁率為75%;
M=4時,採用FIFO頁面置換演算法的缺頁次數為10次,缺頁率為83%。
由此可見,增加分配給作業的內存塊數,反而增加了缺頁次數,提高了缺頁率,這種現象被稱為是Belady現象。
28. 試說明改進型Clock置換演算法的基本原理。
基本原理:
在將一個頁面換出時,如果該頁已被修改過,便須將該頁重新寫回到磁碟上;但如果該頁未被修改過,則不必將它寫回磁碟上。在改進型演算法中,除需考慮頁面的使用情況外,還須再增加一個因素,即置換代價,這樣,選擇頁面換出時,既要是未使用過的頁面,又要是未被修改過的頁面。
15 什麼是抖動? 產生抖動的原因是什麼?
a.抖動(Thrashing)就是指當內存中已無空閑空間而又發生缺頁中斷時,需要從內存中調出一頁程序或數據送磁碟的對換區中,如果演算法不適當,剛被換出的頁很快被訪問,需重新調入,因此需再選一頁調出,而此時被換出的頁很快又要被訪問,因而又需將它調入,如此頻繁更換頁面,使得系統把大部分時間用在了頁面的調進換出上,而幾乎不能完成任何有效的工作,我們稱這種現象為"抖動"。
b.產生抖動的原因是由於CPU的利用率和多道程序度的對立統一矛盾關系引起的,為了提高CPU利用率,可提高多道程序度,但單純提高多道程序度又會造成缺頁率的急劇上升,導致CPU的利用率下降,而系統的調度程序又會為了提高CPU利用率而繼續提高多道程序度,形成惡性循環,我們稱這時的進程是處於"抖動"狀態。
㈢ 寫一個操作系統內核有多難大概的內容,步驟是什麼
「一個好一點兒的計算機碩士畢業的學生。寫一個操作系統的內核絕對是應該辦到而且肯定可以辦到的事兒。」 ------這句話我們可以理解為」一個好的計算機碩士掌握的理論知識足夠他搭建起一個簡單的操作系統框架「。x0dx0ax0dx0a我上操作系統課(大二)的第一天就問我的老師,學完了這門課可以自己實現一個操作系統了嗎?老師說:」你可以基本掌握操作系統中要處理的主要問題,但是即使實現最簡單的五臟俱全的操作系統還需要掌握很多很多東西,而且前提是你已經有很不行喚散錯的代碼能力。「x0dx0ax0dx0a回到題目上來,我們要實現一個簡單的操作系統,最先需要解決的是哪些問題?這個問題我相信翻開任何一本操作系統書都可以得到答案,一般都是操作系統書的前五,六章內容檔氏(第一章基本是操作系統概念及發展歷史)。x0dx0a包括:x0dx0ax0dx0a進程管理x0dx0a存儲管理x0dx0a文件系統x0dx0a輸入/輸出x0dx0a這些大部分是討論理論類的書,比如我們上課用的書是西電湯子瀛老師的《計算機操作系統》,後來自己為了深入學習買了Andrew S. Tanenbaum的《Modern Operating Systems》。x0dx0ax0dx0a如果想寫個操作系統,除了理論知識外,動手之前最好先看看操作系統源代碼,Linux的代碼都是開源的,可以先學習學習。不過對於我們這種初學者千萬不要看最新的Linux內核代碼,因為那是很多人的傑作,可能一輩子都看不完。最好先看看國內同濟大學趙炯基於0.11的《Linux完全注釋》,即使只看懂30%也至會讓自己懂很多之前不知道的東西。x0dx0ax0dx0a理論類的書很少有提到Bootload問題的,就是加電之後從哪裡開始執行的部分。僅僅是這個步驟也需要花不少時間去了解CPU知識,匯編語言知識等,相當不容易。不話說回來,這部分如果能處理好之後會發現組成原理,匯編語言,微機原理的知識被自己運用到了,成就感巨大。這部分內容,可以參看MIT的課程6.828 Operating System Engineering的課程,Google一下就能搜到不少大牛關於這門課的博客。如果英語不太好我記得華中科技大學有一個叫32位操作系統實踐的課,資料都放到網上了,看起來很不錯。x0dx0ax0dx0a過了這一關,用《深入理解計算機系統》加上《現代操作系統》看一下虛擬存儲器的內容,這兩本書這部分說得都很棒。虛擬存儲器的概鏈大念貫穿所有,如果能弄懂,對很多方面都有很大的幫助,不僅僅是操作系統這塊。有了虛擬存儲器概念之後對於鏈接,載入等知識理解就會深刻許多。 不過,這部分內容也需要對硬體部分有所了解,又是一坑。x0dx0ax0dx0a之後回到進程上來之後,終於可以把工作重心從硬體部分轉移過來了。但是我們又將面對進程創建,進程調度,進程通信三大問題,既然是簡單實現,就先不考慮線程的事。演算法書中會給很多,不過這些演算法都是有一定的局限性,比如調度演算法,對應的調度演算法優劣差異很大,至於如何抉擇就看個人需求。不過話說回來,操作系統里的」演算法「和ACM里的演算法在難度上差很多,還是比較容易實現的。x0dx0ax0dx0a內容太多了,就不完全展開了,後面就看自己「耐力」了,寫操作系統是需要堅持很長實踐+大量知識積累的。有些問題還涉及到哲學的觀點,這里推薦上海交大鄒恆明教授的《操作系統之哲學原理》。除了理論方面的書,現在市面上也有直接教如何實現一個操作系統的,比如《Orange'S:一個操作系統的實現》和《30天自製操作系統》(僅有的幾本「XX天XX」而不是爛書的書),起步階段跟著這些書來還是很不錯的。x0dx0ax0dx0a總之,實現最最基本的功能也許可以做到。實現功能強大,魯棒性強的操作系統極難。