1. 程式人生 > ># 20155336 2017-2018 1 《信息安全系統設計基礎》第1周學習總結

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

動態 出現 space 路徑 進制 考試 a.out 臨時 解析

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

第一第七章教材內容總結

第一章:
  • 計算機系統是由硬件和系統軟件組成的,它們共同工作來運行應用程序;
  • 信息就是位+上下文;
  • hello.c--->hello.i--->hello.s--->hello.o;
  • 了解編譯系統的益處:
    • 優化程序性能;
    • 理解鏈接是出現的錯誤;
    • 避免安全漏洞;
  • 硬件:
    • 總線:貫穿整個系統的一組電子管道。
    • I/O設備:輸入/輸出設備。
    • 內存:臨時存儲設備,用來存放程序和程序處理處理的數據。
    • 處理器:中央處理單元,簡稱處理器。
  • 只由ASCII字符構成的文件稱為文本文件,所有其他文件都成為二進制文件
  • 存儲設備形成了層次的結構

    從上之下,設備變得訪問速度越來越慢,容量也越來越大,並且每字節造價也越來越低儲存器結構的主要思想是一層上的存儲器作為低一層存儲器的高速緩存
    
  • 進程是操作系統對一個正在運行的程序的一種抽象。需要運行的進程數是多於可以運行他們的cpu個數的。一個cpu看上去都像是在並發地執行多個進程,這是通過處理器在進程間切換來實現的。操作系統的這種交錯機制稱上下文交換。

  • 處理器讀取並解釋存放在主存裏的二進制指令
  • 操作系統內核是應用程序和硬件之間的媒介。它提供三個基本的抽象:1)文件是對I/O設備的抽象;2)虛擬存儲器是對主存和磁盤的抽象;3)進程是對處理器、主存和I/O設備的抽象。
  • 網絡提供了計算機系統之間通信的手段。從特殊系統的角度來看,網絡就是一種I/O設備。

第七章:

  • 鏈接可以在編譯時由靜態編譯器來完成,也可以在加載時和運行時由動態鏈接器來完成。
  • 鏈接處理器分為:1)可重定位的、2)可執行的、3)共享的
  • 靜態鏈接器是由像GCC這樣的編譯驅動器調用的。
  • 多個目標文件可以被鏈接到一個單獨的靜態庫中。
  • 加載器將可執行文件的內容映射到存儲器,並運行這個程序。
  • 被編譯為位置無關代碼共享庫可以加載到任何地方,也可以在運行時被多個進程共享,為了加載、鏈接和訪問共享庫的函數和數據,應用程序還可以在運行時使用動態鏈接。

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

  • 1 what is GCC?

    • GNU CC(簡稱為gcc)是GNU項目中符合ANSI C標準的編譯系統
    • 預處理: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
    • 前三步,GCC的參數連起來是“ESc”,相應輸入的文件的後綴是“iso”

    • GCC常用選項

    • c 只編不鏈,目標文件.o

    • S 只編不匯,匯編代碼
    • E 只進行預編,不做任何處理
    • g 在可執行程序中包含標準調試信息
    • I dir 在頭文件的搜索路徑列表中添加dir目錄
  • 2 匯編到機械以及機械到匯編的轉換?

gcc-c hello.s-s hello.o 匯編--->機械

objdump - d hello.o 機械--->匯編

上周考試錯題總結

結對學習

  • 20155315

本周代碼

老師,我電腦出現了一些問題,但是本周我在嘗試訓練編譯了一些簡單的代碼如下

    (1)vi hello.c
    #include<stdio.h>
    main()
    {
    printf("Hello");
    }
    gcc hello.c
    ls
    a.out hello.c
    之後就會出現結果
    ./out
    Hello!
    (2)預處理:
    ls
    ./out hello.c hello.o
    gcc-E hello.c -o hello.o
    vi hello.i
    (3)編譯
    gcc-S hello.i -o hello.s
    ls
    a.out hello.c hello.i hello.s
    vi hello.s
    (4)匯編
    gcc - c hello.s - o hello.o
    ls
    hello.c hello.i hello.o hello.s
    vi hello.o  

我會盡快修復好電腦,完成代碼上傳,望老師見諒!

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

這學期相比上學期,能夠更多的跟著老師在課堂上學習。而且老師也改變了教學方式,從原先的一周一篇博客到現在的兩篇博客,減輕了我們的壓力。看著如此如此厚的一本書,我倍感焦急,不知道能夠從中習得多少知識,能夠掌握多少知識,希望這學期能夠把書本從厚學薄再學厚,先從中精煉然後自己再拓展,讓自己能夠充分理解。加油!

學習進度條

| | 代碼行數(新增/累積)| 博客量(新增/累積)|學習時間(新增/累積)|重要成長|

| ----- | :---------:|:------:|:----------: |

| 目標 | 5000行 | 30篇 | 400小時 |

| 第一周 | 40/40 | 1/1 | 15/15 |

參考資料

  • 深入理解計算機系統V3學習指導
  • 舉例講解C語言鏈接器的符號解析機制
  • ELF(六)符號解析,此大多摘自深入理解操作系統
  • gcc命令

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