20145233 《信息安全系統設計基礎》期中複習總結

20145233 《信息安全系統設計基礎》期中複習總結

教材學習內容總結

本週的學習任務是將前面幾章的內容作以複習,而且來總結一下以前每次考試的錯誤。
-期中複習考試資料html

1、經常使用命令總結

man -k:

經常使用來搜索,結合管道使用。例句以下:linux

man -k k1 | grep k2 | grep 2git

搜索同時含有k1和k2,且屬於系統調用。數據庫

最後的數字意味着幫助手冊中的區段,man手冊共有8個區段,最經常使用的是123,含義以下:vim

1.Linux
2.系統調用
3.c語言安全

可是當單獨用man語句的時候,想查看其中的單獨某個區段內的解釋時,用法是這樣的:編輯器

man 3 printf
即查找c語言中printf的用法。ide

grep -nr

這條語句能夠用來查找關鍵字,全文搜索,而且能夠直接查找文件內的內容。其中:函數

n:爲顯示行號
r:爲遞歸查找
例如,若是想查找某個宏,咱們已知宏保存在include文件夾中,因此可使用下列語句:工具

grep -nr XXX /usr/include(XXX爲所要找的宏)

cheat

cheat是很是好用的「打小抄」搜索工具,可以方便的告訴你你想要的內容。

sort命令

將文本文件內容加以排序。可針對文本文件的內容,以行爲單位來排序。
參數:

m:將幾個排序好的文件進行合併。
n:依照數值的大小排序
Linux Bash中,ls . | sort 命令的功能是(顯示當前目錄內容並排序)

2、經常使用工具

vim

vim是一種很是好用的編輯器,總共有六種基本模式,最經常使用的是普通模式、插入模式和命令行模式。須要熟悉這三種模式之間的切換方式:

