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

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

每週做業連接彙總

  • 第一週做業:Linux下開發環境、vi基本操做、gcc編譯器的使用,對每章提一個問題
    html

  • 第二週做業:補作課堂實踐、學習靜態庫和動態庫,模仿od實現myod
    node

  • 第三週做業:理解有符號整數、無符號整數、浮點數的表示,避免C語言中溢出,數據類型轉換中的陷阱和可能會致使的漏洞
    git

  • 第四周做業:補充課上實踐,掌握系統編程錯誤處理的方式;掌握Unix/Linux系統級I/O:open close read write seek stat;掌握I/O重定向的方法
    算法

  • 第五週做業:X86彙編基礎、ISA(指令集體系結構)、使用GDB進行調試
    編程

  • 第六週做業:瞭解異常及其種類、理解進程和併發的概念、掌握進程建立和控制的系統調用及函數使用
    windows

  • 第七週做業:ISA抽象及其做用、流水線和實現方式
    數組

  • 第八週做業:進程、線程、I/O多路複用三種併發方式,線程同步互斥及相關係統調用
    緩存

  • 第九周做業:RAM、ROM、磁盤、固態硬盤等存儲技術,局部性原理和緩存思想在存儲層次結構中的應用
    安全

  • 第十週做業:補交第十週課上測試,Linux下IPC機制
    服務器

  • 第十一週做業:虛擬存儲器、地址翻譯、存儲器映射、動態存儲器分配方法

  • 第十三週做業:從新學習教材第十二章:併發編程,完成該章課後習題

  • 第十四周做業:從新學習教材第四章《處理器體系結構》,完成該章習題

實驗報告連接彙總

代碼託管連接和二維碼

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

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

  • 碼雲連接

  • 代碼驅動的學習作到沒有?
  • 首先,養成每週將虛擬機上的代碼上傳到碼雲上的習慣;其次,學習利用虛擬機的查詢指令學習代碼,提升了實踐能力,這也是這學期在代碼驅動方面最顯著的提升。
  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
  • 優化現有的代碼不但能提升編程效率,並且能培養良好的編程思路,優化代碼是在弄懂代碼的基礎上進行的,能夠說是最好的學習方式了。
  • 實踐上有什麼經驗教訓
  • 課上的實踐是對過去幾周學習的一個檢測,雖然本學期不少時候沒有在課上徹底完成實踐的要求,可是在課下的補充學習中,能夠對課上實踐內容有更爲深入的認識。
  • 總體評價一下第1周做業中本身提出的問題是否是抓住了學習重點
  • 第一週我除了配置了本學習學習須要的實驗環境以外,還針對每章的內容提出了十二個問題,不敢說徹底抓住了學習重點,可是確定是沒有跑題的,不過多是由於參考教材目錄提出的問題,因此有些問題問的稍有一些大。

第1周做提出的問題

  • 第一章:操做系統的管理硬件有哪些?有什麼不一樣
操做系統的五大管理功能:
  (1)做業管理:包括任務、界面管理、人機交互、圖形界面、語音控制和虛擬現實等;
  (2)文件管理:又稱爲信息管理;
  (3)存儲管理:實質是對存儲「空間」的管理,主要指對主存的管理;
  (4)設備管理:實質是對硬件設備的管理,其中包括對輸入輸出設備的分配、啓動、完成和回收;
  (5)進程管理:實質上是對處理機執行「時間」的管理,即如何將CPU真正合理地分配給每一個任務。
  • 第二章:無符號數和數的補碼錶示有哪些特性?
無符號數(Unsigned number)是相對於有符號數而言的,指的是整個機器字長的所有二進制位均表示數值位,至關於數的絕對值
機器數就是在計算機裏面存儲的數, 真值是帶符號的數
原碼錶示法就是帶符號的絕對值表示
正數的補碼爲它自己,負數的補碼等於原碼的數值位取反加1。原碼變補碼和補碼變原碼的方法是同樣的。
  • 第三章:在機器程序中,如何將控制與數據鏈接起來?
  • 參考知乎中代碼是如何控制硬件的?這一問題的回答
  • 第四章:Y86-64是一種什麼樣的指令?
