多核程序的設計(考試題)_第1頁
多核程序的設計(考試題)_第2頁
多核程序的設計(考試題)_第3頁
多核程序的設計(考試題)_第4頁
多核程序的設計(考試題)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、一、簡述用戶級線程和內(nèi)核級線程之間的映射模型有哪些,并分別加以說明:1.多對一模型1)多對一模型把多個用戶級線程映射到一個內(nèi)核級線程。2)線程的管理在用戶空間實現(xiàn),所以效率高。3)當一個線程因調(diào)用系統(tǒng)調(diào)用被阻塞時,整個進程被阻塞。2.一對一模型1)一對一模型把每個用戶級線程影射到一個內(nèi)核級線程。2)當一個線程阻塞時,其他線程仍然可以運行。3.多對多模型1) 多對多模型將m個用戶級線程影射到n個內(nèi)核級線程,存n。2) 用戶可以創(chuàng)建所需要的用戶級線程,通過分配適當數(shù)目的內(nèi)核級線程獲得并發(fā)執(zhí)行的優(yōu)勢并節(jié)省系統(tǒng)資源。二、 簡述下列 Windows 多線程程序設計中常用函數(shù)的含義ResumeThread

2、(); 被掛起線程的恢復運行 TerminateThread(); 終止線程運行 InitializeCriticalSection(); 初始化線程臨界區(qū) CreateMutex();創(chuàng)建線程互斥量CreateEvent();創(chuàng)建線程事件三、 簡述下列 Linux 多線程程序設計中常用函數(shù)的含義pthread_create();創(chuàng)建線程pthread_join();線程阻塞(同步)pthread_attr_init();線程屬性初始化pthread_cancel();線程取消sem_getvalue();獲得線程信號量值四、 常用的并行程序性能優(yōu)化技術有哪些?減少通信量 ,提高通信粒度全局通

3、信盡量利用高效集合通信算法挖掘算法的并行度,減少CPU空閑等待負載平衡 通信,計算的重疊 通過引入重復計算來減少通信,即以計算換通信五、簡述多線程機制的優(yōu)點 . 創(chuàng)建一個線程比創(chuàng)建一個進程的代價要小#pragma omp parallel private 答: #pragma omp parallel #pragma omp parallel for 線程方式運行;#pragma omp parallel private線程的切換比進程間的切換代價小 充分利用多處理器 數(shù)據(jù)共享 快速響應特性可以是程序更加模塊化 ,減少程序邏輯六、什么是線程、進程,它們之間的關系是什么?答:進程是一組離散的 (

4、執(zhí)行 ) 程序任務集合;線程是進程上下文中執(zhí)行的代碼序列, 又被稱為輕量級進程。進程中可包含一個或多個線程。七、由于線程共享同一進程的內(nèi)存空間,多個線程可能需要同時訪問同一個數(shù)據(jù),如果 沒有正確的保護措施,對共享數(shù)據(jù)的訪問會造成數(shù)據(jù)的不一致和錯誤。簡述 Windows 環(huán)境下常用的全局變量、事件和臨界區(qū)三種同步機制。答:進程中的所有線程均可以訪問所有的全局變量,各線程根據(jù)全局變量的狀態(tài)來決定 是否運行相應的線程函數(shù),它是 Win32 多線程同步的最簡單方式。事件是 WIN32 提供的最靈活的線程間同步方式,各線程根據(jù)事件的激發(fā)狀態(tài)來決 定是否運行相應的線程函數(shù)。 臨界區(qū)是一種防止多個線程同時執(zhí)

5、行一個特定代碼段的機制,適用于多個線程操作 之間沒有先后順序但要求互斥的同步。多個線程訪問同一個臨界區(qū)的原則:, 一次最多只能一個線程停留在臨界區(qū)內(nèi);, 不能讓一個線程無限地停留在臨界區(qū)內(nèi),否則其他線程將不能進入該臨界區(qū)。八、衡量處理器性能的主要指標是什么,并以此說明多核處理器產(chǎn)生的原因:衡量處理器性能的主要指標是每個時鐘周期內(nèi)可以執(zhí)行的指令數(shù) (IPC:Instruction Per Clock) 和處理器的主頻。 因此,提高處理器性能就是兩個途徑:提高主頻和提高每個時鐘周期內(nèi)執(zhí)行的指令數(shù)(IPC)。而通過改良架構來提高IPC的幅度是非常有限的,所以在單核處理器時代只能通 過提高 (處理器的

6、 )主頻來提高性能 , 由于處理器功耗正比于主頻的三次方, 所以給處理器提高主頻不是沒有止境的。而將單核處理器增加到雙核處理器,如果主頻不變的話,IPC理論上可以提高一倍。所以為了達到更高的性能,在采用相同微架構的情況下,可以增 加處理器的內(nèi)核數(shù)量同時維持較低的主頻。(這樣設計的效果是,更多的并行提高IPC,較低的主頻有效地控制了功耗的上升)九、請分別說明 OpenMP 指導語句 #pragma omp parallel, #pragma omp parallel for和的含義和作用。區(qū)域并行性指導語句,說明后續(xù)語句按多線程方式運行; 循環(huán)并行化指導語句,說明后續(xù) for 循環(huán)語句按多并行區(qū)

7、變量私有化指導語句,說明后續(xù)語句中的某變量在多線程方式運行時被各線程私有化,每次僅容許一個線程訪問該變量。十、闡述超線程技術和多核架構在并行計算應用領域上的區(qū)別和聯(lián)系:區(qū)別:超線程技術 是通過延遲隱藏的方法提高了處理器的性能,本質上,就是多個線程共享一 個處理核。因此,采用超線程技術所獲得的性能并不是真正意義上的并行,從而采用超 線程技術多獲得的性能提升將會隨著應用程序以及硬件平臺的不同而參差不齊。多核處理器 是將兩個甚至更多的獨立執(zhí)行核嵌入到一個處理器內(nèi)部。每個指令序列(線 程),都具有一個完整的硬件執(zhí)行環(huán)境, 所以, 各線程之間就實現(xiàn)了真正意義上的并行。聯(lián)系:超線程技術: 充分利用空閑 C

8、PU 資源,在相同時間內(nèi)完成更多工作。 與多核技術相結合: 給應用程序帶來更大的優(yōu)化空間,進而極大地提高系統(tǒng)的吞吐率。十一、簡述程序員在申請互斥資源時避免產(chǎn)生死鎖現(xiàn)象的三種程序設計方案: 1)線程以相同的次序進行加鎖。2)使用非阻塞的加鎖操作。3) (由于調(diào)度可能造成某些線程長時間等待 , 這時可以再線程釋放鎖之后 )通過調(diào)用 yield 后者類似功能的庫函數(shù)或系統(tǒng)調(diào)用放棄cpu 以便其他進程被投入執(zhí)行并獲得鎖。十二、簡述如何衡量“鎖”的粒度,“鎖”的粒度與數(shù)據(jù)并行性之間的關系: 鎖的粒度是上鎖后保護的共享數(shù)據(jù)的多少。 減小鎖的粒度可以提高對共享數(shù)據(jù)訪問的并 行性。編程題:計算圓周率 Pi 值

