20145325張梓靖 《信息安全系統設計基礎》課程總結

20145325張梓靖 《信息安全系統設計基礎》課程總結

  • 每週做業連接彙總
    • 第0周做業:爲《信息安全系統設計基礎》課程學習作好準備,瞭解本學期該課程的學習任務與方法
    • 第1周做業:學習Linux各種命令,重點掌握其核心經常使用的命令(例,find/cheat/grep/man等),瞭解Linux操做系統,初步嘗試Linux下的C語言的編碼、編譯、調試、運行
    • 第2周做業:學習教程第一章、第七章;進一步學習Linux系統下的C語言的編碼(vim)、編譯(gcc)、調試(gdb/cgdb)、運行,掌握動態庫、靜態庫的生成與使用,學習makefile編譯的語法並理解其優越性
    • 第3周做業:學習教程第二章;掌握各類基礎的計算機信息表示知識,理解有符號整數與無符號整數的區別與轉換,掌握浮點數的表示
    • 第5周做業:學習教程第三章;掌握X86彙編基礎(注意ATT與Intel彙編代碼格式的不一樣),瞭解ISA,理解棧幀的使用與做用,學會用GDB進行棧幀的調試,觀察棧幀的變化
    • 第6周做業:學習教程第四章;掌握ISA,瞭解CPU硬件(ALU、寄存器、時鐘信號)、邏輯門,理解處理一條指令的序列以及SEQ的時序,瞭解流水線的特性;學會使用Y86模擬器,在YIS環境下對彙編文件進行彙編
    • 第7周做業:學習教程第六章;理解並掌握局部性原理,瞭解各種存儲技術,理解高速緩存的運做;對git內容格式進行調整
    • 期中總結:對上半學期學習內容的重點進行總結,並總結上半學期對該課程的學習收穫與不足
    • 第9周做業:學習教程第十章;使用man -kgrep -nr XXX /usr/include學習有關I/O的系統調用,掌握RIO、I/O重定向以及3種風格的錯誤處理
    • 第10周做業:結合代碼,深刻學習系統級 I/O,重點掌握open close/read/write/seek/stat的使用方法與做用
    • 第11周做業:學習教程第八章;理解進程與併發,瞭解異常處理與其類別,明白上下文切換、信號以及非本地跳轉的概念;結合代碼,深刻學習進程建立和控制的系統調用及函數使用(fork/exec/wait/waitpid/exit/getpid/getppid/sleep/pause/setenv/unsetenv)
    • 第12周做業:理解數組指針、指針數組、函數指針、指針函數的區別;結合代碼,深刻學習信號機制函數調用(kill/alarm/signal/sigaction),並掌握管道和I/O重定向函數(pipe/dup/dup2)
    • 第13周做業:學習教程第十一章;瞭解網絡編程的基礎知識,掌握三種併發方式:基於進程的併發編程、基於I/O多路複用的併發編程、基於I/O多路複用的併發事件驅動服務器;理解線程的概念,學習相關的系統調用;理解信號量,並能夠將其運做到線程中,實現同步互斥
    • 第14周做業:學習教程第九章;理解虛擬存儲器的概念與做用,清楚Linux缺頁異常處理,瞭解存儲器映射,掌握動態存儲器分配的方法;結合代碼,深刻理解線程與進程的區別,以及線程相關的系統調用的使用
  • 實驗報告連接彙總
    • 實驗一 開發環境的熟悉:使用 Redhat Linux 9.0 操做系統環境,安裝 ARM-Linux 的開發庫及編譯器。建立一個新目錄,並在其中編寫 hello.c 和 Makefile 文件。學習在 Linux 下的編程和編譯過程,以及 ARM 開發板的使用和開發環境的設置。下載已經編譯好的文件到目標開發板上
    • 實驗二 固件設計:瞭解多線程程序設計的基本原理。學習 pthread 庫函數的使用
    • 實驗三 實時系統的移植:使用ADS、GIVEIO驅動、JTAG驅動進行實時系統的移植
    • 實驗四 外設驅動程序設計:學習在 LINUX 下進行驅動設計的原理。掌握使用模塊方式進行驅動開發調試的過程
    • 實驗五 簡單嵌入式WEB服務器實驗:掌握在 ARM 開發板實現一個簡單 WEB 服務器的過程。學習在 ARM 開發板上的 SOCKET 網絡編程。學習 Linux 下的 signal()函數的使用
  • 代碼託管連接和二維碼
    • 代碼託管
    • 截圖 git log --pretty=format:"%h - %an, %ar : %s" 的結果:
      html

    • 代碼量彙總:
      git

    • 代碼驅動的學習作到沒有?:基本上作到了
    • 加點代碼,改點代碼是理解的最好方式,談談你的心得:
      • 要可以更好的理解各類系統調用以及函數的做用與區別,最好的方法就是先對其進行理論上、含義上的理解,而後再經過代碼進一步實踐判斷以前本身對其的理解是否正確,若是要檢驗是否本身已經真正的理解且能靈活運用的話,就須要本身加點代碼,看最後實踐出來的效果是否是同以前本身加代碼時預料的結果同樣,若是同樣,那麼才能說明本身對其確實是已經基本上算是掌握了。加點代碼,這確實很好的檢驗是否理解的方式
    • 實踐上有什麼經驗教訓:
      • 在實驗以前,必定要將與實驗相關的函數等等提早學習且認真思考後再進行實驗,只有當帶着本身的理解進行實踐時,才能夠快速的領悟。固然,最好是先本身將代碼看一遍,本身先理解代碼的意思與用途,而後估摸一下實踐的結果,這樣,在完成實踐後,可以明顯判斷知道本身理解的對錯,以及當猜想的與結果不一致時,可快速知曉本身理解的誤差在哪兒
  • 第0周做業中提出的問題
    • 第一章 併發與並行的區別:併發,多個進程看起來是同時發生的(對於一個CPU),其實是有前後順序調度的,只是調度的頻繁,宏觀上給人的感受是同時進行;並行,確實是不一樣的進程同時被執行(多個CPOU同時做用不一樣的進程)
    • 第二章 B2Uw與B2Tw表示什麼:B2Uw,w位2進制轉換爲無符號數;B2Tw,w位2進制轉換爲有符號數
    • 第三章 如何訪問條件碼:條件碼一般不會直接讀取,經常使用使用方法有三:
      • 可根據條件碼的某個組合,將一個字節設置爲0或1
      • 可條件跳轉到程序的某個其餘部分
      • 可有條件地傳送數據
    • 第四章 YIS與Y86的關係是什麼:YIS的目的是模擬Y86機器代碼程序的執行,而不去試圖模擬任何具體處理器實現的行爲
    • 第五章 延遲界限有什麼含義:當一系列操做必須按照嚴格順序執行時,由於在下一條指令開始以前,這條指令必須結束,這就是所說的延遲界限
    • 第六章 DRAM與SRAM存儲器的特性有什麼區別:DRAM,非持續的,敏感的,應用於主存和幀緩衝區;SRAM,持續的,非敏感的,應用於高速緩存存儲器
    • 第七章 鏈接器如何處理多重定義的符號:
      • 規則1:不容許有多個強符號
      • 規則2:若是有一個強符號和多個弱符號,那麼選擇強符號
      • 規則3:若是有多個弱符號,那麼從這些弱符號中任意選擇一個
    • 第八章 故障時如何處理的:
      • 當前指令致使一個故障
      • 控制傳遞給處理程序
      • 故障處理程序運行
      • 處理程序要麼從新執行指令,要麼終止
    • 第九章 虛擬頁面的集合:1)未分配的 2)緩存的 3)爲緩存的
    • 第十章 標準I/O庫提供什麼:提供fopen、 fclose、 fread、 fwrite、 fgets、 fputs、 scanf、 printf
    • 第十一章 協議軟件須要的基本能力:1)命名機制 2)傳送機制
    • 第十二章 Posix線程是什麼:是在C程序中處理線程的一個標準接口
  • 評價第0周做業中提出的問題
    • 大部分仍是抓住了每章學習的重點,但都是一些淺顯的問題,這也與尚未開始真正的學習每一部分的知識有關,因此對於某些細節過程沒有通過思考,所提出的問題也就先得淺顯及沒有不要。但無論怎麼說,提出疑問老是會激起解決問題的慾望的
  • 項目加分項
    • 優秀做業
      • 第2周做業:學習教程第一章、第七章;進一步學習Linux系統下的C語言的編碼(vim)、編譯(gcc)、調試(gdb/cgdb)、運行,掌握動態庫、靜態庫的生成與使用,學習makefile編譯的語法並理解其優越性
        * 編程

        • 第3周做業:學習教程第二章;掌握各類基礎的計算機信息表示知識,理解有符號整數與無符號整數的區別與轉換,掌握浮點數的表示
      • 第6周做業:學習教程第四章;掌握ISA,瞭解CPU硬件(ALU、寄存器、時鐘信號)、邏輯門,理解處理一條指令的序列以及SEQ的時序,瞭解流水線的特性;學會使用Y86模擬器,在YIS環境下對彙編文件進行彙編
        * vim

      • 期中總結:對上半學期學習內容的重點進行總結,並總結上半學期對該課程的學習收穫與不足
        * 數組

        • 第10周做業:結合代碼,深刻學習系統級 I/O,重點掌握open close/read/write/seek/stat的使用方法與做用
        • 第11周做業:學習教程第八章;理解進程與併發,瞭解異常處理與其類別,明白上下文切換、信號以及非本地跳轉的概念;結合代碼,深刻學習進程建立和控制的系統調用及函數使用(fork/exec/wait/waitpid/exit/getpid/getppid/sleep/pause/setenv/unsetenv)
    • 教程
  • 沒有項目被扣分緩存

  • 課程收穫與不足
    • 本身的收穫
      • 通過這門課程的學習,使我基本明白計算機的內部原理,不論是CPU、存儲器、虛擬內存、I/O設備,仍是各種的系統調用,組成了我對於計算機的基本認識:知道了在計算機中是如何存儲大量數據的,是如何協調各部分的運行效率以達儘量的高效處理的,CPU是如何一步一步執行命令的。每週投入到該課程的時間是不定的,但學習的量是必定得保證的,我不能說本身學習的效率很高,但我能確定的說,只要是當週學習的,都是我明白且理解的,至於運用上,不能說每週都有所實踐,但如如果趕上沒法理解的地方,那麼實踐是必須的。真心但願本身能作到學一門精一門,但在精以前,仍是得先保證本身學一門知一門
    • 本身須要改進的地方
      • 學一門知一門,是基礎。怎麼才能作到徹底的知也是須要花大工夫的,須要更多的投入精力、更多的堅持、更多的學習。在這方面,我不得不認可本身目前缺乏持續的行動。儘管本身知道只有堅持才能獲得更大的收穫,就像所說的日久見人心,不久,怎麼能把知識看透、學透,怎麼可能作到全知,怎麼有肯能達到精。因此,堅持吧,試着堅持作一事,試着去耐心等待,試着等待到體會成就的一天,那時候,堅持也就是一種習慣成天然的事了吧。
  • 給開學初的你和學弟學妹們的學習建議
    • 若是從新學習這門課,怎麼作才能夠學的更好
      • 深刻理解計算系統,裏面有不少其餘學科的知識,好比有彙編的內容,有Java Web的知識。因此說,知識是融會貫通的,想要更好的、輕鬆的學習這門課,就得對任何課都認真學習。固然,若是說肯提早下功夫,提早學習的話,那麼就會越學越輕鬆,越學越有意思。最重要的是,必定要學一點知識就理解一點,不要略過,由於前面的知識是後面學習的鋪墊,略過的話,只會讓學習起來愈加困難與厭倦
  • 問卷調查
    • 你平均每週投入到本課程多長時間?
      • 20個小時左右
    • 每週的學習效率有提升嗎?
      • 有,前期大量時間都花費在教材的閱讀上面,後來則是先在網上學習本週相關內容的知識點,而後再結合老師給的代碼進行更深刻的理解,最後再翻閱教材,對細節進行查看與學習
    • 學習效果本身滿意嗎?
      • 對於學習的效果比較滿意,雖然老是會對學過的內容有所遺忘,可是畢竟當時學得很辛苦,很深入,因此只要稍稍的翻閱查看一下,就會又回憶起該學習內容的重點
    • 課程結束後會繼續一週至少一篇博客嗎?
      • 固然,我會繼續堅持。將本身的想法寫下來是頗有趣的自我對話,也是將來的本身回憶之前的本身的一種途徑。多寫寫老是好的
    • 你以爲這門課老師應該繼續作哪一件事情?
      • 繼續堅持鍛鍊學生的自主學習能力,學會看書,書上看不懂就上網查,網上查不到就問同窗,同窗也解決不了的就問老師,老是有辦法的(圖書館查閱也是好的,但我以爲,若是僅僅只爲解決一個疑問,而不是學習一門新的技能,那圖書館查閱仍是很低效率的)
    • 你以爲這門課老師應該中止作哪一件事情?
      • 暫時沒有想到須要中止作的事
    • 你以爲這門課老師應該開始作什麼新的事情?
      • 暫時沒有想到還須要作的,我以爲如今挺好的
  • 本文連接和二維碼
相關文章
相關標籤/搜索