•第一週做業:在Linux環境下C語言程序的gcc編譯運行彙編方法,使用gdb進行調試、設置斷點等方法。html
•第二週做業:有關設置gdb斷點,創建靜動態庫等課上未提交的題目補充,以及自主編程製做MYOD的實現。java
•第三週做業:教材內容第二章《信息的表示和處理》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。linux
•第四周做業:課上未提交題目命令行傳入文件實現myod,第十章教材內容學習以及兩個重要命令man -k key1 | grep key2| grep 2
和
grep -nr XXX /usr/include
的掌握。git
•第五週做業:教材內容第三章《程序的機器級表示》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。算法
•第六週做業:教材內容第八章《異常控制流》,第十章《系統級I/O》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。編程
•第六週做業(1):課上有關彙編代碼的轉換和刪除的未提交題目的補充,以及教材 p97 2.96 2.97,完備的測試。緩存
•第六週做業(2):課上相關未提交題目的補充,在本身的電腦中完成https://www.shiyanlou.com/courses/231緩衝區溢出漏洞實驗的詳細實驗過程。安全
•第七週做業:教材內容第四章《處理器體系結構》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。服務器
•第八週做業:教材內容第十一章《網絡編程》簡單過一下,教材第十二章《併發編程》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。網絡
•第八週做業(1):課上有關X86轉Y86和代碼反彙編的相關未提交題目的補充,以及課下實踐書後習題的實踐測試和多線程併發服務器的製做與測試。
•第九周做業:教材內容第六章《存儲器層次結構》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
•第九周做業(1):加分項目MYPWD的自主設計與編寫測試。
•第十週做業:課上未提交題目有關stat(1)指令的學習及編寫的提交以及課下自主學習IPC相關知識。
•第十一週做業:教材內容第九章《虛擬存儲器》的自主學習,教材內容總結,以及教材和代碼學習中遇到的問題和解決。
•第十三週做業:從新精學第八章,自認很是重要的一章,對課本內容反覆學習,而且所有家庭做業的編寫製做,以及藍墨雲中的試題總結,結對學習,給同伴講解收穫和疑惑,共同窗習,共同進步。
•第十四周做業:從新精學以前學得最差的一章,第十一章網絡編程相關內容,網絡編程我認爲是本書核心,以前的一切學習都是爲編程而作鋪墊,詳細從新回顧了課本內容,以及每節的擴展學習,對函數進行一一介紹,結對學習,共同進步。
•第十六週做業:課上實踐補充,有關嵌入式C語言的代碼編寫原理問題。
•實驗一 開發環境的熟悉:交叉編譯環境,目標機與宿主機的聯通,目標機運行程序以及最後的清理工做,實驗一爲小組共同完成。
•實驗二 固件程序設計:要用系統管理員身分運行uVision4,破解MDK(破解程序中target必定選ARM),KEIL-MDK 中添加 Z32 SC-000 芯片庫,打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。網上找一下國密算法標準的代碼和標準測試代碼,在Ubuntu中分別用gcc和gcc-arm編譯,並回答四個算法的用途。小組共同完成。
•實驗三 實時系統:基於Linux Socket程序設計實現wc(1),使用多線程實現wc服務器並使用同步互斥機制保證計數正確。我的完成。
•實驗四 外設驅動程序設計:學習資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章,在Ubuntu完成資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章的test試驗。我的完成。
•實驗五 通訊協議設計:瞭解學習Linux下openssl,測試對稱算法中的AES,非對稱算法中的RSA,Hash算法中的MD5,在Ubuntu中實現對實驗二中的「wc服務器」經過混合密碼系統進行防禦。我的完成。
https://gitee.com/bestiisjava2017/yxc20155302
•截圖 git log --pretty=format:"%h - %an, %ar : %s" 的結果
•代碼量彙總提交statistics.sh的支持截圖
•代碼驅動的學習作到沒有?
作到了。
•加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
平時編程時,不可能全部代碼都是本身現時編出來的,要學會當一名碼農,平時的基礎代碼能夠從網上搜,而後遇到核心部分須要修改的再本身思考添加模塊,這樣既省時又省力,要把時間用在有意義的地方,平時遇到不懂的代碼要多提問,在相互討論以及合做設計中提高本身,編程的學習不是一蹴而就的,要在平時多多積累,實驗時就添加所需模塊,一點點提高本身。
•實踐上有什麼經驗教訓
平時實踐很重要,光看書只能學會學懂,實踐卻能讓咱們會用會設計,本身動手豐衣足食,學習要勤奮,提早預習課後複習是關鍵。
有一些抓住了學習重點,可大部分如今看來都是些基礎問題,當時只是簡單瀏覽並無進行過深刻思考,而有一些如今看起來也頗有價值,說明本身這一個學習學到了很多知識。
第一章:
編好的代碼(源代碼)通過編譯,連接,生成可執行的文件,而後就能夠執行。即編輯的代碼要最重生成可執行的程序(可執行的文件),須要通過編譯、連接兩個步驟。編譯的做用是對代碼進行語法檢查,而連接的做用是連接代碼中用到的編譯器提供的資源。因此,一般經過編譯、連接後造成的只造成一個可執行的文件。
第二章:
1)算術移位 當乘數或除數是2n時,算術移位用來快速地完成對整數進行乘法或除法的運算。算數左移n位至關於乘上2n,執行方法是把原來的數中每一位都向左移動n個位置,左面移出的高位丟棄不要,右面低位空出的位置上所有補0。
2)邏輯移位 邏輯左移n位的執行方法,是把原來的數中每一位都向左移動n個位置,左面移出的高位丟棄不要,右面低位空出的位置上所有補"0"。 邏輯右移n位的執行方法是把原來數中的每一位都向右移動n個位置,右面移出的低位丟棄不要,左面高位空出的位置上所有補0。
邏輯移位:不考慮正負號
算術移位:考慮正負號。
第三章:
彙編是最基礎的計算機編程語言,用做動詞時就是說用匯編語言寫成的程序代碼通過編譯鏈接以後生成可執行程序的過程。而反彙編就是這個過程的逆過程,通常是針對商業軟件或病毒等不知道源程序是如何書寫的程序,通過反彙編,將由機器碼(即一條條01組成的指令)方向翻譯爲彙編指令,這樣必定程度上可讓人們理解認識程序的編寫方式,使用的算法特色等,可是針對反彙編,有許多方法能夠加大反彙編的難度,好比說在程序中加殼,使用大量跳轉等。
第四章:
從硬件角度來看CISC處理的是不等長指令集,它必須對不等長指令進行分割,所以在執行單一指令的時候須要進行較多的處理工做。而RISC執行的是等長精簡指令集,CPU在執行指令的時候速度較快且性能穩定。所以在並行處理方面RISC明顯優於CISC,RISC可同時執行多條指令,它可將一條指令分割成若干個進程或線程,交由多個處理器同時執行。因爲RISC執行的是精簡指令集,因此它的製造工藝簡單且成本低廉。
從軟件角度來看,CISC運行的則是咱們所熟識的DOS、Windows操做系統。並且它擁有大量的應用程序。由於全世界有65%以上的軟件廠商都理爲基於CISC體系結構的PC及其兼容機服務的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面卻顯得有些勢單力薄。雖然在RISC上也可運行DOS、Windows,可是須要一個翻譯過程,因此運行速度要慢許多。
第五章:
投機執行處理器會開始執行預測的轉移目標處的指令。它這樣作的方式是,避免修改任何實際的寄存器或存儲器位置,直到肯定了實際的結果。若是預測是正確的,處理器就簡單地「提交」投機執行的指令的結果,把他們存儲到寄存器或存儲器中。若是預測是錯誤的,處理器必須丟掉全部投機執行的結果,在正確的位置,從新開始取指令的過程。這樣作會引發很大的轉移處罰,由於在產生有用的結果以前,必須從新填充指令流水線。劣勢是成本過高。
第六章:
當程序須要第k+1層的某個數據對象d時,它會首先在第k層尋找,若是d恰好在第k層,那就是緩存命中。那麼程序就會從第k層直接讀取d。
反之,稱爲緩存不命中。當發生緩存不命中時,第k層的緩存會從k+1層中取出包含d的那個塊,若是k層緩存已經滿了的話,就會覆蓋一個塊,稱之爲替換或者驅逐,有相應的替換策略來決定替換哪一個數據塊。當k層緩存了k+1層的塊後,程序就能從k層直接讀取數據d了。
緩存不命中有不一樣的種類,好比,若是k層的緩存是空的,那麼此時的訪問都不會命中,稱之爲冷緩存,在不斷的訪問過程當中,k層的緩存逐漸趨於穩定,稱之爲暖身。衝突不命中是指,儘管緩存足夠大,可是由於屢次訪問的數據對象,他們會映射到同一個k層的塊,緩存就會一直不命中。
第七章:
一、應用程序在連接階段時,會順序生成符號表。也就是說,在應用程序中涉及到的符號,會在連接文件中逐個順次查找
二、一旦查找到符號,就中止本符號的查找工做,轉向第二個符號的查找
三、若是沒有用到.a裏的符號,即查找的過程當中沒有涉及到該.a,則不會在程序中連接該.a
四、對於.so,不管是否涉及到符號查找,均會進行加載
五、so的加載和卸載會涉及到自身內存分配和釋放,而.a不會(.a至關於.o的集合,.o直接靜態編譯到應用程序,成爲程序一部分)
六、.a和.o有不一樣,.a是.o的集合,可是,.o一定會加載,.a不必定會加載(只加載符號表相關的.o)
第八章:
會進入異常處理。
若是lambda內有異常處理,那麼就正常吃掉。
第九章:
linux在x86體系結構上的虛擬內存實現是這樣的:
內核空間使用4G虛擬內存的3-4G,對應的物理內存的計算
方法就是,內核空間的(虛擬)地址-3G;而對於用戶程序而言,使用的是1-3G
的虛擬空間,計算方法是經過查頁目錄表和頁表來實現的。
第十章:
/*函數fgetc()例子*/ #include <stdio.h> #include<stdlib.h> #include<io.h> #include<conio.h> int main(void) { /*本例子須要手工建立一個文件test.txt或者與函數fputc()一塊兒調試*/ char msg[] = "This is a test!\n"; char msgget[100]; int i = 0; FILE* fstream; fstream=fopen("test.txt","r"); /*打開*/ if(fstream==NULL) { printf("Open file failed!\n"); exit(1); } i = 0; while ((msgget[i]=fgetc(fstream))!=EOF) { fputc((msgget[i]), stdout); i++; } fclose(fstream); return 0; }
第十一章:
超時控制在嵌入式系統設計中具備普遍用途,許多與時間有關的流程都可藉助超時控制方法來實現,如預期時間的延遲等待,設備自檢,延時和定時控制等。
第十二章:
某個操做可能會陷入長時間等待,等待的線程會進入睡眠狀態,沒法繼續執行。多線程執行能夠有效利用等待的時間。典型的例子是等待網絡嚮應,這可能要花費數秒甚至數十秒。
某個操做(經常是計算)會消耗大量的時間,若是隻有一個線程,程序和用戶之間的交互會中斷。多線程可讓一個線程負責交互,另外一個線程負責計算。
程序邏輯自己就要求併發操做,例如一個多端下載軟件(例如Bittorrent)
多CPU或多核計算機(基本就是將來的主流計算機),自己具有同時執行多個線程的能力,所以單線程沒法全面地發揮計算機的所有計算能力。
相對於多進程應用,多線程在數據共享方面效率要高不少。
作了加分項目實現mypwd:http://www.cnblogs.com/STILLlover521/p/7856627.html
無
•本身的收穫(投入,效率,效果等)
本學期,在婁老師的信息安全系統設計基礎這門課上下了很大的功夫,真正學到了一些知識,好比網絡編程和Linux系統下的衆多命令的使用方法,對於之後的編程和深刻學習linux系統作好了鋪墊,由於這門課知識不少並且比較難懂,因此學習的時候很認真效率也就上去了,雖然對於一些章節的學習仍是不夠深刻,還有些沒有學懂得地方,可是相比本身之前的學習已經有了長足的進步,真正讓本身的水平提升了。
•本身須要改進的地方
本身的編程能力一直是弱項,自主編程能力的不足制約了我學習這門課的上限,我應該努力提升本身的變成水平,還有就是觸類旁通的能力仍需加強,不能只能停留在聽懂理解的地步上,還要學以至用,不能稍稍作改變或者自主設計就手足無措了,這些是我還需增強的地方。
•若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
本學期我和秦詩茂同窗結對學習,他給個人幫助很大,尤爲是在編程方面,這方面我是弱項我在他的幫助下可以獨立編寫socket以及一些自主創新的調用指令的代碼,如myod和mypwd等,我也在學期末給他講了我對第十一章和第八章的學習成果,彌補了他的知識盲點,作到共同進步。
•若是從新學習這門課,怎麼作才能夠學的更好
個人建議是這門課必定要好好學,必定要投入精力和時間進去,由於每章內容較多,建議不要把學習堆在週末,這樣會很累並且效率不高,必定要天天學一點,把繁重的知識分散到每一天,這樣就不會疲倦,在學習時必定要注意課後習題,婁老師把須要注意和考點的習題都在教學進程中寫得很清楚,必定要認真對待,還有就是要讀書和實踐相結合,活學活用。
•你平均每週投入到本課程多長時間?
十小時左右。
•每週的學習效率有提升嗎?
有,後期明顯比剛開始效率要提升很多,主要仍是學習方法的改變。
•學習效果本身滿意嗎?
還算滿意,課上不會的,課下實踐也都補作了,學會了。
•課程結束後會繼續一週至少一篇博客嗎?(若是能作到,畢業時我把你的博客給你集結成一本書送給你做記念)
不肯定,要看有沒有很是值得記錄的知識,不想水一些沒意義的東西。
•你以爲這門課老師應該繼續作哪一件事情?
應該繼續這種實踐和讀書相結合,課上實踐和課下實踐相呼應,講課和自學相穿插的教學方式。
•你以爲這門課老師應該中止作哪一件事情?
應該中止教材內容自學的博客,書讀過從實踐結果就能看出來,教材博客用處有限。
•你以爲這門課老師應該開始作什麼新的事情?
減小課上考試,多些課下實踐,課上時間有限應該以講課爲主。
•如本文連接和二維碼:http://www.cnblogs.com/STILLlover521/p/8127961.html