免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一些Unix筆試題和面試題1. 簡(jiǎn)述Sun Workshop中的幾個(gè)重要概念:event/handler, watchpoint, RTC。2. 簡(jiǎn)述Solaris所實(shí)現(xiàn)的系統(tǒng)接口標(biāo)準(zhǔn)(至少兩種),并說(shuō)明feature test macros的功能和使用方法。unix 標(biāo)準(zhǔn)有:ANSI C, IEEE POSIX, X/OPEN XPG3 和 FIPS.實(shí)際應(yīng)用的有:System V Release 4, 4.3+BSD.feature test macro: 頭文件中定義了很多宏,有POSIX,XPG3的。當(dāng)程序編譯時(shí)如果希望只使用POSIX的定義而不使用其它定義,那么就需定義常數(shù)_ P O S I X _ S O U R C E。當(dāng)該常數(shù)定義時(shí),就能排除其它專有的定義。常數(shù)_ P O S I X _ S O U R C E 及其對(duì)應(yīng)的常數(shù)_ X O P E N _ S O U R C E 被稱之為功能測(cè)試宏(f e a t u r etest macro )。所有功能測(cè)試宏都以下劃線開始。當(dāng)要使用它們時(shí),通常在c c 命令行中以下列方式定義:cc -D_POSIX_SOURCE file.c這使得在C 程序包括任何頭文件之前,定義了功能測(cè)試宏。如果我們僅想使用P O S I X . 1 定義,那么也可將源文件的第一行設(shè)置為:#define _POSIX_SOURCE 1另一個(gè)功能測(cè)試宏是:_ _STDC_ _,它由符合ANSI C 標(biāo)準(zhǔn)的編譯程序自動(dòng)定義。這樣就允許我們編寫ANSI C 編譯程序和非ANSI C 編譯程序都能編譯的程序。例如,一個(gè)頭文件可能會(huì)是:#ifdef _STDC_void *myfunc(const char *, int);#elsevoid *myfunc();#endif3. 試比較系統(tǒng)調(diào)用和庫(kù)函數(shù)的區(qū)別(重點(diǎn)說(shuō)明返回值和內(nèi)存分配)。system call 是用戶訪問內(nèi)核系統(tǒng)服務(wù)的接口,使內(nèi)核為調(diào)用線程執(zhí)行某種特定的功能。每個(gè)system call 在標(biāo)準(zhǔn)C 庫(kù)中設(shè)置一個(gè)具有同樣名字的函數(shù)。用戶進(jìn)程用標(biāo)準(zhǔn)C 調(diào)用序列來(lái)調(diào)用這些函數(shù),然后,函數(shù)又用系統(tǒng)所要求的技術(shù)調(diào)用相應(yīng)的內(nèi)核服務(wù)。然后執(zhí)行某個(gè)產(chǎn)生軟中斷進(jìn)入內(nèi)核的機(jī)器指令。是于平臺(tái)相關(guān)的。library function 是將system call進(jìn)行封裝后提供的接口。實(shí)際上,用戶也可以定制自己的library function.大體上,systerm call 實(shí)現(xiàn)內(nèi)存的分配,library function 實(shí)現(xiàn)內(nèi)存的管理。當(dāng)1)library function在調(diào)用system call時(shí),system call不會(huì)申請(qǐng)靜態(tài)空間存放調(diào)用結(jié)果。Library function應(yīng)該申請(qǐng)動(dòng)態(tài)空間,將地址作為參數(shù)傳入。這時(shí),system call將結(jié)果寫在動(dòng)態(tài)空間中。2)library function在調(diào)用system call時(shí),system call每次將結(jié)果放在固定的靜態(tài)空間中。用戶得到的返回值在靜態(tài)空間中,如果用戶要多次調(diào)用該函數(shù),則應(yīng)申請(qǐng)動(dòng)態(tài)空間,將返回值拷貝到動(dòng)態(tài)空間中。在下次調(diào)用時(shí),靜態(tài)空間被重新賦值。3)library function在調(diào)用system call時(shí),system call每次都為用戶進(jìn)程申請(qǐng)動(dòng)態(tài)空間,賦值,將動(dòng)態(tài)空間地址返回給用戶。這種情況下,需要用戶在使用完后,釋放內(nèi)存。4. 簡(jiǎn)述Solaris的進(jìn)程及兩級(jí)線程模型,并說(shuō)明概念核心所支持的調(diào)度類。進(jìn)程是含有一個(gè)用戶程序環(huán)境的抽象,包括虛存環(huán)境、程序所需資源以及至少一個(gè)執(zhí)行線程。每個(gè)進(jìn)程中至少有一個(gè)輕量級(jí)線程,它是進(jìn)程中每個(gè)內(nèi)核線程的虛擬執(zhí)行環(huán)境。輕量級(jí)進(jìn)程允許進(jìn)程中的每個(gè)內(nèi)核線程,獲得與同一進(jìn)程中的其他內(nèi)核線程無(wú)關(guān)的系統(tǒng)調(diào)用。雖然在統(tǒng)一進(jìn)程內(nèi)切換多個(gè)線程是不耗資源的,但線程的創(chuàng)建和消除卻很耗資源。另外,進(jìn)程中的內(nèi)核線程要求有一個(gè)輕量級(jí)進(jìn)程,它含有消耗內(nèi)和資源的堆棧。因此,在每個(gè)進(jìn)程中增加了一級(jí)線程管理用戶線程二級(jí)線程模型。見下圖:solaris的調(diào)度類有:TS(分時(shí))它是進(jìn)程和進(jìn)程中所有內(nèi)核線程的缺省調(diào)度類。他根據(jù)當(dāng)前處理器的使用情況動(dòng)態(tài)改變進(jìn)程的優(yōu)先級(jí)。進(jìn)程優(yōu)先級(jí)和時(shí)間量在每個(gè)時(shí)鐘滴答時(shí),或在一個(gè)I/O引起睡眠后的喚醒期間,根據(jù)分時(shí)調(diào)度表計(jì)算。TS類的優(yōu)先級(jí)由0-59。IA(交互類,增強(qiáng)的TS類)它是由桌面視窗系統(tǒng)使用得調(diào)度類。用來(lái)提高目的視窗中線程的優(yōu)先級(jí)。SYS(系統(tǒng)類)內(nèi)核線程使用的系統(tǒng)類。優(yōu)先級(jí)60-99RT(實(shí)時(shí)類)用于實(shí)現(xiàn)固定的優(yōu)先級(jí)、固定的時(shí)間量調(diào)度。優(yōu)先級(jí)100-1595. 當(dāng)使用vfork()創(chuàng)建的新進(jìn)程(沒有調(diào)用exec或exec不成功)要退出時(shí),我們一般調(diào)用_exit()函數(shù),為什么?v f o r k 用于創(chuàng)建一個(gè)新進(jìn)程,而該新進(jìn)程的目的是e x e c 一個(gè)新程序。v f o r k 與f o r k 一樣都創(chuàng)建一個(gè)子進(jìn)程,但是它并不將父進(jìn)程的地址空間完全復(fù)制到子進(jìn)程中,因?yàn)樽舆M(jìn)程會(huì)立即調(diào)用e x e c (或e x i t ),不過(guò)在子進(jìn)程調(diào)用e x e c 或e x i t 之前,它在父進(jìn)程的空間中運(yùn)行。v f o r k 保證子進(jìn)程先運(yùn)行,在它調(diào)用e x e c 或e x i t 之后父進(jìn)程才可能被調(diào)度運(yùn)行。e x i t 和_ e x i t 函數(shù)用于正常終止一個(gè)程序:_ e x i t 立即進(jìn)入內(nèi)核,e x i t 則先執(zhí)行一些清除處理(包括調(diào)用執(zhí)行各終止處理程序,關(guān)閉所有標(biāo)準(zhǔn)I / O 流等),然后進(jìn)入內(nèi)核。_ e x i t 并不執(zhí)行標(biāo)準(zhǔn)I / O 緩存的刷新操作。如果用e x i t 而不是_ e x i t ,它刷新開關(guān)閉了所有標(biāo)準(zhǔn)I / O 流,這包括標(biāo)準(zhǔn)輸出。雖然這是由子進(jìn)程執(zhí)行的,但卻是在父進(jìn)程的地址空間中進(jìn)行的,所以所有受到影響的標(biāo)準(zhǔn)I/O FILE 對(duì)象都是在父進(jìn)程中的。6. 什么是“zombie”進(jìn)程?在我們的程序中如何防止“zombie”進(jìn)程?(試說(shuō)出其中的三種方法)一個(gè)已經(jīng)終止、但是其父進(jìn)程尚未對(duì)其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息、釋放它仍占用的資源)的進(jìn)程被稱為僵死進(jìn)程(z o m b i e )。避免z o m b i e 的方法:(1)在S V R 4 中,如果調(diào)用s i g n a l 或s i g s e t 將S I G C H L D 的配置設(shè)置為忽略,則不會(huì)產(chǎn)生僵死子進(jìn)程。另外,使用S V R 4 版的s i g a c t i o n ,則可設(shè)置S A _ N O C L D WA I T 標(biāo)志(見表1 0 5 )以避免子進(jìn)程僵死。(10.7)(2)調(diào)用f o r k兩次。程序8 5 實(shí)現(xiàn)了這一點(diǎn)。(3)用waitpid等待子進(jìn)程返回.7. 以下代碼是不可靠信號(hào)處理的經(jīng)典例子之一,試說(shuō)明其中的問題(包括細(xì)節(jié)):8. 在信號(hào)(Signal)處理中,我們必須注意兩個(gè)重要的問題:可重啟動(dòng)的系統(tǒng)調(diào)用和可重入函數(shù)。試說(shuō)明以下兩個(gè)問題:a) 在Solaris中如何設(shè)置可重啟動(dòng)的系統(tǒng)調(diào)用標(biāo)志(提示:使用sigaction)。b) 什么是異步事件安全(Asyn-signal safe)函數(shù)?舉例說(shuō)明異步事件不安全的函數(shù)(即一般在信號(hào)處理程序中不能調(diào)用的函數(shù))。(例外,提醒大家:在信號(hào)處理程序中注意保存errono)。9. 在使用Pthread時(shí),典型的代碼如下:pthread_attr_init( /* initialize attr with default attributes */pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );pthread_create( &tid, &attr, start_func, arg );說(shuō)明以上代碼中的PTHREAD_SCOPE_SYSTEM所代表的含義。10. 在Solaris中,用于線程間同步的機(jī)制主要包括:POSIX互斥鎖(Mutex Lock)、POSIX讀寫鎖(read-write lock)、POSIX信號(hào)量(semaphore)和POSIX條件變量(condition variable)。試簡(jiǎn)要說(shuō)明以上幾種同步機(jī)制的主要用途和區(qū)別。11. 在Solaris中,POSIX互斥鎖主要用于線程間同步。說(shuō)明POSIX互斥鎖用于進(jìn)程間同步時(shí)的主要步驟。(提示:使用系統(tǒng)調(diào)用mmap and ftruncate, 注意cleanup)。 互斥鎖互斥鎖(mutex)使得某一確定時(shí)刻只有一個(gè)線程可以訪問保護(hù)中的數(shù)據(jù)。 讀/寫鎖采用讀寫鎖,允許多個(gè)線程同時(shí)讀訪問共享數(shù)據(jù)區(qū),但是只能有一個(gè)線程寫訪問共享數(shù)據(jù)區(qū)。絕大多數(shù)設(shè)備驅(qū)動(dòng)程序不使用讀寫鎖。這種鎖比互斥鎖慢,僅當(dāng)經(jīng)常出現(xiàn)多個(gè)線程需要同時(shí)讀訪問共享數(shù)據(jù)而同時(shí)較少有寫訪問時(shí),才采用讀寫鎖,互斥鎖此時(shí)可能導(dǎo)致寫訪問延遲。參看rwlock(9F)了解更多信息。 信號(hào)燈信號(hào)燈也是設(shè)備驅(qū)動(dòng)程序編寫中一種可選的線程同步機(jī)制,參看semaphore(9F)了解更多細(xì)節(jié)。 線程同步除了需要保護(hù)共享數(shù)據(jù)區(qū)外,驅(qū)動(dòng)程序經(jīng)常需要保持多線程同步執(zhí)行。 條件變量條件變量是線程同步的標(biāo)準(zhǔn)形式,與互斥鎖配合使用?;コ怄i用于確保檢查條件變量時(shí)是原子的,如果被檢查的條件變量無(wú)變化則線程阻塞,等待條件變量變化信號(hào)的喚醒。必須調(diào)用cv_init(9F)初始化條件變量,調(diào)用cv_destroy(9F)摧毀條件變量。注意:條件變量例程類似SunOS 4.1中的sleep()和wakeup()例程。代碼舉例 使用互斥鎖和條件變量static int xxread ( dev_t dev, struct uio * uiop, cred_t * credp )struct xxstate * xsp;mutex_enter( &xsp-mu );while ( xsp-busy )cv_wait( &xsp-cv, &xsp-mu );xsp-busy = 1;mutex_exit( &xsp-mu );perform the data access /* end of xxread */static u_int xxintr ( caddr_t arg )struct xxstate * xsp = ( struct xxstate * )arg;mutex_enter( &xsp-mu );xsp-busy = 0;cv_broadcast( &xsp-cv );mutex_exit( &
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年分銷合作委托協(xié)議
- 二零二五年餐飲廚師文化交流與就業(yè)協(xié)議3篇
- 二零二五年度數(shù)據(jù)中心臨建勞務(wù)分包合同示范文本4篇
- 二手車買賣規(guī)范合同2024版
- 2025年度智能制造產(chǎn)業(yè)園區(qū)租賃合同范本4篇
- 2025年度叉車裝卸設(shè)備租賃與維護(hù)合同范本4篇
- 2025年度房地產(chǎn)開發(fā)項(xiàng)目拆遷補(bǔ)償協(xié)議書4篇
- 幼兒園大班三月份溫馨提示三篇
- 常州2025版二手房買賣合同(含交易雙方信息變更及通知條款)3篇
- 2025年度智能樓宇戶外廣告資源租賃服務(wù)合同4篇
- 部編新改版語(yǔ)文一年級(jí)下冊(cè)《語(yǔ)文園地四》教學(xué)設(shè)計(jì)
- 2025年北京鐵路局集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 《藥品招商營(yíng)銷概論》課件
- 曙光磁盤陣列DS800-G10售前培訓(xùn)資料V1.0
- 寺廟祈福活動(dòng)方案(共6篇)
- 2025年病案編碼員資格證試題庫(kù)(含答案)
- 企業(yè)財(cái)務(wù)三年戰(zhàn)略規(guī)劃
- 提高膿毒性休克患者1h集束化措施落實(shí)率
- 山東省濟(jì)南市天橋區(qū)2024-2025學(xué)年八年級(jí)數(shù)學(xué)上學(xué)期期中考試試題
- 主播mcn合同模板
- 2024測(cè)繪個(gè)人年終工作總結(jié)
評(píng)論
0/150
提交評(píng)論