普通→插入: i 或 a 
插入→普通: Esc 或 Ctrl + [
普通→命令行: :
命令行→普通:Esc 或 Ctrl + [

經常使用的進入、保存和退出指令:

進入:vim 文件名
保存:命令行模式 :w
退出:命令行模式 :q

經常使用動做:

刪除:dd刪除整行
複製:yy複製整行
粘貼:p

gcc

經常使用選項

-c      只編譯不連接,生成目標文件.o
-S      只編譯不彙編,生成彙編代碼
-E      只進行預編譯,不作其餘處理
-g      在可執行程序中包含標準調試信息
-o file 將file文件指定爲輸出文件
-v      打印出編譯器內部編譯各過程的命令行信息和編譯器的版本
-I dir  在頭文件的搜索路徑列表中添加dir目錄

編譯過程

預處理: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**   建立可執行目標文件

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

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

./a.out
其中./表明當前目錄。

gdb

注意:使用GCC編譯時要加「-g」參數,而後纔可以用gdb調試

GDB最基本的命令有:

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

四種斷點:

1.行斷點
b [行數或函數名] <條件表達式>
2.函數斷點
b [函數名] <條件表達式>
3.條件斷點
b [行數或函數名] <if表達式>
4.臨時斷點
tbreak [行數或函數名] <條件表達式>

locate

locate命令實際上是find -name的另外一種寫法,可是要比後者快得多,緣由在於它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含有本地全部文件信息。Linux系統自動建立這個數據庫,而且天天自動更新一次,因此使用locate命令查不到最新變更過的文件。爲了不這種狀況,能夠在使用locate以前,先使用updatedb命令,手動更新數據庫。

命令格式:locate [選擇參數] [樣式]

命令參數:
-e:將排除在尋找的範圍以外
-1:若是是1則啓動安全模式,在安全模式下,使用者不會看到權限沒法看到的檔案。這會使速度減慢,由於 locate必須至實際的檔案系統中取得檔案的權限資料
-f:將特定的檔案系統排除在外,例如咱們沒有到必要把proc檔案系統中的檔案放在資料庫中
-q:安靜模式,不會顯示任何錯誤訊息
-n:至多顯示 n個輸出
-r:使用正規運算式 作尋找的條件
-o:指定資料庫存的名稱
-d:指定資料庫的路徑
-h:顯示輔助訊息
-V:顯示程式的版本訊息

3、課本重要思想

第一章 計算機系統漫遊

這一章介紹了一些基本的概念,是之後各章的總括,提到的內容都在以後的各章中拆開細講,我認爲這章最重要的就是一句話:

信息=位+上下文

計算機中的信息都是有二進制數字表達的,而由於這些二進制位所處的位置不一樣,是有符號數仍是無符號數,是大端法仍是小端法,因爲具體的解釋不一樣,形成的結果也不一樣。

以後的學習就是如何讀寫位,和上下文如何對應。

第二章 信息的表示和處理

這章裏我以爲最容易混淆的是小端法和大端法。經常使用小端法,巧記方式是「高對高,低對低」,可是同時要注意字節在存放的時候的高低與咱們慣常認知中的高低位的關係,以及一串數據中幾位表明一個字節:

一個字節是8位,也就是兩位十六進制數。

而後是整數中,有符號數和無符號數的表示,補碼錶示,位運算和邏輯運算,溢出、截斷和擴展;

浮點數中,二進制小數,最重要的是IEEE小數:

IEEE浮點標準:

  • 用V=(-1)^s X 2^E X M 來表示一個數:
  • 符號:s決定這個數是正仍是負。0的符號位特殊狀況處理。
  • 階碼:E對浮點數加權,權重是2的E次冪(可能爲負數)
  • 尾數:M是一個二進制小數,範圍爲1~2-ε或者0~1-ε(ε=1/2的n次冪)

編碼規則:

  • 單獨符號位s編碼符號s,佔1位
  • k位的階碼字段exp編碼階碼E
  • n位小數字段frac編碼尾數M(同時須要依賴階碼字段的值是否爲0)

兩種精度

  • 單精度(float),k=8位,n=23位,一共32位;
  • 雙精度(double),k=11位,n=52位,一共64位。

三種被編碼狀況

  • 規格化的
  • 非規格化的
  • 特殊值

第三章 程序的機器級表示

這一章和以前學習過的彙編很像,須要注意的就是尋址方式和幾個操做,mov,push,pop,leal,還有跳轉指令、控制轉移指令等等。

第四章 處理器體系結構

這章裏學習的是一個相對簡單的處理器Y86,指令集比起IA32省略了不少。學習中我以爲一個比較不容易掌握,作題時須要反覆查閱的是:

指令的字節級編碼

Y86的順序實現

第六章 存儲器層次結構

我以爲第六章對於我來講就是其中包含的不少知識點,其中存儲技術和局部性是比較重要的。裏面有不少關於存儲空間的計算。這些計算包含了對於知識的理解。

第七章 連接

第七章其中的連接主要講的是靜態連接以及共享庫。

靜態庫
靜態庫是一系列的目標文件(.o文件)的歸檔文件((lib+name).a文 件);連接階段,選擇靜態庫,後綴名爲「.a」;選擇動態庫,後綴名爲「.so」。
靜態連接庫的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o
靜態庫的使用:gcc -o 文件名 文件名.c -L. -lxxx//連接到靜態庫
注意:
-L:在庫文件的搜索路徑列表中添加dir目錄
-l:在頭文件的搜索路徑列表中添加dir目錄

共享庫
共享庫的生成:
gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
共享庫的使用:gcc -o main main.c -L. -lxxx
註冊共享庫的方法:將庫文件直接複製到/lib或者/usr/lib目錄下: cp (lib+name).so /lib

收穫

  • 本學期學習Linux我仍是有不少收穫的,由於學到了如何在Linux中使用命令行來完成一些操做,由於我以爲學習操做系統若是不會使用命令行來執行真的和沒學過這門課程同樣。
  • 而且我對於git的學習其實在本學期才正式開始,由於上學期我使用的idea直接在裏面配置好以後,從裏面直接上傳的,並非很清楚git的步驟,可是這學期學了虛擬機使用linux以後,我發現git是真的好用,對於本身每一部分上傳的代碼均可以作很詳細的註釋,對於之後本身看的時候,很清楚本身當時想表達的意思。
  • 最後學習使用vim,操做的時候仍是有不少的方式,這也是之後用的地方,因此仍是要練好的。

不足

  • 我對於課程每一章後面的家庭做業不是全部的題目都會作,稍微簡單點的能夠搞清楚,可是稍微複雜一些的題目我就不是很肯定怎麼樣作了。而且在每週考試的時候,發現本身其實不是對於全部的知識點都掌握清楚了,仍是有不少的問題,我只是隻知其一不知其二,這個問題是須要我來改進的。
  • 而且老師強調的屢次翻閱課本,我有作到,可是常常翻閱來複習,這個並無作到,甚至我在這周剛開始的時候,竟然還問了老師第七章是否是要自學,我竟然忘了在第二週的時候已經學過了,這就說明在我學的那會是知道學過了,可是後面沒有及時的複習致使

課程的建議和意見

  • 就學了這半學期以來,我以爲老師相比上學期來講,課上講了不少知識,就是咱們在課下不容易搞清楚的,本學期有了老師的講解以後,對於其中的不少晦澀的地方明顯有了理解,我以爲這個很好,畢竟不少知識學生本身來學仍是比較困難的。
  • 目前來講,教材中由於是翻譯版本,仍是有一些知識點很模糊,不是很懂,但願老師上課能夠再講解一下,而且實驗課我很想搞清楚爲何要這樣作,而不是按照指導教程一步步作,雖然實驗成功了。我想清楚實驗的原理,但願老師能夠多講講實驗方面的內容。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 24篇 350小時
第一週 0/0行 1/2 20小時
第二週 53/53行 1/3 25/45小時
第三週 130/183行 1/4 30/75小時
第四周 0/183行 0/4 5/80小時
第五週 158/341行 1/5 30/110小時
第六週 84/425行 2/7 30/140小時
第七週 209/634行 1/7 30/170小時
第八週 0/634行 2/9 25/195小時

註釋

-本學期以前的博客內容

相關文章
相關標籤/搜索