20145328《信息安全系統設計基礎》課程總結
每週做業連接彙總
- 第0周做業
- 簡要內容:翻閱課本內容,使用虛擬機安裝linux系統,預習linux基礎入門知識,關於學習資源的感想,提出問題。
- 二維碼:

- 第1周做業
- 簡要內容:介紹Linux操做系統相關內容,包括一些核心的Linux命令:find/locate/cheat/grep/which/whereis,以及如何使用Linux中用戶管理命令/系統相關命令/文件目錄相關命令/打包壓縮相關命令/比較合併相關命令/網絡相關命令等
- 二維碼:

- 第2周做業
- 簡要內容:介紹Linux系統下的開發環境,Vim的基本操做,gcc編譯器的基本原理以及gcc編譯器的經常使用選項,如何使用gdb進行調試,以及Makefile基本原理及語法規範,靜態庫和動態庫的生成與調用方法,介紹連接的相關知識
- 二維碼:

- 第3周做業
- 簡要內容:介紹二進制在計算機中的重要地位、布爾運算在C語言中的應用,介紹有符號整數、無符號整數、浮點數的表示,介紹補碼的重要性、C語言中溢出、數據類型轉換中的陷阱和可能會致使的漏洞,介紹「信息=位+上下文」。
- 二維碼:

- 第5周做業
- 簡要內容:介紹X86彙編基礎、ISA;介紹函數調用棧幀的概念、用GDB進行調試,總結教材第三章《程序的機器級表示》內容。
- 二維碼

- 第6周做業
- 簡要內容:安裝Y86處理器,瞭解ISA抽象,介紹流水線和實現方式,總結教材第四章《處理器體系結構》的內容。
- 二維碼:

- 第7周做業
- 簡要內容:理解局部性原理和緩存思想在存儲層次結構中的應用,介紹常見的存儲技術(RAM、ROM、磁盤、固態硬盤等),介紹高速緩存的原理和應用,總結教材第六章《存儲器層次結構》的內容。
- 二維碼:

- 期中總結
- 簡要內容:複習Linux經常使用命令以及教材1-7章,總結本身新學到的知識點、本身的收穫、本身的不足並提出課程建議和意見。
- 二維碼:

- 第9周做業
- 簡要內容:介紹系統編程和系統調用的概念、系統編程錯誤處理的方式、Unix/Linux系統級I/O、RIO以及I/O重定向的方法,總結教材第10章《系統級I/O》和附錄A的內容。
- 二維碼:

- 第10周做業:
- 簡要內容:實踐經常使用指令的代碼,加深對指令的理解
- 二維碼:

- 第11周做業
- 簡要內容:介紹異常及其種類、進程和併發的概念、進程建立和控制的系統調用及函數,介紹數組指針、指針數組、函數指針、指針函數的區別,介紹信號機制、管道和I/O重定向,總結教材第八章《異常控制流》的內容,運行分析相關代碼。
- 二維碼:

- 第12周做業
- 簡要內容:複習前三週的知識,深刻理解老師給的代碼
- 二維碼:

- 第13周做業
- 簡要內容:介紹三種併發的方式:進程、線程、I/O多路複用,介紹線程控制及相關係統調用、線程同步互斥及相關係統調用,總結教材第十一章《網絡編程》、教材第十二章《併發編程》的內容, 運行並分析相關代碼。
- 二維碼:

- 第14周做業
- 簡要內容:介紹虛擬存儲器的概念和做用、地址翻譯的概念、存儲器映射、動態存儲器分配的方法、垃圾收集以及C語言中與存儲器有關的錯誤,總結教材第九章《虛擬存儲器》的內容,運行並分析相關代碼。
- 二維碼:

實驗報告連接彙總
- 實驗一 開發環境的熟悉
- 簡要內容:介紹Linux開發環境的配置和使用,使用Linux的arm編譯,使用基於NFS方式的下載調試,以及嵌入式開發的基本過程。
- 二維碼:

- 實驗二 固件開發
- 簡要內容:分析02_pthread及03_tty中的代碼,介紹怎樣使用linux的armv4l-unknown-linux-gcc編譯、使用基於NFS方式的下載調試以及嵌入式開發的基本過程。
- 二維碼:

- 實驗三 實時系統的移植
- 簡要內容:介紹安裝ADS、安裝GIVEIO驅動、安裝JTAG驅動的正確方法,並介紹如何測試基本安裝是否正確。
- 二維碼:

