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

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

期中總結linux

本身新學到的知識點總結

複習Linux命令,特別是man -k, cheat, grep -nr xxx /usr/include

  • man命令
    • 經常使用選項:
      • a:在全部的man幫助手冊中搜索
      • k:根據關鍵字搜索聯機幫助,是一種模糊搜索
      • f:關鍵字精確搜索,等價於whatis指令,顯示給定關鍵字的簡短描述信息
      • M:指定man手冊搜索的路徑
  • man -k:
    • 數據結構中有線性查找算法,C標準庫中沒有這個功能的函數,但Linux中有,這個函數是(lfind或lsearch)
    • man命令一般與管道命令結合使用 man -k k1|grep k2|grep 2
    • linux中顯示文件(file)屬性(status)的命令是(stat)
    • 數據結構中有二分查找算法,C標準庫中有這個功能的函數,這個函數是(bsearch)
    • linux中查找配置(configure)網卡(interface)的命令是(man -k configue|grep interface)
  • cheat:
    • cheat是很是好用的搜索工具,可以方便告訴你想要的內容。
    • 實現「Display files,Sorted by size」功能的ls命令是 ( ls –S )
    • To list content of /path/to/foo.tgz archive using tar (tar -jtvf /path/to/foo.tgz)
    • 使用du命令對當前目錄下的目錄或文件按大小排序的命令是(du -sk*|sort -rn)
  • grep:程序員

    • 主要參數:
      • c:只輸出匹配行的計數
      • I:不區分大小寫(只適用於單字符)
      • h:查詢多文件時不顯示文件名
      • l:查詢多文件時只輸出包含匹配字符的文件名
      • n:顯示匹配行及行號
      • s:不顯示不存在或無匹配文本的錯誤信息
      • v:顯示不包含匹配文本的全部行
      • 用於查找內容包含指定的範本樣式的文件
    • ~/test文件夾下有不少c源文件,查找main函數在哪一個文件中的命令是(grep main.c)
    • linux bash中,使用grep查找當前目錄下.c中main函數在哪一個文件中的命令是(grep main *.c)
    • 查找宏 STDOUT_FILENO 的值的命令是(grep -nr STDOUT_FILENO /usr/include)
  • find:
    • 查找根目錄下全部目錄的find命令是(find/-type d)
  • 其餘
    • 刪除當前目錄下test文件的命令是(rm test)
    • 當前目錄下建立20145300目錄的命令是 (mkdir 20145300)
    • Ubuntu中新建一個叫 lilei 的用戶的命令是(sudo adduser lilei)
    • 將當前目當中的test文件複製到"/home/ljp/"目錄中的Linux命令是(cp test /home/ljp)
    • zip程序能夠壓縮也能夠解壓文件。(X)只能夠壓縮
    • Linux中,對目標代碼test.o進行反彙編的命令是(objdump -d test.o)
    • Y86模擬器的地址是wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar,下運載這個文件的Linux命令是:(
      wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar )   
    • 解開sim.tar的Linux命令是(tar -xvf sim.tar)
    • Ubuntu中安裝flex的命令是(sudo apt-get install flex)
    • Linux中創建符號連接(快捷方式)使用的命令是( ln 或者 ln -s)

