日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

学号20145209《信息安全系统设计基础》第11周学习总结

發布時間:2023/12/4 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学号20145209《信息安全系统设计基础》第11周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學號20145209《信息安全系統設計基礎》第11周學習總結

教材學習內容總結

教材學習內容總結
第八章 異常控制流
1、從給處理器加電開始,直到斷點為止,程序計數器假設一個值的序列
a0,a1,……,an-1
每個ak是某個相應的指令Ik的地址。每次從ak到ak+1的過渡稱為控制轉移。這樣的控制轉移序列叫做處理器的控制流。

2、異常控制流:現代系統通過使控制流發生突變來對這些情況作出反應。
8.1異常
1、異常是異常控制流的一種形式,它一部分是由硬件實現的,一部分是有操作系統實現的。

2、異常:控制流中的突變,用來響應處理器狀態中的某些變化。

3、在處理器中,狀態被編碼為不同的位和信號。狀態變化成為事件。

4、異常表:當處理器監測到有時間發生時,通過一張叫做異常表的跳轉表,進行一個間接過程調用,到一個專門設計用來處理這類事件的操作系統子程序(異常處理程序)。

5、當異常處理程序完成處理后,根據引起異常的事件的類型,會發生以下三種情況的一種:

(1)處理程序將控制返回給當前指令Icurr,即當事件發生時正在執行的指令。
(2)處理程序將控制返回給Inext,即如果沒有發生異常將會執行的下一條指令。
(3)處理程序終止被中斷的程序。
8.1.1 異常處理
1、系統中可能的每種類型的異常都分配了一個唯一的非負整數的異常號。

異常號的分配:

(1)處理器的設計者:被除零、缺頁、存儲器訪問違例、斷點以及算數溢出。
(2)操作系統內核的設計者分配的:系統調用和來自意外不I/O設備的信號。
2異常號:到異常表中的索引

異常表基址寄存器:異常表的起始地址存放的位置。
3、異常與過程調用的異同:

(1)過程調用時,在跳轉到處理器之前,處理器將返回地址壓入棧中。然而,根據異常的類型,返回地址要么是當前指令,要么是下一條指令。
(2)處理器把一些額外的處理器狀態壓入棧里,在處理程序返回時,重新開始被中斷的程序會需要這些狀態。
(3)如果控制從一個用戶程序轉移到內核,那么所有這些項目都被壓到內核棧中,而不是壓到用戶棧中。
(4)異常處理程序運行在內核模式下,意味著它們對所有的系統資源都有完全的訪問權限。
8.1.2 異常的類別
1、異常的分類:中斷、陷阱、故障和終止。

2、中斷:異步發生,是來自處理器外部的I/O設備的信號的結果。

(1)硬件異常中斷處理程序通常稱為中斷處理程序。
(2)異步異常是有處理器外部的I/O設備中的時間產生的,同步異常是執行一條指令的直接產物。
(3)陷阱、故障、終止時同步發生的,是執行當前指令的結果,我們把這類指令叫做故障指令。
3、陷阱和系統調用

(1)陷阱最重要的用途是在用戶程序和內核之間提供一個像過程一樣的接口,叫做系統調用。
(2)普通的函數運行在用戶模式中,用戶模式限制了函數可以執行的指令的類型,而且它們只能訪問與調用函數相同的棧。系統調用運行在內核模式中,內核模式允許系統調用執行指令,并訪問定義在內核中的棧。
4、故障:是由錯誤情況引起的。

例如:abort例程會終止引起故障的應用程序。 根據故障是否能夠被修復,故障處理程序要么重新執行引起故障的指令,要么終止。
例如:缺頁故障。
5、終止:是不可恢復的致命錯誤造成的結果,通常是一些硬件錯誤。終止處理程序從不將控制返回給應用程序。

8.2 進程
1、異常是允許操作系統提供進程的概念所需要的基本構造塊。

進程:一個執行中的程序的實例。
上下文是由程序正確運行所需要的狀態組成的,這個狀態包括存放在存儲器中的程序的代碼和數據,它的棧、通用目的寄存器的內容、程序計數器、環境變量以及打開文件描述符的集合。
2、進程提供給應用程序的關鍵抽象:

一個獨立的邏輯控制流,獨占地使用處理器;
一個私有的地址空間,獨占地使用存儲器系統。
8.2.1 邏輯控制流
1、程序計數器:唯一的對應于包含在程序的可執行目標文件中的指令,或者是包含在運行時動態鏈接到程序的共享對象中的指令。這個PC值的序列叫做邏輯控制流,簡稱邏輯流。

8.2.2 并發流
1、并發流:一個邏輯流的執行在時間上與另一個流重疊。

并發:多個流并發地執行的一般現象。
多任務:一個進程和其他進程輪流運行的概念。
時間片:一個進程執行它的控制流的一部分的每一時間段。
多任務也叫時間分片。

2、并行流:如果兩個流并發的運行在不同的處理器核或者計算機上。

8.3 系統調用錯誤處理
錯誤處理包裝函數:包裝函數調用基本函數,檢查錯誤,如果有任何問題就終止。

8.4 進程控制
8.4.1 獲取進程ID
1、每個進程都有一個唯一的正數的進程ID。
2、getpid函數返回調用進程的PID,getppid函數返回它的父進程的PID。上面兩個函數返回一個同類型為pid_t的整數值,在linux系統中,它在types.h中被定義為int。

8.4.2 創建和終止進程
1、進程總處于三種狀態

(1)運行:進程要么在CPU上執行,要么在等待被執行且最終會被內核調度。
(2)停止:程序的執行被掛起,,且不會被調度。
(3)終止:進程用永遠停止了。
終止原因:

