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

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

每週做業連接彙總

第0周做業html

  • 簡要內容:安裝虛擬機,閱讀老師推薦文章後的一些感想以及粗略閱讀教材後所提出的一些問題。
  • 二維碼

第1周做業linux

  • 簡要內容:Linux常見的一些命令及實踐過程記錄
  • 二維碼

第2周做業git

  • 簡要內容:學習了vim的基本操做;學會使用gcc編譯器;學習了gdb的調試。
  • 二維碼

第3周做業編程

  • 簡要內容:學習了操做系統中的信息表示和處理;學習了整數與浮點數的轉換。
  • 二維碼

第5周做業vim

  • 簡要內容:彙編相關知識,指令集體系結構,函數調用棧幀過程
  • 二維碼

第6周做業緩存

  • 簡要內容:安裝了Y86處理器,瞭解Y86指令體系結構;學習ISA抽象。
  • 二維碼

第7周做業安全

  • 簡要內容:學習了局部性原理和緩存思想在存儲層次結構中的應用;根據代碼驅動的程序設計學習創建了項目結構。
  • 二維碼

第8周做業服務器

  • 簡要內容:總結並複習了前7周的學習內容。
  • 二維碼

第9周做業網絡

  • 簡要內容:學習Linux操做系統的基本I/O服務。
  • 二維碼

第10周做業數據結構

  • 簡要內容:學習並實踐了經常使用指令的代碼,加深了對指令的理解。
  • 二維碼

第11周做業

  • 簡要內容:學習了異常;經過實踐瞭解了進程的併發。
  • 二維碼

第12周做業

  • 簡要內容:複習了了第九周、第十週、第十一週代碼;進行了實驗的彙總。
  • 二維碼

第13周做業

  • 簡要內容:學習了網絡編程和多線程的基本內容
  • 二維碼

第14周做業

  • 簡要內容:學習了虛擬存儲器的概念及其做用
  • 二維碼

實驗報告連接彙總

實驗一 開發環境的熟悉

  • 簡要內容:熟悉Linux開發環境,使用armv4l-unknown-linux-gcc指令進行編譯
  • 二維碼

實驗二 固件設計

  • 簡要內容:多線程程序設計,pthread庫函數的使用
  • 二維碼

實驗三 實時系統的移植

  • 簡要內容:安裝ADS,安裝GIVEIO驅動及JTAG驅動的過程,在arm開發板上測試結果
  • 二維碼

實驗四 驅動程序設計

  • 簡要內容:Linux下進行驅動設計的原理,使用模塊方式進行驅動開發調試的過程
  • 二維碼

實驗五 網絡通訊

  • 簡要內容:學習在arm開發板上的SOCKET網絡編程
  • 二維碼

代碼

因爲以前虛擬機崩掉了,重裝了好屢次仍是用不了,因此每次的代碼實踐都是在實驗樓和同窗的電腦上作,因此這一部分沒法提交git log --pretty=format:"%h - %an, %ar : %s"的結果。
這是部分代碼以前在其餘同窗電腦上實踐的截圖

關於第0周學習

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

  • 部份內容抓住了重點,可是因爲課本知識比較片面,本身提出的問題仍是太單一,沒有深刻。

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

1. 多處理器與多線程的運行模式是什麼樣的?

  • 多路處理器是服務器上的技術,就是多個CPU
    CPU最初發展的時候是一個CPU一個處理核心,CPU的性能主要靠提升核心工做頻率來提升,因爲物理限制,不能把CPU的核心無限提升頻率,因此發展出來雙核心的CPU。兩個核心一塊兒工做須要靠軟件的支持。
  • 多線程:每個程序能夠包含至少一個線程,而多個線程之間能夠「併發」執行。

2. 爲何計算機算數運算會引起計算機的安全漏洞?
一個懷有惡意程序的計算溢出會破壞其餘的數據結構,會致使程序崩潰或者行爲異常

3. 如何對計算機中的信息進行表示,它的處理方法又是什麼?
計算機系統中的全部信息都是以二進制形式存儲的,計算機系統規定了三種重要的編碼方式:無符號編碼、補碼編碼、浮點數編碼。無符號編碼是基於傳統的二進制表示法,表示大於或等於0的數字;補碼編碼是表述有符號整數的常見方式,正或負的數字;浮點數編碼是表示實數的科學記數法的以2爲基數的版本。

4. 流水線怎麼利用?
SEQ(順序的)處理器,SEQ在執行命令時須要6步:一、取指;二、譯碼;三、執行;四、訪存;五、寫回;六、更新PC。在這過程當中,SEQ會花費大量的時間,爲了提升處理器的執行效率,引入流水線化的Y86處理器。也就是說,SEQ處理器一條指令執行必須上一條指令的6步所有結束後才能開始,而在流水化的處理器中只須要指令執行的一個步驟結束後下一個指令就能夠開始。

