《計算機系統》加分項目

《計算機系統》加分項目

過去,凡是計算機專業人員都對計算機的工做原理和工做方式瞭如指掌。計算機體系中的硬件、軟件、編譯器以及操做系統之間的交互既簡單又透明,所以要把握計算機系統大局觀並不是難事。然而隨着現代計算機技術的日趨複雜,這種明晰性不復存在:計算機科學領域裏面大多數基本思想和技術都被隱藏在衆多抽象接口以及私有實現的層面之下。這種複雜性致使了沒法避免,的結果,即領域專業化;這使得多門計算機科學領域應運而生, 每一個領域只涵蓋整個學科中的某一個方面。web

計算機專業、信息安全專業、網絡空間安全專業的學生識木而不知林,疲於埋頭學習程序設計、各類理論以及工程知識,卻失去了對計算機系統總體的把握和理解,不曾停下來欣賞計算機系統大局觀的美景。這個大局觀爲咱們展現的是:硬件系統和軟件系統如何經由隱藏的抽象、接口以及基於各類約定的實現所編織起來的網,從而牢牢地關聯在一塊兒。因爲沒有從表及裏地透徹領略這個繁複大局觀的魅力,使不少學生和計算機、信息安全從業人員產生了不安的感受,由於他們並無徹底透徹理解和掌握計算機的內 部工做原理。shell

理解計算機工做原理的最好方法就是親自動手,或者從零開始構建計算機系統,或者基於各類計算機系統深刻了解底層,這些知識並不難,只是太底層,致使很多學生很畏難。瀏覽器

我讀書的時候,計算機硬件集成度比較低,聲卡、顯卡、網卡等都是分離的,那時候的學生多有拆卸機器的經驗,裝卸內存條、硬盤也常常操做,組裝計算機的過程就對計算機硬件有比較好的瞭解,如今的主板集成度已經很高了,不少計算機專業、信息安全專業、網絡空間安全專業的學生甚至都沒有打開過計算機,看看內部都有什麼。我讀書的時候,操做系統主要仍是DOS系統,你想玩個遊戲,不會寫批處理文件,不會配置內存都玩很差,那時候操做系統更新也比較快,系統穩定性也很差,漏洞不少,常常須要安裝系統,如今的學生作這些工做也不多了。緩存

固然,如今有各類單片機,DSP,嵌入式系統開發板,FPGA開發板等,組裝一個計算機系統並非太難,特別是如今有樹莓派、Arduino開發板,但是一旦涉及到硬件都要花錢買硬件。安全

如何不花錢學習計算機系統,我推薦幾個軟計算機系統供你們參考,這些虛擬機的深刻研究能幫助你們深刻理解計算機系統,相關學習做爲學有餘力的學生的加分項目。服務器

  • 《CSAPP:深刻理解計算機系統》第二版第4章提供一個Y86模擬器,相似intel的IA32,第三版第4章提供一個Y64-64模擬器,相似intel的x86-64,
  • 《計算機系統要素》中提供了一個計算機Hack,這臺計算機是從NAND門開始一步一步搭建起來的,涉及到硬件構建、機器語言、彙編語言、高級語言、操做系統、編譯原理
  • 《計算機系統》第4版提供了一個虛擬機Pep/8,第5版提供了一個虛擬機Pep/9.

《CSAPP:深刻理解計算機系統》

實驗詳細細節參考Lab Assignments.每一個實驗都要提交相關總結博客連接,代碼託管連接,並進行答辯微信

數據實驗

  • 這個實驗要求學生實現簡單的邏輯和算術運算函數,可是隻能使用一個
    很是有限的C語言子集。好比,只能用位級操做來計算一個數字的絕對值。這個實驗可幫助學生了解C語言數據類型的位級表示,以及數據操做的位級行爲。

二進制炸彈實驗

  • 二進制炸彈是一個做爲目標代碼文件提供給學生的程序。運行時,它提示用戶輸入6個不一樣的字符串。若是其中的任何一個不正確,炸彈就會「爆炸」,打印出一條錯誤消息,而且在一個打分服務器上記錄事件日誌。學生必須過對程序反彙編和逆向工程來測定應該是哪6個串,從而解除各自炸彈的雷管,該實驗能教會學生理解彙編語言,而且強制他們學習怎樣使用調試器。

緩衝區溢出實驗

  • 它要求學生經過利用一個緩衝區溢出漏洞,來修改一個二進制可執行文件的運行時行爲。這個實驗可教會學生棧的原理,並讓他們瞭解寫那種易於遭受緩衝區溢出攻擊的代碼的危險性。

體系結構實驗

  • CSAPP第4章的幾個家庭做業可以組合成一個實驗做業,在實驗中,學生修改處理器的HCL描述,增長新的指令,修改分支預測策略,或者增長、刪除旁路路徑和寄存器端口。修改後的處理器可以被模擬,並經過運行自動化測試檢測出大多數可能的錯誤。這個實驗使學生可以體驗處理器設計中今人激動的部分,而不須要掌握邏輯設計和硬件描述語言的完整知識。

性能實驗

  • 學生必須優化應用程序的核心函數(好比卷積積分或矩陣轉置)的性能,這個實驗可很是清晰地代表高速級存的特性,並帶給學生低級程序優化的經驗·

cache實驗

  • 這個實驗相似於性能實驗,學生編寫一個通用高速緩存模擬器,並優化小型矩陣轉置核心函數,以最小化對模擬的高速緩存的不命中次數。咱們使用valgrind爲矩陣轉置核心函數生成真實的地址訪問記錄

shell實驗

  • 學生實現他們本身的帶有做業控制的 Unix shell程序,包括Ctrl+C和Ctrl+Z按鍵,fg、bg和job命令。這是學生第一次接觸併發,而且讓他們對Unix的進程控制、信號和信號處理有清晰的瞭解。

malloc實驗

  • 學生實現他們本身的ma11o、free和rea1loc(可選)版本。這個實驗可以讓學生們清晰地理解數據的佈局和組織,而且要求他們評估時間和空間效率的各類權衡及折中

代理實驗

  • 實現一個位於瀏覽器和萬維網其餘部分之間的並行Web代理。這個實驗向學生們揭示了Web客戶端和服務器這樣的主題,而且把課程中的許多概念聯繫起來,好比字節排序、文件1O、進程控制、信號、信號處理、內存映射、套接字和併發。學生很高興可以看到他們的程序在真實的Web瀏覽器和Web服務器之間起到的做用。

歡迎關注「rocedu」微信公衆號(手機上長按二維碼)網絡

作中教,作中學,實踐中共同進步!併發

rocedu



若是你以爲本文對你有幫助,請點一下左下角的「好文要頂」和「收藏該文

相關文章
相關標籤/搜索