1. 程式人生 > >20155218 《信息安全系統設計基礎》課程總結

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

之間 運行 遇到 clas 表示 進制 上一個 實驗報告 安全系統

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

一、(按順序)每周作業鏈接匯總

  • 第一周作業:

技術分享圖片

  • 第三周作業:

技術分享圖片

  • 第四周作業:

技術分享圖片

  • 第五周作業:

技術分享圖片

  • 第七周作業:

技術分享圖片

  • 第八周作業:

技術分享圖片

  • 第九周作業:

技術分享圖片

  • 第十一周作業:

技術分享圖片

  • 第十三周作業:

技術分享圖片

  • 第十四周作業:

技術分享圖片

二、實驗報告鏈接匯總

  • 實驗一:開發環境的熟悉

技術分享圖片

  • 實驗二:固件程序設計

技術分享圖片

  • 實驗三 實時系統

技術分享圖片

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

技術分享圖片

  • 實驗五 通訊協議設計

技術分享圖片

代碼托管鏈接和二維碼:

  • 代碼量:
    技術分享圖片
  • 代碼驅動的學習做到沒有?

    這學期的學習,我盡力去實踐代碼驅動,遇到問題和疑惑盡量通過自己敲代碼和調試來解決並通過gdb來輔助學習。
  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得:

    在過去的代碼編寫的時候我確實寫了很多面條代碼,十分的混亂。現在在學習的過程中需要代碼的層層叠代使用,下一個實驗需要建立在上一個實驗的基礎上,修改代碼時,模塊化愈顯重要,也在一些合適地方學會了加註釋,同時盡量用英語來起變量名。
  • 實踐上有什麽經驗教訓

老師給的許多題目網上都有代碼,但應該學習其思路看其方法,最後自己寫代碼,然後才能逐漸的進步,找到短板。

  • 整體評價一下第1周作業中自己提出的問題是不是抓住了學習重點:

大部分還是抓到了重點,但還是有一些只是該章的難點並不是重點;

  • 回答一下第1周作業中自己提出的問題

###### 第一章《計算機系統的漫遊》

  • 問題:如何理解信息=位+上下文;
  • 期末解答:源程序實際上就是一個由值0和1組成的位(bit)序列,8個位被組織成一組,稱為字節。每個字節表示程序中某個文本字符。系統中所有的信息—包括磁盤文件、存儲器中的程序、存儲器中存放的用戶數據以及網絡上傳送的數據,都是由一串位表示的。區分不同數據對象的唯一方法是我們讀到這些數據對象時的上下文。比如,在不同的上下文中,一個同樣的字節序列可能表示一個整數、浮點數、字符串或者機器指令。上下文就是程序運行的環境;
    ###### 第二章《信息的表示和處理》
  • 問題:有符號和無符號數之間的轉換
  • 期末解答:在第一章裏提過,信息=位+上下文;有符號數與無符號數,底層位不變,上層解釋改變;例如,-12345的16位補碼表示與53191的16位無符號表示是完全一樣的,即位表示不變,而解釋這些位的方式發生改變,
    ###### 第三章《程序的機器級表示》
  • 問題:如何利用緩沖區溢出進行網絡攻擊
  • 期末解答:通過學習本門課程和信息安全技術,我對這個問題有了些許理解,緩沖區溢出會使程序執行它本來不會執行的函數,例如,利用緩沖區溢出,使一個指向攻擊代碼的指針覆蓋返回地址,執行返回指令的的效果就是跳轉到了攻擊代碼。
    ###### 第四章《處理器體系結構》
  • 問題:匯編指令如何與機器對應
  • 期末解答:處理器在執行一系列指令時,指令被編碼為由一個或多個字節序列組成的二進制格式。每條指令需要1~10個字節不等,這取決於需要哪些字段。並且指令集的另一個重要性質就是字節編碼必須有唯一的解釋,每條指令的第一個字節有唯一的代碼和功能組合,給定這個字節,可以決定所有其他附加字節的長度和含義,從而保證了處理器可以準確的執行目標代碼程序;
    ###### 第五章《優化程序性能》
  • 問題:如何實現優化程序性能,以及實現的方法:
  • 期末解答:

1、編寫高效程序:合適的數據結構和算法,編譯器能夠有效優化以轉換為高效可執行代碼的源碼,對處理量特別大的計算將任務分為多個部分;
2、程序優化:消除不必要的內容(函數調用,條件測試,存儲器引用);
3、使程序性能最大化:需要一個目標機器的模型,指明如何處理指令,以及各個操作的時序特性;
4、利用處理器提供的指令級並行能力同時執行多條指令;
5、降低計算不同部分之間的數據相關,增加並行度,同時執行;
6、研究程序的編譯代碼表示,是理解編譯器以及產生的代碼如何運行的最有效的手段之一;
7、確認關鍵路徑,決定執行一個循環所需要的時間(至少是一個時間下界);
8、關鍵路徑是在循環的反復執行過程中形參的數據相關鏈;
###### 第六章《存儲器層次結構》

  • 問題:什麽是局部性原理,一個具有良好局部性的程序會有哪些優點?
  • 期末解答:在謝婷婷老師的操作系統裏也有講過這個問題,局部性指空間局部性和時間局部性,好的時間局部性指被引用過一次的內存位置在不久的將來會被多次引用,好的空間局部性指,如果一個內存位置被引用了一次,那麽程序很可能在不遠的將來引用附近的一個內存位置。具有良好局部性的程序傾向於訪問相同的數據項集合,或者傾向於訪問臨近的數據項集合,所以傾向於從存儲器層次結構中較高層次處訪問數據項,因此運行更快。
    ###### 第七章《鏈接》
  • 問題:為什麽要用靜態庫和動態庫:
  • 期末解答:庫是別人寫好的現有的,成熟的,可以復用的代碼,你可以使用但要記得遵守許可協議。現實中每個程序都要依賴很多基礎的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。共享庫的好處是,不同的應用程序如果調用相同的庫,那麽在內存裏只需要有一份該共享庫的實例。當程序與靜態庫連接時,庫中目標文件所含的所有將被程序使用的函數的機器碼被copy到最終的可執行文件中。這就會導致最終生成的可執行代碼量相對變多,相當於編譯器將代碼補充完整了,這樣運行起來相對就快些。不過會有個缺點: 占用磁盤和內存空間.靜態庫會被添加到和它連接的每個程序中, 而且這些程序運行時,都會被加載到內存中.無形中又多消耗了更多的內存空間.與共享庫連接的可執行文件只包含它需要的函數的引用表,而不是所有的函數代碼,只有在程序執行時, 那些需要的函數代碼才被拷貝到內存中。這樣就使可執行文件比較小, 節省磁盤空間,更進一步,操作系統使用虛擬內存,使得一份共享庫駐留在內存中被多個程序使用,也同時節約了內存。不過由於運行時要去鏈接庫會花費一定的時間,執行速度相對會慢一些,總的來說靜態庫是犧牲了空間效率,換取了時間效率,共享庫是犧牲了時間效率換取了空間效率。
    ###### 第八章《異常控制流》
  • 問題:什麽是異常控制流:
  • 期末解答:異常控制流是程序運行時,應對一些函數調用或者分支跳轉都無法處理的事情:I/O中斷(ctrl+c)或者計時器中斷(進程切換)所創立的一套機制。異常分為同步異常和異步異常(中斷):

異步異常:CPU無法預料是否會發生的異常,也稱作中斷。如I/O中斷(ctrl+c)或者計時器中斷(進程切換)。

同步異常:CPU能預見有可能發生的異常。如:page fault(讀取數據的時候預料到有可能),trap(調用某些系統函數,如open的時候,觸發陷阱,進行系統調用)。其實還有一個叫abort,發生嚴重錯誤,無法恢復運行。

###### 第九章《虛擬內存》

  • 問題:虛擬內存是什麽?有什麽用處?
  • 期末解答:虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。虛擬內存可以大於物理內存,一般為物理內存的1.5倍到3倍,從而可以運行比物理內存大的程序,進而使得更多的程序可以同時執行,提高了多道程序的程度,增加了CPU的使用率,並且使得進程之間的獨立性得到了更好的體現。