9、(蒙特卡洛法或其它方法)Double PI(DOWRD dwCount)Double m=0;For(double n=0;ndwCount;n+)Double x=random(1);Double y=random(1);If(x*x+y*y)=1)M+;Double s=m/dwCount ;PI=4*s;Return(PI);第 1 章:多核技術導論習題1.全世界第一臺全自動電子數(shù)字計算機 ENIAC 于哪一年研制成功? (B )A.1944 年 B.1945 年 C.1946 年 D.1947 年2. 計算機的硬件工藝發(fā)展順序是:( A )A. 電子管數(shù)字計算機、晶體管數(shù)字計算機、集成

10、電路數(shù)字計算機、大規(guī)模集成電路數(shù)字計 算機B. 晶體管數(shù)字計算機、 電子管數(shù)字計算機、 集成電路數(shù)字計算機、 大規(guī)模集成電路數(shù)字計算 機C. 電子管數(shù)字計算機、 集成電路數(shù)字計算機、 大規(guī)模集成電路數(shù)字計算機、 晶體管數(shù)字計算機D. 電子管數(shù)字計算機、集成電路數(shù)字計算機、晶體管數(shù)字計算機、大規(guī)模集成電路數(shù)字計算機3. 下面關于 Intel 8086 芯片于 8088 芯片的描述,不正確的是:( D)A. 8086 是第一個 16 位的微處理器。 B. 8088 是第一個 16 位的微處理器。C. 8086 每周期能傳送或接收 16 位數(shù)據(jù) D. 8088 每周期能傳送或接收 16 位數(shù)據(jù)4.

11、針對內(nèi)存的速度瓶頸,英特爾為80386 設計了 _來解決這個速度瓶頸:( B)A. 虛擬 86 B. 高速緩存( Cache) C. 浮點運算單元 D. 多媒體擴展指令集5. 為了提高電腦在多媒體、3D圖形方面的應用能力,產(chǎn)生了許多新指令集,以下不屬于這類指令集的是:( C)A.MMX B.SSE C. 浮點運算集 D.3D NOW!6. 以下關于超線程技術的描述,不正確的是:(D)A. 利用特殊的硬件指令,把兩個邏輯內(nèi)核模擬成兩個物理芯片,讓單個處理器都能使用線程級并行計算,進而兼容多線程操作系統(tǒng)和軟件,減少了CPU的閑置時間,提高的 CPU的運行效率。B. 采用超線程技術可在同一時間里,使

12、應用程序能夠使用芯片的不同部分。C.超線程技術可以使芯片同時進行多線程處理,使芯片性能得到提升。D.是一種多核技術,揭開 x86 處理器多核心時代。7. 總線共享 Cache 結構的缺點是:( C)A.結構簡單B.通信速度高C. 總線的結構可擴展性較差 D. 以上都是8. 為什么說從單核到多核的轉變成為不可避免的歷史趨勢:(D)A.指令級并行的局限 B. 能耗與散熱 C. 內(nèi)存墻問題 D. 以上都是9. 從數(shù)據(jù)處理的角度看,不存在并行性的是:( A )A.字串位串 B. 字串位并 C. 字并位串 D. 字并位并10. 陣列處理機又稱為并行處理機,它的體系結構屬于 _計算機。( B)A.SISD

13、 B.SIMD C.MIMD D.MISD11. 多處理機實現(xiàn) _級的并行。( B)A. 指令內(nèi)部 B. 指令 C. 任務或過程 D. 作業(yè)或程序12. 主存儲器和 CPU 之間增加 cache 的目的是:( A )A. 解決CPU和主存之間的速度匹配問題B. 擴大CPU中通用寄存器的數(shù)量C. 擴大主存儲器的容量D既擴大主存儲器的容量又擴大CPU中通用寄存器的數(shù)量13. 存儲周期是:( C)A.存儲器的讀出時間 B.存儲器的寫入時間C. 存儲器進行連續(xù)讀和寫操作所允許的最短時間間隔D. 存儲器進行連續(xù)寫操作所允許的最短時間間隔14. 交叉存儲器實際上是一種 _存儲器,它能 _執(zhí)行 _獨立的讀寫

14、操作。( A )A. 模塊式,并行,多個B.模塊式,串行,多個C. 整體式,并行,一個D.整體式,串行,多個15.提高微處理器性能的途徑有哪些。(D)A. 提高芯片內(nèi)部時鐘的工作頻率B. 增加芯片數(shù)據(jù)總線的寬度,提高微處理器與片外傳送數(shù)據(jù)或指令代碼的速率,同時片內(nèi) 的數(shù)據(jù)路徑也必然加寬,內(nèi)部的數(shù)據(jù)處理速度會加快C.采用能夠并行執(zhí)行指令的微體系結構及其它相關技術D. 以上都是16.對于 Linux2.6 內(nèi)核的調(diào)度算法,以下表述不正確的是:( B )A. 系統(tǒng)為每個處理器都維持一個單獨的就緒隊列,就緒隊列包括活動的就緒隊列和擴展的 就緒隊列B. 任務的調(diào)度是基于先來先服務調(diào)度的C. 當活動就緒隊

