信息安全系統設計基礎 期中總結

知識點總結正則表達式

第一週編程

Man命令man是manul的縮寫,咱們能夠經過man man來查看man的幫助,以下圖: man有一個-k 選項用起來很是好,這個選項讓你學習命令,編程時有了一個搜索引擎,能夠觸類旁通。 咱們經過一個例子來講明,好比數據結構中學過排序(sort),我不知道C語言中有沒有完成這個功能的函數,能夠經過「man -k sort」來搜索,由於是找C庫函數,咱們關注帶3的,qsort好像是個好選項。vim

Cheat命令:cheat是做弊,小抄的意思。cheat命令是在GNU通用公共許可證下,爲Linux命令行用戶發行的交互式備忘單應用程序。它提供顯示Linux命令使用案例,包括該命令全部的選項和簡短但尚可理解的功能。數組

l  find查找一個文件在系統中的什麼位置,locate是神速版本的find(Windows下有個Everything工具和locate相似).grep 能夠對文件全文檢索,支持正則表達式,正則表達式也是一個重要的元知識whereis,which告訴你使用的命令工具裝在什麼地方。緩存

Linux基礎:1)重要快捷鍵:安全

l  [tab]補全命令,補全目錄,補全命令參數等等服務器

l  [Ctrl+c]強行終止當前程序,不退出終端數據結構

l  [Ctrl+d]  鍵盤輸入結束或退出終端app

l  [Ctrl+s]  暫定當前程序,暫停後按下任意鍵恢復運行異步

l  [Ctrl+z]  將當前程序放到後臺運行,恢復到前臺爲命令fg

l  [Ctrl+a]  將光標移至輸入行頭,至關於Home鍵

l  [Ctrl+e]  將光標移至輸入行末,至關於End鍵

l  [Ctrl+k]  刪除從光標所在位置到行末

l  [Alt+Backspace]  向前刪除一個單詞

l  [Shift+PgUp] 將終端顯示向上滾動

l  [Shift+PgDn] 將終端顯示向下滾動

2)          歷史輸入命令

l  ↑能夠恢復你輸入過的指令

3)          通配符

l  通配符是一種特殊語句,主要有星號(*)和問號(?),用來對對字符串進行模糊匹配(好比文件名,參數名)。當查找文件夾時,可使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,經常使用通配符代替一個或多個真正的字符。

grep命令的經常使用參數:

參數   說明

-b  將二進制文件做爲文原本進行匹配

-c  統計以模式匹配的數目

-i  忽略大小寫

-n  顯示匹配文本所在行的行號

-v  反選,輸出不匹配行的內容

-r  遞歸匹配查找

-A n      n爲正整數,表示after的意思,除了列出匹配行以外,還列出後面的n行

-B n  n爲正整數,表示before的意思,除了列出匹配行以外,還列出前面的n行

--color=auto  將輸出中的匹配項設置爲自動顏色顯示

 

第二週

Vim編輯器

1.普通模式

Vim的普通模式用的編輯器命令,好比移動光標,刪除文本等等。這也是Vim啓動後的默認模式,而不是大多數編輯器的插入模式。

普通模式命令每每須要一個操做符結尾。

普通模式進入插入模式的方法:a鍵(append/追加)鍵或者i(insert/插入)鍵。

2.插入模式

在這個模式中,大多數按鍵都會向文本緩衝中插入文本。大多數新用戶但願文本編輯器編輯過程當中一直保持這個模式。

插入模式中回到普通模式:ESC鍵。

3.可視模式

與普通模式相似,但移動命令會擴大高亮的文本區域。高亮區域能夠是字符、行或者是一塊文本。當執行一個非移動命令時,命令會被執行到這塊高亮的區域上。

4.選擇模式

這個模式中,能夠用鼠標或者光標鍵高亮選擇文本。

若是輸入任何字符,Vim會用這個字符替換選擇的高亮文本塊,而且自動進入插入模式。