###### 第十章《系統級I/O》

  • 問題:在linux中一切皆文件,那麽是如何對其進行操作的;
  • 期末解答:內核用三個相關的數據結構來表示打開的文件:描述符表、文件表、v-node表。內核中,對應於每個進程都有一個獨立的文件描述符表,表示這個進程打開的所有文件。文件描述符表中每一項都是一個指針,指向一個用於描述打卡的文件的數據塊——文件表,所有進程共享這張表文件表的表項包括當前的文件位置、引用計數(即當前指向該表項的描述符表項數)、以及一個指向v—node表中對應表項的指針,所有進程共享v-node表,每個表項包含stat結構中的大多數信息。
    技術分享圖片
    技術分享圖片
    技術分享圖片
    ###### 第十一章《網絡編程》
  • 問題:什麽要使用套接字進行網絡編程?套接字到底是什麽?
  • 期末解答:這部分我們在劉念老師的課上也學習過,所以理解更好的一點。Linux環境下使用套接字進行進程之間的通信。套接字接口(socket interface)是一組函數,也是操作系統提供給應用程序的接口。在Unix系統中,套接字和Unix I/O函數結合起來,用來創建網絡應用程序。(也就是說,操作系統對外只提供了套接字作為網絡通信的接口,假如想進行網絡通信,套接字我們用也得用,不用也得用,而且使用套接字來進行網絡通信是十分通用的方法)。這裏最典型的就是客戶端--服務器模型。一個“套接字”是連接的一個端點。每個套接字都有相應的“套接字地址”,是由一個因特網地址(IP地址)和一個16位的整數“端口”組成的,用"地址:端口"來表示。當客戶端發起一個連接請求時,客戶端套接字地址中的端口是由內核自動分配的,稱為“臨時端口”(ephemeral port)。然而,服務器套接字地址中的端口通常是和某個“知名”的端口,是和這個服務相對應的。例如,Web服務器通常使用端口80,而電子郵件服務器使用端口25
    ###### 第十二章《並發編程》
  • 問題:有哪幾種構造並發編程的方法,分別為什麽?
  • 期末解答:

    1、進程。用這種方法,每個邏輯控制流都是一個進程,由內核來調度和維護。因為進程有獨立的虛擬地址空間,想要和其他流通信,控制流必須使用某種顯式的進程間通信機制。

    2、I/O多路復用。在這種形式的並發編程中,應用程序在一個進程的上下文中顯式地調度它們自己的邏輯流。邏輯流被模型化為狀態機,數據到達文件描述符後,主程序顯式地從一個狀態轉換到另一個狀態。因為程序是一個單進程,所以所有的流都共享同一地址空間。

    3、線程。線程是運行在一個單一進程上下文中的邏輯流,由內核進行調度。你可以把線程看成是其他兩種方式的混合體,像進程流一樣由內核進行調度,而像I/O多路復用流一樣共享同一虛擬地址空間。
  • 你有什麽項目被加分,談談你的經驗
  • 競賽:抓住機會,不到最後不要放棄;
  • 疑惑:我不太明白額外加分為什麽要折算一下,如果說只有十分的額外加分,那超過十分的就按十分來算就可以了。這樣折算的話額外加分的4分才約等於1分。這樣的話當初直接加一分不就行了嗎?
  • 課程收獲與不足
  • 自己的收獲(投入,效率,效果等)

    其實有了上學期的鋪墊,這學期在投入產出比更好了一些,因為知道該在哪些地方去下功夫,效率自然也有提高了。
  • 自己需要改進的地方
  • 給開學初的你和學弟學妹們的學習建議
    • 如果重新學習這門課,怎麽做才可以學的更好:

    如果重新學這門課我會認真的去做老師給的課上實踐,搞懂原理,理清思路。真真正的能夠舉一反三;

  • 問卷調查
  • 你平均每周投入到本課程多長時間?

大約會有十個小時左右吧,按照每周的任務不同。

  • 每周的學習效率有提高嗎?

有時候遇到自己比較熟悉的知識點效率就會比較高,如果遇到難點就比較難理清頭緒,效率就比較低。

  • 學習效果自己滿意嗎?

還可以。

  • 你覺得這門課老師應該繼續做哪一件事情?

使用藍墨雲,這個軟件讓我們上課內容和下課任務很條理,希望老師能繼續使用。

  • 你覺得這門課老師應該停止做哪一件事情?

暫時沒有,老師這學期的改變已經很不錯了。

  • 你覺得這門課老師應該開始做什麽新的事情?
    我覺得老師在教學改革已經做得很領先了。

  • 給出你的總結的鏈接和二維碼

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