15、列中的任務全部時間片結束或者等待 IO 掛起, 只要進行簡單的指針操作, 就可以相互轉換活動就緒隊列和擴展就緒隊列D. 實現(xiàn)了負載均衡17.弗林(Flynn )根據(jù)指令流和數(shù)據(jù)流的不同組織方式,把計算機系統(tǒng)的結構進行了分類, 以下屬于弗林分類的是:( ABCD)A. 單指令流單數(shù)據(jù)流( Single Instruction stream Single Data stream - SISD)B. 單指令流多數(shù)據(jù)流( Single Instruction stream Multiple Data stream - SIMD)C. 多指令流單數(shù)據(jù)流( Multiple Instruction str

16、eam Single Data stream - MISD)D. 多指令流多數(shù)據(jù)流( Multiple Instruction stream Multiple Data stream - MISD)18.以下哪個不屬于 SIMD( DA. 并行處理機 B. 陣列處理機 C. 向量處理機 D. 標量流水線處理機19. 對于對稱多處理器(SMP,以下表述不正確的是:( C)A. SMP 是指在一個計算機上匯集了一組處理器, 各處理器之間共享內(nèi)存子系統(tǒng)以及總線結構。B. 一臺電腦不再由單個 CPU 組成,而同時由多個處理器運行操作系統(tǒng)的單一復本,并共享 內(nèi)存和一臺計算機的其他資源。C. 所有的處理器

17、都可以平等地訪問內(nèi)存、 I/O ,但對于外部中斷, 各個處理器有不同的優(yōu)先權。D. 在 SMP 系統(tǒng)中,系統(tǒng)資源被系統(tǒng)中所有CPU 共享,工作負載能夠均勻地分配到所有可用處理器之上。20. 對于集群計算機,以下表述不正確的是:(C)A. 集群計算機是一種并行或分布式處理系統(tǒng),由很多連接在一起的獨立計算機組成。B. 一個集群一般是指連接在一起的兩個或多個計算機(節(jié)點)。節(jié)點可以是在一起的,也可以是物理上分散而通過網(wǎng)絡連結在一起的。C. 一個連接在一起的計算機集群對于用戶和應用程序來說是一個一個分布的系統(tǒng)。D. 集群計算機是隨著微處理器和網(wǎng)絡技術的進步而逐漸發(fā)展起來的,它主要用來解決大型 計算問題

18、。21. 對于多核處理器, 計算內(nèi)核相同, 地位對等的稱為 _;計算內(nèi)核不同, 地位不對等的稱為 _ 。( B )A. 異構多核,同構多核 B. 同構多核,異構多核C. 都是異構多核D.都是同構多核22. 高效的通信機制是CMP處理器高性能的重要保障,目前比較主流的片上高效通信機制有:( BC)A. 基于共享寄存器的結構B.基于片上的互連結構C. 基于總線共享的 Cache 結構 D. 基于共享內(nèi)存的結構23.對于高級編程中斷控制器( APIC ),以下表述不正確的是:(D)A.減緩與中斷相關的內(nèi)存總線傳輸壓力,從而使得內(nèi)存總線可用程度更高B. 幫助核之間更好的處理來自別的核的中斷C. API

19、C 接收來自處理器中斷引腳的來自內(nèi)部或外部 I/O APIC 的中斷,然后將這些中斷發(fā)送過處理器核處理D. 在多核處理器系統(tǒng)中, APIC 不能夠接受發(fā)送核內(nèi)中斷( Interprocessor interrupt即 IPI )消息24. 基于片上互連的結構的優(yōu)點是:( AB )A. 改進系統(tǒng)平臺的資源利用率C. 增加并發(fā)度 D.6. 對一個具體的問題做性能優(yōu)化時,般說A. 可擴展性好 B. 數(shù)據(jù)帶寬有保證 C. 硬件結構復雜 D. 軟件改動較大25.對于 Cell 的編程規(guī)范,以下表述不正確的是: (D)A. 要求程序員對每個核進行單獨的編程 B. 通過特殊的編譯器和鏈接器得到二進制代碼 C

20、. PPE 和 SPE 是不同的編程模式D. PPE和 SPE 是相同的編程模式 第2 章:多線程并行程序性能分析方法綜述習題1.性能調(diào)優(yōu)周期螺旋式上升的 5 個主要階段依次是:( A )A. 獲取性能數(shù)據(jù) -分析數(shù)據(jù),定位性能瓶頸所在 -考慮解決問題的可能途徑與方法 - 實現(xiàn) 解決方案 - 重測試B. 獲取性能數(shù)據(jù) -考慮解決問題的可能途徑與方法 - 分析數(shù)據(jù),定位性能瓶頸所在 -實現(xiàn) 解決方案 - 重測試C.考慮解決問題的可能途徑與方法 -實現(xiàn)解決方案 -重測試 -獲取性能數(shù)據(jù) -分析數(shù)據(jù), 定位性能瓶頸所在D. 考慮解決問題的可能途徑與方法 -實現(xiàn)解決方案 -獲取性能數(shù)據(jù) - 分析數(shù)據(jù),

21、定位性能 瓶頸所在 - 重測試2. 需要被性能調(diào)優(yōu)的程序必須處在開發(fā)的適當階段并且必須具備如下特性:(ABC )A. 程序必須是穩(wěn)定的 B. 程序必須是有代表性的C. 程序必須使用了最新的技術 D. 對任何可能影響程序性能的代碼都必須優(yōu)化3. 為了搜集性能數(shù)據(jù), 一個好的測試數(shù)據(jù)集是必不可少的。 一個好的測試數(shù)據(jù)集需要具備哪 些特點?( ABCD)A. 可衡量性 B. 可重復性 C. 靜態(tài)的 D. 有代表性4.對于 Amdahl 定律,以下表述不正確的是:( A )A. 對程序的可優(yōu)化部分進行最高限度的性能改進就能不斷地提高程序的整體性能B. 程序可能達到的加速上限為 1/fC. 如果要使得程

22、序獲得更高的性能,就要對程序中更大的部分進行性能調(diào)優(yōu)D. 程序的性能受限于程序中性能最差的部分5. 性能調(diào)優(yōu)工作包括了:( ABCD)B.提高有效性,減少延遲 改進吞吐量,減少可能的性能瓶頸 可以同時在這多個層次上考慮可能的優(yōu)化手段,來:( AB )A. 在越高的層次上進行優(yōu)化,可能獲得的效益越高B. 在越低的層次上進行優(yōu)化工作則相對越容易實現(xiàn)C. 在越高的層次上進行優(yōu)化,可能獲得的效益越低D. 在越低的層次上進行優(yōu)化工作則相對越難于實現(xiàn)7.VTune 性能分析器中的取樣功能有哪幾種方式? (AC )A. 基于時間取樣 B. 隨機取樣 C. 基于事件取樣 D. 線性取樣8.Intel 調(diào)優(yōu)助手

23、能夠給我們自動推薦代碼改進辦法,主要有以下哪些方面?(BCD )A. 算法自動改進 B. 處理器瓶頸以及改進 C. 取樣向導增強 D. 超線程9.對于 Vtune 的兼容性,以下表述不正確的是:( B)A. 支持最新的 Intel 處理器 B. 不支持 LinuxC. 支持 Windows 命令行 D. 支持最常用的編程語言10.MKL 數(shù)學核心庫的功能領域包括以下哪些?( D )A.離散傅立葉變換,ScaLAPACK軟件包 B.矢量數(shù)學庫,矢量統(tǒng)計庫C. PARDISO 稀疏矩陣解算器,線性代數(shù)D.以上都是11. 關于 Intel(R) 線程檢查器,以下表述不正確的是:(D)A. 監(jiān)控程序執(zhí)

24、行過程中的線程行為B. 發(fā)現(xiàn)其中存在的競爭現(xiàn)象、線程阻塞以及潛在的線程死鎖問題C. 提示同線程錯誤相關的源代碼位置、侵權變量以及堆棧跟蹤D. 可以快速查找但不能修復Windows和OpenMP線程軟件中的bug12. 以下哪個問題不能用 Intel(R) 線程檢查器檢測出來?( D )A. 數(shù)據(jù)競爭 B. 線程死鎖 C. 阻塞問題 D. 邏輯錯誤13.對于 Intel(R) 線程檔案器,以下表述不正確的是:( A )A. 只能幫助調(diào)整Win32*線程化軟件的性能B. 通過監(jiān)控程序的運行來檢測線程性能的相關問題,包括線程過載和同步?jīng)_突,能夠幫助 查找負載平衡 , 同步開銷等線程性能問題C. 進行

25、關鍵路徑分析D. 提供圖形式的檢測結果,可以快速查明影響程序運行時間的代碼位置14.Intel(R) 線程檔案器為 Win32 提供了哪些功能? (C)A. Win32 線程關鍵路徑分析,跟蹤顯示性能瓶頸B. 通過 Win32* 線程 API 對軟件線程化后的性能分析C. 可與任何 Windows 平臺上的 IDE 集成D. 如果不用 Win32 庫,可以支持用戶定義的同步原件15.1 ntel(R)線程檔案器為 OpenMP提供了哪些功能?( D)A. 并行代碼和順序代碼的時間花費B. 線程任務量不均衡C. 并行過載和順序過載D.以上都是16.提高微處理器內(nèi)部執(zhí)行的并行性有哪些措施。(C)A

26、. 采用超級流水線技術 B. 采用超標量技術 C. 以上都是 D. 以上都不是17.性能調(diào)優(yōu)工作 _知道什么時候結束調(diào)優(yōu),在開始性能調(diào)優(yōu)工作之前,你 _對整個程序進行一個基準測試以獲知程序的理論峰值。(B)A. 需要,不需要 B. 需要,必須 C. 不需要,不需要 D. 不需要,必須18. Jackson 優(yōu)化定律是指:( C)A. 不要進行優(yōu)化B. 除非你已經(jīng)有了一個相當清晰可靠的非優(yōu)化版本的實現(xiàn),否則你不要試圖對程序進行優(yōu)化C. 以上兩條都是D. 以上兩條都不是19.根據(jù) 80/20 定律, _% 的執(zhí)行時間消耗在 _% 的代碼上。( C)A. 80,80 B. 20,20 C. 80,2

27、0 D. 20,8020.多處理能力帶來的最大好處是能夠改進 _,一個多線程程序的運行需要 _個單處理器系統(tǒng)。( B)A. 吞吐量,多 B. 吞吐量,一 C. 頻率,多 D. 頻率,一21.決定延遲最重要的兩個因素是 _ 以及 _ 。( D )A. 內(nèi)存存取時間,處理器頻率B. I/O時間,處理器頻率C. I/O 時間,總線帶寬D.內(nèi)存存取時間, I/O 時間22.并發(fā)性既可以指對單個程序使用 _處理,也可以指對多個程序使用 _處理。( A )1. 獨立于體系結構性能優(yōu)化方法主要有:(A. 編寫適用于特定 CPU 的優(yōu)化代碼 B.C. 避免不必要的邊界檢查 D.2.以下不是阻礙優(yōu)化的因素有:(

28、 D )A. 編譯優(yōu)化選項 B. 變量別名 C.BCD )避免冗余的函數(shù)調(diào)用利用局部變量保存中間計算結果函數(shù)調(diào)用的邊際效應 D. 源文件的大小A. 多任務,多任務B.多任務,單任務C. 單任務,多任務D.單任務,單任務23.對于 Intel VTune 性能分析器,以下表述正確的是:( D)A. 可以在程序運行的系統(tǒng)平臺上自動搜集性能數(shù)據(jù)B. 可以將所獲得的性能數(shù)據(jù)在各個不同的層次,大至系統(tǒng)層,下至程序源代碼級,甚至到 處理器指令級, 進行不同粒度的交互式可視化, 幫助查找可能的性能瓶頸, 并提供可能 的解決方案C. VTune 既可以在本地、也可以遠程搜集性能數(shù)據(jù),并在本地進行數(shù)據(jù)處理、分析

29、以及 顯示D. 以上都正確24.對于 Intel(R) 線程檢查器,以下表述不正確的是:( C)A. Intel(R) 線程檢查器監(jiān)控程序執(zhí)行過程中的線程行為, 發(fā)現(xiàn)其中存在的線程阻塞以及潛 在的線程死鎖問題B. 提示同線程錯誤相關的源代碼位置、侵權變量以及堆棧跟蹤等C. 不能從 Windows 主機系統(tǒng)分析 Linux 系統(tǒng)中運行的線程代碼D. Intel 線程檢查器可以發(fā)現(xiàn)數(shù)據(jù)競爭現(xiàn)象第 3 章: Intel 多核處理器上的性能調(diào)優(yōu)方法習題3. 使用-03編譯選項所得的程序, 執(zhí)行效率比使用-02編譯選項所得的程序 _ o ( D )A. 高 B. 低 C. 一樣 D. 不一定4. 對于函

30、數(shù)調(diào)用的邊際效應,以下表述不正確的是:(B)A. 只要函數(shù)在調(diào)用的過程中改變了某些全局變量的值,我們就稱函數(shù)調(diào)用中有邊際效應。B. 存在邊際效應的函數(shù)調(diào)用,其調(diào)用次數(shù)的不同會對整個程序的行為產(chǎn)生不同的影響。C. 為了避免函數(shù)調(diào)用的邊際效應,就必須盡量避免使用全局變量,盡量使用局部變量。D. 編譯器無法檢測出函數(shù)調(diào)用中是否會產(chǎn)生邊際效應,所以應該將函數(shù)調(diào)用移出循環(huán)體外。5.對于一個優(yōu)化的編譯器,以下表述不正確的是:( D )A. 編譯器負責其中的寄存器分配的優(yōu)化B. 編譯器負責其中的代碼選擇及有限重組的優(yōu)化C. 編譯器進行一些局部范圍內(nèi)的優(yōu)化D. 優(yōu)化的編譯器能夠改進算法的計算復雜度6.對于現(xiàn)代

31、微處理器體系結構而言,對性能優(yōu)化影響比較大的主要是:(ACD )A. 超標量 B. 擴展指令集 C. 亂序執(zhí)行 D. 指令流水線的深度7.對于通過加深流水線的深度的辦法來提升時鐘頻率,從而提高整個處理器性能的做法, 以下表述正確的是:( AC )A. 如果指令流是完全規(guī)則的順序執(zhí)行,則程序的性能會非常高B. 對于指令跳轉、條件轉移指令,流水線也有很好的性能C. 單一的以時鐘頻率作為劃分處理器性能的標志也有利于市場化的宣傳D. 對于錯誤的條件轉移預測,深度流水線能夠更快地從錯誤中恢復8. 關于CISC,以下表述不正確的是:(D)A. CISC 的全稱是 Complex Instruction S

32、et ComputerB. 在 CISC 微處理器中,程序的各條指令是按順序串行執(zhí)行的,每條指令中的各個操作也 是按順序串行執(zhí)行的C.順序執(zhí)行的優(yōu)點是控制簡單,但計算機各部分的利用率不高,執(zhí)行速度慢D. 其代表產(chǎn)品是 Intel 生產(chǎn)的 x86 系列 CPU 及其兼容 CPU 以及 MIPS 處理器9. 關于RISC,以下表述不正確的是:(B)A. RISC 的全稱是 Reduced Instruction Set ComputingB. CISC 是在 RISC 指令系統(tǒng)基礎上發(fā)展起來的C. RISC 的指令格式統(tǒng)一,種類比較少,尋址方式也比復雜指令集少D. RISC 型CPU與In tel

33、 和AMD的CPU在軟件和硬件上都不兼容10. 以下表述不正確的是:(C)A. 超標量是通過內(nèi)置多條流水線來同時執(zhí)行多個處理器,其實質是以空間換取時間。B. 超流水線是通過細化流水、提高主頻,使得在一個機器周期內(nèi)完成一個甚至多個操作, 其實質是以時間換取空間。C.將流水線設計的步 ( 級 ) 越長,其完成一條指令的速度越慢D. 流水線過長也帶來了一定副作用,很可能會出現(xiàn)主頻較高的CPU實際運算速度較低的現(xiàn)象11. 對于亂序執(zhí)行,以下表述不正確的是:(C)A. 亂序執(zhí)行是指CPU允許將多條指令不按程序規(guī)定的順序分開發(fā)送給各相應電路單元處 理的技術B. 采用亂序執(zhí)行技術的目的是為了使 CPU 內(nèi)部

34、電路滿負荷運轉并相應提高了 CPU 的運行程序的速度C. 亂序執(zhí)行的指令沒有任何規(guī)定的順序D. 指令進行運算時需要等待結果,一般無條件分枝只需要按指令順序執(zhí)行,而條件分枝必 須根據(jù)處理后的結果,再決定是否按原先順序進行12. 以下表述不正確的是:(C)A. 編譯時的選項 -O2 就是二級優(yōu)化, -O 是一般優(yōu)化, -O0 是不優(yōu)化B. 二級優(yōu)化是編譯器在一般優(yōu)化基礎上再做第二次優(yōu)化C.越高級的優(yōu)化, 生成的可執(zhí)行文件的執(zhí)行效率可以更高, 但是,編譯、連接的速度就相 應地要慢一些D. 更高級的優(yōu)化可能導致計算結果不正確13.以下表述不正確的是:( AD )A. Intel 寬度動態(tài)執(zhí)行技術包括了

35、 16 級的有效流水線,具有更寬的解碼帶寬,更強的指令跳轉預測,更寬的執(zhí)行路徑,全面支持 64-bitB. Intel 高級內(nèi)存存取技術改進了轉移預測機制,高級數(shù)據(jù)預取機制C. Intel 高級智能緩存技術使得 cache 可以在雙核之間共享, 而且雙核對于整個 cache 都具有完全存取權限D. Intel 高級數(shù)字媒體促進技術中高帶寬 SSE 技術,每周期可執(zhí)行 16 個單精度浮點操作或者 8 個雙精度浮點操作14. 對于 Intel 處理器的優(yōu)化技術,以下表述不正確的是:( CD )A. 指令隊列中包括了一個循環(huán)檢測器,避免了將循環(huán)體中的指令重復解碼,提高了指令流 執(zhí)行帶寬B. 取指和預

36、解碼的優(yōu)化措施主要影響的是那些帶有立即數(shù)或者直接偏移的指令,包括操作數(shù)大小重載前綴 ( Operand Size Override (66H) )以及地址大小重載前綴( Address SizeOverride(67H) )C. 解碼器每個時鐘周期至多可產(chǎn)生 8 條微操作D. 以上都正確15.一個優(yōu)化的編譯器一般來說 _改進算法的計算復雜度,編譯器能進行 _因子的改進。( D)A. 可以,指數(shù) B. 可以,常數(shù) C. 不能,指數(shù) D. 不能,常數(shù)16.編譯器保證在任何極端的情況下 _ 都不能發(fā)生任何改變。( D)A.程序的行為 B. 程序的全局狀態(tài) C. 程序的全局變量的值 D. 以上都是17

37、.編譯器所能作的優(yōu)化一般是哪些類型的優(yōu)化。( AB )A.函數(shù)/ 過程調(diào)用內(nèi)部 B. 過程間 C. 全局范圍的優(yōu)化 D. 以上都是18.對于通過提升時鐘頻率來提高性能的方法來說,以下哪個是致命的問題。(C)A.能量消耗 B. 能量泄露 C. 這兩個都是 D. 這兩個都不是19.隨著時鐘頻率的上升,當超過某個閾值的時候,處理器的能量消耗 _ 。( A )A.成指數(shù)上升趨勢 B. 成線性上升趨勢 C. 不變 D. 成線性下降趨勢20. Intel 處理器的優(yōu)化技術中, 每個時鐘周期至多可以有 _條微操作同時被發(fā)射到執(zhí)行核心。( C)A.4 B.5 C.6 D.7第4 章:多線程編程方法綜述習題1.

38、 以下表述正確的是:( BD)A. 通過提高時鐘頻率來太提升性能的方法始終有效B.單個芯片上可以集成的引腳( pin )數(shù)目以及帶寬限制使處理器與內(nèi)存性能之間的差異 越來越大C. 每當出現(xiàn)一代新的體系結構平臺,原有的程序無需修改,或者只需很少的修改,就可以 輕而易舉的獲得由摩爾定律所帶來的性能提D. 使用多線程技術,充分利用單個芯片上的多個計算核心,可以提高程序整體的計算吞吐量2.對于進程,以下表述不正確的是:( D )A. 進程是指程序在一個數(shù)據(jù)集合上運行的過程B.進程是系統(tǒng)進行資源分配和調(diào)度運行的一個獨立單位C. 在操作系統(tǒng)中引入進程的目的,是為了使多個程序并發(fā)執(zhí)行,以改善資源利用率及提高

39、 系統(tǒng)的吞吐量D. 在操作系統(tǒng)中引入進程的目的,是為了減少程序并發(fā)執(zhí)行時所付出的時空開銷,使操作 系統(tǒng)具有更好的并發(fā)性3.對于線程,以下表述不正確的是:( C)A. 線程是進程中的一個實體 , 是被系統(tǒng)調(diào)度和分配的基本單元B.每個程序至少包含一個線程,那就是主線程C. 線程自己只擁有很少的系統(tǒng)資源,且不可與同屬一個進程的其他線程共享所屬進程所擁 有的全部資源D. 同一進程中的多個線程之間可以并發(fā)執(zhí)行,從而更好地改善了系統(tǒng)資源的利用率4.以下表述不正確的是:( C)A.人們習慣上稱線程為輕量級進程( lightweight process, LWP ),線程是 CPU 調(diào)度和 分派的基本單元B.

40、在創(chuàng)建或撤消進程時,系統(tǒng)都要為之分配或回收資源C. 進程切換的開銷也遠小于線程切換的開銷D. 線程切換只需保存和設置少量寄存器的內(nèi)容,并不涉及存儲器管理方面的操作5.以下表述不正確的是:( D )A. 在傳統(tǒng)的操作系統(tǒng)中, CPU 調(diào)度和分派的基本單位是進程B. 在引入線程的操作系統(tǒng)中,則把線程作為CPU調(diào)度和分派的基本單位C. 同一進程中線程的切換不會引起進程切換,從而避免了昂貴的系統(tǒng)調(diào)用D. 由一個進程中的線程切換到另一進程中的線程時,也不會引起進程切換6.以下表述正確的是:( AC )A. 在引入線程的操作系統(tǒng)中,進程之間可以并發(fā)執(zhí)行B. 在引入線程的操作系統(tǒng)中,一個進程中的多個線程之間

41、不可以并發(fā)執(zhí)行C. 進程是擁有系統(tǒng)資源的一個獨立單位,它可以擁有自己的資源D. 線程是擁有系統(tǒng)資源的一個獨立單位,它可以擁有自己的資源7.以下表述不正確的是:( A )A. 用戶級線程在用戶層通過線程庫來實現(xiàn)。 對它的創(chuàng)建、 撤銷和切換都要利用系統(tǒng)的調(diào)用。B. 核心級線程由操作系統(tǒng)直接支持,即無論是在用戶進程中的線程,還是系統(tǒng)進程中的線 程,它們的創(chuàng)建、撤消和切換都由核心實現(xiàn)C. 硬件線程就是線程在硬件執(zhí)行資源上的表現(xiàn)形式D. 用戶級線程通過操作系統(tǒng)被作為核心級線程實現(xiàn),再通過硬件相應的接口作為硬件線程 來執(zhí)行8.以下表述不正確的是:( B)A. 對用戶級線程來講,內(nèi)核也并不知道它的存在,所以

42、所有對用戶級線程的管理和調(diào)度都 是在用戶空間來進行的B. 用戶級線程的切換需要通過中斷進入操作系統(tǒng)的內(nèi)核C. 如果內(nèi)核是單線程的,那么任何一個用戶級線程若執(zhí)行了阻塞系統(tǒng)調(diào)用就會導致該線程 所屬的進程阻塞D. 如果采用的是內(nèi)核級線程,當一個線程被阻塞,該進程中的線程不會被阻塞。9.對于線程生命周期,以下表述正確的是:( D )A. 系統(tǒng)中的每個線程都有一個從創(chuàng)建到消亡的過程,我們把這一過程稱作該線程的生命周 期。B. 線程生命周期包括創(chuàng)建、就緒狀態(tài)、運行狀態(tài)、等待狀態(tài)和消亡C. 就緒狀態(tài)的線程運行所需的一切條件都得到滿足,已獲得必要的資源和設備。但因處理 器資源個數(shù)少于線程個數(shù),所以該線程不能運

43、行,而必須位于隊列中等待分配處理器資源D. 以上都正確10.以下表述不正確的是:( C)A. 當兩個或多個進程試圖在同一時刻訪問共享內(nèi)存,或讀寫某些共享數(shù)據(jù),就會產(chǎn)生競爭 條件B. 每個臨界區(qū)都有相應的進入?yún)^(qū)( entry section )和退出區(qū)( exit section )C. 可能有兩個線程同時進入臨界區(qū)D. 臨界區(qū)的存在就是為了保證當有一個線程在臨界區(qū)內(nèi)執(zhí)行的時候,不能有其他任何進程 被允許在臨界區(qū)執(zhí)行11.對于信號量,以下表述不正確的是:(B)A. 信號量有兩個基本的原子操作: P(wait, 檢測操作)和 V (signal,增量操作)。B. 信號量在并行進程開始執(zhí)行前,信號量