5.命令行模式

在命令行模式中能夠輸入會被解釋成並執行的文本。例如執行命令(:鍵),搜索(/和?鍵)或者過濾命令(!鍵)。

在命令執行以後,Vim返回到命令行模式以前的模式,一般是普通模式。

6.Ex模式(Ex mode)

這和命令行模式比較類似,在使用:visual命令離開Ex模式前,能夠一次執行多條命令。

編譯器GCC

1.安裝gcc的頭文件、庫文件

getsudo apt-install build-essential

安裝到usr/lib中,到usr/bin中(可執行文件),到usr/include中(頭文件)

2.GCC選項列表

(1)經常使用選項
c               只編譯不連接,生成目標文件.o-
S               只編譯不彙編,生成彙編代碼-
E               只進行預編譯,不作其餘處理-
g               在可執行程序中包含標準調試信息-
o file 將file文件指定爲輸出文件-
v               打印出編譯器內部編譯各過程的命令行信息和編譯器的版本-
I dir  在頭文件的搜索路徑列表中添加dir目錄-
(2)庫選項
static 進行靜態編譯,即連接靜態庫,禁止使用動態庫-
shared 1.能夠生成動態庫文件-
                 2.進行動態編譯,儘量的連接動態庫,沒有動態庫時纔會連接同名靜態庫
L dir  在庫文件的搜索路徑列表中添加dir目錄-
lname  連接稱爲libname.a或者libname.so的庫文件。-
                若是兩個庫文件都存在,根據編譯方式是static仍是shared進行連接
fPIC   生成使用相對地址的位置無關的目標代碼,-
(-fpic)而後一般使用gcc的-static選項從該pic目標文件生成動態庫文件。

3.編譯過程

EcE預處理:gcc –hello.–o hello.i;      gcc –調用cpp  生成中間文件
SS編 譯:gcc –hello.i –o hello.s;       gcc –調用ccl  翻譯成彙編文件
ccas匯 編:gcc –hello.s –o hello.o;       gcc -調用  翻譯成可重定位目標文件
鏈 接:gcc hello.o –o hello ;            gcc -o 調用ld** 建立可執行目標文件

-o後面是接的你給生成的文件指定的名字,若是不指定,則默認爲a.out

在命令行上運行這個可執行目標文件須要輸入它的名字:

a.out ./

爲何?

Window下,搜索一個東西會從當前目錄下,找不到去PATH環境變量中找;Linux下只從PATH環境變量中找,因此即便當 前目錄有,也要指出來; "."表示當前目錄,「./libvector.a」 表示用當前目錄下的libvector.a庫文件。 凡是不帶前綴的,都是PATH中有,但不安全。

因此其實這行代碼只是在輸入它的名字, ./ 表示當前目錄

外殼調用操做系統中一個叫加載器的函數,拷貝可執行文件p中的代碼和數據到存儲器,而後將控制轉移到這個程序的開頭。

技巧:前三步,GCC的參數連起來是「ESc」,相應輸入的文件的後綴是「iso」

調試工具gdb

使用GCC編譯時要加「-g」參數

GDB最基本的命令有:

programm(啓動GDB)gdb
l      查看所載入的文件
b      設斷點
binfo 查看斷點狀況
run開始運行程序
bt     打印函數調用堆棧
p      查看變量值
c      從當前斷點繼續運行到下一個斷點
n      單步運行(不進入)
s      單步運行(進入)
quit退出GDB

四種斷點:

1.行斷點
b[行數或函數名] <條件表達式>
2.函數斷點
b[函數名] <條件表達式>
3.條件斷點
bif[行數或函數名] <表達式>

4.臨時斷點

<條件表達式>tbreak [行數或函數名]
 
Make和Makefile

make工具最主要也是最基本的功能就是根據makefile文件中描述的源程序至今的相互關係來完成自動編譯、維護多個源文件工程

