Yu-Hao(Howard) Hsu

@haogroot

Joined on Mar 15, 2018

  • 此篇筆記所描述的二補數 (two's-complement) 指的是一種用二進位來表示有號數的方法。 此篇筆記所描述的章節編號是根據 CS:APP 第3版。 為什麼需要學習 actual number representation ? 許多程式的安全漏洞就來自於計算機算術運算的微妙細節所引發的,為了讓編寫的程式可以在全部數值範圍內正確工作,而且可以支援跨機器、作業系統和編譯器組合,通過學習 actual number representation ,能夠了解 在計算機上如何表示數字 不同類型的數字的範圍 算術運算在不同類型數字的特性
     Like  Bookmark
  • 為什麼要學習 Linking 理解 linker (連結器) 幫助你建構大型程式 大型程式會包含許多 libraries ,了解如何 linking 可以幫助你處理棘手的編譯錯誤。 理解 linker 可以避免寫程式上犯下難以抓出的錯誤 linker 執行 symbol resolution 所做的決定將大大的影響程式執行。
     Like 1 Bookmark
  • 透過高級語言開發效率更高也更可靠,用高級的語言開發可以在不同的機器上編譯和執行,而 assembly code 則是與特定機器密切相關。 為什麼還需要學習 assembly code 呢? 通過閱讀 assembly code ,可以了解編譯器如何優化、理解電腦如何執行程式並分析其中的低效率之處。 試圖最大化一段關鍵程式碼效率的過程中,可以透過不斷修改程式碼,並觀察編譯器產生的 assembly code 來了解如何最大化效率。 高級語言提供的抽象層會隱藏我們想了解的程式運行行為。例如了解 thread 之間是如何共享資料或是如何管理私有資料等。 重要名詞
     Like  Bookmark
  • Part 1. Program Structure and Execution CS:APP Ch2 Presentation and Maipulating Information CS:APP Ch3 Machine-level Representation of Programs Part 2. Running Programs on a System CS:APP Ch7 Linking
     Like  Bookmark
  • contributed by < haogroot > 題目連結 測試環境 Kernel version: 5.3.0-51-generic OS: Ubuntu 19.10 CPU model: Intel® Core™ i7-8565U CPU @ 1.80GHz 作業要求 1
     Like  Bookmark
  • contributed by < haogroot > 測試環境 Kernel version: 5.3.0-40-generic OS: Ubuntu 19.10 CPU model: Intel® Core™ i7-8565U CPU @ 1.80GHz 自我檢查 [ ] 參照 fibdrv 作業說明 裡頭的「Linux 核心模組掛載機制」一節,解釋 $ sudo insmod khttpd.ko port=1999 這命令是如何讓 port=1999 傳遞到核心,作為核心模組初始化的參數呢?
     Like  Bookmark
  • contributed by < haogroot > Kernel version: 5.3.0-40-generic OS: Ubuntu 19.10 CPU model: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz 自我檢查清單 [ ] 研讀上述 ==Linux 效能分析的提示== 描述,在自己的實體電腦運作 GNU/Linux,做好必要的設定和準備工作 $\to$ 從中也該理解為何不希望在虛擬機器中進行實驗; [ ] 研讀上述費氏數列相關材料 (包含論文),摘錄關鍵手法,並思考 clz / ctz 一類的指令對 Fibonacci 數運算的幫助。請列出關鍵程式碼並解說
     Like  Bookmark
  • # [simplefs](https://github.com/jserv/simplefs) 學習紀錄與疑惑 ### 測試環境 Ubuntu ~~19.10~~ -> ubuntu 18.04.4 LTS kernel version: ~~5.3.0-29-generic~~ -> 4.9.102 ## Build and Test 結果 ``` $ ls mount/ $ cat mount/vanakkam ``` 以上兩個指令需要 sudo 權限。 ``` $ echo "Hello World" > mount/hello ``` 以上指令失敗,權限不足。 ``` $ cat mount/hello ``` 推測無法創建 hello 這個 file,自然透過 cat 也無法印出任何東西。 ### 執行 simple-test.sh 得到以下錯誤: ```bash simple-test.sh: line 18: /sys/module/jbd2/parameters/jbd2_debug: No such file or directory ``` > 根據
     Like  Bookmark