Linux中的幾個問題

明天期末考試,就把往年試卷上的敘述題總結一下:

1.   如果一個設置用戶ID程序未執行任何改變進程的實際用戶ID和有效用戶ID的系統調用,那麼運行該程序的進程,它的實際用戶ID和有效用戶ID各是什麼?

答: 實際用戶ID在登錄時取自口令文件中的登錄項,如果沒有執行任何改變實際用戶ID和有效用戶ID的調用,那麼有效用戶ID也就是實際用戶ID。

 

2.   如果使用命令

            man  -SX  kill

     查閱系統調用kill的聯機文檔,則命令中“X”代表的實際值是什麼?

答:對應於Section的部分編號,一共有8個部分:

1 表示用戶命令和守護進程。
2 表示系統調用和內核服務。
3 表示子例程。
4 表示特殊文件、設備驅動程序和硬件。
5 表示配置文件。
6 表示遊戲。
7 表示雜項命令。
8 表示管理命令和守護進程
 

 

3.   在讀寫磁盤文件時,每次使用系統調用read和write是否都意味着讀寫磁盤驅動器? 爲什麼?

 答:不是,因爲系統有緩衝,讀寫操作均與緩衝有關。

 

4.   在UNIX系統中,文件空洞是什麼意思?

答:文件空洞指當文件偏移量大於文件的長度時,對該文件的寫將加長文件,這樣便形成空洞。(P52) 

 

5.   在什麼情形下,產生的信號是未決的(signal pending)?

答:在信號產生和遞送之間的時間間隔內,稱信號是未決的。如果在產生信號時,調用進程正阻塞該信號而不能遞送,則產生的信號便是未決的。(P250,259) 

 

6.  早期的不可靠信號機制主要有哪些特點?

答:信號可能丟失,而且在執行臨界區代碼時,進程很難關閉所選擇的信號。(P243)                                       

 

7.  如何打開文件時使用了O_APPEND標誌,那麼能否在該文件的任意位置上讀寫?

答:不能,使用O_APPEND標誌每次寫時,都追加到文件尾端(P48)。

 

8.   如果進程P創建進程Q,進程Q創建進程R,那麼當進程Q在進程P和進程R之前結束,那麼進程R的父進程是誰? 進程R是否可能變成殭屍進程?

答:進程R的父進程是init進程,不會變成殭屍進程。(P179)

 

9.   程序員能否根據進程的實際用戶ID來判斷它們是否有訪問文件的相應權限(請簡要說明理由)?

答:不能,判斷是否有訪問文件的相應權限是根據用戶的有效用戶ID及其附加組ID,而與實際用戶ID無關。(P75) 

 

10.  爲什麼POSIX.1要求system函數阻塞SIGINT和SIGQUIT信號?

答:因爲由system執行的命令可能是交互式命令,以及因爲system的調用者在程序執行時放棄了控制,等待該執行程序的結束,所以system的調用者就不應接受這兩個終端產生的信號。

 

11.   設置-用戶-ID(suid)和保存的設置-用戶-ID(ssuid)是如何產生的?各自的意義是什麼?

 答:suid是爲了讓執行程序的用戶擁有文件所有者的權限而產生的,而ssuid是爲了解決運行該程序的權限與擁有改程序用戶的權限之間的切換。suid是爲了讓運行程序用戶與程序文件所有者一樣的權限運行程序,ssuid是爲了在設置用戶ID之前,保存程序的有效用戶,以備將來把有效用戶ID恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章