而makefile文件須要按某種語法進行編寫,文件中須要說明如何編譯各個源文件並連接生成可執行文件,要求定義源文件之間的依賴關係。

最終實現——自動化編譯

進入Makefile?

$ Makefilevim

1.Makefile 基本規則

Makefile的通常寫法:

一個Makefile文件主要含有一系列的規則,每條規則包含如下內容:

  • 須要由make工具建立的目標體,一般是可執行文件和目標文件,也能夠是要執行的動做,如‘clean’;
  • 要建立的目標體所依賴的文件,一般是編譯目標文件所須要的其餘文件。
  • 建立每一個目標體時須要運行的命令,這一行必須以製表符TAB開頭

 

第三週

l  第二章 信息的表示和處理

字長決定虛擬地址空間的最大大小。

字長爲w,虛擬地址的範圍爲1-(2^w-1)

w=32或64:也就是咱們一般所說的電腦是32位仍是64位。也能夠理解爲CPU一次處理數據的位數。

布爾代數

經常使用運算符號:

與: &                                                                       

或: |

非: ~

異或:^

邏輯運算

邏輯運算符

與:&&

或:||

非:!

左移<<

x<>
右移分爲邏輯右移算術右移

邏輯右移:

在左端補k個0,多用於無符號數移位運算

  • 算術右移:

在左端補k個最高有效位的值,多用於有符號數移位運算。

 

第四周

l  第三章 程序的機器級表示

機器級編程的兩種抽象

(1)指令集結構ISA

是機器級程序的格式和行爲,定義了處理器狀態、指令的格式,以及每條指令對狀態的影響。

(2)機器級程序使用的存儲器地址是虛擬地址

看上去是一個很是大的字節數組,其實是將多個硬件存儲器和操做系統軟件組合起來。

操做數的三種類型

  1. 當即數
  2. 寄存器
  3. 存儲器

2.結果存放的兩種可能

  1. 寄存器中
  2. 存儲器中

3.尋址方式

1)當即數尋址方式

格式:$後加用標準c表示法表示的整數,如$0xAFF

2)寄存器尋址方式

如%eax,與彙編中學過的AX寄存器類比。

3)存儲器尋址方式

  • · 直接尋址方式
  • · 寄存器間接尋址方式
  • · 寄存器相對尋址方式
  • · 基址變址尋址方式
  • · 相對基址變址尋址方式

1.do-while循環

通用形式:

do
        body-statement
whiletest       (-expr);

循環體body-statement至少執行一次。

能夠翻譯成:

loop:
        body-statement
        t = test-expr;
if       (t)
gotoloop                ;

即先執行循環體語句,再執行判斷。

2.while循環

通用形式:

whiletest(-expr)
        body-statement

GCC的方法是,使用條件分支,表示省略循環體的第一次執行:

iftest(!-expr)
done        goto;
do
                 body-statement
whiletest                (-expr);
done:

接下來:

testt =-expr;
if(!t)
done        goto:
loop:
        body-statement
test        t =-expr;
if       (t)
                 goto loop;
done:

歸根究底,仍是要把循環改爲do-while的樣子,而後用goto翻譯。

棧幀結構

棧用來傳遞參數、存儲返回信息、保存寄存器,以及本地存儲。

1.棧幀

爲單個過程分配的那部分棧稱爲棧幀,通用結構見149頁

因此本質上棧幀仍是棧

2.兩個指針

最頂端的棧幀以兩個指針界定:

寄存器%ebp-幀指針

寄存器%esp-棧指針

棧指針可移動,因此信息訪問多相對於幀指針。

3.調用的過程

課本150頁過程P調用過程Q的示例。

調用者的幀應該在被調用者的下面,而且調用者返回地址是它的棧幀末尾,這樣能夠保證被調用者執行完畢全都出棧後,程序可以繼續向下執行。

關於被調用者Q用棧的幾個用處:

1.保存不能存放在寄存器中的局部變量。