44、被初始化負數(shù)。C.信號量為正表示可無阻塞執(zhí)行的線程的數(shù)目,為負則表示已經(jīng)被阻塞的線程數(shù)。D. 當信號量為 0 時則表示沒有等待的線程12.對于鎖,以下表述不正確的是:( D )A. 鎖類似于信號量,不同之處在于在同一時刻只能使用一個鎖B. 鎖有兩個操作,分別是獲取鎖和釋放鎖。C. 互斥量是一種鎖,線程對共享資源進行訪問之前必須先獲得鎖;否則線程將保持等待狀 態(tài),直到該鎖可用。D. 若線程不主動放棄鎖,其他線程可以搶占它13.對于條件變量,以下表述正確的是:( ABC )A. 條件變量 (Condition variable) 是用來通知共享數(shù)據(jù)狀態(tài)信息的B. 當特定條件滿足時,線程等待或者喚醒

45、其他合作線程C. 條件變量需要一個互斥量來同步對共享數(shù)據(jù)的訪問D. 條件變量提供互斥14.對于線程局部存儲 TLS(thread local storage) ,以下表述正確的是:( ABCD)A. 解決多線程中的對同一變量的訪問沖突的一種技術B. TLS 會為每一個線程維護一個和該線程綁定的變量的副本C. 每一個線程都擁有自己的變量副本,從而也就沒有必要對該變量進行同步了D. Java 平臺的 java.lang.ThreadLocal 是 TLS 技術的一種實現(xiàn)15. 以下表述不正確的是:( D)A. 在普通的同步機制中,是通過對象加鎖來實現(xiàn)多個線程對同一變量的安全訪問的B. Thread

