天天看點

20135304劉世鵬——資訊安全系統設計基礎第八周期中總結

資訊安全系統設計基礎期中總結

一、Linux基礎知識

1.重點需要掌握的指令:

  • man 指令
    • 1 Executable programs or shell commands(普通的Linux指令)
    • 2 System calls (系統調用,作業系統的提供的服務接口)
    • 3 Library calls (庫函數, C語言中的函數)
    • 4 Special files (指檔案的格式,比如passwd, 就會說明這個檔案中各個字段的含義)
    • 5 File formats and conventions eg /etc/passwd(配置檔案幫助)
    • 6 Games(給遊戲留的,由各個遊戲自己定義)
    • 7 Miscellaneous (給遊戲留的,由各個遊戲自己定義), e.g. man(7), groff(7)
    • 8 System administration commands (系統管理用的指令,這些指令隻能由root使用,如ifconfig)
    • 9 Kernel routines [Non standard]
  • man-k 指令
    • 多關鍵字查找 

      man -k key1| grep key2 | grep key3 | ...

  • cheat 指令

    當你不确定你所運作的指令,尤其是那些使用了許多選項的複雜指令時,你會怎麼做?在這種情況下,我們使用man pages來擷取幫助。還有一些其它的選擇可能包括像‘help’,‘whereis’和‘whatis’這樣的指令。但是所有的這些既有優點,也有缺點。

    - man pages來檢視選項和幫助的時候,裡面的描述    實在太冗長了,我們無法在短的時間裡了解它的意思 - ‘help’指令可能也不會給你期待的答案。 - ‘whereis’指令幾乎不給你任何資訊,除了安裝二    進制檔案的位置(有些時候可能是重要的) -  ‘whatis’指令給出一套很嚴格的答案,它除了說出    查詢指令的作用,并沒有什麼太大幫助。            
    直到在困難中解決問題前,我們已經使用了以上全部選項,但是現在來了一個互動式的備忘錄應用程式‘cheat’,它将在其餘的指令中脫穎而出。
  • 其他核心指令
    • find查找一個檔案在系統中的什麼位置,locate是神速版本的- find(Windows下有個Everything工具和locate類似)
    • grep 可以對檔案全文檢索,支援正規表達式,正規表達式也是一個重要的元知識

2.vim主要操作

  • h左移 j下行 k上行 l右移
  • 欲進入vim編輯器(從指令行提示符),輸入vim檔案名<回車>
  • 退出vim,放棄所有修改: :q! <回車>
  • 退出vim,儲存所有修改: :wq! <回車>
  • 正常模式删除字元:x
  • 正常模式插入文本:i
  • 按下回到正常模式
  • 欲從目前光标删除至單子、單詞末尾:dw
  • 欲從目前光标删除至目前行末尾:d$
  • 欲删除正行:dd
  • 正常模式下一個指令格式:[number] command object

    number - 指令執行的次數

    command - 要做的事情,比如d代表删除

    object - 代表要操作的對象,比如w代表單子、單詞,¥代表到行末。

  • 撤銷以前的操作:u
  • 撤銷在一行中所做的改動:U
  • 撤銷以前的撤銷指令,恢複以前的操作結果:CTRL-R
  • 重置已經删除的文本内容:p
  • 替換光标所在位置的字元:r
  • 替換目前光标到單詞末尾的内容:cw
  • 替換目前光标到行末的内容:c$
  • 更改指令的格式: [number] c object
  • 顯示目前光标所在位置和檔案狀态資訊:CTRL -g; Shift -G将

3.gcc編譯

預處理:gcc –E hello.c –o hello.i;gcc –E調用cpp 編 譯:gcc –S hello.i –o hello.s;gcc –S調用ccl 彙 編:gcc –c hello.s –o hello.o;gcc -c 調用as 鍊 接:gcc hello.o –o hello ;gcc -o 調用ld            

4.GDB調試

  • 1.啟動gdb的方法有以下幾種:   a)gdb program也就是執行檔案,一般在目前目錄下。

  b)gdb core 用gdb同時調試一個運作程式和core檔案,core是程式非法執行後,core dump後産生的檔案。

  c)gdb 如果程式是一個服務程式,那麼可以指定這個服務程式運作時的程序ID。

  • 2.設定斷點   

    (gdb) break func <-------------------- 設定斷點,在函數func()入口處。

   (gdb) info break <-------------------- 檢視斷點資訊。

   (gdb) r <--------------------- 運作程式,run指令簡寫

   (gdb) n <--------------------- 單條語句執行,next指令簡寫。

   (gdb) c <--------------------- 繼續運作程式, continue指令簡寫。

   (gdb) p I <--------------------- 列印變量i的值,print指令簡寫。

   (gdb) bt <--------------------- 檢視函數堆棧。

   (gdb) finish <--------------------- 退出函數。

   (gdb) c <--------------------- 繼續運作。

   (gdb) q <--------------------- 退出gdb。

  • 3.其他調試指令有:

    display 跟蹤變量值的改變 until 跳出循環 finish 跳出函數 help 幫助

