1.最新linux核心對普通程序使用的排程演算法是(c)//
a o(n)
b o(1)
c cfs
d bfs
2.下面對linux程序排程說法錯誤的是(a)//深入理解linux核心p258-p262
a程序排程針對系統中的所有程序;
b linux把程序分成140個優先順序,0-99為實時程序,100-139為普通程序;
c當沒有可執行的程序時,核心會選擇idle程序;
d程序排程需要盡量提高互動式程序的響應時間和批處理程序的吞吐量;
3.下面關於程序搶占說法錯誤的是(d)//深入理解linux核心p260-p261
a linux支援核心搶占,即程序在核心態同樣可能被搶占
b cfs、rr是可搶占的排程演算法,fifo不是
c搶占能夠提高響應時間
d搶占能夠提高吞吐量
4.下面對於linux程序切換錯誤的是(b)深入理解linux核心p270-p277
a在單cpu上,通過程序切換只能實現表面上的並行
b程序切換能夠發生在中斷上下文
c程序可以主動呼叫schedule函式進行切換
d schedule函式可以在中斷、異常或者系統呼叫返回的時候呼叫;
5.下面說法錯誤的是(d)深入inux核心架構p67-p96
a linux中絕大多數程序都是普通程序,實時程序很少
b linux通過排程類的方法來實現不同的程序採用不同的排程演算法
c cfs採用紅黑樹的資料結構來組織相應的程序
d只有在時鐘中斷中才會判斷是否搶占當前程序
6.關於執行佇列rq錯誤的是(c)//深入理解linux核心p284-p285
a系統中如果只有乙個執行佇列,則不需要負載均衡
b多個執行佇列可以減少競爭
c linux系統中只有乙個執行佇列
d linux系統中每個cpu都有乙個執行佇列
7.在程序遷移的時候,需要考慮(d)//深入理解linux核心p286-p288
a程序的親緣性
b節能c cpu間負載的不均衡性
d以上全部
8.關於排程域和排程組說法錯誤的是(b)//深入理解linux核心p286-p288
a由於目前很多系統中cpu有不同的拓撲結構,因此linux引入了排程域和排程組
b排程組的每個cpu都會進行負載均衡
c上層排程域包含下層排程域
d越下面的排程域層,負載均衡越頻繁
9.下面哪個核心執行緒和程序遷移有關(c)//深入inux核心架構p99-p100
a kthreadd
b ksoftirqd
c migration
d kjournald
10.下列說法錯誤的是(b)
a使用者可以通過taskset或者sched_setaffinity把某個程序繫結到乙個或者多個cpu上
b所個cpu都共享同乙個時鐘中斷源來觸發程序排程和遷移
c程序遷移的時候需要同時獲取本地rq和目標rq的鎖來保證資料的一致性
d程序從乙個cpu遷移到另乙個cpu需要同時考慮負載的不均衡性以及遷移的代價
11.作業系統微核心、單核心有關說法錯誤的是:(c)a.微核心作業系統採用c/s結構,是客戶端與伺服器程序之間的資訊中轉站,訊息通過核心**,即採用了程序間通訊機制(ipc),其特點是開銷較小。b.微核心較小,移植性好,並不直接依賴硬體。典型系統有windows nt,mac os系統。c.單核心是包含所有子系統的單個二進位制檔案,處於同一記憶體位址空間,核心之間可以直接呼叫函式,使用者態只能通過系統呼叫訪問核心。
解析:(特點:開銷較小,移植性高,並不依賴硬體。單核心包括所有子系統**(記憶體管理、檔案系統、裝置驅動、網路、記憶體)都打包到乙個子系統中,模組耦合度較高,動態核心方式新增到核心。支援熱拔插等,特點:效能較好,修改與維護成本高。)
d.單核心效能較好,允許核心模組的插入與刪除,支援模組的熱拔插、動態裝載過程。--深入理解linux核心架構——第一章 linux核心設計與實現——第十六章
12.有關核心模組說法錯誤的是:(b)a.核心模組**由相關的子例程、資料、函式入口和函式出口等組成。b.核心模組只能存在核心源**樹中,不能單獨存在。解析:(模組之間存在相互依賴關係,在/lib/module/kernel-*-*/modules.dep中定義了模組之間的依賴關係,乙個核心模組的函式,可以被其他模組引用,但引用之間必須宣告export_symbol()、export_symbol_gpl())
c.核心模組之間存在依賴,可以在相關核心模組目錄中modules.dep檔案制定依賴關係,也可以通過modprobe自動解析模組的依賴關係。d.核心模組的函式必須匯出才能被其他核心模組函式呼叫,即通過export_symbol()、export_symbol_gpl()來實現模組**的鏈結和呼叫。-- linux核心設計與實現——第十六章
13.有關核心模組操作說法錯誤的是:(d)a.modulename_init()函式是模組的入口點,通過module_init(modulename_init)例程註冊到系統中,在模組裝載時呼叫。b.modulename_exit()函式是模組的出口點,通過module_exit(modulename_exit)例程註冊到系統,在模組拆卸時呼叫。c.核心模組的拆卸、裝載是通過核心守護程序kmod自動來實現。d.不同作業系統支援不同的module_license()模組的版權。對於申明了版權的外來模組,都可以插入到系統核心中。解析:(moudule_exit()模組拆卸時呼叫,指明其是模組拆卸點。其模組的拆卸與裝載都是核心守護程序自動實現。不同作業系統支援不同的module_license()模組的版權,同事核心ko之間元件module_init_tools會指明是否支援核心外部模組,例如suse的在系統模組配置/etc/modprobe.d/unsupported-modules(suse為例),標誌位為0,不允許非suse核心模組的使用者開發的核心模組插入。)
-- linux核心設計與實現——第十六章
14.有關核心模組依賴說法錯誤的是:(b)a.模組b依賴於模組a,除非模組a已經駐留在核心記憶體中,否則模組b無法裝載。b.模組b引用於模組a,如果模組a已經移除,模組b無法從核心移除。解析:(在**中使用export_symbol),這種服務被稱作"symbols"。若第二個模組使用了這個symbol,則該模組很明顯依賴於第乙個模組。模組b依賴於模組a,除非模組a已經駐留在核心記憶體中,否則模組b無法裝載。模組b引用於模組a,除非模組b已經移除,否則模組a無法從核心移除。核心通過資料結構module_use資料單鏈表來表示模組之間的依賴關係。核心之間的依賴關係,如果insmod出錯,在depmod更新依賴關係後,可以通過modprobe自動解析依賴關係,或者通過dmesg自動解析依賴關係。)
c.核心通過資料結構module_use資料單鏈表來表示模組之間的依賴關係。d.如果產生核心依賴問題導致的依賴關係,可以檢視dmesg來modprobe來決定其依賴關係。--深入理解linux核心架構——第7章
15.有關核心模組生成過程說法錯誤的是:(d)
a.某個核心模組所有源**編譯成.o目標檔案。b.模組產生目標檔案後,核心分析其附加資訊(模組依賴關係等),也編譯為乙個二進位制檔案。c.將上述產生兩種檔案鏈結起來,儲存為最後的ko檔案。d.核心模組只需要所有核心標頭檔案的支援。--深入理解linux核心架構——第7章
解析:(核心模組的編譯,各個模組**都可以編譯成.o目標檔案,同時對於核心分析其附加資訊(模組依賴關係等),也編譯為乙個二進位制檔案,上述檔案同時鏈結起來,最後保留ko檔案,核心模組編譯需要核心標頭檔案, 編譯原始碼生成標頭檔案的支援,符號表等資訊的支援。
華為內部面試題庫 (4)
摘自 1 在osi參考模型中,實現端到端的應答 分組排序和流量控制功能的協議層是 a 資料鏈路層 b 網路層 c 傳輸層 d 會話層 答案 c 此題主要考查了iso osi rm體系結構中各層的主要功能。物理層 物理層主要是設計處理機械的 電氣的和過程的介面,以及物理層下的物理傳輸介質等問題。資料鏈...
《leetcode》華為技術面試題庫
題目描述 給定乙個單詞列表,我們將這個列表編碼成乙個索引字串s與乙個索引列表a。例如,如果這個列表是 time me bell 我們就可以將其表示為s time bell 和indexes 0,2,5 對於每乙個索引,我們可以通過從字串s中索引的位置開始讀取字串,直到 結束,來恢復我們之前的單詞列表...
華為面試題
1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...