1. 程式人生 > 實用技巧 >2019-2020-1 20181329 《資訊安全系統設計基礎》第七週學習總結

2019-2020-1 20181329 《資訊安全系統設計基礎》第七週學習總結

教材學習內容總結

一、異常

1、異常是異常控制流的一種形式,它一部分由硬體實現,一部分由作業系統實現。異常是控制流中的突變,用來響應處理器狀態中的某些變化。

2、異常處理程式完成後會發生的情況:

1)處理程式將控制返回給事件發生時正在執行的指令

2)處理程式將控制返回給如果沒有發生異常將會執行的下一條指令

3)處理程式終止被中斷的程式

3、異常分為四類:中斷、陷阱、故障、終止

4、C程式用syscall函式可以直接呼叫任何系統呼叫。在x86-64系統上,系統呼叫是通過一條稱為syscall的陷阱指令來提供的。

5、syscalls n指令允許使用者對核心服務受控訪問,即使用者請求服務n。執行syscalls會導致異常處理程式的陷阱。

二、程序

1、程序的經典定義:一個執行中程式的例項

2、一個邏輯流的執行在時間上與另一個流重疊,稱為併發流。多個流併發地執行的一般現象被稱為 併發 ,一個程序和其他程序輪流執行的概念稱為 多工 ,一個程序執行它的控制流的一部分的每一時間段叫做 時間片 ,多工也叫做 時間分片

3、程序總是處於下面三種狀態之一:執行、停止、終止。

4、併發流:兩個流在時間上重疊,即使它們是執行在同一個處理器上;

並行流:是併發流的一個真子集,如果兩個流併發地執行在 不同的處理器核或者計算機上。

5、排程是由核心中稱為排程器的程式碼處理的。在核心排程了一個新的程序執行後,它就搶佔當前程序,並使用一種稱為上下文切換的機制來將控制轉移到新的程序。

1) 儲存當前程序的上下文

2) 恢復某個先前被搶佔的程序被儲存的上下文

3) 將控制傳遞給這個新恢復的程序。

三、程序建立和控制的系統呼叫及函式使用

1、fork

使用 man fork 檢視幫助:需要包含的標頭檔案是#include <unistd.h>。

執行老師的程式碼 ,結果如下:

2、exec

事實上,在這6個函式中真正的系統呼叫只有execve,其他5個都是庫函式,他們最終都會呼叫execve這個系統呼叫。

執行老師給的程式碼,如下:

3、wait

呼叫wait(&status)等價於呼叫waitpid(-1,&status,0)。

執行老師給的程式碼,如下:

4、getpid,getppid

每個程序都有一個唯一的正數(非零)程序ID(PID).getpid函式返回呼叫程序的PID。getppid函式返回它的父程序的PID(建立呼叫程序的程序)。getpid和getppid函式返回一個型別為pid_t的整數值,在Linux系統上它在types.h中被定義為int。

5、exit

從程式設計師的角度,我們可以認為程序總是處於下面三種狀態之一:執行、停止、終止。

程序會因為三種原因終止:1.收到一個訊號,該訊號的預設行為是終止程序,2.從主程式返回,3.呼叫exit函式。

exit函式以status退出狀態來終止程序。

四、陣列指標、指標陣列、函式指標、指標函式的區別

1、陣列指標是一個指標,該指標指向的是一個數組;

2、指標陣列是一個數組,陣列的元素儲存的是指標;

3、函式指標是一個指標,該指標指向一個函式;

4、指標函式是一個函式,該函式返回的是一個指標。

五、理解訊號機制:kill,alarm,signal,sigaction

1、用kill函式傳送訊號,程序通過呼叫kill函式傳送訊號給其他程序。

2、 用alarm函式傳送訊號,程序可以通過呼叫alarm函式向他自己傳送SIGALRM訊號。

3、signal

教材學習中的問題和解決過程

1、在使用exec函式族時,一定要加上錯誤判斷語句。因為exec很容易執行失敗,其中最常見的原因有:

1) 找不到檔案或路徑,此時errno被設定為ENOENT。

2) 陣列argv和envp忘記用NULL結束,此時errno被設定為EFAULT。

3) 沒有對用可執行檔案的執行許可權,此時errno被設定為EACCES。

上週考試錯題總結

關於open(2),下面說法正確的是( )
:
A . flag 引數中O_RDONLY,O_WRONLY,O_RDWR至少要有一個

B . O_RDONLY|O_WRONLY == O_RDWR

C . fd=open("foo.txt",O_WRONLY|O_APPEND,0),呼叫write(fd,buff,n)寫入foo.txt的資料不會破壞已有資料。

D . fd=open("foo.txt",O_WRONLY|O_APPEND,0644),必將導致其他人不能寫foo.txt

錯誤答案:AB 正確答案:AC

解析:
umask是chmod配套的,總共為4位(gid/uid,屬主,組權,其它使用者的許可權),不過通常用到的是後3個,例如你用chmod 755 file(此時這檔案的許可權是屬主讀(4)+寫(2)+執行(1),同組的和其它使用者有讀寫許可權),預設情況下的umask值是022(可以用umask命令檢視),此時你建立的檔案預設許可權是644(6-0,6-2,6-2),建立的目錄的預設許可權是755(7-0,7-2,7-2),可以用ls -l驗證一下哦 現在應該知道umask的用途了吧,它是為了控制預設許可權,不要使預設的檔案和目錄具有全權而設的

Linux中下列概念中可以用Unix I/O處理的是()
:
A . 普通檔案

B . 裝置檔案

C . 目錄

D . 套接字

錯誤答案:ABC 正確答案:ABCD

解析:

套接字也是可以用Unix I/O處理的。