46、Local 會為每一個線程維護一個和該線程綁定的變量的副本,從而隔離了多個線 程的數(shù)據(jù), 每一個線程都擁有自己的變量副本, 從而也就沒有必要對該變量進行同步了。C. ThreadLocal 提供了線程安全的共享對象,在編寫多線程代碼時,可以把不安全的整個 變量封裝進 ThreadLocal ,或者把該對象的特定于線程的狀態(tài)封裝進 ThreadLocalD. 使用 ThreadLocal 的多個線程也會共享資源16.對于客戶 / 服務器模型中,以下表述正確的是:(ABCD)A. 線程編程流水線模型中,“數(shù)據(jù)元素”流串行地被一組線程順序處理。每個線程依次在 該數(shù)據(jù)上執(zhí)行自身特定的操作,并將執(zhí)行結果

47、傳遞給流水線中的下一個線程。B. 線程編程工作組模型中,數(shù)據(jù)由一組線程獨立地處理C. 線程編程客戶 / 服務器模型中,客戶請求服務器對一組數(shù)據(jù)執(zhí)行某個操作D.線程編程客戶/服務器模型中,服務器獨立的執(zhí)行操作-客戶端或者等待服務器執(zhí)行,或者并行地執(zhí)行并在后面需要時查找結果17. 以下表述不正確的是:( A )A. 多核CPU機器上的編程和多 CPU上的編程應該差不多,只要借鑒以前的多任務編程、 并行編程和并行算法方面的經(jīng)驗就足夠了B. 多核CPU中,要很好地發(fā)揮出多個CPU的性能的話,必須保證分配到各個CPU上的任務有一個很好的負載平衡C. 要實現(xiàn)一個好的負載平衡通常有兩種方案,一種是靜態(tài)負載平