複習vi, gcc, gdb,make的使用

  • Vim經常使用命令總結
    • 插入:
      • i:在當前光標處進行編輯
      • a:在光標後插入編輯
    • 退出:
      • :q:退出
      • :wq!:強制保存並退出
      • :wq:保存並退出
      • :w <文件路徑> :另存爲
    • 刪除:
      • x:刪除遊標所在的字符
      • dd:刪除整行
    • 在vim中,查看printq!:強制退出,不保存f man pages(幫助文檔)的命令是 :3K
  • gdb
    • 進入gdb:
      • gcc -g xxx.c -o xxx
      • gdb xxx
      • 查看源碼:
        • (gdb) l:進行行號提示
        • (gdb) b n:在第n行設置斷點
        • (gdb) r:運行代碼,運行至斷點處
        • (gdb) n:單步運行
        • (gdb) c:使程序繼續往下運行,直到再次遇到斷點或程序結束
        • (gdb) q:退出GDB
        • (gdb) watch n:在"n"設置了觀察點,觀察變量的變化狀況
    • gdb中使用命令(break main)設置main函數斷點。
    • gdb中使用命令(until)能夠跳出循環語句。
    • gdb中next和step均可以單步跟蹤,根據自頂向下原則應該優先選用next
    • GDB中以16進制形式打印%eax中內容的命令是(print /x $eax)
  • GCC編譯過程算法

    • 以hello.c爲例
      • 預處理:gcc –E hello.c –o hello.i ;gcc –E調用cpp 產生預處理過的C原始程序
      • 編譯: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 產生可執行文件
      • 運行: ./hello
    • GCC中INFINITY表示(無窮大)。vim

      CH01-07易錯習題

  • CH01
    • CPU中的(PC或程序計數器)寄存器總指向主存中的某條機器語言指令。
    • (進程)是操做系統對正在運行的程序的一種抽象。
    • 存儲層次結構的主要思想是一層上存儲器做爲低一層存儲器的(高速緩存)
  • CH07
    • linux系統中,連接器程序是(ld)。
    • (加載器)將可執行文件的內容映射到存儲器,並運行這個程序。
    • C語言中的全局變量能夠一次聲明,屢次定義。(X)
  • CH02
    • 練習2.6中整數換成12345,浮點數換成12345.0,最多時共(13)位匹配。
    • a,b長度都是一個字節,a=6,b=15, a|b = ( 15 )
    • a,b長度都是一個字節,a=6,b=15, a||b = ( 1,True,非零 均可以 )
    • 計算機將信息按位編碼,一般組織成(字節)序列。
    • 計算機的(字長)指明整數和指針數所的標稱大小。
    • 文本數據比二進制數據具備更強的平臺獨立性。(ok)
    • (香農)創建了布爾代數和數字邏輯之間的聯繫。
    • 計算機執行的整數運算其實是模運算。(Ok)
    • IEEE浮點數標準包含符號、尾數、(階碼)三部分。
  • CH03
    • (精通細節 )是理解更深和更基本概念的先決條件。
    • (程序計數器或%eip) 指示將要執行的下一條指令在內存中的地址。
    • 兩個寄存器(%ebp和%esp)保存着指向程序棧中重要位置的指針。
    • 把當即數0x4050複製到%eax的指令是( movl $0x4050 ,%eax )
    • SET指令對有符號數和無符號數有不一樣的處理方式。(X) 處理方式相同
    • jz/jnz指令中跳轉條件是由(ZF)決定的。
    • C語言中的循環結構彙編中能夠用(條件測試和跳轉)組合起來實現。
    • Linux彙編中,銷燬棧幀的語句是(movl %ebp,%esp popl %ebp 或leave)
    • Linux彙編中,須要調用者保存的寄存器有(%eax,%edx,%ecx )。
    • GDB中以16進制形式打印%eax中內容的命令是(print /x $eax)
  • CH04
    • Y86中,有(8)個程序寄存器。
    • Y86中,movl rA, rB 實現寄存器間的數據傳送。( x )
    • Y86中,狀態碼INS表示遇到非法地址。( X )
    • (YIS或指令集模擬器 )但是模擬Y86機器代碼的執行。
    • HCL中,多路複用函數使用(狀況表達式)來描述。
    • ALU是一種時序電路。(X)
    • 寄存器是一種時序電路。(X)
  • CH06
    • (存儲器)總線鏈接I/O橋和主存。
    • 邏輯磁盤塊就是一個塊數組。( ok )
    • DMA傳送不須要CPU的干涉。(OK)
    • SSD是一種基於(閃存或Flash)的存儲技術。
    • 存儲層次結構中最小的緩存是(寄存器 )。
    • LRU策略指的是替換策略的緩存會選擇(最後被訪問時間距如今最遠的塊)
    • 存儲層次結構的本質是每一層存儲設備都是較低一層的(緩存)。
    • 程序員能夠編寫(有良好空間和時間局部性)的程序來顯著改進程序的運行時間。
    • 存儲器給出的讀訪問時間是(局部性)的一個函數。數組

      本身的收穫

  • 這學期已是第二學期寫博客了,相比於上學期剛剛接觸的陌生與不適應,已經漸漸有了習慣的感受,對每週知識的梳理是對這幾天學習成果的反饋。這學期最大的收穫實際上是學習心態上的改變,上學期多少總以爲學習量大每次都有點應付的小情緒,這學期每週都把知識化整爲零天天學習一點,就沒有那麼大壓力,並且以爲的對知識的吸取也好了不少。經過這半學期的自我學習,我認爲最重要的仍是對本身的從新認知與態度上的積極轉變,別人再怎麼強制督促也是外部條件,只有本身心態上的積極轉變纔會有動力與真正的收穫。緩存

    本身的不足

  • 在自學方面我也只是算剛剛入門,要改進的地方也是路漫漫其修遠兮。對書本的知識我到底每次自學完本身能消化多少,有些東西學過去由於沒有理解到核心也只是似懂非懂,真正的原理並無掌握。我很明白本身的不足是對知識的理解不夠深刻透徹,可是這個改進是日積月累的,對每個不懂的問題都要搞懂,不光會作題還要理解題目的用意與相關聯知識,這樣才能更好的自學。安全

    課程建議和意見

  • 我認爲大學自學這個方法是很好的,鍛鍊自主學子能力與作事效率,對從此的學習工做也有很大幫助。可是自學畢竟能達到的層次仍是有限,若是老師在咱們自學後再將課程串講一遍我想你們確定會理解的更加深入。bash

相關文章
相關標籤/搜索