2018-2019-1 20165204 《資訊安全系統設計基礎》第七週學習總結
2018-2019-1 20165204 《資訊安全系統設計基礎》第七週學習總結
異常
- 異常是異常控制流的一種形式,它一部分由硬體實現,一部分由作業系統實現。異常是控制流中的突變,用來響應處理器狀態中的某些變化。
- 異常的類別
程序和併發
程序:程序是一個具有一定獨立功能的程式關於某個資料集合的一次執行活動。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。
併發:在單核 CPU 系統中,系統排程在某一時刻只能讓一個程序執行,雖然這種排程機制有多種形式(大多數是時間片輪巡為主),但無論如何,要通過不斷切換需要執行的程序讓其執行的方式叫併發
程序建立和控制的系統呼叫及函式使用
fork
- 函式作用:建立一個子程序
函式形式:pid_tfork(void);
pid_t vfork(void);(使用vfork創子程序時,不會程序父程序的上下文)返回值:
[返回值=-1]子程序建立失敗
[返回值=0]子程序建立成功
[返回值>0]對父程序返回子程序PID
exit
函式作用:終止發出呼叫的程序
形式:void exit(int status);
- 說明
- exit返回資訊可由wait系統函式獲得
- 如果父程序先退出子程序的關係被轉到init程序下
wait
函式作用:使父程序與子程序同步,父程序呼叫後。進入睡眠狀態,直到子程序結束或者父程序在被其他程序終止。
形式:pid_twait(int *status)
pid_t waitpid(pid_t pid ,int *status,int option)
引數解釋:
status:exit是設定的程式碼
pid:程序號
option: WNOHANG|WUNTRACED
WNOHANG:,即使沒有子程序退出,它也會立即返回
WUNTRACED:子程序進入暫停則馬上返回,但結束狀態不予以理會.
返回值:如果成功等待子程序結束,則返回子程序PID。後者為-1
waitpid
- pid>0時,只等待程序ID等於pid的子程序,不管其它已經有多少子程序執行結束退出了,只要指定的子程序還沒有結束,waitpid就會一直等下去.
- pid=-1時,等待任何一個子程序退出,沒有任何限制,此時waitpid和wait的作用一模一樣.
- pid=0時,等待同一個程序組中的任何子程序,如果子程序已經加入了別的程序組,waitpid不會對它做任何理睬.
- pid<-1時,等待一個指定程序組中的任何子程序,這個程序組的ID等於pid的絕對值.
exec
函式作用:以新程序代替原有程序,但PID保持不變
形式: int execl(const char * path, const chararg, ...);
int execlp(const char file, const chararg, ...);
int execle(const char path, const chararg, ..., char const envp[]);
int execv(const char * path, char constargv[]);
int execvp(const char file, char constargv[]);
int execve(const char path, char constargv[], char const envp[]);