Y86是一個指令體系結構(ISA)經過Y86指令,可以更好的瞭解CPU處理指令的流程以及它的工做原理。
  • 第五章:如何減小程序須要作的工做的變換?
  • 這個問題比較大,參考張學令《程序優化與程序變換方法的研究》一文,優化程序主要從對程序進行並行化;提升程序的數據局部性;爲程序存儲優化提供支撐三個方面進行考慮。
  • 第六章:高速存儲對程序的性能影響如何?
  • 告訴緩存可以提高系統性能、加快程序運行速度;但若工做站中僅有一級告訴緩存且數量少,磁盤的數據和高速緩存以前的數據延遲不可忽略。能夠參考陳訊《高速緩存對系統的性能及加快程序執行速度的影響》一文。
  • 第七章:動態庫與靜態庫的不一樣?

    本質上來講,庫是一種可執行代碼的二進制形式,能夠被操做系統載入內存執行。庫有兩種:靜態庫(.a、.lib)和動態庫(.so、.dll)
    【靜態庫】是在連接階段,會將彙編生成的目標文件.o與引用到的庫一塊兒連接打包到可執行文件中。所以對應的連接方式稱爲靜態連接,注意如下三點:
    1.靜態庫對函數庫的連接是放在編譯時期完成的。
    2.程序在運行時與函數庫再無瓜葛,移植方便。
    3.浪費空間和資源,由於全部相關的目標文件與牽涉到的函數庫被連接合成一個可執行文件。  
    靜態庫存在的問題:
    1.空間浪費
    2.對程序的更新、部署和發佈頁會帶來麻煩。若是靜態庫libxx.lib更新了,全部使用它的應用程序都須要從新編譯、
    【動態庫】在程序編譯時並不會被鏈接到目標代碼中,而是在程序運行是才被載入。不一樣的應用程序若是調用相同的庫,那麼在內存裏只須要有一份該共享庫的實例,規避了空間    浪費問題。動態庫在程序運行時才被載入,也解決了靜態庫對程序的更新、部署和發佈頁會帶來麻煩。用戶只須要更新動態庫便可,增量更新。
    以上解答參考了靜態庫和動態庫的區別這篇博客
  • 第八章:應用程序是如何處理阻塞信號的?
執⾏信號的處理動做稱爲信號遞達,信號從產⽣到遞達之間的狀態,稱爲信號未決。進程能夠選擇阻塞某個信號。被阻塞的信號產⽣時將保持在未決狀態,直到進程解除對此信號的阻塞,才執行遞達的動做。
 Linux下常規信號在遞達以前產生屢次只計⼀次,而實時信號在遞達以前產⽣屢次能夠依次放在⼀個隊列裏。
  • 第九章:應用程序如何使用和管理虛擬內存?
windows 提供了三種機制來對內存進行操做
1)虛擬內存,最適合用來管理大型對象數組 或大型結構數組
2)內存映射文件,最適合用來管理大型數據流(一般是文件),以及在同一機器上運行的多進程之間共享數據。
3)堆,適合用來管理大量的小型對象。
  • 第十章:內核用什麼數據結構來表示打開的文件?
內核使用三種數據結構表示打開的文件,分別是文件描述符表、文件表和 V 節點表。
(1) 每一個進程在進程表中都有一個記錄項,記錄項中包含有一張打開文件描述符表,每一個描述符佔用一項。與每一個文件描述符相關聯的是:
    (a) 文件描述符標誌。
    (b) 指向一個文件表項的指針。
(2) 內核爲全部打開文件維持一張文件表。每一個文件表項包含:
    (a) 文件狀態標誌(讀、寫、添寫、同步和非阻塞等)。
    (b) 當前文件偏移量。
    (c) 指向該文件 V 節點表項的指針。
(3) 每一個打開文件(或設備)都有一個 v 節點(v-node)結構。v 節點包含了文件類型和對此文件進行各類操做的函數的指針。v 節點還包含了從磁盤讀取的 i 節點(i-node)的信息,i 節點信息包含了文件的全部者、文件長度、文件所在的設備、指向文件的實際數據塊在磁盤上的所在位置的指針等。
  • 第十一章:什麼是套接字接口?