- 實驗四 驅動程序設計
- 簡要內容:介紹在LINUX下進行驅動設計的原理以及使用模塊方式進行驅動開發調試的過程。
- 二維碼:

- 實驗五 網絡通訊
- 簡要內容:介紹在ARM開發板實現一個簡單的WEB服務器的過程
- 二維碼:

代碼託管連接
- 代碼託管連接→代碼託管連接
- git log格式化日誌截圖git log --pretty=format:"%h - %an, %ar : %s"



- 代碼驅動的學習作到沒有?
- 算是作到了吧,從上個學期學java開始就是按照着代碼驅動學習中的目錄結構來進行代碼的管理,只是在以前的學習中都是每週的代碼一次性commit上去,慢慢地在學習中也發現這樣的代碼管理並無起到很好的做用,也學會了規範的commit使用方式,雖然很繁瑣可是的確頗有用
- 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
- 在後面幾周的學習當中代碼量愈來愈大,比起最開始的也要複雜不少,有些地方光對着看是無法看懂的,須要本身去進行相應的改動才能更好地去理解。這個與使用的是什麼編程語言無關,不管是在學習什麼編程語言,最快的理解一段代碼的方式就是對這段代碼進行一些改動,而後去思考爲何改過以後的結果是這樣的。
- 實踐上有什麼經驗教訓
- 多敲多運行多改動代碼來對代碼進行理解,只要你可以掌握這一段代碼講的是什麼,爲何是這樣,那麼這段代碼你就算是掌握了。
總體評價一下第0周做業中本身提出的問題是否是抓住了學習重點
總體來講提出的問題就是在沒事找事作的樣子,有不少東西都沒有問到點子上,感受就是對着目錄來問,只看到了表面的東西,都是一些很大很寬泛的問題,不多有問到細節上面html
回答一下第0周做業中本身提出的問題
- 計算機系統應該是如何運行一個「hello,world」程序的?
- gcc編譯驅動程序讀取源程序文件hello.c,經過預處理、編譯、彙編、連接這四個階段將源程序文件翻譯成一個可執行目標文件。
- 在計算機系統中是如何處理二進制數據的,在算法溢出的時候應該如何進行對應的處理?
- 計算機將信息按位編碼,利用不一樣的編碼方式表示證書、實數和字符串,運算溢出能夠改變數據定義的類型來解決,也可使用無符號數和補碼運算來知足整數運算的許多其餘屬性,包括結合律、交換律和分配率。
- 程序在機器上是如何表示的?爲什麼程序會出現緩衝區溢出等狀況,如何減輕常見的代碼安全所帶來的威脅?
- 程序在機器上是以彙編代碼的形式進行表示的。一般在棧中分配某個字節數組來保存一個字符串,可是字符串的長度超出了爲數組分配的空間。這就形成了緩衝區溢出,經過GCC中棧隨機化、棧破壞檢測、限制可執行代碼區域等機制能夠減輕常見的代碼安全所帶來的的威脅。
- 處理器體系結構包含了什麼?流水線化的思想將處理一條指令所須要的不一樣步驟實現爲獨立的階段的原理是什麼?
- 指令體系結構(ISA);流水線化經過讓不一樣的階段並行操做,改進了系統的吞吐量性能。在任意一個給定的時刻,多條指令被不一樣的階段處理。
- 如何經過一個簡單的變換就使程序變得高效?
- 首先須要選擇合適的算法和數據結構,其次必須寫出編譯器可以有效優化以轉換成高效可執行代碼的源代碼。這個展開答能夠說好多。。。剩下的基本上都在第五章裏面。
- 存儲器的層次結構是什麼?存儲器有什麼層次結構?做用是什麼?
- 答案如圖所示

- 連接的做用是什麼?
- 做用是將各類代碼和數據部分收集起來並組合成爲一個單一文件。
你有什麼項目被加分,談談你的經驗
這個學期的加分基本都是靠的優秀做業,而這部分優秀做業都是經過大量的實踐拿到的,其實不管是上個學期的java仍是這個學期的信息安全系統設計基礎,都可以看出老師對於實踐的重視,由於只有大量的實踐你才能對一個知識掌握透徹,沒有實踐的話哪怕如今對於知識有所掌握,但並不深入,過段時間可能就會忘了。java
優秀做業





