20155322 2017-2018-1《信息安全系統設計基礎》課程總結

2017-2018-1 《信息安全系統設計基礎》 20155322 課程總結


[博客目錄]


1、每週做業連接彙總

第一週做業

  • 在Linux環境下C語言程序的gcc編譯運行彙編方法,使用gdb進行調試、設置斷點等方法。

第二週做業:

  • 有關設置gdb斷點,創建靜動態庫等課上未提交的題目補充,以及自主編程製做MYOD的實現。

第三週做業:

  • 教材內容第二章《信息的表示和處理》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。

第四周做業:

  • 課上未提交題目命令行傳入文件實現myod,第十章教材內容學習以及兩個重要命令man -k key1 | grep key2| grep 2grep -nr XXX /usr/include的掌握。

第五週做業:

  1. 教材內容第三章《程序的機器級表示》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
  2. Mybash 實現

第六週做業:

  1. 教材內容第八章《異常控制流》,第十章《系統級I/O》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
  2. 課上有關彙編代碼的轉換和刪除的未提交題目的補充,以及教材 p97 2.96 2.97,完備的測試。
  3. 課上相關未提交題目的補充,在本身的電腦中完成https://www.shiyanlou.com/courses/231緩衝區溢出漏洞實驗的詳細實驗過程。

第七週做業:

  • 教材內容第四章《處理器體系結構》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。

第八週做業:

  1. 教材內容第十一章《網絡編程》簡單過一下,教材第十二章《併發編程》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
  2. 課上有關X86轉Y86和代碼反彙編的相關未提交題目的補充,以及課下實踐書後習題的實踐測試和多線程併發服務器的製做與測試。

第九周做業:

  1. 教材內容第六章《存儲器層次結構》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
  2. 加分項目MYPWD的自主設計與編寫測試。
  3. homebrew/pipe學習博客
  • homebrew
  • pipe

第十週做業:

  • 課上未提交題目有關stat指令的學習及編寫的提交以及課下自主學習IPC相關知識。

第十一週做業:

  • 教材內容第九章《虛擬存儲器》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。

第十三週做業:

  • 從新精學第十章,對課本內容反覆學習,而且所有家庭做業的編寫製做,以及藍墨雲中的試題總結,結對學習,給同伴講解收穫和疑惑,共同窗習,共同進步。

第十四周做業:

  • 從新精學以前學得最差的一章,第四章處理器系統相關內容,以前學習學習Y86時候沒有學的很好,詳細從新回顧了課本內容。

返回目錄html

2、實驗報告連接彙總

實驗一 開發環境的熟悉:

交叉編譯環境,目標機與宿主機的聯通,目標機運行程序以及最後的清理工做,實驗一爲小組共同完成。
git

實驗二 固件程序設計:

要用系統管理員身分運行uVision4,破解MDK(破解程序中target必定選ARM),KEIL-MDK 中添加 Z32 SC-000 芯片庫,打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。網上找一下國密算法標準的代碼和標準測試代碼,在Ubuntu中分別用gcc和gcc-arm編譯,並回答四個算法的用途。小組共同完成。
程序員

實驗三 實時系統:

基於Linux Socket程序設計實現wc(1),使用多線程實現wc服務器並使用同步互斥機制保證計數正確。我的完成。
web

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

學習資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章,在Ubuntu完成資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章的test試驗。我的完成。
算法

實驗五 通訊協議設計:

瞭解學習Linux下openssl,測試對稱算法中的AES,非對稱算法中的RSA,Hash算法中的MD5,在Ubuntu中實現對實驗二中的「wc服務器」經過混合密碼系統進行防禦。我的完成。
數據庫

返回目錄編程

3、代碼託管連接和二維碼

  • 截圖 git log --pretty=format:"%h - %an, %ar : %s" 的結果


    緩存

  • 代碼量彙總提交statistics.sh的支持截圖



    返回目錄安全

4、學期學習總體評價

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

作到了,在每次學習新知識或者出現不理解的地方,都會上網或者看書,查閱相關資料,不斷循環這個過程,是的本身對於代碼的理解和分析能力進一步增長。

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

在我學習實現Linux相關命令的時候,開始都是懵懵懂懂的,我摸索着使用老師的man命令學習法,總結出一下學習步驟:

  1. man命令查看命令的實現函數、結構體等
  2. 結合網絡搜索其代碼實現,閱讀並理解
  3. 並在此基礎上編寫本身須要的代碼
  4. 測試及運行

實踐上有什麼經驗教訓

花費時間較多,可是熟練後會比較熟練,同時瞭解了一些比較好的學習網站和平臺。

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

