20155223 《信息安全系統設計基礎》課程總結

20155223 《信息安全系統設計基礎》課程總結

每週做業連接彙總

第一週

簡要內容

  • 第一章:
    計算機系統由硬件和系統軟件組成,二者共同運做以運行應用程序。內部信息被表示爲一組組的位,位依據上下文有不一樣的解釋方式。
    程序被其餘翻譯程序翻譯成不一樣形式,開始是被翻譯成ASCII文本,而後被翻譯成計算機可執行的二進制文本。若是是用Code::Blocks等編譯軟件編譯,則在編譯完成後自動生成可執行文本;如果用vim,則必須手動完成翻譯工做。
    處理器經過讀取並解釋二進制指令來運行程序。
  • 第七章:
    連接能夠在編譯時依靠靜態編譯器完成,也能夠在加載時靠動態連接器完成。連接器的目標文件只有二進制文件一種。
    連接器主要任務有二:符號解析和從新定義。
    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

二維碼

第四周

簡要內容

  • 第十章
    Linux提供了一些基於UnixI/O模型的系統級函數,它們容許應用程序打開、關閉、讀寫文件,提取文件元數據,以及執行I/O重定向。
    使用讀寫函數時容易出現不足值,處理不足值的方法有兩種:要麼本身編寫程序時就預先對這些不足值進行處理,要麼應用RIO包,這個包反覆讀寫直到傳送完全部請求數據都讀取完畢,而後自動處理不足值。
    標準I/O庫是基於UnixI/O庫實現的,並提供一組強大的高級I/O例程。標準I/O比UnixI/O更簡潔,可是對於網絡應用程序,Unix的更適合。
  • 錯誤處理
    附錄內有三種錯誤風格報告函數: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)。算法

    二維碼

第七週

簡要內容

  • ISA(指令集體系結構)抽象的做用
  • ISA
  • 流水線
  • Y86-64指令
  • HCL語言
  • Y86-64執行模式編程

    二維碼

第八週

簡要內容

  • 進程
  • I/O多路複用
  • 線程vim

    二維碼

第九周

簡要內容

  • 常見的存儲技術
  • 局部性
  • 緩存
  • 局部性原理和緩存思想在存儲層次結構中的應用緩存

    二維碼

第十一週

簡要內容

  • 虛擬存儲器
  • 地址翻譯
  • 存儲器映射
  • 動態存儲器分配的方法
  • 分配算法
  • 垃圾收集
  • C語言中與存儲器有關的錯誤安全

    二維碼

第十三週

簡要內容

對我認爲重要的第十二章從新學習過一遍,並把我認爲的重點寫上去。服務器

二維碼

第十四周

簡要內容

我第八章學習得不行,便從新學習一遍,一併將錯過或誤解的內容附上去。網絡

二維碼

實驗報告連接彙總

實驗一——開發環境的熟悉

  • 交叉編譯環境
  • 目標機宿主機聯通
  • 目標機運行程序
  • 目標機模塊分解
  • 清理工做

    二維碼

實驗二——固件程序設計

  • MDK
  • LED
  • UART
  • SM2,SM3,SM4
    -SM1加密解密實驗

    二維碼

實驗三——實時系統

  • 實驗一
    學習使用Linux命令wc(1)
    基於Linux Socket程序設計實現wc(1)服務器(端口號是你學號的後6位)和客戶端
  • 實驗二
    使用多線程實現wc服務器並使用同步互斥機制保證計數正確

    二維碼

實驗四—— 外設驅動程序設計

  • 任務一
    學習資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章
    提交康奈爾筆記的照片
  • 任務二
    在Ubuntu完成資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章的test試驗
    提交編譯,加載模塊,卸載模塊,測試運行的截圖(要多張,全屏,體現學號信息)

    二維碼

實驗五——通信協議設計

  • 任務一
    在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的做業。
    與他人協做,測試同一個OpenSSL包的加密算法。測試加密算法:AES、RSA、MD5。通過測試各算法的確有效。
    通訊服務器和客戶端須要相互確認。因此基於此,加密通訊只能使用公鑰加密算法RSA,進行通訊以前先生成密鑰文件。
  • 任務二
    在Ubuntu中實現對實驗三中的「wc服務器」經過混合密碼系統進行防禦。

    二維碼

代碼託管

託管二維碼

代碼提交日誌

代碼總量

代碼驅動的學習作到沒有?

答:在部分上作到了。只是在對多線程多進程上,還有嘗試理解不佔用內存的編碼方式上用過,其餘狀況就只是看着每行代碼去對着課本學習。

加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得

