os练习题7
下列內容中哪些不屬于進程實體(進程映像)()?? ?D
A 進程的程序段 B 進程的數據段 C 進程控制塊 D 進程要使用的設備先進先出法是一種常用的進程調度算法,這種說法正確嗎?? ? ? ?正確
虛存:通過統一管理主輔存,給用戶造成內存空間巨大的假象;只把運行程序最近一段時間內活躍的一個部分放進主存,提高了系統的吞吐量,從而充分利用了地址空間
光驅,是外圍設備。光盤屬于存儲介質。所以你這句話錯了;
有的機子是沒有光驅的,或者說,光驅不是主機的必備設備或元件;
劃分主機系統與外圍設備的標準是硬系統能正常運行時部件是否為必須部件;
在PC機中,屬于主機的設備只有CPU、主板、內存、顯卡。硬盤都是外圍設備;
在小型機和大型機中,主機只有CPU板和內存板,其它都是外圍設備;
CPU的運算速度與許多因素有關,下面______是提高速度的有效措施?
(1)增加CPU中寄存器的數目(2)提高CPU的主頻(3)增加高速緩存(cache)容量(4)優化BIOS的設計
答案:(1)、(2)和(3)一、影響CPU運行速度的主要參數有:架構(核心代號)、核心數/線程數、頻率、二級/三級緩存。由于架構的不同,不能單純根據頻率高低和緩存大小判定cpu的最終性能。
二、cpu的參數重要性先后順序和簡介:
1、架構或核心代號
首要參數是cpu的核心代號,或者說“架構”,先進的架構可以達成更高的運算效能。某些較新上市的但主頻低、核心少的cpu,可能比某些老舊的主頻更高的cpu性能強。
不要盲目的以為主頻高、核心多的cpu性能就強,這是目前很多新手的誤區,討論cpu性能的基礎是架構,其次才是核心數量和主板。
2、核心數量和主頻
其次,在架構的先進性差別不大或者完全相同的情況下,才可以直接對比核心數量和頻率,這時核心越多、頻率越高的cpu,性能越強。而在架構落差過大的情況下,比較核心數和頻率高低是毫無意義的。某些架構老舊落后的cpu,核心再多、頻率再高,最終性能仍然不堪一擊。
3、二級/三級緩存
最后是二級/三級緩存,AMD部分CPU有兩級緩存,英特爾CPU目前都是三級緩存,總之以末級緩存大小判定,緩存越大,對CPU最終性能增益越大。需要再次強調,緩存僅是次要因素,主要還是看前幾個因素,即“架構”、“核心數/線程數”、“主頻”。
用戶界面也稱用戶接口或人機接口,它是實現用戶與計算機通信的軟、硬件部分的總稱。
磁盤高速緩存是在磁盤上開辟的專門用于補充虛擬存儲器系統空間的磁盤空間,這樣的說法正確嗎?? ? ?不正確
低速設備一般被設置成共享設備。? ? ? ? ? ??錯
高速設備一般會設置為共享設備
按資源分配角度分:?>?a. 獨占設備:在一段時間內只能有一個進程使用的設備(一般為低速設備,如打印機,磁帶等) 優點:不會產生死鎖?>?b. 共享設備:在一段時間內可有多個進程共同使用的設備,多個進程以交叉的方式來使用設備(其資源利用率高,如硬盤)。?>?c. 虛設備:在一類設備上模擬另一類設備,常用共享設備模擬獨占設備,用高速設備模擬低速設備,被模擬的設備稱為虛設備。
管道是指用于連接一個讀進程和一個寫進程以實現進程之間通信的一種共享文件。向管道提供輸入的是發送進程,也稱為?寫進程,負責向管道輸入數據,數據的格式是字符流。接受管道?數據的接受進程為讀進程。
鏈接分硬鏈接和符號鏈接
符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統,即可以跨磁盤分區。符號鏈接的文件類型位是l,鏈接文件具有新的i節點。
硬鏈接不可以跨文件系統。它只能建立對文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節點同被鏈接文件的i節點相同。
軟件安裝的時候被存放在外存中,軟件運行的時候會被調入內存中。
采用段式存儲管理的系統中,若地址用?24?位表示,其中?8?位表示段號,則允許每段的最大長度是(?)。? ?2^16
解答:在段式存儲管理的系統中分為包含兩種表,一個是進程段表,一個是系統段表,進程段地址分為兩部分 :8位為段號,16位為段地址,根據進程段地址的段號和段地址映射到系統段表,16位段地址包含2^16個地址空間,因此每段的地址空間長度為2^16
固定的分配會產生內部碎片,比如分頁式、段頁式、固定分區管理
在多線程環境下,每個線程擁有一個棧和一個程序計數器。棧和程序計數器用來保存線程的執行歷史和線程的執行狀態,是線程私有的資源。其他的資源(比如堆、地址空間、全局變量)是由同一個進程內的多個線程共享
如果三個進程共享一個互斥段,每次最多可以允許2個進程進入互斥段,則信號量的變化范圍是( )
解答:因為最多允許兩個進程進入,所以初始值為2,之后每進一個減1,為零之后,減1表示掛起
解答:
X的浮點數格式為00,111;00,11101(分號前為階碼,分號后為尾數),Y的浮點數格式為00,101;00,10100。然后根據浮點數的加法步驟進行運算。
第一步:對階。X、Y階碼相減,即00, 111-00, 101=00, 111+11, 0111=00, 010,可知X的階碼比Y的價碼大2(這一步可直接目測)。根據小階向大階看齊的原則,將Y的階碼加2,尾數右移2位,將Y變為00, 111;00, 00101。
第二步:尾數相加。即00, 11101+00, 00101=01, 00010,尾數相加結果符號位為01,故需右規。
第三步:規格化。將尾數右移1位,階碼加1,得X+Y為01, 000;00, 10001。
第四步:判溢出。階碼符號位為01,說明發生溢出。
本題容易誤選選項B、C,這是因為選項B、C本身并沒有計算錯誤,只是它們不是最終結果,選項B少了第3第4步,選項C少了第4步。
【偷懶法】本題也可以直接用數學知識對原數進行計算,然后將計算的結果轉換成浮點數的格式。X+Y=29/32×27+5/8×25=29/32×27+5/32×27=(29/32+5/32)×27=34/32×27=17/32×28,階碼用補碼表示,數值位3位,最大只能表示7,即X+Y的結果的階碼8超出了該浮點數的表示范圍,故溢出。
回收站是硬盤中的區域,而剪貼板是內存的區域,剪貼板的東西關機再開就沒有了。
操作系統在分配內存時,有時候會產生一些空閑但是無法被正常使用的內存區域,這些就是內存碎片,或者稱為內存零頭,這些內存零頭一共分為兩類:內零頭和外零頭。
內零頭是指進程在向操作系統請求內存分配時,系統滿足了進程所需要的內存需求后,還額外還多分了一些內存給該進程,也就是說額外多出來的這部分內存歸該進程所有,其他進程是無法訪問的。
外零頭是指內存中存在著一些空閑的內存區域,這些內存區域雖然不歸任何進程所有,但是因為內存區域太小,無法滿足其他進程所申請的內存大小而形成的內存零頭。
頁式存儲管理是以頁為單位(頁面的大小由系統確定,且大小是固定的)向進程分配內存的,例如:假設內存總共有100K,分為10頁,每頁大小為10K。現在進程A提出申請56K內存,因為頁式存儲管理是以頁為單位進程內存分配的,所以系統會向進程A提供6個頁面,也就是60K的內存空間,那么在最后一頁中進程只使用了6K,從而多出了4K的內存碎片,但是這4K的內存碎片系統已經分配給進程A了,其他進程是無法再訪問這些內存區域的,這種內存碎片就是內零頭。
段式存儲管理是段(段的大小是程序邏輯確定,且大小不是固定的)為單位向進程進行內存分配的,進程申請多少內存,系統就給進程分配多少內存,這樣就不會產生內零頭,但是段式分配會產生外零頭。
例如:假設內存總的大小為100K,現在進程A向系統申請60K的內存,系統在滿足了進程A的內存申請要求后,還剩下40K的空閑內存區域;這時如果進程B向系統申請50K的內存區域,而系統只剩下了40K的內存區域,雖然這40K的內存區域不歸任何進程所有,但是因為大小無法滿足進程B的要求,所以也無法分配給進程B,這樣就產生了外零頭。請求段式存儲管理是在段式存儲管理的基礎上增加了請求調段功能和段置換功能。
所以段式和請求段式存儲管理會產生外零頭,選BD。
spooling(外部設備聯機并行操作)技術實現了虛擬設備功能。多個進程同時使用一獨享設備,而對每一個進程而言,都認為自己獨占這一設備。 設備并沒有分配給任何進程,在輸入井或輸出井中,分配給進程的是一存儲區和建立一張io請求表。
1、ThreadLocal的類聲明:
public class ThreadLocal<T>
可以看出ThreadLocal并沒有繼承自Thread,也沒有實現Runnable接口。所以AB都不對。
2、ThreadLocal類為每一個線程都維護了自己獨有的變量拷貝。每個線程都擁有了自己獨立的一個變量。
所以ThreadLocal重要作用并不在于多線程間的數據共享,而是數據的獨立,C選項錯。
由于每個線程在訪問該變量時,讀取和修改的,都是自己獨有的那一份變量拷貝,不會被其他線程訪問,
變量被徹底封閉在每個訪問的線程中。所以E對。
3、ThreadLocal中定義了一個哈希表用于為每個線程都提供一個變量的副本:
?static class ThreadLocalMap {
?
? ? ? ? static class Entry extends WeakReference<ThreadLocal> {
? ? ? ? ? ? /** The value associated with this ThreadLocal. */
? ? ? ? ? ? Object value;
?
? ? ? ? ? ? Entry(ThreadLocal k, Object v) {
? ? ? ? ? ? ? ? super(k);
? ? ? ? ? ? ? ? value = v;
? ? ? ? ? ? }
? ? ? ? }
?
? ? ? ? /**
? ? ? ? ?* The table, resized as necessary.
? ? ? ? ?* table.length MUST always be a power of two.
? ? ? ? ?*/
? ? ? ? private Entry[] table;
}
所以D對。
總結