1. 程式人生 > >10-31作業系統刷題

10-31作業系統刷題

1、能直接與CPU交換資訊的儲存器是記憶體儲器。
CPU只能訪問儲存在記憶體中的資料。
2、程序:是資源分配的單位,一個程序死掉,如果設定了保護不會影響其他程序
執行緒:cpu獨立執行和獨立排程的基本單位,有自己的堆疊和區域性變數,一個執行緒死掉,整個程序死掉
所以說,一個程序可以建立多個執行緒,但是一個執行緒不可以建立多個程序
3、作業系統採用緩衝技術主要是通過軟體實現,硬體成本高。
在現代作業系統中,幾乎所有的I/O裝置在與處理機交換資料時都用了緩衝區。緩衝區是一個儲存區域,它可以由專門的硬體暫存器組成,但由於硬體的成本較高,容量較小,一般僅用於在對速度要求非常高的場合,如儲存器管理中所用的聯想暫存器;裝置控制器中用的資料緩衝區等。在一般情況才更多的利用記憶體作為緩衝區,如單緩衝區、雙緩衝區、環形緩衝區和緩衝池。
4、在請求分頁式儲存管理中,頁面的調入調出只能在記憶體和對換區之間進行。是錯的,如果交換區沒有記憶體需要的頁,只能從檔案磁盤裡排程。記憶體中沒有被寫過的頁需要調出時直接覆蓋掉就行,下次從檔案調入。而對於某些被修改過的頁不需要調出時不能直接寫入檔案中(比如中間結果),因此放在交換區,下次調入從交換區調入
5、在頁式儲存管理中,塊內位移量等於頁內位移量是因為頁和塊的大小相等。
使用者程式的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應的,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現離散分離。
6、一個臨界資源可以對應多個臨界區。
臨界資源是指每次僅允許一個程序訪問的資源。 屬於臨界資源的硬體有印表機、磁帶機等,軟體有訊息緩衝佇列、變數、陣列、緩衝區等。 諸程序間應採取互斥方式,實現對這種資源的共享。 每個程序中訪問臨界資源的那段程式碼稱為臨界區。顯然,若能保證諸程序互斥地進入自己的臨界區,便可實現諸程序對臨界資源的互斥訪問。為此,每個程序在進入臨界區之前,應先對欲訪問的臨界資源進行檢查,看它是否正被訪問。如果此刻該臨界資源未被訪問,程序便可進入臨界區對該資源進行訪問,並設定它正被訪問的標誌;如果此刻該臨界資源正被某程序訪問,則本程序不能進入臨界區。
7、Windows7中,視窗與對話方塊在外觀上最大的區別在於是否能改變大小。
“視窗”是螢幕上顯示出來的,與一個應用程式相對應的矩形區域。螢幕中顯示出視窗,表示該視窗對應的應用程式正在執行中。 “對話方塊”是人機交流的一種方式,使用者對對話方塊進行設定,計算機就會執行相應的命令。從某種意義上來講,對話方塊可以理解為“次一級的視窗”。 兩者簡便的區分方法是: 1、通過最大化與最小化按鈕來區分“對話方塊”與“視窗”。框中有最小化、最大化、關閉按鈕的是“視窗”;框中沒有最小化和最大化按鈕的是“對話方塊”,即視窗能改變大小,而對話方塊則不能。 2、“對話方塊”的標題欄中通常(不是全部)有“?”幫助按鈕。見到標題欄中有幫助按鈕,那就基本上可以斷定此框是“對話方塊”而不是“視窗”。
8、首次適應算方法的空閒區是按地址遞增順序鏈在一起。
首次適應演算法(First Fit) 從空閒分割槽表的第一個表目起查詢該表,把最先能夠滿足要求的空閒分割槽分配給作業,這種方法目的在於減少查詢時間,為適應這種演算法,空閒分割槽表(空閒區鏈)中的空閒分割槽要按地址由低到高進行排序。該演算法優先使用低地址部分空閒區,在低地址空間造成許多小的空閒區,在高地址空間保留大的空閒區。
最自然的過程,只是按照空閒分割槽表(空閒區鏈)中的空閒分割槽的地址從低到高找到第一個可以滿足需要的空閒分割槽即可。
9、在虛擬記憶體管理中,地址變換機構將邏輯地址變換為實體地址時,形成該邏輯地址的階段是連結。
編譯後的模組需要經過連結才能裝載,而連結後形成的地址才是整個程式的完整邏輯地址空間。以C語言為例:C語言經過預處理(cpp)→編譯(ccl)→彙編(as)→連結(ld)產生可執行檔案。其中連結的前一步,產生了可重定位的二進位制的目標檔案。C語言採用原始檔獨立編譯的方法,如程式main.c, file1.c, file2.c, file1.h, file2.h,在連結的前一步生成了main.o, file1.o, file2.o,這些目標模組採用的邏輯地址都從0開始,但只是相對於該模組的邏輯地址。連結器將這三個檔案,libc和其他的庫檔案連結成一個可執行檔案。連結階段主要完成了重定位,形成整個程式的完整邏輯地址空間。
例如,file1.o的邏輯地址為0~1023,main.o的邏輯地址為0~1023,假設連結時將file1.o連結在main.o之後,則重定位之後file1.o對應的邏輯地址就應為1024~2047。
這一題有不少同學會對C選項有疑問,認為產生邏輯地址的階段是連結,下面引入一個線性地址的概念來解釋為什麼連結是不對的。為了區分各種不同的地址,下面也把邏輯地址和實體地址一併介紹。
邏輯地址(Logical Address)是指在程式各個模組中的偏移地址。它是相對於當前模組首址的地址。
線性地址(Linear Address)是指在分頁式儲存管理中單個程式所有模組集合在一起構成的地址,即可以理解為《作業系統聯考複習指導》一書中的全域性的邏輯地址。
實體地址(Physical Address)是指出現在CPU外部地址總線上的定址實體記憶體的地址訊號,是地址變換的最終結果地址。它實際上就是實體記憶體真正的地址。線性地址的概念在很多作業系統書中並不涉及,在這裡引入只是為了把這題解釋清楚。選擇C選項的同學應該是把題目所說的邏輯地址當成了線性地址。實際上,很多書中也不會把這線性地址和邏輯地址區分得那麼清楚,而統一的稱為邏輯地址,這就導致了這題的錯誤選擇。
總之,在這題中,邏輯地址指的就是段內的偏移量而不是連結後生成的整個程式全域性的邏輯地址空間,所以邏輯地址是編譯時產生的。編者在查相關資料的過程中看到了關於這個問題的很多不一樣的說法,這也是作業系統這門課的一個“特色”
10、原語是一種特殊的系統呼叫命令,它的特點是執行中不可中斷。
原語是由若干個 機器指令 構成的完成某種特定功能的一段程式,具有不可分割性·即原語的執行必須是連續的,在執行過程中不允許被中斷。
原語通常由若干條指令組成,用來實現某個特定的操作。通過一段不可分割的或不可中斷的程式實現其功能。原語是作業系統的核心,它不是由程序而是由一組程式模組所組成,是作業系統的一個組成部分,它必須在管態(一種機器狀態,管態下執行的程式可以執行特權和非特權兩類指令,通常把它定義為作業系統的狀態)下執行,並且常駐記憶體,而個別系統有一部分不在管態下執行。原語和廣義指令都可以被程序所呼叫,兩者的差別在於原語有不可中斷性,它是通過在執行過程中關閉中斷實現的,且一般由系統程序呼叫。許多廣義指令的功能都可用目態(一種機器狀態,通常把它作為使用者程式執行時的狀態)下執行的系統程序完成,而不一定要在管態下完成,例如檔案的建立、開啟、關閉、刪除等廣義指令,都是藉助中斷進入管態程式,然後轉交給相應的程序,最終由程序實現其功能。引進原語的主要目的是為了實現程序的通訊和控制。