20155330 《信息安全系统设计基础》课程总结
20155330 《信息安全系統設計基礎》課程總結
每周作業鏈接匯總
第一周作業:使用gcc編譯器的常用選項、使用gdb調試技術、makefile基本原理及語法規范
第二周作業:vi測試、gcc測試
第三周作業:信息的表示和處理
第四周作業:實現myod、head,tail的使用
第五周作業:匯編語言、指令
第六周作業:使用gdb跟蹤匯編代碼、異常控制流、系統級I/O
第七周作業:Y86-64處理器
第八周作業:網絡編程
第九周作業:存儲器層次結構
第十周作業:實現state命令、研究Linux下IPC機制
第十一周作業:虛擬內存
第十二周作業:無
第十三周作業:總結學的最好的一章
第十四周作業:重學學的最差的一章
實驗報告鏈接匯總
實驗一 開發環境的熟悉:交叉編譯
實驗二 固件程序設計:MDK、LED、URAT、國密算法
實驗三 實時系統:客戶端-服務器通信
實驗四 外設驅動程序設計:在虛擬設備驅動源碼目錄下編譯并加載驅動模塊
實驗五 通信協議設計:OpenSSL、混合密碼系統進行防護
代碼托管鏈接和二維碼:
截圖 git log --pretty=format:"%h - %an, %ar : %s" 的結果
- 代碼量匯總提交statistics.sh的支持截圖
代碼驅動的學習做到沒有?
不算完全做到吧,主要還是參考別的代碼再進行編寫。
加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
代碼學習主要還是在已有代碼的基礎上,加上自己的理解對代碼進行改編,這學期的實踐項目比較多,在一定程度上也提高了自己編寫代碼的能力。實踐上有什么經驗教訓
課堂實踐還是需要提前的預習,在充分理解題意的情況下才能完成,臨時抱佛腳是一種不可取的行為。
整體評價一下第1周作業中自己提出的問題是不是抓住了學習重點
第1周作業中的問題主要針對每章主題里的部分內容進行了提問,好像沒有特別抓住其中的重點,主要還是對未學習內容提出了問題。
回答一下第1周作業中自己提出的問題
第一章:虛擬內存與物理內存的區別?
物理內存是安裝在主機板上的內存。
虛擬內存是作業系統在硬盤上建立一個檔案,把物理內存中不常用的部分拷貝起來,再把那個部分的物理內存清空,方便別的程序寫入。虛擬內存的大小是可以自定,但是大小通常在物理內存的1到2倍之間,太大的話,虛擬內存的效能會下降。
因為虛擬內存在硬盤上,所以它的速度是取決于硬盤的存取速度、碎片的多少等。另外,因為它不像物理內存一樣,資料與停機后消失,所以虛擬內存是可以透過解密方法讀取其中的資料。第二章:布爾代數如何在實際中應用?
布爾代數不僅可以在數學領域內實現集合運算,更廣泛應用于電子學、計算機硬件、計算機軟件等領域的邏輯運算:當集合內只包含兩個元素(1和0)時,分別對應{真}和{假},可以用于實現對邏輯的判斷。
常見的應用包括: 數字電路設計,0和1與數字電路中某個位的狀態對應,例如:高電平、低電平。 計算機的網絡設置,利用計算機的二進制特性,將子網掩碼與本機IP地址進行邏輯與運算,可以得到計算機的網絡地址和主機地址。 數據庫應用,通過SQL語句查詢數據庫時需要進行邏輯運算,確定具體的查詢目標。第三章:機器級代碼與C語言代碼的區別?
對于機器級編程來說,兩種抽象很重要:
1、指令集體系結構(Instruction set architecture ISA)
它定義了處理器狀態、指令的格式,以及每條指令對狀態的影響。
IA32將程序的行為描述成好像每條指令時按順序執行的,一條指令結束后,下一條再開始。(實際上處理器并發地執行許多指令,但是可以采取措施保證整體行為與ISA指定的順序執行完全一致)
2、機器級程序使用的存儲器地址是虛擬地址
提供的存儲器模型看上去是一個非常大的字節數組。存儲器系統的實際實現是將多個硬件存儲器和操作系統軟件組合起來。
程序存儲器(program memory)包含:程序的可執行機器代碼、操作系統需要的一些信息、棧、堆。程序存儲器用虛擬地址來尋址(此虛擬地址不是機器級虛擬地址)。操作系統負責管理虛擬地址空間(程序級虛擬地址),將虛擬地址翻譯成實際處理器存儲器中的物理地址(機器級虛擬地址)。C語言
C語言是一個有結構化程序設計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
不同的變量類型可以用結構體(struct)組合在一起。
只有32個保留字(reserved keywords),使變量、函數命名有更多彈性。
部份的變量類型可以轉換,例如整型和字符型變量。
通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
第四章:SEQ具體指什么?
SEQ是 Sequential CPU的實現,表現在指令的執行要依次經歷各個階段(Fetch->Decode->Execut->Memory->WriteBack->PC Update).每一個指令在一個時鐘周期內完成。第五章:寄存器溢出的弊端?
不能很好的實現循環并行性,對維護多個累積變量的優勢有一定影響。第六章:局部性對存儲器層次結構的重要意義?
有良好局部性的程序比局部性差的程序運行得快。第七章:如何進行重定位?
重定位就是把程序的邏輯地址空間變換成內存中的實際物理地址空間的過程,也就是說在裝入時對目標程序中指令和數據的修改過程。第八章:如何有效處理異常?
1.直接終止程序(自殺)
2.返回一個錯誤的值,附加錯誤碼
3.返回一個合法的值,讓程序處于某種非法的狀態4.調用一個預先準備好在出現"錯誤"的情況下使用的函數.
5.通過暴力的方式解決:abort()函數和常見exit()函數.
6.使用goto語句
7.使用setjmp()與longjmp()第九章:虛擬內存對系統的重要意義?
虛擬內存是用于當做內存來彌補計算機RAM空間缺乏的硬盤空間。當實際RAM滿時(實際上,在RAM滿之前),虛擬內存就在硬盤上創建了。當物理內存用完后,虛擬內存管理器選擇最近沒有用過的,低優先級的內存部分寫到交換文件上。這個過程對應用是隱藏的,應用把虛擬內存和實際內存看作是一樣的.第十章:I/O如何進行重定向?
所謂的I / O重定向也就是讓已創建的FD指向其他文件。在I / O重定向的過程中,不變的是FD 0/1/2代表STDIN / STDOUT / STDERR,變化的是文件描述符表中FD 0/1/2對應的具體文件,應用程序只關心前者。本質上這和接口的原理是相通的,通過一個間接層把功能的使用者和提供者解耦。第十一章:如何進行C/S編程模型通信?
服務器調用socket()、bind()、listen()完成初始化后,調用accept()阻塞等待,處于監聽端口的狀態,客戶端調用socket()初始化后,調用connect()發出SYN段并阻塞等待服務器應答,服務器應答一個SYN-ACK段,客戶端收到后從connect()返回,同時應答一個ACK段,服務器收到后從accept()返回。第十二章:基于不同類型的并發編程的異同?
無論哪種并發機制,同步對共享數據的并發訪問都是一個困難的問題。
進程是由內核自動調度的,而且因為它們有各自獨立的虛擬地址空間,所以要實現共享數據,必須要有顯式的IPC機制。
事件驅動程序創建它們自己的并發邏輯流,這些邏輯流被模型化為狀態機,需用I/O多路復用來顯式地調度這些流。
同基于進程的流一樣,線程也是由內核自動調度的。
你有什么項目被加分,談談你的經驗
項目 PWD
你有什么項目被扣分,談談你的教訓
無。
課程收獲與不足
自己的收獲(投入,效率,效果等)
總的來說這學期其實還是自學的比較多,課堂實踐內容相對來說要比課本學習復雜一點。C語言的編程能力有了一定的提升,對Linux操作系統和windows的不同有了更直觀的感受。自己需要改進的地方
這學期的學習效率好像要更低?自學容易抓不住重點,好像在一些不必要的內容上浪費了不少時間。如果有結對,寫一下你提供的幫助或接受了什么幫助,并對老師提供參考建議
在實驗的時候能夠高效的完成實驗內容。
給開學初的你和學弟學妹們的學習建議
如果重新學習這門課,怎么做才可以學的更好?
多敲敲代碼,有選擇性的參考網絡文章,能對課本內容有更好的了解。
問卷調查
你平均每周投入到本課程多長時間?
18-20小時每周的學習效率有提高嗎?
有的吧。學習效果自己滿意嗎?
一般。課程結束后會繼續一周至少一篇博客嗎?(如果能做到,畢業時我把你的博客給你集結成一本書送給你作紀念)
不會吧。你覺得這門課老師應該繼續做哪一件事情?
課下測試。你覺得這門課老師應該停止做哪一件事情?
課堂筆記互評。你覺得這門課老師應該開始做什么新的事情?
暫時沒有什么好的建議。
轉載于:https://www.cnblogs.com/ashin-kl/p/8158690.html
總結
以上是生活随笔為你收集整理的20155330 《信息安全系统设计基础》课程总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1304. 和为零的N个唯一整数
- 下一篇: 46. 全排列/47. 全排列 II