2018-2019-1 20165327 《信息安全系統設計基礎》第一周學習總結
2018-2019-1 20165327 《信息安全系統設計基礎》第一周學習總結
知識總結
第一章hello程序的生命周期
1.hello程序是從源程序開始的。創建並保存hello.c的文本文件。信息=比特流+上下文
vi hello.c
編譯
hello程序分步編譯
1、預處理(包括打開頭文件和翻譯宏)
hello.c->hello.i
gcc -E hello.c -o hello.i
這時打開hello.i發現,短短幾行代碼已被展開為一千多行。
2、編譯
hello.i->hello.s
gcc -S hello.i -o hello.s
這時打開hello.s發現是匯編代碼,前面帶.的是指令,可以去掉。
3、匯編
hello.s->hello.o
gcc -c hello.s -o hello.o
這時打開hello.o發現是亂碼,其實已經是二進制文件,可以使用od命令打開。
od -tx1 hello.o
反匯編命令:
objdump -d hello.o
4、鏈接
gcc hello.o -o hello
此時將產生hello可執行文件
系統硬件組成(總線、I/O設備、主存、處理器)
運行hello程序時,硬件間的交互。
介紹了cache的重要性及存儲設備形成的層次結構
操作系統通過三個抽象概念來管理硬件(進程(線程)、虛擬內存、文件)
系統間利用網絡通信的模型
介紹計算機中三個重要主題:
Amdahld定理
並行與並發
第七章 鏈接
7.1編譯器驅動程序
編譯器驅動程序包括:語言預處理器、編譯器、匯編器、鏈接器。
7.2靜態鏈接
鏈接器的兩個任務:
符號解析
重定位
7.3目標文件
目標文件純粹是字節塊的集合
目標文件有三種形式:
1、可重定位目標文件
2、可執行目標文件
3、共享目標文件
7.4可重定位目標文件
ELF格式
7.5符號和符號表
7.6符號解析
7.6.1鏈接器如何解析多重定義的全局符號
7.6.2與靜態庫鏈接
7.6.3鏈接器如何使用靜態庫來解析引用
7.7重定位
7.7.1重定位條目
7.7.2重定位符號引用
7.8可執行目標文件
7.9加載可執行目標文件
7.10動態鏈接共享庫
7.11從應用程序中加載和鏈接共享庫
7.12位置無關代碼
7.13庫打樁機制
7.14處理目標文件的工具
2018-2019-1 20165327 《信息安全系統設計基礎》第一周學習總結