從原有代碼當中添加一些本身新學習的代碼,是一個頗有效的學習方法,至少我不用考慮怎麼從新搭建一個大框架以學習一小片的代碼。目前我還不能搭建出成百上千行的大規模代碼,最多就是東拼西湊,可能不能很好地實現「高內聚,低耦合」的編碼理念。

實踐上有什麼經驗教訓

也許我應該在每個代碼裏面添加計時功能,有時候我並不知道哪類代碼結構更快出結果。

總體評價一下第1周做業中本身提出的問題是否是抓住了學習重點

有些有,有些沒有。我並無作到通讀每一章,基本上除了第一和第七章是徹底讀過學過而沒有疑惑,其餘章節就是看了每章最後的總結就提問了。

回答一下第1周做業中本身提出的問題

  • 第二章:計算機有32位與64位之分,分別何在?兩種計算機所存數據相互交換,會出現什麼狀況?
    32位和64位指的是計算機最大的無符號整型數據的最大值,32位指的是最大無符號整型數爲2^32-1,64位則是2^64-1。64位機的數據傳輸給32位機,若是不提早作好準備的話有可能32位機會出現溢出;64位得到32位機的數據則不會出現溢出。
  • 第三章:條件控制來實現條件分支和條件傳送來實現條件分支有何實質性區別?
    條件控制方式所消耗的內存資源比條件傳送的要多,實現起來,條件控制比條件傳送要低效的多。
  • 第四章:到底什麼系統會用到Y86-64代碼?
    就目前來看,Y86-64代碼只是一個對X86-64代碼的翻譯。Y86-64代碼比X86-64代碼要更容易被人讀懂。
  • 第五章:怎麼樣的代碼是沒必要要的引用內存?
    每次循環都是將內存中取值再將遞增的值傳回內存的代碼就是沒必要要的引用內存。
  • 第六章:「高速緩存存儲器」與「內存」有何相關?
    高速緩存存儲器通常能夠說就是內存。
  • 第八章:有何種異常種類能夠是經過代碼故意實現的?
    除了由於設備引發的異常以外,絕大部分異常均可以經過代碼故意引發。
  • 第九章:Linux虛擬機怎麼調用我宿主機的i7核?
    Linux是把全部程序都當作文件對待,所以Linux虛擬機想用個人i7核,只用將i7核的相關信息轉換成文件,Linux就可調用。
  • 第十章:Unix的I/O和Java的I/O有何區別?
    Unix的I/O使用起來不須要太多的準備工做,而Java的須要。
  • 第十一章:客戶端和服務器怎麼相互鏈接?
    不管是基於TCP協議仍是UDP協議,客戶端和服務器的鏈接須要傳輸彼此的IP地址。
  • 第十二章:目錄所說起的三種併發模式,其優勢和缺點有什麼?
    進程併發實現起來最簡單,可是不能及時將內存資源騰出給新的進程。
    I/O多路複用能夠很好的利用系統資源,可是代碼複雜度隨預計訪問量的上升而上升。
    線程併發有上二者的優勢,可是必須依靠信號量來解決競爭衝突。

    課程收穫與不足

  • 收穫:
    學習到一個開放式操做系統的運行結構和體系,學會使用不一樣的方法看待問題。
  • 不足:
    永遠是超過計劃用時地學習,有時還將學習時間調的太高,致使沒有給其餘科目留下時間來完成。

    給開學初的你和學弟學妹們的學習建議

    都%¥#給我滾去早點看書、早點學習,別成天處處晃悠!

    問卷調查

    你平均每週投入到本課程多長時間?
    8.2小時。
  • 每週的學習效率有提升嗎?
    感受很像正弦曲線。
  • 學習效果本身滿意嗎?
    確定不滿意!無用功作得太多。
  • 課程結束後會繼續一週至少一篇博客嗎?(若是能作到,畢業時我把你的博客給你集結成一本書送給你做記念)
    能作到一週一/多篇,可是內容就可能不多涉及本課程了,有可能還不必定是學習的內容,到時候就不用留做記念了,內容太亂我本身都看得心煩。
  • 你以爲這門課老師應該繼續作哪一件事情?
    叫學生經過寫博客記錄本身的學習過程。
  • 你以爲這門課老師應該中止作哪一件事情?
    之後實驗報告博客叫每一個同窗都寫,實驗還分不分組無所謂,可是不能說誰苦勞多誰的搭檔來寫報告,這不是一個好主意。
  • 你以爲這門課老師應該開始作什麼新的事情? 玩玩在線視頻教學,在沒開學的時候?

相關文章
相關標籤/搜索