




免費預覽已結束,剩余1頁可下載查看
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
一些Unix筆試題和面試題1. 簡述Sun Workshop中的幾個重要概念:event/handler, watchpoint, RTC。2. 簡述Solaris所實現(xiàn)的系統(tǒng)接口標準(至少兩種),并說明feature test macros的功能和使用方法。unix 標準有:ANSI C, IEEE POSIX, X/OPEN XPG3 和 FIPS.實際應用的有:System V Release 4, 4.3+BSD.feature test macro: 頭文件中定義了很多宏,有POSIX,XPG3的。當程序編譯時如果希望只使用POSIX的定義而不使用其它定義,那么就需定義常數(shù)_ P O S I X _ S O U R C E。當該常數(shù)定義時,就能排除其它專有的定義。常數(shù)_ P O S I X _ S O U R C E 及其對應的常數(shù)_ X O P E N _ S O U R C E 被稱之為功能測試宏(f e a t u r etest macro )。所有功能測試宏都以下劃線開始。當要使用它們時,通常在c c 命令行中以下列方式定義:cc -D_POSIX_SOURCE file.c這使得在C 程序包括任何頭文件之前,定義了功能測試宏。如果我們僅想使用P O S I X . 1 定義,那么也可將源文件的第一行設置為:#define _POSIX_SOURCE 1另一個功能測試宏是:_ _STDC_ _,它由符合ANSI C 標準的編譯程序自動定義。這樣就允許我們編寫ANSI C 編譯程序和非ANSI C 編譯程序都能編譯的程序。例如,一個頭文件可能會是:#ifdef _STDC_void *myfunc(const char *, int);#elsevoid *myfunc();#endif3. 試比較系統(tǒng)調用和庫函數(shù)的區(qū)別(重點說明返回值和內存分配)。system call 是用戶訪問內核系統(tǒng)服務的接口,使內核為調用線程執(zhí)行某種特定的功能。每個system call 在標準C 庫中設置一個具有同樣名字的函數(shù)。用戶進程用標準C 調用序列來調用這些函數(shù),然后,函數(shù)又用系統(tǒng)所要求的技術調用相應的內核服務。然后執(zhí)行某個產生軟中斷進入內核的機器指令。是于平臺相關的。library function 是將system call進行封裝后提供的接口。實際上,用戶也可以定制自己的library function.大體上,systerm call 實現(xiàn)內存的分配,library function 實現(xiàn)內存的管理。當1)library function在調用system call時,system call不會申請靜態(tài)空間存放調用結果。Library function應該申請動態(tài)空間,將地址作為參數(shù)傳入。這時,system call將結果寫在動態(tài)空間中。2)library function在調用system call時,system call每次將結果放在固定的靜態(tài)空間中。用戶得到的返回值在靜態(tài)空間中,如果用戶要多次調用該函數(shù),則應申請動態(tài)空間,將返回值拷貝到動態(tài)空間中。在下次調用時,靜態(tài)空間被重新賦值。3)library function在調用system call時,system call每次都為用戶進程申請動態(tài)空間,賦值,將動態(tài)空間地址返回給用戶。這種情況下,需要用戶在使用完后,釋放內存。4. 簡述Solaris的進程及兩級線程模型,并說明概念核心所支持的調度類。進程是含有一個用戶程序環(huán)境的抽象,包括虛存環(huán)境、程序所需資源以及至少一個執(zhí)行線程。每個進程中至少有一個輕量級線程,它是進程中每個內核線程的虛擬執(zhí)行環(huán)境。輕量級進程允許進程中的每個內核線程,獲得與同一進程中的其他內核線程無關的系統(tǒng)調用。雖然在統(tǒng)一進程內切換多個線程是不耗資源的,但線程的創(chuàng)建和消除卻很耗資源。另外,進程中的內核線程要求有一個輕量級進程,它含有消耗內和資源的堆棧。因此,在每個進程中增加了一級線程管理用戶線程二級線程模型。見下圖:solaris的調度類有:TS(分時)它是進程和進程中所有內核線程的缺省調度類。他根據(jù)當前處理器的使用情況動態(tài)改變進程的優(yōu)先級。進程優(yōu)先級和時間量在每個時鐘滴答時,或在一個I/O引起睡眠后的喚醒期間,根據(jù)分時調度表計算。TS類的優(yōu)先級由0-59。IA(交互類,增強的TS類)它是由桌面視窗系統(tǒng)使用得調度類。用來提高目的視窗中線程的優(yōu)先級。SYS(系統(tǒng)類)內核線程使用的系統(tǒng)類。優(yōu)先級60-99RT(實時類)用于實現(xiàn)固定的優(yōu)先級、固定的時間量調度。優(yōu)先級100-1595. 當使用vfork()創(chuàng)建的新進程(沒有調用exec或exec不成功)要退出時,我們一般調用_exit()函數(shù),為什么?v f o r k 用于創(chuàng)建一個新進程,而該新進程的目的是e x e c 一個新程序。v f o r k 與f o r k 一樣都創(chuàng)建一個子進程,但是它并不將父進程的地址空間完全復制到子進程中,因為子進程會立即調用e x e c (或e x i t ),不過在子進程調用e x e c 或e x i t 之前,它在父進程的空間中運行。v f o r k 保證子進程先運行,在它調用e x e c 或e x i t 之后父進程才可能被調度運行。e x i t 和_ e x i t 函數(shù)用于正常終止一個程序:_ e x i t 立即進入內核,e x i t 則先執(zhí)行一些清除處理(包括調用執(zhí)行各終止處理程序,關閉所有標準I / O 流等),然后進入內核。_ e x i t 并不執(zhí)行標準I / O 緩存的刷新操作。如果用e x i t 而不是_ e x i t ,它刷新開關閉了所有標準I / O 流,這包括標準輸出。雖然這是由子進程執(zhí)行的,但卻是在父進程的地址空間中進行的,所以所有受到影響的標準I/O FILE 對象都是在父進程中的。6. 什么是“zombie”進程?在我們的程序中如何防止“zombie”進程?(試說出其中的三種方法)一個已經終止、但是其父進程尚未對其進行善后處理(獲取終止子進程的有關信息、釋放它仍占用的資源)的進程被稱為僵死進程(z o m b i e )。避免z o m b i e 的方法:(1)在S V R 4 中,如果調用s i g n a l 或s i g s e t 將S I G C H L D 的配置設置為忽略,則不會產生僵死子進程。另外,使用S V R 4 版的s i g a c t i o n ,則可設置S A _ N O C L D WA I T 標志(見表1 0 5 )以避免子進程僵死。(10.7)(2)調用f o r k兩次。程序8 5 實現(xiàn)了這一點。(3)用waitpid等待子進程返回.7. 以下代碼是不可靠信號處理的經典例子之一,試說明其中的問題(包括細節(jié)):8. 在信號(Signal)處理中,我們必須注意兩個重要的問題:可重啟動的系統(tǒng)調用和可重入函數(shù)。試說明以下兩個問題:a) 在Solaris中如何設置可重啟動的系統(tǒng)調用標志(提示:使用sigaction)。b) 什么是異步事件安全(Asyn-signal safe)函數(shù)?舉例說明異步事件不安全的函數(shù)(即一般在信號處理程序中不能調用的函數(shù))。(例外,提醒大家:在信號處理程序中注意保存errono)。9. 在使用Pthread時,典型的代碼如下:pthread_attr_init( /* initialize attr with default attributes */pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );pthread_create( &tid, &attr, start_func, arg );說明以上代碼中的PTHREAD_SCOPE_SYSTEM所代表的含義。10. 在Solaris中,用于線程間同步的機制主要包括:POSIX互斥鎖(Mutex Lock)、POSIX讀寫鎖(read-write lock)、POSIX信號量(semaphore)和POSIX條件變量(condition variable)。試簡要說明以上幾種同步機制的主要用途和區(qū)別。11. 在Solaris中,POSIX互斥鎖主要用于線程間同步。說明POSIX互斥鎖用于進程間同步時的主要步驟。(提示:使用系統(tǒng)調用mmap and ftruncate, 注意cleanup)。 互斥鎖互斥鎖(mutex)使得某一確定時刻只有一個線程可以訪問保護中的數(shù)據(jù)。 讀/寫鎖采用讀寫鎖,允許多個線程同時讀訪問共享數(shù)據(jù)區(qū),但是只能有一個線程寫訪問共享數(shù)據(jù)區(qū)。絕大多數(shù)設備驅動程序不使用讀寫鎖。這種鎖比互斥鎖慢,僅當經常出現(xiàn)多個線程需要同時讀訪問共享數(shù)據(jù)而同時較少有寫訪問時,才采用讀寫鎖,互斥鎖此時可能導致寫訪問延遲。參看rwlock(9F)了解更多信息。 信號燈信號燈也是設備驅動程序編寫中一種可選的線程同步機制,參看semaphore(9F)了解更多細節(jié)。 線程同步除了需要保護共享數(shù)據(jù)區(qū)外,驅動程序經常需要保持多線程同步執(zhí)行。 條件變量條件變量是線程同步的標準形式,與互斥鎖配合使用?;コ怄i用于確保檢查條件變量時是原子的,如果被檢查的條件變量無變化則線程阻塞,等待條件變量變化信號的喚醒。必須調用cv_init(9F)初始化條件變量,調用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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度裝配式建筑裝修材料采購合同
- 2025年度集裝箱租賃與建筑工地臨建解決方案合同
- 二零二五年度公司施工隊老舊小區(qū)改造施工合同
- 國際電影節(jié)展覽項目組織與運營協(xié)議
- 2025年新春年會活動抽獎與互動設計合同
- 2025年度魚塘承包及漁業(yè)資源保護合同
- 藥店員工合同協(xié)議書(2025年度)-藥店員工福利與員工關系管理
- 二零二五年度入職員工保密合同-人工智能倫理與保密協(xié)議
- 二零二五年度美容美發(fā)店員工入股企業(yè)文化合同匯編
- 2025年度未來社區(qū)車庫使用權轉讓及智慧城市建設合同
- 湖北省宜昌市宜都市七年級(下)期末語文試卷(含解析)
- 超聲藥物透入治療
- 國家公務員考試準考證模板
- 西北大學本科學生課程成績評分轉換標準
- 固定資產盤點管理規(guī)定完整版
- 江蘇揚州市梅嶺小學二年級數(shù)學下冊期末復習卷(一)及答案
- 旅游客源地旅游需求與預測課件
- 專升本英語閱讀理解練習
- 安徽大學計算機考研復試題
- 高考作文答題卡(作文)
- 《城市規(guī)劃設計計費指導意見》2017修訂稿
評論
0/150
提交評論