當要對一個局部變量使用地址操做符&的時候,就必需要爲它生成一個地址,因此要入棧。這個用法!之前沒見過!

2.存放它調用的其餘過程的參數。

 

第五週

第四章處理器體系結構

Y86指令

Y86指令集基本上是IA32指令集的一個子集,只包括四字節整數操做,尋址方式比較少,操做也較少。

彙編碼錶示和字節編碼參見課本232頁。

指令的字節級編碼

每條指令須要1-6個字節不等,每條指令的第一個字節代表指令的類型

1.第一個字節

這個字節分爲兩個部分,每一個部分4位:

  • 高四位:代碼部分,值域爲0~0xB
  • 第四位:功能部分,功能值只有在一組相關指令共用一個代碼時纔有用。

Y86異常

1.狀態碼Stat的可能取值

Stat描述程序執行的整體狀態

1. AOK正常操做
2. HLT處理器執行halt指令
3. ADR遇到非法地址
4. INS遇到非法指令

2.出現異常時?

Y86——處理器中止運行指令。

.Y86和IA32的區別

1.Y86有時須要兩條指令來完成IA32一條指令就能完成的事
2.Y86沒有伸縮尋址模式

將處理組織成階段

(一)六個基本階段:

  • 取指
  • 譯碼
  • 執行
  • 訪存
  • 寫回
  • 更新PC

 

第六週

第六章存儲器層次結構

隨機訪問存儲器(RAM

RAM分類:

  • 靜態的SRAM-更快,更貴,做爲高速緩存存儲器,CPU片上或片下
  • 動態的DARM-做爲主存以及圖形系統的幀緩衝區

1.傳統的DRAM

1)超單元

  • 芯片中的單元位被分爲d個超單元,每一個超單元有w個DRAM單元組成,一個dxw的DRAM總共存儲了dw位信息。
  • 超單元被組織成一個r行c列的長方形,即rc=d。
  • 每一個超單元有形如(i, j)的地址,i表示行,j表示列。

2)信息的流入流出

信息經過引腳流入流出芯片,每一個引腳攜帶一個1的信號。

3)存儲控制器

這個電路能夠一次傳入或傳出w位。

加強的DRAM

  • 快頁模式-FPM DRAM容許對同一行連續的訪問能夠直接從行緩衝區獲得服務。(本來的DRAM對同一行的四條指令時,每條指令取完後都會丟棄,而後從新讀取。)
  • 擴展數據輸出-EDO DRAM容許單獨的CAS信號在時間上靠的更緊密一點。
  • 同步-SDRAM用與驅動存儲控制器相同的外部時鐘信號的上升沿來代替許多這樣的控制信號-比異步的更快。
  • 雙倍數據速率同步-DDR SDRAM經過使用兩個時鐘沿做爲控制信號,從而使DRAM的速度翻倍。分類:DDR(2位),DDR2(4位),DDR3(8位)
  • RDRAM
  • 視頻-VRAM用在圖形系統的幀緩存區中,思想相似FPM DRAM
  • 非易失性存儲器——ROM

RAM斷電丟失數據,是易失的

ROM是非易失的,統稱爲只讀存儲器

1)分類

  • PROM-可編程ROM,只能被編程一次
  • EPROM-可擦寫可編程ROM,可以被擦除和編寫的次數的數量級大概爲1000次
  • EEPROM,電子

可擦除PROM,可以被編程的次數的數量級在10的五次方。

  • 2)閃存FLASH

基於EEPROM,爲大量的電子設備提供快速而持久的非易失性存儲。

存在於:數碼相機、手機、音樂播放器、PDA、筆記本、臺式機、服務器計算機系統

3)固件

存儲在ROM設備中的程序一般被稱爲固件,當一個計算機系統通電之後,他會運行存儲在ROM中的固件。

5.訪問主存

1)總線

總線是一組並行的導線,能攜帶地址、數據和控制信號。

總線分類:

a.系統總線——鏈接CPUI/O

