天天看點

資訊安全系統設計基礎第十一周學習總結

第八章 異常控制流

ECF:(異常控制流)突變集合

平滑:順序結構的指令

突變:跳轉、調用、和傳回等指令,不在同一棧

基本機制:

ECF是作業系統用來實作I/O、程序和虛拟存器的基本機制   ECF是計算機系統中實作并發的基本機制

異常

控制流的突變

異常号:

系統為每種類型的異常配置設定的唯一的非負整數

異常表:

系統啟動時作業系統就會初始化一張條轉變,使得條目k包含異常k的處理程式的位址

用法:

從異常号到異常表的索引

類别:

中斷:來自處理器外部的I/O裝置的信号的結果,傳回下一條指令

陷阱:陷阱是有意的異常,系統調用

故障:由錯誤狀況引起,可能能夠被故障處理程式修正

終止:通常是一些硬體錯誤

彙編常用調用方式:call

通過CALL後面參數的指派實作不同類别的中斷或陷阱

中斷:call 21H(标準輸出,引用的是IOS)

陷阱:call 函數名

程序

程式運作在程序上下文中

程序提供給應用程式的關鍵抽象:

一個獨立的邏輯控制流:獨占的使用處理器

一個私有的位址空間:獨占的使用存儲器系統

程序利用CPU方式:SFCF,SRT,RR,和多及排程(常用)

多及排程特點:

以時間片輪轉進行程序安排

并發流

同時運作多個流

并行:兩個流并發的運作在不同的處理機核或者計算機上

控制權限位:差別使用者模式和核心模式

程序控制

每個程序都有一個唯一的正數程序ID(PID)

pid_t getpid(void); 傳回調用程序的PID

pid_t getppid(void); 傳回父程序的PID(建立調用程序的程序)

fork:

格式:pid_t fork(void)

調用一次,傳回兩次

exit:

格式:void exit(int status);

waitpid:

格式:pid_t waitpid(pid_t pid, int *status, int options);

成功傳回子程序PID,如果WNOHANG,傳回0,其他錯誤傳回-1.

wait:

wait(&status)等價于waitpid(-1,&status,0).

pid_t wait(int *status);

sleep:

unsigned int sleep(unsigned int secs);

pause

int pause(void);

execve:

int execve(const char *filename, const char *argv[], const char *envp[]);

fork函數和execve函數的差別

fork函數是建立新的子程序,是父程序的複制體,在新的子程序中運作相同的程式,父程序和子程序有相同的檔案表,但是不同的PID

execve函數在目前程序的上下文中加載并運作一個新的程式,會覆寫目前程序的位址空間,但是沒有建立一個新程序,有相同的PID,繼承檔案描述符