20145211 《信息安全系統設計基礎》課程總結——只是當時已惘然
每週做業連接彙總
-
- 簡要內容:開課前的準備:主要爲翻閱課本,熟悉教材,提出問題,總結大致閱讀感想,安裝虛擬機。
- 二維碼:
- 第一週做業:
- 簡要內容:linux基本經常使用重要指令介紹find/locate/cheat/grep/which/whereis等。
- 二維碼:
- 第二週做業:
- 簡要內容:基於Linux系統的開發環境、vi的基本操做、gcc編譯器的基本原理及如gdb調試
- 二維碼:
- 第三週做業:
- 簡要內容:信息的表示和處理,對信息在計算機中的存儲進行介紹:二進制在計算機中的重要地位、布爾運算在C語言中的應用;有符號整數、無符號整數、浮點數的表示;補碼的重要性、C語言中溢出、數據類型轉換中的陷阱和可能會致使的漏洞
- 二維碼:
- 第四周做業:
- 簡要內容:關於前幾周學習所遇到的問題和解決狀況;以及裝雙系統的一點心得體會
- 二維碼:
-
- 第五週做業:
- 簡要內容:基於linux的X86彙編、ISA:函數調用棧幀的概念、GDB調試;以及程序的機器級表示
- 二維碼:
- 第六週做業:
- 簡要內容:處理器體系結構,介紹了ISA和Y86指令體系結構;流水線與順序實現方式
- 二維碼:
- 第七週做業:
- 簡要內容:常見的存儲技術;局部性原理和緩存思想在存儲層次結構中的應用以及高速緩存的原理和應用
- 二維碼:
- 第八週做業:
- 簡要內容:對前7周的內容查缺補漏,複習了Linux經常使用命令以及教材1-7章
- 二維碼:
- 第九周做業:
- 簡要內容:系統編程和系統調用的概念、系統編程錯誤處理的方式、Unix/Linux系統級I/O的使用狀況
- 二維碼:
- 第十週做業:
- 簡要內容:完成實踐代碼調試分析、課後練習;學習視頻,加深指令瞭解
- 二維碼:
- 第十一週做業:
- 簡要內容:瞭解異常及其種類,理解進程和併發的概念;理解數組指針、指針數組、函數指針、指針函數;完成實踐代碼調試分析
- 二維碼:
- 第十二週做業:
- 簡要內容:複習前三週的知識,並分析檢查總結
- 二維碼:
- 第十三週做業:
- 簡要內容:掌握三種併發的方式:進程、線程、I/O多路複用及相關係統調用;完成實踐代碼調試分析
- 二維碼:
- 第十四周做業:
- 簡要內容:理解虛擬存儲器的概念和做用、地址翻譯的概念、存儲器映射、動態存儲器分配的方法、垃圾收集以及C語言中與存儲器有關的錯誤;完成實踐代碼調試分析
- 二維碼:
實驗報告連接彙總
- 實驗一 開發環境的熟悉:
- 簡要內容:熟悉 linux 開發環境,學會基於 S3C2410 的 linux 開發環境的配置和使用。使用linux的armv4l-unknown-linux-gcc編譯,使用基於NFS方式的下載調試,瞭解嵌入式開發的基本過程。
- 二維碼:
- 實驗二 固件開發:
- 簡要內容:瞭解多線程程序設計的基本原理,學習 pthread 庫函數的使用。程。
- 二維碼:
- 實驗三 內核驅動設計入門:
- 簡要內容:安裝ADS,安裝GIVEIO驅動,安裝JTAG驅動,測試基本安裝是否正確。
- 二維碼:
- 實驗四 模塊方式驅動實驗:
- 簡要內容:掌握實時系統應用和驅動程序的編寫,學會以實用模塊化方式來進行驅動開發與調試。
- 二維碼:
- 實驗五 簡單嵌入式WEB服務器實驗:
- 簡要內容:掌握在ARM開發板實現一個簡單WEB服務器的過程,學習在ARM開發板上的SOCKET網絡編程,學習在Linux環境下signal()函數的調用。
- 二維碼:
代碼託管連接和二維碼:
回答一下第0周做業中本身提出的問題。
- 1.與線程之間的關係?
- 答:進程和線程的主要差異在於它們是不一樣的操做系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不一樣執行路徑。線程有本身的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,因此多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。
- 2.大端存儲與小端存儲的區別?
- 3.簡述三種不一樣的尋址方式及其操做數來源?
- 答:當即尋址、寄存器尋址、直接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址、相對基址變址尋址、當即數,寄存器操做數,內存操做數,
- 4.CSAPP關於Y86處理器的問題?
- 答:如今Intel的CPU,L1 Data Cache的典型load-to-use latency是4個週期左右,這個是你們在網上隨便找個工具就能驗證的,L2 Cache,L3 Cache,Memory在10個週期~200+個週期不等。
CPU的訪存指令首先會發到L1 Cache,這一層基本上90%+會命中,如緩存缺失就會繼續找L2 Cache,這一層的latency也比L1 Cache漲了好幾倍,依次往下。
流水線裏面訪問L1 Data Cache的指令會多停頓一些,若是這個處理器是亂序執行,就會容許後面的不相關指令越過這條訪存指令繼續往前執行,若是是順序執行就得等着了。
- 5.主存儲器的性能指標主要有哪些?
- 6.存儲器山的正確理解到底是什麼?
- 答:存儲器山是一種綜合研究存儲器層次結構的工具。它反映了存儲器層次結構中不一樣層次的帶寬。也反映了具備不一樣的時間局部性與空間局部性的程序的性能。經過分析存儲器山的數據,還能夠看出存儲器系統的部分硬件參數。
- 7.連接器的主要任務?
- 答:一、符號解析(symbol resolution)。目標文件定義和引用符號。符號解析的目的是將每一個符號引用恰好和一個符號定義聯繫起來。
二、重定位(relocation)。編譯器和彙編器生成從地址0開始的代碼和數據節。連接器經過把每一個符號定義和一個存儲器位置聯繫起來,而後,修改全部對這些符號的引用,使他們指向這個存儲器位置,從而重定位這些節。
- 8.c語言所提供的用戶級異常控制有哪些?
- 答:
- 9.虛擬存儲器都有哪些做用?
- 答:虛擬內存的做用 內存在計算機中的做用很大,電腦中全部運行的程序都須要通過內存來執行,若是執行的程序很大或不少,就會致使內存消耗殆盡。爲了解決這個問題,Window 虛擬存儲器s中運用了虛擬內存技術,即拿出一部分硬盤空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬盤來充當內存,以緩解內存的緊張。舉一個例子來講,若是電腦只有128MB物理內存的話,當讀取一個容量爲200MB的文件時,就必需要用到比較大的虛擬內存,文件被內存讀取以後就會先儲存到虛擬內存,等待內存把文件所有儲存到虛擬內存以後,跟着就會把虛擬內存裏儲存的文件釋放到原來的安裝目錄裏了。
- 10.什麼是基於I/O的多路複用併發編程?
- 答:在I/O編程過程當中,當須要同時處理多個客戶端接入請求時,能夠利用多線程或者I/O多路複用技術進行處理。I/O多路複用技術經過把多個I/O的阻塞複用到同一個select的阻塞上,從而使得系統在單線程的狀況下能夠同時處理多個客戶端請求。與傳統的多線程/多進程模型比,I/O多路複用的最大優點是系統開銷小,系統不須要建立新的額外進程或者線程,也不須要維護這些進程和線程的運行,降底了系統的維護工做量,節省了系統資源。
- 11.網絡編程與代碼編程的主要差異?
- 答:網絡編程是計算機變成的一種類型,網絡變成就是須要使用各類協議完成不一樣計算機之間數據傳輸和控制。
- 12.什麼樣的變量多線程能夠共享,什麼樣的不能夠共享?
- 答:一組併發線程運行在一個進程的上下文中,每一個線程都有它本身獨立的線程上下文,例如:棧、程序計數器、線程ID、條件碼等,每一個線程和其它的線程一塊兒共享除此以外的進程上下文的剩餘部分,包括整個用戶的虛擬地址空間,固然也共享一樣的打開的文件的集合。,這裏有一點要特別注意,就是寄存器是從不共享的,而虛擬存儲器老是共享的。
有了共享就要防止在對共享變量進行操做的過程當中獲得一個不可知的值,在Linux內核中有個原子類型與原子操做這麼個概念,由於用戶態下沒有這麼一個原子操做存在,那麼在咱們用戶態下就須要要對操做這個共享變量的線程進行同步。爲何要進行同步呢?
由於假設咱們在一個程序中有一個全局變量cnt,初始值爲0,接下去咱們建立了兩個線程,完成的功能都是在一個循環中對這個變量進行+1操做,想象一下在這兩個線程操做完成後會出現什麼情況。
你有什麼項目被加分,談談你的經驗
- 優秀做業
- 項目
- 扇貝背單詞
- 進入大學不久便接觸到了扇貝,剛開始我只是天天本身學習,歷來沒有關注過打卡。後來從學習Java開始,幾乎天天都有打卡,偶有忘記也是情有可原~
- 說句掏心窩子的話,扇貝打卡對我過不過四六級來講,並無多大幫助,或許是我原本實力就夠強吧,當時我考六級就考前一週作了3張卷子(不過我在高三作的六級卷子不下30套);並且我不同意用扇貝背單詞,由於背電子版的東西沒有實體化的印象。
- 我打的卡是扇貝閱讀,歷來不背單詞,由於不須要金幣購買的單詞本里的單詞,幾乎就沒有我不認識的;並且我以爲當你的單詞量有8000左右的時候背更多的單詞並不能讓你的英語提高多少,還不如練口語、閱讀啥的。
課程收穫與不足
本身的收穫
- 又到了談收穫的時候,相比以前學習JAVA的那段經歷,學習信息安全系統設計基礎的這段時間讓我GET到了更多。顯而易見的就是:我基本會用linux 了,會裝雙系統了,會Linux下編譯運行代碼了,會調試VS2015了,會在cmd裏運行VS的代碼了,掌握了函數指針、指針函數了,在我原有的位域的基礎上理解了union和struct的內存分配了……說真的,我學到了不少有用的東西,尤爲是書本以外的知識。
- 當ppt成爲一種趨勢,當老師所講脫離課本成爲一種潮流,我不得不說婁老師是一位特立獨行的老師,我也絲絕不掩飾對他的敬佩之情。《深刻理解計算機系統》應該是我這學期除了高數以外翻得最透徹的一本書了,雖然驅動力不同,但仍是學到了不少。有句話說,「當你開始學習內存的時候,你已超越了90%的程序員。」以前不管是c,c++,仍是java我都只停留在代碼或者算法的地步,這3種語言我掌握的最好的應該就是c了,結果一個函數指針又讓我認識到許多細節我已經忘了,真的是活到老,學到老啊!知識,須要溫故而知新。
- 在寫了兩個學期的博客以後,雖然我不太喜歡寫博客,但我不得不認可我仍是收穫頗豐的~個人打字比之前更快了(固然也離不開代碼的編寫);由於個人習慣是每篇博客用一句詩作副標題,而後總結的時候談一談本身的感覺或者本週發生的一些大事,這潛移默化的讓我平時積累了更多的詩詞,並對一些時事政治有了本身的思考。我不太喜歡寫博客的緣由,就是有着戴着枷鎖跳舞的感受,通常我寫文章就是天馬行空的那種~
- 最後一點收穫,我把他叫作習慣,養成習慣不容易,婁老師這學期讓咱們養成了很多習慣,雖然不知道以後還有多少,可是這其中定力和毅力已經有了。
本身須要改進的地方
- 君子慎獨,不欺暗室,沒有老師監督的時候,我作的還不是很到位。同時時間的分配也不是很合理,婁老師也說了,我以前的態度不是很端正;因此致使我以前的分數一直很低,後來我一看這分數太少了,認真下了一波功夫,連拿幾個5分;看來只要肯下時間,平時的測驗拿個5分仍是沒有問題的,關鍵是你的態度,成績與你的付出老是成正比的。
- 這學期學的書很厚,每次考試前,咱們都是站在知識體系巔峯的人,結果平時的測試一完,就都變成了張無忌。。因此,溫故是必須的。
- 實驗,動手能力我還不是很強,並且我花了好久才把5個實驗搞完;動手能力不行,亟待提升!
給學弟學妹們的學習建議
- 建議談不上,說點本身的想法。從上面的收穫和須要改進的地方,有這麼幾點,須要學弟學妹們的注意。
- 若是想真的學點東西,必定要溫故,否則前腳學了後腳忘,孔子說的話都是真諦啊!
- 其次,要端正態度,要有的放矢,分配好學習時間,儘可能把學習任務平鋪開,天天學一部分,週末時間多的話能夠多學一點,可是不要把全部的任務都留在最後一天,這樣會給本身形成很大壓力。
- 不要浮於表面,不然你什麼也學不會。
問卷調查
若是從新學習這門課,怎麼作才能夠學的更好
- 只能來波馬後炮了,時間不能倒流這就很尷尬。
- 首先就是溫故知新,其次有的放矢,再次腳踏實地並不時擡頭看路,最後敢於上問。
問卷調查
你平均每週投入到本課程多長時間?
每週的學習效率有提升嗎?
- 最後幾周效率很高,一波5分流~這也反應我前幾周學習效率不高。。後來總結了一下,找到癥結所在,奮起直追。
學習效果本身滿意嗎?
- 還湊合吧。起碼我認真的時候,拿5分仍是沒有問題的。不過有些時候明明花了時間,最終效果卻並很差。
課程結束後會繼續一週至少一篇博客嗎?
- 在學習java以前,我一直有在新浪博客發表文章,平時本身也喜歡寫點小說、散文之類的,我是一個喜歡寫字閱讀的人,寫文章就是個人習慣之一。不過,婁老師這種學術性博客,這個至少能夠到大三下吧,由於有網絡對抗~
你以爲這門課老師應該繼續作哪一件事情?
- 總結吧,每次寫這種總結性的博客我都很開心,由於又能夠暢所語言了,開心,開心。關鍵是以前你都在埋頭走路,總結是擡頭看路啊!!!
- 試題講解,太關鍵了,以前學習java的時候,每次考完,幾乎就沒有人關心考題了,這就很浪費,有沒有……
- 章節指導性講解,這也很關鍵,以前學Java,有時候雲裏霧裏的,這學期好多了。
你以爲這門課老師應該中止作哪一件事情?
- 學習任務稍微均衡些就行了,有的章節有100頁,一下看2章,不少的,老師。。
本學期你與老師和同窗交互最多的一篇博客是哪篇?緩存
20145211《信息安全系統設計基礎》第十二週學習總結
本學期被閱讀最多的博客是哪一篇?有何經驗?
如今評價一下第0周提出的問題的質量,抓住重點了嗎?
你以爲這門課老師應該開始作什麼新的事情?
- linux讓咱們早點接觸就行了,加分項目提升到20分就行了~
- 其餘的,老師作的很好。
給出本文連接和二維碼