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

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

每週做業連接彙總

- 第一週做業:

  1. 簡要內容:教材第1、七章學習總結

- 第二週做業:

  1. 簡要內容:myod實現

- 第三週做業:

  1. 簡要內容:教材第二章學習總結

- 第五週做業:

  1. 簡要內容:教材第三章學習總結及mybash實現
  2. 二維碼:
    1. 教材第四章學習總結
    html

    2. mybash實現
    ![](http://images2017.cnblogs.com/blog/1065404/201712/1065404-20171228001041941-1355853709.png)

- 第六週做業:

  1. 簡要內容:學習系統調用並實現mybash

- 第七週做業:

  1. 簡要內容:教材第四章學習總結

- 第八週做業:

  1. 簡要內容:課上練習3的daytime服務器分別用多進程和多線程實現成併發服務器並測試以及第八週學習總結
  2. 二維碼
    1. 第八週課下做業
    java

    2. 第八週學習總結

- 第九周做業:

  1. 簡要內容:mypwd的實現以及第九周學習總結
  2. 二維碼
    1. 第九周課下做業
    linux

    2. 第九周學習總結

- 第十週做業:

  1. 簡要內容:第六章課上測試

- 第十一週做業:

  1. 簡要內容:第九章學習總結

- 第十三週做業:

  1. 簡要內容:學習第5章總結

- 第十四周做業:

  1. 簡要內容:學習第12章總結

實驗報告連接彙總

- 實驗一

  1. 實驗名稱:熟悉開發環境
  2. 簡要內容:熟悉開發環境

- 實驗二

  1. 實驗名稱:固件程序設計
  2. 簡要內容:固件程序設計:
    1. 1-MDK
    2. 2-LED
    3. 3-UART
    4. 4-國密算法

- 實驗三

  1. 實驗名稱:實時系統
  2. 簡要內容:實時系統:
    1. 實現mywc
    2. 使用多線程實現wc服務器並使用同步互斥機制保證計數正確

- 實驗四

  1. 實驗名稱:外設驅動程序設計
  2. 簡要內容:外設驅動程序設計

- 實驗五

  1. 實驗名稱:通信協議設計
  2. 簡要內容:openssl的安裝和使用

代碼託管連接

- 代碼託管二維碼:

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

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

  • 代碼驅動的學習作到沒有?
    • 下載安裝使用it、vim、gdb、gdbc、使用dmesg調試。
  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
    • 我在學習的時候經常會以教材名稱進行搜索,對這本教材的評價都是太過深奧,有一篇關於第11章的講解中提到本書中的代碼都是很是精華的大師之做。在簡練的代碼中實現了很是多的功能。在這樣的代碼的基礎上修改確實很方便,可是不利於咱們本身編程。代碼仍是應該本身去敲,再思考咱們和教材上的代碼的差距,纔能有所收穫。
  • 實踐上有什麼經驗教訓git

    - 早作準備,有問題儘可能本身解決。說實在的,不少時候難題對於你們都是同樣難,本身動手解決才能在下次遇到問題時,有辦法解決
  • 總體評價一下第1周做業中本身提出的問題是否是抓住了學習重點
    • 基本上抓住了程序員

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

      1.虛擬內存的含義和存在的意義算法

虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認爲它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它一般是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在須要時進行數據交換。
   別稱虛擬存儲器(Virtual Memory)。電腦中所運行的程序均需經由內存執行,若執行的程序很大或不少,則會致使內存消耗殆盡。爲解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬盤空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬盤來充當內存,以緩解內存的緊張。若計算機缺少運行程序或操做所需的隨機存儲器 (RAM),則 Windows 會用之進行補償。它將計算機的RAM和硬盤上的臨時空間組合。當RAM運行速率緩慢時,它便將數據從RAM移動到稱爲「分頁文件」的空間中。將數據移入與移出分頁文件可釋放RAM,以便完成工做。 通常而言,計算機的RAM越多,程序運行得越快。若計算機的速率因爲RAM可用空間匱乏而減緩,則可嘗試借增長虛擬內存來進行補償。可是,計算機從RAM讀取數據的速率要比從硬盤讀取數據的速率快,於是擴增RAM容量(可加內存條)是最佳選擇。

2.C語言中的位級運算的實際應用有什麼編程

按位存儲的數據的清零和置位

3.解釋內存中的棧、堆和靜態存儲區的用法?vim

堆區:
    1.存儲的所有是對象,每一個對象都包含一個與之對應的class的信息。(class的目的是獲得操做指令)
    2.jvm只有一個堆區(heap)被全部線程共享,堆中不存放基本類型和對象引用,只存放對象自己.

    3.通常由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。

    棧區:
    1.每一個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象),對象都存放在堆區中
    2.每一個棧中的數據(原始類型和對象引用)都是私有的,其餘棧不能訪問。
    3.棧分爲3個部分:基本類型變量區、執行環境上下文、操做指令區(存放操做指令)。

    4.由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等.
    
    靜態區/方法區:
    1.方法區又叫靜態區,跟堆同樣,被全部的線程共享。方法區包含全部的class和static變量。
    2.方法區中包含的都是在整個程序中永遠惟一的元素,如class,static變量。

   3.全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另外一塊區域。

4.Y86和X86的區別和聯繫數組

Y86是一個指令體系結構(ISA),它是一個寫這本書的做者出的指令集.目的是爲了讓咱們更加清晰地瞭解ISA,就像在讀編譯原理的時候,做者會教你作個編譯器是同樣的道理.
   
   Y86和X86的區別在於,有的時候Y86須要兩條指令來達到X86一條指令就能夠達成的目的.
 
   好比對於X86指令中的addl $4,%ecx這樣的指令,因爲Y86當中的addl指令不包含當即數,因此Y86須要先將當即數存如寄存器,即便用irmovl指令,而後再使用addl來處理加法運算.
 
   總的來講,Y86就是X86的一個縮減版,他的目的就是以簡單的結構來實現一個處理器,幫助咱們瞭解處理器的設計和實現.