b.存儲器總線——鏈接I/O橋和主存

c.I/O總線(具體見6.1.2.4

I/O橋將系統總線的電子信號翻譯成存儲器總線的電子信號,也將系統總線和存儲器總線鏈接到I/O總線。

.磁盤容量——一個磁盤上能夠記錄的最大位數

1)影響因素:

  • 記錄密度-位/英寸
  • 磁道密度-道/英寸
  • 面密度-位/平方英寸

提升面密度便可提升容量。

計算公式:

 

3.磁盤操做

磁盤以扇區大小的塊來讀寫數據。

訪問時間的分類:

1)尋道時間

2)旋轉時間

3)傳送時間

局部性原理:

一個編寫良好的計算機程序,經常傾向於引用臨近於其餘最近引用過的數據項的數據項,或者最近引用過的數據項自己。

分類:

  • 時間局部性
  • 空間局部性

緩存

高速緩存:是一個小而快速的存儲設備,它做爲存儲在更大、更慢的設備中的數據對象的緩衝區域。

緩存:使用高速緩存的過程稱爲緩存。

數據老是以塊大小爲傳送單元在第k層與第k+1層之間來回拷貝。任一對相鄰的層次之間塊大小是固定的,可是其餘的層次對之間能夠有不一樣的塊大小。

通常來講:層越低,塊越大。

緩存命中

緩存不命中

.緩存不命中的種類

1)強制性不命中/冷不命中

2

)衝突不命中

3)容量不命中

編寫高速緩存友好的代碼

1.基本方法:

  • 讓最多見的狀況運行的快
  • 在每一個循環內部緩存不命中數量最小

2.重要問題:

  • 對局部變量的反覆引用是好的(時間局部性)
  • 步長爲1的引用模式是好的(空間局部性)

 

 

收穫總結

半個學期的學習,最大的收穫應該算是心態上的改變。想一想過去的兩年,學習上真的是混過來的,每一個期末考前突擊,而後拿個及格分心滿意足,什麼都沒學到。這個學期剛開學還想繼續以前的狀態,平時基本不花時間在學習上,可是又要完成老師佈置的任務,每到週末都會壓力很大。以後儘可能跟上老師的要求,天天花點時間學習,這樣作了一段時間,發現天天過的不會很空虛,也不會壓力很大。如今以爲確實天天應該把學習放在第一位。

說到收穫的知識,一開始幾周仍是沒有徹徹底底的完成學習任務,以後的也沒有學的特別清楚,此次的知識總結基本上是把閆佳歆同窗的博客學習了一遍。以後會把前面沒有作好的實驗補上,也多多複習以前的知識。

 

本身的不足

我以爲本身的不足仍是懶,懶得看書、懶得動手、懶得動腦子。就像老師說的,我遇到不會的字都不去查字典,由於我懶得查。但是這樣的心態對待學習,那就等於學不到東西。在學習上真是付出了多少,就獲得多少。說到改進,如今已經能愈來愈把心思用在學習上了,通過幾周的學習,發現若是靜下心,仍是能把書看進去,若是本身多研究一下,實驗仍是能作得出來的。平時不學習,也只不過是把時間浪費在了其餘地方,以此逃避學習,這樣的逃避沒有任何益處,與其這樣不如把時間用在學習上。還有就是我遇到問題,不能解決的老是喜歡不了了之,之後會多向老師同窗請教。

 

課程建議和意見

    課程中我最喜歡的機制就是每週成績的公佈,這樣能知道本身的學習狀況,對教學質量的提升也有幫助。我不喜歡的地方就是咱們自學的比重那麼大,我更適合聽講來學習,但願以後的課程中老師能把內容講的全面、詳細一些。

 

 

參考資料:

閆佳歆同窗博客    http://www.cnblogs.com/20135202yjx/

實驗樓實驗指導:  https://www.shiyanlou.com/courses/413

相關文章
相關標籤/搜索