5.Makefile

  • 定義宏的格式為:macroname = macrotext
  • 使用宏的格式為:$(macroname)
  • Makefile的一般寫法:
    • test(目标檔案): prog.o code.o(依賴檔案清單)
    • tab(至少一個tab的位置) gcc prog.o code.o -o test(指令)

第一章 計算機系統漫遊

1.資訊=位+上下文

系統中所有資訊都是由一串位表示的,區分不同資料對象唯一方法是讀到 這些資料對象時的上下文            

2.程式被翻譯成不同格式

編譯系統預處理器、編譯器、彙編器、連結器

第二章 資訊點表示和處理

1.資訊存儲

  • 進制
  • 位元組順序
  • 布爾代數
  • 整數表示
  • 補碼
  • 無符号數與有符号數轉換
  • 擴充數字的位表示

整數運算

  • 無符号運算
  • 補碼運算
  • 乘以常數

浮點數 标準:IEEE标準754

在float中,s、exp和frac字段分别為1位、k = 8 位和n = 23位,得到一個32位的表示;

在double中,s、exp和frac字段分别為1位、k = 11 位和n = 52位,得到一個64位的表示。

第三章程式的機器級表示

機器級程式設計的兩種抽象

  • (1)指令集結構ISA

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

  • (2)機器級程式使用的存儲器位址是虛拟位址

    看上去是一個非常大的位元組數組,實際上是将多個硬體存儲器和作業系統軟體組合起來。

操作數的三種類型

  • 立即數
  • 寄存器
  • 存儲器

2.結果存放的兩種可能

  • 寄存器中
  • 存儲器中 3.尋址方式
  • (1)立即數尋址方式

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

  • (2)寄存器尋址方式

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

  • (3)存儲器尋址方式
    • 直接尋址方式
    • 寄存器間接尋址方式
    • 寄存器相對尋址方式
    • 基址變址尋址方式
    • 相對基址變址尋址方式

do-while循環

通用形式:

do body-statement while(test-expr); 循環體body-statement至少執行一次。

可以翻譯成:

loop: body-statement t = test-expr; if(t) goto loop; 即先執行循環體語句,再執行判斷。

2.while循環

while (test-expr) body-statement GCC的方法是,使用條件分支,表示省略循環體的第一次執行:

if(!test-expr) goto done; do body-statement while(test-expr); done: 接下來:

t = test-expr; if(!t) goto done: loop: body-statement t = test-expr; if(t) goto loop; done: 歸根究底,還是要把循環改成do-while的樣子,然後用goto翻譯。

棧幀結構

棧用來傳遞參數、存儲傳回資訊、儲存寄存器,以及本地存儲。

1.棧幀

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

是以本質上棧幀還是棧。

2.兩個指針

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

寄存器%ebp-幀指針

寄存器%esp-棧指針

棧指針可移動,是以資訊通路多相對于幀指針。

3.調用的過程

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

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

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

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

當要對一個局部變量使用位址操作符&的時候,就必須要為它生成一個位址,是以要入棧。這個用法!以前沒見過!

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

第四章

1.Y86指令集體系結構

具體使用結合練習

異常     halt指令、非法指令、通路非法位址            

2.HCL硬體控制語言

數字系統

組合邏輯、存儲器元素、時針信号            

表達式

AND:&&     OR:||     NOT:!            

3.Y86的順序實作

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

第六章 存儲器層次結構

RAM随機通路存儲器

  • SRAM
    1.特點:  - a.不需要重新整理電路即能儲存它内部存儲的資料。  - b.內建度較低,需要很大的體積。  - c.存取快。  - d.抗幹擾。 -  2.應用:一般用來作為計算機中的高速緩沖存儲器             
  • DRAM
    1.特點:  - 1.每個位存儲為對電容的充電。  - 2.周期性的用讀出然後寫回的方式重新整理存儲器每個位。   2.應用:一般用來作為計算機中的高速緩沖存儲器             

磁盤存儲

DRAM晶片包裝在存儲器子產品中,它是查到主機闆的擴充槽中。常見的包裝包括168個引腳的雙列直插存儲器子產品,它以64位為塊傳送資料到存儲控制器和從存儲控制器傳出的資料,還包括72個引腳的單列直插存儲器子產品,它以32位為塊傳送資料。

存儲器層次結構

  • 存儲器層次結構的中心思想是:對于每個k,位于k層的更快更小的儲存設備作為位于(k+1)層的更大更慢的儲存設備的緩存。
  • 第(k+1)層的存儲器被劃分成連續的資料對象片,稱為塊;資料總是以塊大小為傳送單元在相鄰兩層之間來回拷貝的;在任何時刻,第k層的緩存包括第(k+1)層塊的一個子集的拷貝。
  • 緩存不命中的種類
    • 強制性不命中:一個空的緩存稱為冷緩存,對任何資料對象的通路都不會命中。通常是短暫事件,不會在反複通路存儲器使得緩存暖身之後的穩定狀态中出現。
    • 沖突不命中:限制性的放置政策——将第k+1層的某個塊限制放置在第k層塊的一個小的子集中。
    • 容量不命中:當工作集的大小超過緩存的大小時,緩存會經曆容量不命中,就是說緩存太小了,不能處理這個工作集。