5.什麼是循環展開?安全

循環展開就是經過在每次迭代中執行更多的數據操做來減少循環開銷的影響。其基本思想是設法把操做對象線性化,而且在一次迭代中訪問線性數據中的一小組而非單獨的某個。這種思想主要適用於計算循環索引和測試循環條件的開銷部分所佔比重過大(相對於循環體內執行的指令而言),連續執行一組相同的指令,能提升指令的cache命中率。

6.對程序引用的局部性和局部存儲有什麼關係

虛擬存儲管理的效率與程序局部性程序有很大關係。根據統計,進程運行時,在一段時間內,其程序的執行每每呈現出高度的侷限性,包括時間局部性和空間局部性。
   一、時間局部性:是指若一條指令被執行,則在不久的未來,它可能再被執行。
   二、空間局部性:是指一旦一個存儲單元被訪問,那它附近的單元也將很快被訪問。

7.使用動態靜態連接庫的緣由

避免重複寫代碼

8.系統調用是如何實現的

經過exev或者其餘調用系統命令的函數

9.如何規避C程序中常見的與內存有關的錯誤?

類型 1:內存未分配成功,卻使用了它。
   方   法:在使用以前檢查指針是否爲NULL。
             1)當指針p是函數的參數時,在函數入口處用語句assert(p!=NULL)進行斷言檢查。
             2)當使用malloc或new來申請內存時,應該用if(p != NULL)進行防錯檢查。
   類型 2:引用了還沒有初始化的指針
   原   因:內存的缺省初始值到底是什麼並無統一的標準,在使用以前都進行初始化。
              1)沒有初始化的觀念。
              2)內存的缺省值是未定義,即垃圾值。
   類型 3:越界操做內存
   原   因:內存分配成功且初始了,但越界操做是不容許的。
   例   如:在使用數組時常常發生下標「多1」或「少1」,特別是在for循環語句時。
   類型 4:忘記釋放內存,形成內存泄漏。
   原   因:含有這種類型錯誤的函數,每被調用一次,就丟失一塊內存。當內存充足時看不到這種錯誤帶來的影響,當內存耗盡時系統提示:「內存耗盡」。所以,動態內存的申請與釋放必須配對,程序中malloc與free的使用次數要相同。
   類型 5:釋放了內存卻繼續使用它
   原   因:對應的狀況有2種
              1)返回了「棧內存的指針或引用」,由於堆棧中的變量在函數結束後自動銷燬。
              2)某塊內存被free後,沒有將指向該內存的指針設置爲NULL,致使產生「野指針」。

10.I/O是一種文件嗎?

linux把設備看成一種特殊文件整合到文件系統中。
   每一個I/O設備分配一個路徑,一般放在/dev目錄下,每一個設備都必須有主次設備號,主設備號相同的設備是同類設備(使用同一個驅動程序)。
   這些設備中,有些設備是對實際物理硬件的抽象,而有些設備則有內核自身提供的功能(不能依賴於特定的物理硬件,又稱爲「虛擬設備」)

11.客戶端服務器通訊的基本流程

服務器端:
   – 申請一個socket (socketWatch)用來監聽的
   – 綁定到一個IP地址和一個端口上
   – 開啓偵聽,等待接授客戶端的鏈接
   – 當有鏈接時建立一個用於和鏈接進來的客戶端進行通訊的socket(socketConnection)
   – 即續監聽,等侍下一個客戶的鏈接

  客戶端:
   – 申請一個socket(socketClient)
   – 鏈接服務器(指明IP地址和端口號)

12.信號量如何實現互斥的?

信號量,也就是操做系統中所提到的PV原語,能達到互斥和同步的效果,這就是今天咱們所要講述的信號量線程控制。
   PV原語是對整數計數器信號量sem的操做,一次P操做可以使sem減一,而一次V操做但是sem加一。進程(或線程)根據信號量的值來判斷是否對公共資源具備訪問權限。當信號量的值大於零或等於零的時候,該進程(或線程)具備對公共資源訪問的權限,不然,當信號量的值小於時,該進程(或線程)就會被阻塞,直到信號量的值大於或等於一。

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

- 總結

- 教程


課程收穫與不足

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

- 能夠在學習以前先去看看別人的學習總結,就像看看天氣預報不要一點準備都沒有;在實踐 的時候克服本身的畏難心理;

2. 本身須要改進的地方

- 學習的時候經常抓不住重點,仍是要多向別人學習

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

- 結對最好是能有優點互補的,個人學習搭檔對於個人幫助是安裝軟件,實踐動手,我能幫到他的是理論學習和編程

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

- 有問題本身解決。

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

- 別由於學習任務重就不出去玩從而影響到對學習的熱情。

問卷調查

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

- 基本天天都學,具體多長時間說不清楚,一天至少半個小時。

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

- 比上個學期好不少,不過仍是很拖沓

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

- 學無止境

4. 課程結束後會繼續一週至少一篇博客嗎?(若是能作到,畢業時我把你的博客給你集結成一本書送給你做記念)

- 有了發博客的習慣應該不會輕易停下來,不過到了大四可能博客內容會變成複習國考。

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

- 寫博客

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

- 制定學習任務的目標時多考慮班上大多數同窗的水平。

給出你的總結的連接和二維碼

相關文章
相關標籤/搜索