2017-2018-1 20155314 《信息安全系統設計基礎》第1周學習總結

2017-2018-1 20155314 《信息安全系統設計基礎》第1周學習總結

教材學習內容總結

學習目標

  • 熟悉Linux系統下的開發環境
  • 熟悉vi的基本操做
  • 熟悉gcc編譯器的基本原理
  • 熟練使用gcc編譯器的經常使用選項
  • 熟練使用gdb調試技術
  • 熟悉makefile基本原理及語法規範
  • 掌握靜態庫和動態庫的生成與調用方法
  • 理解C程序中模塊的概仿,模塊分解的「高內聚,低耦合」的原則
  • 瞭解連接的概念

課堂筆記整理及課後實踐

2017.09.20html

Linux下:java

vi hello.c
gcc hello.c
./a.out .表示當前目錄
gcc hello.c -o
echo $? 查看程序返回值

od -tx1 hello.c

od -tx2 hello.c

od -tc hello.c 查看文件內容

od -tc -tx1 hello.c 查看程序十六進制表示

gcc -E hello.c -o hello.i將hello.c預處理爲hello.ilinux

vi hello.i

gcc -S hello.i -o hello.s將hello.i編譯爲hello.sgit

vi hello.s

gcc -c hello.s -o hello.o將hello.s彙編爲hello.ogithub

vi hello.o顯示亂碼:

od -tc hello.o

objdump -d hello.o將機器碼反彙編獲得彙編碼

ls hello.*編程

gcc hello.o -o hello將hello.o連接爲hello
vim

  • 巧記:數組

    E S c緩存

    ↓↓↓sass

    i s o

程序出錯了該如何調試?

  • 終端下用^+shift+T打開三個窗口:
    • Vi
    • gcc
    • gdb
  • vim:

    vi gdbbasic.c

  • gcc:

    gcc gdbbasic.c

    gcc -g gdbbasic.c

  • gdb:

    gdb a.out
  • cgdb:顯示代碼調試情況

斷點

  • 行斷點:b 行號
  • 函數斷點:b fxx
  • 臨時斷點:tb
  • 條件斷點:b if
  • 命令:
    • C(Continue)從一個斷點到下一個斷點
    • b設斷點
    • r運行
    • s(step)進入函數內部
    • n(next)下一行(直接執行完函數)
    • q(quit)退出
    • p(print)顯示值
    • display顯示值(只要值變化就顯示出來)
    • finish結束循環
    • until執行完循環

教材內容提煉

第一章

  • 信息=位+上下文
  • 程序被其餘程序翻譯成不一樣的格式
  • 熟悉編譯系統的好處
    • 優化程序性能
    • 理解連接時出現的錯誤
    • 避免安全漏洞
  • 系統的硬件組成
    • 總線
      • 計算機中總線傳送定長的數據,這個定長是,是一個基本的系統參數
    • I/O設備
      • I/O設備能夠經過控制器或適配器與I/O總線相連
    • 主存
      • 主存在邏輯上能夠看做字節數組
    • 處理器
      • 處理器的存儲操做能夠從寄存器中複製一個字節的數據到主存中
  • 高速緩存相當重要
  • 存儲設備造成層次結構
    • 主要思想:上一層的存儲器做爲低一層存儲器的高速緩存
  • 操做系統管理硬件
    • 操做系統的兩個基本功能
      • 防止硬件被失控的應用程序濫用(進程、虛擬內存實現)
      • 嚮應用程序提供簡單一致的機制來控制複雜而又一般大不相同的低級硬件設備(文件實現)
    • 進程
      • 實現進程這個抽象概念須要低級硬件和操做系統軟件之間的緊密合做
    • 線程
    • 虛擬內存(從低到高)
      • 程序代碼和數據
      • 共享庫
      • 內核虛擬內存
        • Linux中,內核虛擬內存在虛擬地址空間的高端
    • 文件
  • Amdahl定律
    • Amdahl定律說明,咱們對系統的某個部分作出重大改進,能夠顯著得到一個系統的加速比(❌)
  • 併發和並行

教材學習中的問題和解決過程

  • 問題1:什麼是GCC?
    • GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟件,也是 GNU計劃的關鍵部分。GCC本來做爲GNU操做系統的官方編譯器,現已被大多數類Unix操做系統(如Linux、BSD、Mac OS X等)採納爲標準的編譯器,GCC一樣適用於微軟的Windows。
  • 問題2:什麼是彙編和反彙編?
    • 彙編(Assembly):把彙編語言翻譯成機器語言的過程
    • 反彙編(Disassembly):把目標代碼轉爲彙編代碼的過程
  • 問題3:什麼是GUI?
    • 圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指採用圖形方式顯示的計算機操做用戶界面。

代碼調試中的問題和解決過程

  • 問題1:git add .時報錯:fatal: Not a git repository (or any of the parent directories)
  • 解決方案:這是因爲本地版本管理倉庫被刪除了,須要用git init命令從新初始化倉庫,創建新的倉庫:
  • 問題2:git push時報錯:fatal: The current branch master has no upstream branch.
  • 解決方案:利用git push -u origin master -f命令強制覆蓋已有的分支後再push,push成功:

代碼託管

上週考試錯題總結

  • Amdahl定律說明,咱們對系統的某個部分作出重大改進,能夠顯著得到一個系統的加速比(❌)

結對及互評

本週結對學習狀況

  • 20155323
  • 結對學習內容
    • 教材第1章 計算機系統漫遊

其餘(感悟、思考等,可選)

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:5小時

  • 實際學習時間:2小時

參考資料

相關文章
相關標籤/搜索