第0周做業html
第1周做業linux
man/find/locate/cheat/grep/which/whereis
;練習了實驗樓中的課程。第2周做業git
第3周做業編程
第5周做業小程序
第6周做業vim
第7周做業數組
第8周做業瀏覽器
第9周做業緩存
第10周做業安全
託管連接和二維碼:
截圖
代碼量彙總
第一章 多處理器與多線程的運行模式是什麼樣的?
- 多線程:每個程序能夠包含至少一個線程,而多個線程之間能夠「併發」執行。 <font size=3>**第二章 浮點運算中IEEE標準的運算規則是什麼樣的?**</font> - IEEE定義了多種浮點格式,但最多見的是三種類型:單精度、雙精度、擴展雙精度 - 三種精度分別適用於不一樣的計算要求。
單精度適合通常計算
雙精度適合科學計算
擴展雙精度適合高精度計算
- 一個遵循IEEE 754標準的系統必須支持單精度類型(強制類型)、最好也支持雙精度類型(推薦類型),至於擴展雙精度類型能夠隨意。 <font size=3>**第三章 條件跳轉指令是否會像C語言中的goto語句同樣使編碼的結構變得紊亂?若是會,會形成什麼影響?**</font> - 條件跳轉指令檢查一個或多個標誌位,判斷它們是否匹配某個特殊條件(就像setcc指令) - 若是標誌匹配成功,該指令就將控制轉移到目標位置;若是匹配失敗,CPU忽略該條件跳轉指令而繼續執行下一條指令。 - 一些條件跳轉指令只是簡單測試符號位(sign)、進位位(carry)、溢出位(overflow)、零標誌(zero)位的設置。 <font size=3>**第四章 Y86模擬器的控制邏輯具體是什麼樣的?**</font> - 這個問題自己就不太對…… <font size=3>**第五章 對程序的優化具體應該從哪些方面下手?**</font> - 語句調整,用匯編重寫 - 指令調整 - 循環展開 - 參數傳遞優化 <font size=3>**第七章 動態連接是什麼,如何實現?**</font> - 動態連接須要解決空間浪費和更新困難這兩個問題最簡單的辦法就是把程序的模塊相互劃分開來,造成獨立的文件,而再也不將他們靜態的連接在一塊兒。 - 簡單地講,就是不對那些組成程序的目標文件進行連接,等到程序要運行時才進行連接。 - 把連接這個過程推遲到了運行時再進行,這就是動態連接(Dynamic Linking)的基本思想。 <font size=3>**第八章 系統在何時會出現異常,如何有效的避免這些異常?**</font> - 異常指的是在程序運行過程當中發生的異常事件,一般是由硬件問題或者程序設計問題所致使的。 - 異常的常見例子:有內存分配不足、數組下標越界、運算溢出或除數爲零。 - 異常的捕獲:
經過try…catch語句進行捕獲異常。
經過throw拋出異常,throws向上一級調用方法拋出異常。
<font size=3>**第九章 虛擬存儲器中Linux缺頁異常怎麼解決?**</font> - 利用異常表處理Linux內核態缺頁異常 - 當系統啓動分頁機制之後,若是一條指令的虛擬地址所對應的頁框(page frame)不在內存中或者訪問的類型有錯誤,就會發生缺頁異常。 - 處理器把引發缺頁異常的虛擬地址裝到寄存器CR2中,並提供一個出錯碼,指示引發缺頁異常的存儲器訪問的類型,隨後調用Linux的缺頁異常處理函數進行處理。 - Linux中進行缺頁異常處理的函數以下:
asmlinkage void do_page_fault
(struct pt_regs regs, unsigned long error_code)
{
……………………
asm("movl %%cr2,%0":"=r" (address));
……………………
vma = find_vma(mm, address);
if (!vma)
goto bad_area;
if (vma->vm_start <= address)
goto good_area;
if (!(vma->vm_flags & VM_GROWSDOWN))
goto bad_area;
if (error_code & 4) {
if (address + 32 < regs->esp)
goto bad_area;
……………………
bad_area:
……………………
no_context:
/ Are we prepared to handle this kernel fault? */
if ((fixup = search_exception_table(regs->eip)) != 0) {
regs->eip = fixup;
return;
}
………………………
}
<font size=3>**第十章 I/O函數該如何正確的使用?**</font> - open 打開文件描述符 - read 讀 - write 寫 - close 關閉文件描述符 vfcntl 修改文件描述符,例如改成不阻塞 - lseek 移動文件讀寫的當前位置 - ioctl 與fcntl相似 - readdir 讀取目錄 - select 多路選擇 - readlink 讀取符號連接 - stat 讀取文件屬性 <font size=3>**第十一章 Web服務器的動態內容中服務端和客戶端遵循什麼樣的CGI規則?**</font> - CGI是外部應用程序(CGI程序)與Web服務器之間的接口標準,是在CGI程序和Web服務器之間傳遞信息的過程。 - CGI規範容許Web服務器執行外部程序,並將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。 - CGI在物理上是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口。 <font size=3>**第十二章 如何有效控制併發線程的不安全性?**</font> - 線程安全就是多線程訪問時,採用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其餘線程不能進行訪問直到該線程讀取完,其餘線程纔可以使用。不會出現數據不一致或者數據污染。 - 線程不安全就是不提供數據訪問保護,有可能出現多個線程前後更改數據形成所獲得的數據是髒數據 - 一方面,對申請訪問臨界資源的全部線程要公平對待,不能對部分線程優先考慮,使一些線程長時間獨佔資源,而使其它的線程進行長時間的等待,得不到資源。 - 另外一方面,在考慮了公平性的同時,也不能忽視了安全性的考慮,出現某一個線程訪問臨界資源,導致程序不能正常運行,產生嚴重的後果。 - 在Java中對多線程的併發控制應該作到公平性和安全性的理想兼容,兩方面都不可忽視。併發系統的公平性使得資源在多線程之間獲得至關科學和合理的分配,安全性保證了各線程的正常調度運行,從而使程序順利地執行結束,完成任務。 ## 你有什麼項目被加分,談談你的經驗 <font size=4>**優秀做業**</font> **[第2周做業](http://www.cnblogs.com/alovera/p/5888080.html)** - 簡要內容:學習了vim的基本操做;學會使用gcc編譯器;學習了gdb的調試。 - 二維碼  **[第3周做業](http://www.cnblogs.com/alovera/p/5903015.html)** - 簡要內容:學習了操做系統中的信息表示和處理;學習了整數與浮點數的轉換。 - 二維碼  **[第7周做業](http://www.cnblogs.com/alovera/p/6013833.html)** - 簡要內容:學習了局部性原理和緩存思想在存儲層次結構中的應用;根據代碼驅動的程序設計學習創建了項目結構。 - 二維碼  **[第6周做業](http://www.cnblogs.com/alovera/p/5975299.html#3539084)** - 簡要內容:安裝了Y86處理器,瞭解Y86指令體系結構;學習ISA抽象。 - 二維碼  **[第7周做業](http://www.cnblogs.com/alovera/p/6013833.html)** - 簡要內容:學習了局部性原理和緩存思想在存儲層次結構中的應用;根據代碼驅動的程序設計學習創建了項目結構。 - 二維碼  **[第8周做業](http://www.cnblogs.com/alovera/p/6017694.html)** - 簡要內容:總結並複習了前7周的學習內容。 - 二維碼  **[第10周做業](http://www.cnblogs.com/alovera/p/6082318.html)** - 簡要內容:學習並實踐了經常使用指令的代碼,加深了對指令的理解。 - 二維碼  **[第11周做業](http://www.cnblogs.com/alovera/p/6105629.html)** - 簡要內容:學習了異常;經過實踐瞭解了進程的併發。 - 二維碼  **[第13周做業](http://www.cnblogs.com/alovera/p/6159312.html)** - 簡要內容:學習了網絡編程和多線程的基本內容 - 二維碼  <font size=4>**扇貝背單詞**</font> - 從上個學期學習JAVA的時候開始,已經堅持了300多天 <font size=4>**GDB調試彙編堆棧過程分析**</font> - 二維碼  <font size=4>**經驗**</font>
這學期沒有什麼被扣分的項目,分數也一直都蠻好的,我以爲這一切最重要的就取決於態度,只要認真對待,完成了應作的事情,就必定會有相應的回報。
## 課程收穫與不足 - 本身的收穫 在兩個學期這種自學模式的教學下,我自我學習的能力獲得了很大的提升,不僅是對於這門課的學習,我以爲有些東西是受益終生的。 記得老師曾經在課堂上說過,大意是若是在一段時間專一堅持作好一件事,那麼久而久之,就會比大多數人更加優秀。這句話讓我反思了不少。由於我從小就是一個三分鐘熱度的人,對不少東西都有興趣都卻很快就堅持不下去。可是若是我嘗試着堅持,就可以有遠比如今更加優秀。我想這門課對我而言最大的意義,不是學習了信息安全系統設計基礎,而是改變了個人思想方式。 - 本身須要改進的地方 已經改變了不少,但願本身可以一直堅持下去。 - 給開學初的你和學弟學妹們的學習建議 - 言行一致,重在堅持。 - 不論什麼時候都不要有浮躁的心態,用認真的態度對待每一件要作的事。 - 若是從新學習這門課,怎麼作才能夠學的更好 - 在學習處於繁忙狀態的時候放寬心態,不要浮躁,冷靜的面對問題。 ## 問卷調查 - 你平均每週投入到本課程多長時間? - 20小時 - 每週的學習效率有提升嗎? - 有提升 - 學習效果本身滿意嗎? - 比較滿意,還能作得更好 - 你以爲這門課老師應該繼續作哪一件事情? - 在某些章節進行閉卷考試我認爲是頗有必要的,由於有些答案雖然經過查閱書本就可以獲得,可是這並不表明寫對了題目就真的掌握了題目。 - 扇貝打卡加分是一個十分有利的促進學習的項目,但願能夠一直延續。 - 你以爲這門課老師應該開始作什麼新的事情? - 能夠鼓勵學生在教材學習的基礎上本身探索更深層的知識點,並總結寫出博客,而後酌情加分。 ## 補充 <font size=3>**1.本學期你與老師和同窗交互最多的一篇博客是哪篇?**</font> - 是我在博客園中提出的小組話題:[爲何實驗樓給出的一個小程序裏面除法永遠結果都爲0](http://group.cnblogs.com/topic/75520.html) <font size=3>**2.本學期被閱讀最多的博客是哪一篇?有何經驗?**</font> - 第二週學習總結 - 經驗:
在第二週的博客中我詳細的展示了在linux系統中使用git的過程,實踐內容比較豐富,我想正是由於這樣才被閱讀和參考。其實,一我的是否是用心寫博客,認真總結本身作的事情,你們都是能看獲得的。
```
3.如今評價一下第0周提出的問題的質量,抓住重點了嗎?