每週做業連接彙總html
第1周做業:針對課本十二章的內容提出本身的問題,並在以後的學習中慢慢思考與解答;溫習了相關虛擬機知識。學習了gcc與gdb的使用,熟悉vi的基本操做,熟悉gcc編譯器的基本原理,學習使用gcc編譯器的經常使用選項,學習使用gdb調試技術,熟悉makefile基本原理及語法規範,掌握靜態庫和動態庫的生成與調用方法。
git
第2周做業:完成課堂實踐的內容補充
算法
第3周做業:學習了三種數字、進制轉換、 gcc -m32 生成32位的代碼、字節順序、邏輯運算和位運算、掩碼、0擴展和符號擴展、整數運算溢出、IEEE浮點標準、浮點數運算的不精確性與舍入、 整數與浮點數轉換規則
編程
第4周做業:補充完成課上沒有完成的內容。
掌握兩個重要命令:
man -k key1 | grep key2| grep 2 : 根據關鍵字檢索系統調用
grep -nr XXX /usr/include :查找宏定義,類型定義
完成head,tail的使用,相關API的分析,僞代碼,產品代碼,測試代碼的編寫數組
第5周做業:理解逆向的概念
掌握X86彙編基礎,可以閱讀(反)彙編代碼
瞭解ISA(指令集體系結構)
理解函數調用棧幀的概念,並能用GDB進行調試
第6周做業:瞭解異常及其種類
理解進程和併發的概念
掌握進程建立和控制的系統調用及函數使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
理解數組指針、指針數組、函數指針、指針函數的區別
理解信號機制:kill,alarm,signal,sigaction
掌握管道和I/O重定向:pipe, dup, dup2
緩存
第7周做業:瞭解ISA抽象的做用
掌握ISA,並能觸類旁通學習其餘體系結構
瞭解流水線和實現方式
安全
第8周做業:掌握三種併發的方式:進程、線程、I/O多路複用
掌握線程控制及相關係統調用
掌握線程同步互斥及相關係統調用
bash
第9周做業:瞭解常見的存儲技術(RAM、ROM、磁盤、固態硬盤等)
理解局部性原理
理解緩存思想
理解局部性原理和緩存思想在存儲層次結構中的應用
高速緩存的原理和應用
服務器
第10周做業:完成課上測試的能夠不寫博客(本週因完成課上測試沒有博客)
補充完成課上實踐內容
完成課下做業並提交博客網絡
第11周做業:理解虛擬存儲器的概念和做用
理解地址翻譯的概念
理解存儲器映射
掌握動態存儲器分配的方法
理解垃圾收集的概念
瞭解C語言中與存儲器有關的錯誤
第12周做業:試題總結,博客改進(沒有博客)
第13周做業:找出全書你認爲最重要的一章,深刻從新學習一下。
第14周做業:找出全書你認爲學得最差的一章,深刻從新學習一下。
第15周做業:課程總結
簡要內容:
熟悉Linux開發環境,學會Linux開發環境的配置和使用,使用Linux的arm編譯,使用基於NFS方式的下載調試,瞭解嵌入式開發的基本過程。
簡要內容:
學習、讀懂02_pthread、03_tty中的代碼,配置實驗環境完成實驗指導書中的實驗二、3。
簡要內容:
根據實驗指導書進行實時軟件的安裝(ADS、GIVEIO驅動、JTAG驅動),配置實驗環境並對軟件進行測試,運行測試程序。
簡要內容:
1)學習資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章
2)提交康奈爾筆記的照片
1)在Ubuntu完成資源中全課中的「hqyj.嵌入式Linux應用程序開發標準教程.pdf」中的第十一章的test試驗
2)提交編譯,加載模塊,卸載模塊,測試運行的截圖(要多張,全屏,體現學號信息)
簡要內容:
安裝OpenSSL環境,並編寫測試代碼驗證無誤
研究OpenSSL算法,測試對稱算法中的AES,非對稱算法中的RSA,Hash算法中的MD5
在Ubuntu中實現對實驗二中的「wc服務器」經過混合密碼系統進行防禦
代碼量彙總
代碼驅動的學習作到沒有?
作到了。本學期剛開始的時候只是簡單地上傳了代碼,沒有分目錄,描述也很簡單。後來,看了老師發的《代碼驅動的學習》博客後,我認識到了代碼管理的重要性,以後在老師的引導下慢慢開始對代碼進行分析,不懂的地方就經過man -k和grep -nr xxx /usr/include指令進行相關搜索,雖然是英文的,可是那些英語單詞通常都能看懂,實在不懂的查一下也就知道了。
加點代碼,改點代碼是理解的最好方式,談談你的心得
咱們看到代碼的時候總會下意識的以爲太難懂了,看上去就很難理解,因此歷來都是會去躲避學習代碼,能不看就不看,能少看就少看,更別提加減代碼了。但其實咱們靜下心去一行行得讀下去,就會發現其實並無很難理解,反而由於能多懂一點而感到開心。固然,我以爲所謂的代碼驅動不只僅是指將代碼運行出來就能夠了,更加劇要的是要去對代碼進行分析,真正的讀懂代碼。一開始我以爲讀懂代碼應該就是能把代碼每一句看懂,而後知道這個代碼在作什麼,後來我發現作到這個依然是遠遠不夠的,由於就算你看懂了每一句代碼,讓你從新編一個相似的程序你依然是不會。可是當你真正花了時間去學習,獲得的也遠比你想象的要多。
實踐上有什麼經驗教訓?
在作實驗的時候,常常花了好久改出來的代碼仍是不能用,仍是會出錯,這樣很打擊個人自信心,每每作着作着既不想作了。但在現實中你仍是要繼續硬着頭皮去改正你的錯誤,我以爲關於實踐最重要的一點就是不要怕出錯,不少人可能運行代碼時一看到錯誤就會有些慌,不知道應該怎麼辦。我感受最有效的辦法實際上是本身在閱讀完代碼以後,先想一下可能致使錯誤的緣由是什麼,再根據你的想法去進行相應的修改,若是真的和你想的同樣,修改完以後可以成功運行,那麼你可能也會對本身解決問題的能力有了自信。
什麼是計算機系統?它包括什麼?研究它有什麼意義?
答:計算機系統由計算機硬件和軟件兩部分組成。硬件包括中央處理機、存儲器和外部設備等;軟件是計算機的運行程序和相應的文檔。計算機系統具備接收和存儲信息、按程序快速計算和判斷並輸出處理結果等功能。
計算機中的數據和日常咱們生活中的數據有什麼異同?
答:在計算機系統中,各類字母、數字符號的組合、語音、圖形、圖像等統稱爲數據,數據通過加工後就成爲信息。
爲何要學習彙編?
答:用高級程序語言編程時,機器屏蔽了程序的細節,抽象級別高,而彙編代碼能夠很好的規避這一點,幫助咱們更好的分析代碼中隱藏的低效率。
ISA是什麼?
答:ISA即指指令集架構(Instruction Set Architecture)是與程序設計有關的計算機架構的一部分,包括本地數據類型、指令、寄存器、地址模式、內存架構、中斷和意外處理和外部 I/O 。一個 ISA 包括一系列 opcodes(機器語言)的一個規格,本地命令由一個特定的 CPU 設計來實現。
如何優化程序性能?
答:第一,消除沒必要要的內容,包括函數調用、條件測試和存儲器引用。第二,利用處理器提供的指令級並行能力,同時執行多條指令。
存儲系統層次結構分爲何?
答:高速緩衝存儲器、主存儲器、輔助存儲器。
連接是如何進行的?
答:將各類代碼和數據部分收集起來並組合成爲一個單一文件,由連接器自動執行。
常見異常怎麼解決?
答:
1.使用標準C庫提供了abort()和exit()兩個函數,它們能夠強行終止程序的運行,其聲明處於<stdlib.h>頭文件中。 2.使用assert(斷言)宏調用,位於頭文件<assert.h>中,當程序出錯時,就會引起一個abort()。 3.使用errno全局變量,由C運行時庫函數提供,位於頭文件<errno.h>中。 4.使用goto語句,當出錯時跳轉。 5.使用setjmp,longjmp進行異常處理。
虛擬存儲器如何工做?它有什麼特性?
答:虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認爲它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它一般是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在須要時進行數據交換。
Unix I/O是什麼?
答:Unix下共有五種I/O模型
a. 阻塞I/O b. 非阻塞I/O c. I/O複用(select和poll) d. 信號驅動I/O(SIGIO) e. 異步I/O(Posix.1的aio_系列函數)
網絡編程步驟?
答:客戶端:
一、經過socket函數獲取一個socket文件描述符。程序經過這個文件描述符與內核的tcp/ip架構通信聯繫。 二、經過該描述符請求與服務器的鏈接(connect函數),此時須要事先知道服務器的ip和服務器上的應用程序的端口 三、當connect函數成功返回,則表示鏈接達成,則可經過該文件描述符或者recv,send該文件描述符,便可實現與某服務器端的通訊
服務器端:
一、經過socket函數獲取一個socket文件描述符。程序經過這個文件描述符與內核的tcp/ip架構通信聯繫。 二、綁定端口(bind函數),端口人爲設置,本機IP自動獲取便可(端口和IP設置經過sockaddr_in結構體實現)。 三、監聽socket函數返回文件描述符(listen函數) 四、當listen函數返回時,表示有請求,則使用accept獲取請求,accept函數產生一個新的文件描述符,用於和該請求通訊。 五、讀寫該文件描述符或者recv,send該文件描述符,便可實現與某客戶端的通訊 六、服務器端還能夠繼續監聽socket文件描述符,接受其餘端口的請求
併發編程是什麼?
答:併發編程是指在一臺處理器上「同時」處理多個任務。併發是在同一實體上的多個事件。多個事件在同一時間間隔發生。
myod的改進
pwd的簡單實現
ch06課上測試題目補作
mybash的簡單實現
第八週課下做業
無扣分項目。
本身的收穫(投入,效率,效果等)
在這學期的學習中,我清晰的感覺到了效率、投入的重要性。剛開始,多是因爲剛過完假期,我一直不太能進入狀態,效率很低,收穫也寥寥無幾,感受老師的要求太多了,而本身卻徹底以爲是在浪費時間。後來,我逐漸進入了狀態,學習效率大大提升,也更加能體會到老師的每一項要求的意義所在,因而,讀書、理解、作練習題,讀代碼、理解、編譯運行,這一個體系下來,以爲本身對於這門課的知識獲得了掌握,而使用的時間也沒有比以前更長。
老師不斷的在強調讓咱們使用man -k和grep指令去檢索系統調用以及查詢宏定義,不得不說如今我感受本身的搜索能力獲得了很大的提升。
這個學期深刻理解計算機系統的學習更像是把以前兩年所學的知識從新串聯了一遍,從新複習了計算機導論、彙編、c語言的相關知識,在複習舊的知識同時,又掌握了許多新的知識和技巧,感受本身對知識的理解有了更深的認識。
本身須要改進的地方
爭取進入狀態更快,我進入狀態慢多是自身的問題,因此,我以爲我應該在假期的末尾就開始逐漸開始讀書,這樣能夠早日進入狀態。多讀書讀好書,利用本身的空閒時間來讀一些好書來豐富本身的內在修養,而不是成天刷手機。
給學弟學妹們的學習建議
我以爲個人最大問題就是進入學習應有的狀態太慢了,我最開始的幾周學習效率過低,每週的博客都要作好久好久,收穫卻不大。若是從新學習的話,我應該想辦法讓本身儘快進入這種學習模式,儘可能從假期進入到學習中去,提升學習效率。
分配好學習時間,儘可能把學習任務平鋪開,天天學一部分,週末時間多的話能夠多學一點,可是不要把全部的任務都留在最後一天,這樣會給本身形成很大壓力。
20小時左右,平時課下有時間就看看書、畫下來重點,週末把它們總結成一篇博客,並進行實踐操做。
相比於剛開學有了很大提升。
剛開學的幾周很不滿意,以爲本身效率過低,學了很長時間卻收穫很小。後來逐漸進入了學習狀態,學習效率提升了,在加上有以前知識作基礎,學習效果相對來講較爲滿意。
我很但願本身能保持這個習慣,也會努力去作到。
每週寫博客,多理解、運行代碼,期末總結,實驗閉卷考試,上課講解一些必要內容。
感受全部項目都有其存在的價值和意義,而且都是通過老師深思熟慮與反覆斟酌篩選的,沒有什麼應該中止的。
多與同窗進行溝通,由此來知道本身作的有什麼不足,來儘快改正,讓同窗有更好的學習條件。
實踐題目實現od命令
這篇是本學期的第一篇實踐題目博客,我寫的比較詳細,花了比較多的時間去寫,以後還有一篇是改進版,也獲得了加分,在此也給出連接。經驗就是隻要努力去學必定能夠學會,而且獲得回報。
[期末總結博客連接](http://www.cnblogs.com/paypay/p/8124040.html