第七章:
連接能夠在編譯時依靠靜態編譯器完成,也能夠在加載時靠動態連接器完成。連接器的目標文件只有二進制文件一種。
連接器主要任務有二:符號解析和從新定義。
GCC編譯器在工做過程當中調用獲得的連接器爲靜態連接器,其餘編譯驅動程序亦是如此。
與編譯位置無關的代碼的共享庫能夠加載到任何地方,亦能夠在運行中被多個進程共享。html
計算機將信息編碼爲比特,一般組織成字節序列。
有不一樣的編碼方式來表示整數、實數和字符串。
現代計算機絕大多數是64位字長機,便是本計算機的虛擬地址空間爲16EB,大約是1.8410^19字節。然而個人筆記本電腦是32位字長機,其虛擬地址空間只有4GB,剛超過410^9字節。
計算機內一個字節八個比特,值域00000000~11111111。用十進制表示爲0~255,十六進制是00~FF,或是0x00~0xFF。
計算機用16位ASCII值表示全部字符。
布爾代數用於邏輯計算,布爾數只有0和1兩個數,結果也只有0和1兩種,邏輯運算符只有~(非)、&(與)、|(或)、^(非或)。
二進制小數表示方法是依據小數點後幾位來表示對應的2的負幾回方,如二進制小數0.001表示十進制小數0.125,不過這種表示方法只能在表示x/2^n時能十分精確,形如十分之一這類分母不是2的幾回方的小數,計算機只能經過二進制小數來近似表示。這類小數在不一樣的計算機容易引發沒必要要的偏差。
IEEE 754標準是由美國電氣電子工程師學會(IEEE)計算機學會旗下的微處理器標準委員會(Microprocessor Standards Committee, MSC)發佈。java
錯誤處理
附錄內有三種錯誤風格報告函數:void unix_error(char msg)、void posix_error(int code,char msg)、* void gai_error(int code,char msg)。這些錯誤報告函數對應的風格就是Unix的錯誤、Posix的錯誤及GAI錯誤。還有一個void add_error(char msg)*,這個只是一個用來反饋錯誤的函數,並非報告錯誤的函數。git
指令集體系結構
ISA(指令集體系結構)包含如下四種: 複雜指令集運算(Complex Instruction Set Computing,CISC);精簡指令集運算(Reduced Instruction Set Computing,RISC) ;顯式並行指令集運算(Explicitly Parallel Instruction Computing,EPIC);超長指令字指令集運算(VLIW)。算法
Y86-64執行模式編程
線程vim
局部性原理和緩存思想在存儲層次結構中的應用緩存
C語言中與存儲器有關的錯誤安全
對我認爲重要的第十二章從新學習過一遍,並把我認爲的重點寫上去。服務器
我第八章學習得不行,便從新學習一遍,一併將錯過或誤解的內容附上去。網絡
清理工做
SM2,SM3,SM4
-SM1加密解密實驗
實驗二
使用多線程實現wc服務器並使用同步互斥機制保證計數正確
任務二
在Ubuntu完成資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章的test試驗
提交編譯,加載模塊,卸載模塊,測試運行的截圖(要多張,全屏,體現學號信息)
任務二
在Ubuntu中實現對實驗三中的「wc服務器」經過混合密碼系統進行防禦。
答:在部分上作到了。只是在對多線程多進程上,還有嘗試理解不佔用內存的編碼方式上用過,其餘狀況就只是看着每行代碼去對着課本學習。
從原有代碼當中添加一些本身新學習的代碼,是一個頗有效的學習方法,至少我不用考慮怎麼從新搭建一個大框架以學習一小片的代碼。目前我還不能搭建出成百上千行的大規模代碼,最多就是東拼西湊,可能不能很好地實現「高內聚,低耦合」的編碼理念。
也許我應該在每個代碼裏面添加計時功能,有時候我並不知道哪類代碼結構更快出結果。
有些有,有些沒有。我並無作到通讀每一章,基本上除了第一和第七章是徹底讀過學過而沒有疑惑,其餘章節就是看了每章最後的總結就提問了。
第十二章:目錄所說起的三種併發模式,其優勢和缺點有什麼?
進程併發實現起來最簡單,可是不能及時將內存資源騰出給新的進程。
I/O多路複用能夠很好的利用系統資源,可是代碼複雜度隨預計訪問量的上升而上升。
線程併發有上二者的優勢,可是必須依靠信號量來解決競爭衝突。
不足:
永遠是超過計劃用時地學習,有時還將學習時間調的太高,致使沒有給其餘科目留下時間來完成。
都%¥#給我滾去早點看書、早點學習,別成天處處晃悠!
你以爲這門課老師應該開始作什麼新的事情? 玩玩在線視頻教學,在沒開學的時候?