48、衡,另外一種是動態(tài)負載 平衡D. PC 上的客戶端軟件要想發(fā)揮出多核的并行優(yōu)勢并不像進行大型并行計算的特定領域那樣簡單18.對于負載平衡,以下表述不正確的是:(C)A. 靜態(tài)負載平衡需要人工將程序分割成多個可并行執(zhí)行的部分,并且要保證分割成的各個 部分能夠均衡地分布到各個 CPU 上運行使用原子操作來替代鎖D. 設計并行指令B.動態(tài)負載平衡是在程序的運行過程中來進行任務的分配達到負載平衡的目的C.動態(tài)負載平衡中對任務的調(diào)度可以由系統(tǒng)來實現(xiàn),也可以由程序員修改調(diào)度策略D. 由于實際任務中存在很多的不確定因素,調(diào)度算法無法做得很優(yōu),因此動態(tài)負載平衡有 時可能達不到既定的負載平衡要求19.對于負載平

49、衡,以下表述正確的是:( C)A.使用負載平衡,隨著 CPU 核數(shù)的增多總能讓總的執(zhí)行時間下降,從而使加速系數(shù)隨CPU核數(shù)的增加而增加B. 負載平衡的困難之處在于程序中的可并行執(zhí)行塊很多要靠程序員來劃分,隨著核數(shù)的增 加,這項任務將會變得不可能C.負載劃分的誤差并不會會隨著 CPU 核數(shù)的增加而放大D.負載劃分的難題還體現(xiàn)在 CPU 和軟件的升級上20. 對于如何解決串行化方面的難題,以下表述正確的是:( ABC )A. 少用鎖,甚至采用無鎖編程 B.C. 從設計和算法層面來縮小串行化所占的比例21. 在操作系統(tǒng)中引入進程的目的是:( A )A. 提高系統(tǒng)吞吐量 B. 減少程序并發(fā)執(zhí)行時所付出