你有什麼項目被扣分,談談你的教訓
- 第三週遲交做業,緣由在於當週週末是國慶節假期,明明要外出,可是並無提早完成做業內容,算是一個教訓吧,之後儘可能都儘早完成做業,別拖到最後再來趕。
課程收穫與不足
本身的收穫
- 最大的收穫在於可以熟練的掌握Linux環境下的Shell開發,比起上個學期對於git的認識也有所加深,對於實踐的意義也有了更深的理解,更主要的在於,信息安全系統設計基礎這門課像一根線同樣將之前所學過的不少知識都串聯在了一塊兒,造成了一個良好的知識網絡,並且也與這個學期所學的操做系統,信息安全技術有所關聯,幾門課相互對照之下,掌握的東西比單獨學習要更加具體。
本身須要改進的地方
- 對於學習的時間要進行更加細緻的規劃,不能再把不少東西都堆到要交以前再作,所有堆在一塊兒又沒有效率又影響學習效果,怎麼算都是得不償失。勉強交了個東西上去但實際上連本身內心的標準都沒有達到,這樣一來就很不划算。
若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
- 實驗上面是經過結對來完成的,結對最大的意義在於不用所有的事情都積壓在一我的身上來作,這樣一來在學習的過程當中就會比一我的要輕鬆一些,我在結對過程當中主要負責的是硬件以及實驗環境的搭建還有排查錯誤緣由,在實驗報告上面獲得隊友的幫助比較多,在結對的時候選擇一個好的隊友真的很重要,學會分工合做也很重要。
給學弟學妹們的學習建議
- 關於每週一篇博客,長久以來,在各屆學長學姐口口相傳中已經被妖魔化了,可是實際上真的沒有大家想象中的那麼恐怖,更況且你再懼怕也沒有用,這門課你要想過每週一篇的博客確定是必不可少的,與其抱着敷衍了事的心態去完成還不如認認真真的每週抽出一點時間來好好的把書看了,把博客寫了。這樣一來每週有了一個固定的學習時間,對於糾正進大學以後並不良好的學習習慣有一種很好的促進做用。
- 關於學習時間,不管是大二下仍是大三上,週一到週五的課餘時間仍是比較多的,將學習時間分配在這些時間上要比把每一週的任務都堆積在週末一塊兒完成要好得多,老師要求的東西儘可能達到,畢竟確定不會坑大家,有些東西看上去短時間內用不上,但實際上掌握以後的好處遠遠大於你能想到的。
- 在學習的過程當中多實踐絕對不會吃虧。
若是從新學習這門課,怎麼作才能夠學的更好
- 每週提早預習,由於下一週的任務是早就列出來的,把學習時間安排在週一到週五的課餘時間提升學習效率,對於所學習的代碼要多加改動,理解每段代碼的含義以及具體用法,不要嫌麻煩。
問卷調查
- 你平均每週投入到本課程多長時間?
- 每週的學習效率有提升嗎?
- 在掌握了正確的學習方法以及方向後對於學習效率有很大的提升
- 學習效果本身滿意嗎?
- 整體來講比較滿意,但最後幾周並非很滿意,由於學習時間上沒有調整好,致使最後幾周的實踐不夠
- 課程結束後會繼續一週至少一篇博客嗎?
- java結束的時候也說過相似要繼續一週一篇博客的話,可是並無堅持下來,這個算是比較遺憾的事情,能夠的話想嘗試一下,這個學期的時候已經開始將本身學習一些知識的內容隨手記在了印象筆記裏面,而後整理以後編輯成博客,實際上我感受在以前的過程當中由於博客是做爲做業提交的,因此寫博客都是給人一種完成任務的感受,在這個過程當中感覺不到寫做帶來的快樂,並且文筆也受到了很大的約束,我想若是是寫一些本身想寫的東西,那麼或許會看到不少不一樣的東西。
- 你以爲這門課老師應該繼續作哪一件事情?
- 提交博客,項目加分,期中考試,期中和期末的總結,這些事情都是比較有意義的,能夠把不少學到的知識串聯起來
- 你以爲這門課老師應該中止作哪一件事情?
- 暫時沒有想到,由於老師所提出的要求都是有它的意義的,區別只在於對於現階段的學習的幫助有多少,在我看來有些東西雖然在現階段的學習中用處並不大,可是對於養成一個好的編程習慣是有很大幫助的,因此暫時尚未想到有些什麼事情應該中止
- 你以爲這門課老師應該開始作什麼新的事情?
- 將實驗的內容與課程內容進行一個過渡,在缺乏這個過渡的狀況下對於實驗內容的理解感受有很大的缺失
給出你的總結的連接和二維碼