(1)收到一個信號,默認行為是終止進程
(2)從主進程返回
(3)調用exit函數
2、父進程通過調用fork函數創建一個新的運行的子進程。

3、子進程和父進程的異同:

異:有不同的PID
同:用戶級虛擬地址空間,包括:文本、數據和bss段、堆以及用戶棧。任何打開文件描述符,子進程可以讀寫父進程中打開的任何文件。
4、fork函數: 因為父進程的PID總是非零的,返回值就提供一個明確的方法來分辨程序是在父進程還是在子進程中執行。

fork函數的特點:

(1)調用一次,返回兩次
(2)并發執行
(3)相同的但是獨立的地址空間
(4)共享文件
8.4.3 回收子進程
1、當父進程回收已終止的子進程時,內核將子進程的退出狀態傳遞給父進程,然后拋棄已終止的進程。
一個終止了但還未被回收的進程稱為僵死進程。

2、一個進程可以通過調用waitpid函數來等待它的子進程終止或者停止。

include <sys/types.h>
include <sys/wait.h>
pid_t waitpid(pid_t pid,int *status,int options);
//返回:若成功,返回子進程的PID;若WNOHANG,返回0;若其他錯誤,返回-1。
默認地,當option=0時,waitpid掛起調用進程的執行,直到它的等待集合中的一個子進程終止。

3、判定等待集合的成員

有參數pid來確定的:

(1)pid>0:等待集合是一個單獨的子進程,進程ID等于pid。
(2)pid=-1:等待結合就是由父進程所有的子進程組成的。
4、修改默認行為

通過options設置:

(1)WNOHANG:默認行為是掛起調用進程。
(2)WUNTRACED:默認行為是只返回已終止的子進程。
(3)WNOHANG|WUNTRACED:立即返回,如果等待集合中沒有任何子進程被停止或者已終止,那么返回值為0,或者返回值等于那個被停止或者已經終止的子進程的PID。
5、檢查已回收子進程的退出狀態

wait.h頭文件定義了解釋status參數的幾個宏:

(1)WIFEXITED:如果子進程通過調用exit或者一個返回正常終止,就返回真;
(2)WEXITSTATUS:返回一個正常終止的子進程的退出狀態。只有在WIFEXITED返回真時,才會定義這個狀態。
6、錯誤條件

(1)若調用進程沒有子進程,那么waitpid返回-1,并且設置errno為ECHILD;
(2)若waitpid函數被一個信號中斷,那么返回-1,并設置errno為EINTR
7、wait函數

include <sys/types.h>
include <sys/wait.h>
pid_t wait(int *status);
//返回:若成功,返回子進程的PID;若錯誤,返回-1。
調用wait(&status)等價于調用waitpid(-1.&status,0)

8.4.4 讓進程休眠

1、sleep函數:將進程掛起一段指定的時間

include
unsigned int sleep(unsigned int secs);
//返回:還要休眠的秒數
如果請求的時間量已經到了,返回0,否則返回還剩下的要休眠的秒數。
2、pause函數:讓調用函數休眠,直到該進程收到一個信號。

include
int pause(void);
//返回:總是-1
8.4.5 加載并運行程序
1、execve函數:在當前進程的上下文中加載并運行一個新程序。

include
int execve(const char filename,const char argv[],const char *envp[]);
//返回:若成功,則不返回,若錯誤,返回-1
filename:可執行目標文件
argv:帶參數列表
envp:環境變量列表

特點:execve調用一次從不返回

2、getenv函數:在環境數組中搜素字符串“name =VALUE”,若找到了,就返回一個指向value的指針,否則它就返回NULL。

include
char getenv(const char name);
//返回:存在,返回指向name的指針,若無匹配的,為NULL
3、注意:

execve函數在當前進程的上下文中加載并運行一個新的進程。它會覆蓋當前進程的地址空間,并沒有創建一個新的進程,新的進程仍然有相同的PID,并且繼承了調用execve函數時已打開的所有文件描述符。
8.4.6 利用fork和execve運行程序
1、外殼是一個交互型的應用級程序,它代表用戶運行其他程序。

2、外殼執行一系統的讀/求值步驟,然后終止。讀步驟讀取來自用戶的一個命令行,求值步驟解釋命令行,并代表用戶運行程序。

3、eval函數:對外殼命令行求值

4、parseline函數:解析外殼的一個輸入

8.5 信號
底層的硬件異常是由內核異常處理程序處理的,正常情況下,對用戶進程而言是不可見的。
其他信號對應于內核或者其他用戶進程中較高層的軟件事件。

8.5.1 信號術語
1、發送信號的兩個不同步驟:

(1)發送信號:內核通過更新目的進程上下文中的某個狀態,發送(遞送)一個信號給目的進程。
(2)接收信號:信號處理程序捕獲信號的基本思想。
發送信號的兩個原因:

(1)內核監測到一個系統事件,比如被零除錯誤或者子進程終止。
(2)一個進程調用了kill函數,顯式地要求內核發送一個信號給目的進程。一個進程可以發送信號給它自己。

2、待處理信號:一個只發出而沒有被接收的信號

一個進程可以有選擇性地阻塞接收某種信號。
待處理信號不會被接收,直到進程取消對這種信號的阻塞。
3、一個待處理信號最多只能被接受一次,pending位向量:維護著待處理信號集合,blocked向量:維護著被阻塞的信號集合。

學習進度條

代碼行數(新增/累積)博客量(新增/累積)學習時間(新增/累積)重要成長
目標5000行30篇400小時
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90

參考資料

  • 《深入理解計算機系統V2》學習指導
  • ...

轉載于:https://www.cnblogs.com/liuyiyang/p/6107405.html

總結

以上是生活随笔為你收集整理的学号20145209《信息安全系统设计基础》第11周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。