50、的時空開銷C. 便于組織程序邏輯 D. 以上都正確22. 在操作系統(tǒng)中引入線程的目的是:( B )A. 提高系統(tǒng)吞吐量 B. 減少程序并發(fā)執(zhí)行時所付出的時空開銷C. 便于組織程序邏輯 D. 以上都正確23. _ 是 CPU 調(diào)度和分派的基本單位, _是資源擁有的基本單位。( D)A. 線程,線程 B. 進程,線程 C. 進程,進程 D. 線程,進程24. 線程在不同的操作系統(tǒng)中還有不同的實現(xiàn)方式有:(D)A. 用戶級線程 B. 核心級線程 C. 硬件線程 D. 以上都是25. 同一進程的兩個線程 _訪問對方的虛擬地址空間,不同進程的兩個線程 _訪問 對方的虛擬地址空間。( C)A. 可以,可以

51、 B. 不可以,不可以 C. 可以,不可以 D. 不可以,可以 第5 章:多線程程序設計中的常見問題及解決途徑習題1. 以下表述不正確的是:( A )A. 使用多線程能夠提升程序的性能,如果少量的線程能夠提升程序的性能,那么更多的線 程能夠更好B.過多的線程可能會嚴重影響程序的性能C.將給定的工作量劃分給過多的線程會造成每個線程的工作量過少, 因此可能導致線程啟 動和終止時的開銷比程序實際工作的開銷還要多D.過多并發(fā)線程的存在將導致共享有限硬件資源的開銷增大2. 以下表述不正確的是:( A )A. 進程是操作系統(tǒng)分配處理器時間的基本單元B.線程上下文包括為使線程在線程的宿主進程地址空間中無縫地

52、繼續(xù)執(zhí)行所需的所有信息C. 當軟件線程個數(shù)超過硬件線程個數(shù)的時候,支持搶占式多任務處理的操作系統(tǒng)一般會采 用時間片輪轉調(diào)度的方案D.時間片的長度取決于操作系統(tǒng)和處理器。由于每個時間片都很小,因此即使只有一個處理器,多個線程看起來似乎也是在同時執(zhí)行3. 對于進程間切換,以下表述不正確的是:(C)A. 在系統(tǒng)要進行進程間切換的時候,需要保存當前進程的寄存器狀態(tài),以便在下次回調(diào)到 當前線程的時候,能夠恢復線程寄存器繼續(xù)運行B. 當存在少量線程的時候,進程調(diào)度程序會給每一個線程分配足夠長的時間片,保存和恢 復線程寄存器的開銷變得不是很顯著C. 隨著線程數(shù)目的增加,雖然線程調(diào)度程序分給每個線程的時間片也

53、會相應減少,但是不會降低系統(tǒng)性能。D. 保存和恢復線程使用的 cache的開銷則是更敏感的一種開銷4. 對于操作系統(tǒng)中的線程,以下表述不正確的是:( D )A. 操作系統(tǒng)中存在兩種類型的線程, I/O 阻塞線程和計算非阻塞線程B. IO 阻塞線程主要用于有交互式的程序中,它在大多數(shù)時間內(nèi)都在等待外部事件C. 計算非阻塞線程在大多數(shù)時間內(nèi)都是被調(diào)度函數(shù)調(diào)度到的,應該和處理器資源相匹配D. 在處理10阻塞線程的時候要依次地等待每個請求完成才繼續(xù)處理下一個請求5. I/O 阻塞線程 _引起時間片切換開銷,計算非阻塞線程 _引起時間片切換的開銷。 ( A )A. 不會,會 B. 會,不會 C. 都會