在第一週做業中出的問題都是每一章講解的重點,在每章的學習中都可以解決個人理解問題。

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

  • 第1章 計算機系統漫遊:一個程序從編寫到執行的過程在計算機中是什麼實現的
    • 答:經由一下四個部分:
      預處理器:根據以#開頭的命令,將包含的頭文件加載進入源程序源程序。預處理器讀取系統頭文件stdio.h中的內容,代替此行內容。源程序通過預處理後,獲得另外一個c程序,此程序一般以.i爲後綴保存。
      編譯器:將預處理後的.i文件轉換成彙編程序。編譯器將不一樣的高級語言(如c語言,C++語言)轉換成嚴格一致的彙編語言格式進行輸出。彙編語言以標準的文本格式確切的描述每機器語言指令。編譯器獲得的文件一般以.s爲後綴保存。
      彙編器:將彙編語言(.s文件)翻譯成機器語言指令,並將這些指令打包成一種可定位目標程序格式。彙編後獲得的文件即爲二進制文件,一般以.o爲後綴。
      連接器:程序中調用的函數,存放在一個*.o的單獨預編譯的文件中。而這個文件必須以適當的方式併入到咱們的程序中,這個工做由連接器完成。將外部的.o文件併入後,獲得一個完整的可執行文件。可執行文件加載到存儲器後,由系統複製執行。
  • 第2章 信息的表示和處理:如何理解計算機的算術運算?
    • 答:計算機不能像人同樣理解1,2,3,只能藉助材料的物理特性經過一、0來進行記錄和運算,因此計算機的算術運算其實就是2進制的運算,並經過各類碼來表示不一樣的符號。
  • 第3章 程序的機器級表示:如何理解彙編在計算機運算中的地位?
    • 答:彙編語言介於機器級代碼和高級語言之間,及不會讓人以爲迷糊,具備較好的文本格式表達形式,也比較便於計算機的理解和執行,能夠說是一個承接二者的中介。
  • 第4章 處理器體系結構:爲何要虛構出Y86指令系統?
    • 答:Y86指令集的數據類型、指令和尋址方式較少,字節級編碼也比較簡單。可是它仍然足夠完整,可以寫一些簡單的處理證書的程序,有助於咱們理解指令集的原理。
  • 第5章 優化程序性能:如何根據處理器的原理優化程序?
    • 答:這個問題比較複雜,涉及的知識比較廣範,簡單的來講,面向處理器結構的優化能夠從如下幾個方向入手:緩存命中,指令預測,數據預取,數據對齊,內存拷貝優化,ddr訪問延遲,硬件內存管理優化,指令優化,編譯器優化等級以及性能描述工具。
  • 第6章 存儲器層次結構:存儲器爲什麼要採起這種分層結構?
    • 答:爲了解決對存儲器要求容量大,速度快,成本低三者之間的矛盾,使用分級結構可以下降成本,提升效率,簡單的來講就是性價比較高,不會形成過多的資源浪費。
  • 第7章 連接:連接的原理及實現
    • 答:將各類代碼和數據片斷收集並組合成爲一個單一文件的過程,其實現是在編譯過中實現的。
  • 第8章 異常控制流:爲何計算機要使用進程這個概念?
    • 答:進程是資源分配和調度的基本單位,是OS結構的基礎,引入了進程後才使得處理機利用率和內存利用率大大提升。
      進程是一個具備獨立功能的程序關於某個數據集合的一次運行活動。它能夠申請和擁有系統資源,是一個動態的概念,是一個活動的實體。它不僅是程序的代碼,還包括當前的活動,經過程序計數器的值和處理寄存器的內容來表示。
  • 第9章 虛擬內存:虛擬內存的優勢的?
    • 答:
      使用虛擬地址能夠更加高效的使用物理內存:在訪問後邊的地址空間的時候就能夠將前邊當前沒有在訪問的物理頁釋放掉,或者交換到硬盤中。這樣這個物理頁又能夠去對應新的虛擬地址,從而使物理內存能夠充分的利用。
      使用虛擬地址可使內存的管理更加便捷:在程序編譯的時候就會生成虛擬地址,對於不一樣的機器或者對於同一臺機器的不一樣時間,該虛擬地址能夠對應不一樣的物理頁。
      能夠提升系統安全性:在使用虛擬地址的時候,暴露給程序員永遠都是虛擬地址,而具體的物理地址在哪裏,這個只有系統才瞭解。這樣就提升了系統的封裝性。
  • 第10章 系統級I/O:C的標準I/O庫與Linux 文件I/O的區別?
    • 答:
      文件I/O:文件I/O稱之爲不帶緩存的IO(unbuffered I/O)。不帶緩存指的是每一個read,write都調用內核中的一個系統調用。也就是通常所說的低級I/O——操做系統提供的基本IO服務,與os綁定,特定於linix或unix平臺。
      標準I/O:標準I/O是ANSI C創建的一個標準I/O模型,是一個標準函數包和stdio.h頭文件中的定義,具備必定的可移植性。標準I/O庫處理不少細節。例如緩存分配,以優化長度執行I/O等。標準的I/O提供了三種類型的緩存。
      (1)全緩存:當填滿標準I/O緩存後才進行實際的I/O操做。
      (2)行緩存:當輸入或輸出中遇到新行符時,標準I/O庫執行I/O操做。
      (3)不帶緩存:stderr就是了。
  • 第11章 網絡編程:Web服務器是經過什麼原理實現的?
    • 答:額,這個仍是看書吧,一隻半會兒說不清楚。
  • 第12章 併發編程:指令級並行,線程級並行,數據級並行的區別?
    • 答:
      指令級並行:是一種隱式並行,經過流水線和超標量,使得一個程序的指令序列中共有多條同時亂序運行,順序提交。
      線程級並行:是一種顯示並行,須要寫多線程程序,主要指同時多線程(SMT)/超線程(HT)以及多核和多核處理器。
      數據級並行:是一種顯式並行,主要指單指令多數據(SIMD)
      返回目錄