5. 對程序的優化具體應該從哪些方面下手?

  • 語句調整,用匯編重寫
  • 指令調整
  • 循環展開
  • 參數傳遞優化

6. 如何斷定一個存儲器單元是是否在穩態狀態?
靜態RAM存儲在一個雙穩態的單元裏,動態RAM對干擾比較敏感

7. 連接器是幹什麼的?
連接器是將一個或多個由編譯器或彙編器生成的目標文件外加庫連接爲一個可執行文件的程序,它的兩個主要任務是:符號解析及重定位。

8. 異常觸發的機制是怎樣的?有哪幾種類型的異常?

  • 當處理器監測到有事件發生時,經過一張叫作異常表的跳轉表,進行一個間接過程調用,到一個專門設計用來處理這類事件的操做系統子程序(異常處理程序)。
  • 異常分爲:中斷、陷阱、故障和終止。

9. 虛擬存儲器是如何工做的?
爲了給用戶提供更大的隨機存取空間而採用的一種存儲技術。它將內存與外存結合使用,好像有一個容量極大的內存儲器,工做速度接近於主存,每位成本又與輔存相近,在整機造成多層次存儲系統。  

10. I/O函數該如何正確的使用?
open 打開文件描述符
read
write
close 關閉文件描述符
vfcntl 修改文件描述符,例如改成不阻塞
lseek 移動文件讀寫的當前位置
ioctlfcntl相似
readdir 讀取目錄
select 多路選擇
readlink 讀取符號連接
stat 讀取文件屬性

11. 服務器如何將其餘信息傳遞給子程序?
經過fork函數或者exec類型的函數,共享文件表。

12. 如何有效控制併發線程的不安全性?

  • 線程安全就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其餘線程不能進行訪問直到該線程讀取完,其餘線程纔可以使用。不會出現數據不一致或者數據污染。
  • 線程不安全就是不提供數據訪問保護,有可能出現多個線程前後更改數據形成所獲得的數據是髒數據
  • 一方面,對申請訪問臨界資源的全部線程要公平對待,不能對部分線程優先考慮,使一些線程長時間獨佔資源,而使其它的線程進行長時間的等待,得不到資源。
  • 另外一方面,在考慮了公平性的同時,也不能忽視了安全性的考慮,出現某一個線程訪問臨界資源,導致程序不能正常運行,產生嚴重的後果。
  • 在Java中對多線程的併發控制應該作到公平性和安全性的理想兼容,兩方面都不可忽視。併發系統的公平性使得資源在多線程之間獲得至關科學和合理的分配,安全性保證了各線程的正常調度運行,從而使程序順利地執行結束,完成任務。

關於加分項目

優秀做業

第3周做業

  • 二維碼

第6周做業

  • 二維碼

第8周做業

  • 二維碼

第11周做業

  • 二維碼

GDB調試彙編堆棧過程分析

  • 二維碼

20145236 第九周問題彙總

  • 二維碼

經驗

我以爲最重要的仍是態度,畢竟態度決定一切,只要態度端正了,我以爲學習並非一件很是難的事情,不少時候不是說咱們學不會,而是不想學。只要認真對待,完成了應作的事情,就必定會有相應的回報。

課程收穫與不足

  • 本身的收穫
    在兩個學期這種自學模式的教學下,我自我學習的能力獲得了很大的提升,不僅是對於這門課的學習,對於這大學四年的學習也是很是有用的,我以爲有些東西是受益終生的。

  • 本身須要改進的地方
    本身的學習方法還須要改進,要克服自身得懶毛病。

  • 給開學初的你和學弟學妹們的學習建議
    無論作什麼事情都須要一種認真的態度去對待,無論這件事情是否是你喜歡去作的事情,咱們都要保持一種積極向上的心態去作好每一件力所能及的事。

  • 若是從新學習這門課,怎麼作才能夠學的更好
    若是從新學習這門課,就應該給本身制定一個計劃去學習,由於每週的學習任務都挺多的,若是都堆在一個時間段內學習,不免會消化不了。

問卷調查

  • 你平均每週投入到本課程多長時間?
    15小時
  • 每週的學習效率有提升嗎?
    有提升
  • 學習效果本身滿意嗎?
    比較滿意,還能作得更好
  • 你以爲這門課老師應該繼續作哪一件事情?
    我以爲老師應該繼續讓學生寫博客、扇貝打卡、每週的小測試。
  • 你以爲這門課老師應該開始作什麼新的事情?
    應該開始上課講解教材上的內容,由於畢竟咱們不是專業人員,徹底靠自學的模式對於一部分人來講不太好,好比他們遇到問題就直接放棄了,想要靠他們本身問確定是不可能的了,老師應該對每週同窗們反饋最廣泛的問題在課上進行講解。

本文連接和二維碼

相關文章
相關標籤/搜索