54、D. 都不會6. 以下表述錯誤的是:( D)A. 0penMP 可以根據(jù)目標系統(tǒng)盡量使用最優(yōu)數(shù)量的線程個數(shù)B. 使用線程池可以避免為每個線程創(chuàng)建新進程的開銷C. 線程池通常具有最大線程數(shù)限制,如果所有線程都繁忙,而額外的任務將放入隊列中, 直到有線程可用時才能夠得到處理D. 對于有優(yōu)先級的線程,也可以使用線程池7. 對于可重入函數(shù),以下表述不正確的是:(C)A. 一個可重入的函數(shù)在執(zhí)行中并不使用靜態(tài)數(shù)據(jù),也不返回指向靜態(tài)數(shù)據(jù)的指針B. 所有使用到的數(shù)據(jù)都由函數(shù)的調(diào)用者提供C. 可重入函數(shù)在函數(shù)體內(nèi)可以調(diào)用非可重入函數(shù)D. 一個非可重入函數(shù)通常 (盡管不是所有情況下 ) 由它的外部接口和使用方法

55、即可進行判斷8.死鎖發(fā)生必須同時滿足以下條件:(ABCD )A. 互斥 B. 占有并等待 C. 非搶占 D. 循環(huán)等待9. 以下表述不正確的是:( B )A. 由于多個線程共享資源,在采用基于優(yōu)先級調(diào)度策略時會出現(xiàn)較低優(yōu)先級的線程先于高 優(yōu)先級線程執(zhí)行的情況B. 優(yōu)先級倒置可能使實時性要求低的線程錯過臨界期限 (critical deadline ),從而導致系統(tǒng)崩潰C. 要避免出現(xiàn)優(yōu)先級倒置問題,必須讓低優(yōu)先級線程盡快釋放臨界資源D. 目前解決優(yōu)先級倒置通常有兩種方法,一種是優(yōu)先級繼承( priority inheritance),另一種是優(yōu)先級頂置( priority ceilings )

56、10.如果一個線程占有資源并申請另一個不能立即分配的資源,那么其現(xiàn)在已分配的資源_ 。搶占資源分配到 _資源的鏈表上。( D)A. 保持不變,當前 B. 保持不變,所等待 C. 被搶占,當前 D. 被搶占,所等待11. 以下表述不正確的是:( D)A. 優(yōu)先級繼承技術強令低優(yōu)先級的線程繼承與之共享資源并被掛起的高優(yōu)先級線程的優(yōu)先級B. 一旦高優(yōu)先級線程開始掛起,即可實施優(yōu)先級繼承,直到資源釋放C.采用優(yōu)先級繼承方法可以有效地解決優(yōu)先權倒置的問題D. 優(yōu)先級繼承方法中動態(tài)改變線程的優(yōu)先級并不對程序性能造成影響12. 以下表述不正確的是:( C)A. 優(yōu)先級頂置方案的目的是讓低優(yōu)先級線程盡快釋放臨

57、界資源B. 優(yōu)先級頂置方法總是樂于提高線程的優(yōu)先級,而優(yōu)先級繼承方法則比較懶惰,不到萬不 得已不會提升線程的優(yōu)先級C. Windows 互斥量機制默認支持優(yōu)先級頂置的方法D. 對于使用鎖或者忙等待機制的編程人員來說,如果有不同優(yōu)先級的線程被允許獲取鎖, 就會遇到優(yōu)先級倒置問題13. 以下表述不正確的是:( AD)A. 在遇到鎖競爭激烈的時候,就需要一個更快的鎖B. 可以通過復制資源的方式來避免使用鎖C. 減少對鎖的等待時間的最有效方法是減少這個鎖所保護的范圍大小D. 向一個散列表中插入數(shù)據(jù)的時候,使用一個鎖對散列加鎖和使用散列函數(shù)將關鍵字映射 到一個子表,然后線程取得這個子表的鎖的效果是一樣的

58、14. 以下表述不正確的是:( B)A. 如果一個數(shù)據(jù)結構讀取頻繁但是寫入并不頻繁,就可以使用讀寫鎖( reader-writer lock )來解決競爭B. 一個線程可以同時持有讀線程鎖和寫線程鎖C.讀線程和寫線程將分別排入各自的隊列, 鎖在一組讀線程和一個寫線程之間交替進行操 作D. 大多數(shù)獲取鎖的方法都采用超時值。使用超時可以避免應用程序中出現(xiàn)死鎖15.非阻塞算法具有以下一些特征:( ABD )A. 無阻塞 B. 無鎖 C. 無互斥 D. 無等待16. 以下表述不正確的是:( C)A. 非阻塞算法會導致大量的存儲總線流量,因為不同的硬件線程會不斷試圖對同一 cache 線進行操作。B.

59、如果將鎖競爭分布到多個鎖上,并且每個鎖都能夠保證在其線程完成操作之前沒有線程 能夠訪問它所保護的 cache 線,那么有鎖的算法就比等價的非阻塞算法性能好C. 有鎖算法一定比非阻塞算法好D. 使用一個快速的循環(huán)鎖保護一個不含原子操作的臨界段,與需要三個或更多高競爭度原 子操作的非阻塞實現(xiàn)方式相比較而言,性能要好一些17.對用戶級線程來講,內(nèi)核 _它的存在,所以所有對用戶級線程的管理和調(diào)度都是在 _ 空間來進行的。( C)A. 知道,用戶 B. 知道,內(nèi)核 C. 不知道,用戶 D. 不知道,內(nèi)核18. 以下表述錯誤的是:( D)A. 對于一個串行程序任一時刻的任一運行副本來說, 存儲器都有一個良

60、定 (well defined ) 狀態(tài)B. 順序一致性的存儲器要滿足每個線程的內(nèi)部操作順序是確定不變的且任一線程都可以感 知到這些線程同樣的操作順序C. 并非所有的線程都要求看到所有的寫操作的結果,讓他們按照順序看到寫操作的結果更 是沒有必要D.按照嚴格操作順序模型的開銷會不會影響應用程序的性能19. 關于Itanium 體系結構,以下表述不正確的是:(B)A. Ita nium 體系結構不需要支持遺留軟件,因此可以采用最新的松弛存儲器模型B. 基于Itanium系統(tǒng)的編譯器對volatile的解釋方式和傳統(tǒng)習慣有很多差別C. Ita nium 體系結構的兩種松弛存儲模型經(jīng)常被使用。第一種機

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論