應用層經過傳輸層進行數據通訊時,TCP和UDP會遇到同時爲多個應用程序進程提供併發服務的問題。多個TCP鏈接或多個應用程序進程可能須要 經過同一個TCP協議端口傳輸數據。爲了區別不一樣的應用程序進程和鏈接,許多計算機操做系統爲應用程序與TCP/IP協議交互提供了稱爲套接字 (Socket)的接口,區分不一樣應用程序進程間的網絡通訊和鏈接。
  • 第十二章:基於進程的併發和基於線程的併發的區別和聯繫?
先簡單說說線程與進程的概念:
 (1)進程是指一個內存中運行的應用程序,好比在Windows系統中,一個運行的exe就是一個進程。
 (2)線程是指進程中的一個執行流程。
多線程併發只是表面和感受上的併發,並非實質上的併發。一個線程要運行,它必須佔有CPU,而咱們目前用的計算機大多都是單CPU的,因此一次最多隻能有一個線程獲取CPU並運行。
多線程的實質是「最大限度地利用CPU資源」,當某一個線程的處理不須要佔用CPU而只須要和I/O等資源打交道時,讓其餘線程有機會得到CPU資源。
  • 你有什麼項目被加分,談談你的經驗
  • 我本學期參加密碼學方面的一個競賽;在課堂上沒有完成的實踐,課下我都會查詢資料盡力完成並將學習心得記錄下來。
  • 優秀做業
  • 第六週課堂測試補充

  • 第八週課下做業

  • 第九周課下實踐——實現mypwd

  • 競賽
  • 參加了第三屆全國密碼技術競賽並獲三等獎
  • 你有什麼項目被扣分,談談你的教訓
  • 暫時沒有

課程收穫與不足

  • 本身的收穫
  • 在這學期的學習中,雖不能達到教材名稱《深刻理解計算機系統》這個要求,可是對計算機系統也確實有了一個系統的瞭解。特別是編譯運行Linux下的程序、彙編、存儲、進程、併發這幾個方面都有了進一步的研究,這些知識在操做系統那門課中也有學習,進一步加深了了解和認識。
  • 本身須要改進的地方
  • 我認爲我在教材的效率方面是有待提升的,教材內容多,若是一頁頁看的話很難看完,這就對一整章形成學習不充分的影響,在後幾章的學習中,我更多的是參考老師給出的實驗樓實踐連接,對課本進行更爲系統的學習,這樣提升了效率,我認爲這是我從此學習其餘知識也須要注意的方向。
  • 若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
  • 我常閱讀搭檔的博客,是對同一個知識點不一樣角度的學習;這學期大部分實驗課都須要和同伴一塊兒完成,在合做中咱們取長補短、共同進步,每次課後的博客都由咱們兩我的共同書寫,要點更加完善,收穫也更多。
  • 給開學初的你和學弟學妹們的學習建議
  • 但願你們在學期初就找到適合本身的學習方法,並制定這門課程的學習計劃,按照本身的計劃和方法來學習。
  • 若是從新學習這門課,怎麼作才能夠學的更好
  • 在完成每週任務的同時進行適當的預習

問卷調查

  • 你平均每週投入到本課程多長時間?
  • 平均每週投入半天(5h)的時間,若是任務大可能投入一天(10h)的時間
  • 每週的學習效率有提升嗎?
  • 在學期中期效率是比較高的,學期開始由於對課程內容不熟悉,因此效率並不高,這一狀況在通過幾周的磨合和適應後獲得改變
  • 學習效果本身滿意嗎?
  • 還能夠,可是我認爲能夠在學習新知識點上效率更高,在通讀教材及前幾屆的優秀博客後,對知識點已經有個大體的瞭解,可是還須要花費一些時間把他們總結整理成markdown格式的筆記,稍微浪費一些時間。
  • 課程結束後會繼續一週至少一篇博客嗎?
  • 這個不能作出保證,可是我已經將寫博客養成一種學習習慣,在從此的學習中,也會把所學所思寫成博客記錄下來
  • 你以爲這門課老師應該繼續作哪一件事情?
  • 分組學習,所謂1+1>2,在這門課和同伴的共同窗習中,能取得事半功倍的成果。
  • 你以爲這門課老師應該中止作哪一件事情?
  • 過於形式主義的任務,好比出門門票的提交…
  • 你以爲這門課老師應該開始作什麼新的事情?
  • 在課上對每章的重點內容進行講解,方便有側重點的自學

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

相關文章
相關標籤/搜索