5、做業評價

你有什麼項目被加分,談談你的經驗

  • 這個……不太清楚。
  • 經驗就是有本身的思考過程和操做實例吧。

你有什麼項目被扣分,談談你的教訓

  • 第一週學習博客沒有寫每章提問
  • 教訓:學會合理安排時間,每週的東西都要在時間內完成,不然拖到後面會忘記
  • 已經補完,並優化了博客內容,新增了內容,改善排版。

返回目錄

6、課程收穫與不足

本身的收穫(投入,效率,效果等)

  • 課本知識
  • Linux系統的使用
  • 如何學習Linux命令的方法:man
  • 嵌入式系統編程
  • 網絡編程
  • 密碼算法
  • 博客寫做習慣

本身須要改進的地方

  • 須要學會掌握學習方法
  • 合理安排時間
  • 更多的代碼量

若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議

  • 我主要爲結對對象講解代碼,讓同伴讀懂代碼,也讓我加深對代碼的理解
  • 我建議老師可以就如何結對學習提供一點參考或者講解

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

  • 勤練習,少嗶嗶
  • 學會自學
  • 儘可能獨立完成

若是從新學習這門課,怎麼作才能夠學的更好

  • 若是從新學習,我會注重系統學習。
  • 由於如今回想感受知識點過於零散,很難糅合在一塊兒。

問卷調查

  1. 你平均每週投入到本課程多長時間?

    平均每週20個小時左右。

  2. 每週的學習效率有提升嗎?

    每週學習效率還行,我是一個投入的人,一開始了就很難停下來。

  3. 學習效果本身滿意嗎?

    學習效果不太滿意,由於在查找資料上花費不少時間,感受本身學習的知識點都是東平西湊,難以整合成系統的知識體系。

  4. 課程結束後會繼續一週至少一篇博客嗎?

    我平時會使用博客記錄我在學習或者使用電腦的一些知識,不能保證每週,可是一個月大概會有兩篇這樣。

  5. 你以爲這門課老師應該繼續作哪一件事情?

    繼續給咱們推薦好的教學資料以及視頻。

  6. 你以爲這門課老師應該中止作哪一件事情?

    目前還算適應,沒有什麼須要中止的。

  7. 你以爲這門課老師應該開始作什麼新的事情?

    在博客方面多和學生互動,及時反饋意見,這樣咱們才知道怎樣才能作得更好。

返回目錄

7、期末總結

結對學習狀況

  • 結對學習博客
    20155302
  • 結對感想
    個人結對學習對象是一個熱愛學習的男生,平時學習認真,常常催促我和他一塊兒學習,我受他影響頗深,也敬佩他的精神。
    和他結對學習效果很好,常常點出我平時遺漏或者不關注的地方,查漏補缺,受益頗豐。

學習感想

  • 本學期感想:活動多,學習緊,任務重
  • 就學習而言,感受我有兩個問題須要注意:
    • 一是要學會安排時間,我老是想着找個時間空出來好好學,可是事實證實這是不可能的,永遠會有下一件事情等着你作,要學會抽空學,有針對性的學,每天學。
    • 二是要學會高效率學習。由於我老是花費大量的時間再搜索資料上,我以爲這樣不行,時間寶貴,須要高效。因此我開始總結一些學習方法,好比首先是要把要學的知識理成一個系統,即我要作出這個做業,我須要掌握的東西,這些東西屬於哪一個領域,學習這個領域的知識須要的基礎等等,這樣按部就班的去學習,永遠比散漫亂找要高效的多。

學習展望

  • 將來要學會學習方法了,不要再瞎摸亂闖。
  • 從新學習Java、C語言
  • 學習Java web/html/數據庫相關知識,作一些小網站
  • 學習PS/AI/PR/AE

課程總結二維碼

返回目錄

相關文章
相關標籤/搜索