Appmedia

@Appmedia

Joined on Mar 9, 2024

  • 一、RTOS 介紹 即時系統是一個有時間限制的系統,具有明確定義的固定時間限制。處理必須在定義的約束內完成,否則系統將失敗。 可以將 RTOS 分為以下兩種: Hard RTOS: 將任何錯過最後期限的行為視為系統故障。廣泛用於任務關鍵型系統。 Soft RTOS: 允許經常錯過最後期限,只要任務及時執行,其結果就繼續有價值。已完成的任務在截止日期之前的價值可能會增加,而在截止日期之後價值可能會減少。 :::info 注意到 Real time != Real fast
     Like  Bookmark
  • 「指標」扮演「記憶體」和「物件」之間的橋樑 C 語言規格 Object 首先可以先探討 C 語言中的 object。講到 object 大家一定會想到物件導向,但其實在 C 語言規格書中有個專業術語就叫 『object』。 object 定義: 在執行時期,資料儲存的區域,可以明確表示數值的內容 region of data storage in the execution environment, the contents of which can represent values
     Like  Bookmark
  • mallocLab PDF 本實驗希望做出一個動態記憶體分配器,我們需要用 C 語言實作 malloc、free、realloc 函式。目標是開發出正確、快速且記憶體碎片少的顯式分配器。 背景知識 我們需要實作以下四個函式: mm_init: 在呼叫 mm_malloc 與 mm_free 之前,需要先初始化,例如分配 heap 區域的空間 mm_malloc: 分配並回傳指向一塊已分配區域的有效負載(payload)的指標。分配的區域要在 heap 內,並且不能和其他已分配區域重疊。而分配大小始終要是 8 bytes 對齊的 mm_free: 釋放掉 ptr 指標指向的已分配區域空間。要確保 ptr 指向的空間是利用 mm_malloc 或 mm_realloc 分配過的空間,不然就會變成 UB
     Like  Bookmark
  • 簡介 課程: 數位晶片設計實作 RTL: verilog EDA tool: Quartus Simulation: ModelSim 實作項目DWT 背景知識 dwt(5,3) 一維一階分解 dwt(5,3) 一維二階分解 dwt(5,3) 模擬器 dwt(5,3) 二維一階分解
     Like  Bookmark
  • 本筆記是 CSAPP 課程 Lab 的筆記,我預計會有自己解題的思路,以及其他優秀解答的題解。 Data Lab CS:APP Data Lab Bomb Lab CS:APP Bomb Lab Attack Lab CS:APP Attack Lab
     Like  Bookmark
  • Background 本實驗希望我們做出一個 Unix Shell 。所以我們可以先來看一個簡單的 Shell 程式是如何實作的。 首先,Shell 的定義就是由使用者在 command line 上輸入字串,而 Shell 再根據字串執行對應的動作。因此接收到字串後便進入評估(eval)。 而 eval 函式需要做以下的事: 判斷是在前台(foreground)或是後台(background)運行。 解析第一個參數是否為 Shell 內建的命令 若第二點為真,則直接調用該功能函式,並結束這個命令
     Like  Bookmark
  • 環境準備 安裝 一樣到官網安裝壓縮檔: Lab Assignments Lab PDF 檔 環境調整 先將檔案解壓縮 $ tar xvf archlab-handout.tar
     Like  Bookmark
  • 背景知識 安裝的流程和之前一樣,就不在贅述了。而本作業的題目說明在 attacklab.pdf 。 本作業一共有 5 題。分別對具有不同安全漏洞的兩個程式攻擊,而透過本次作業可以學到: 安全漏洞導致 Buffer overflow 的問題 如何編寫更安全的程式 了解 x86-64 的堆疊和參數傳遞機制 了解x86-64 指令的編碼方式 更深入使用 GDB 和 OBJDUMP 等除錯工具
     Like  Bookmark
  • 背景知識 環境安裝 從這裡安裝好後,進行解壓縮: $ tar xvf bomb.tar 文件結構 - bomb.c - bomb - README.md bomb.c: 主程式的 C 文件
     Like  Bookmark
  • 本筆記是 CSAPP 課程 Lab 的筆記,我預計會有自己解題的思路,以及其他優秀解答的題解,Lab 的資料可以從這裡取得。點選自學材料(Self-Study Handout)就可以安裝 Lab 的壓縮檔了。 背景知識 環境安裝 安裝完成後,執行命令解壓縮: $ tar xvf datalab-handout.tar 可以透過 make 命令編譯 bits.c ,但是這邊會遇到一個問題,就是本作業都預設執行機器為 32 位元,解決方案就是執行以下命令: $ sudo apt-get install gcc-multilib
     Like  Bookmark
  • contributed by < Appmedia06 > 開發環境 $ gcc --version gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ lscpu
     Like  Bookmark
  • contributed by < Appmedia06 > 開發環境 $ gcc --version gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ lscpu
     Like  Bookmark
  • contributed by < Appmedia06 > 第三周測驗題 測驗一 完整題目 :::info [x] 實作計算開平方根 [x] 解釋上述程式碼運作原理並重新整理數學式 (原題目故意略去某些細節),並嘗試用第 2 週測驗題提到的 ffs / fls 取代 __builtin_clz ,使程式不依賴 GNU extension,且提供分支和無分支 (branchless) 的實作。
     Like  Bookmark
  • contributed by < Appmedia06 > 第一周測驗題 quiz1 測驗一 完整題目 :::info 測驗目標 [x] 實作鍊結串列的非遞迴的 Quick Sort (快速排序法) [x] 測驗最差情況的改進
     Like  Bookmark
  • contributed by < Appmedia06 > 這篇主要是研讀 list_sort.c 的筆記,首先先嘗試理解這個檔案寫了什麼,可以看到裡面總共有3個函式,分別是 merge , merge_final , list_sort ,簡單看過一遍後得知 list_sort 是使用 merge sort 實作,因此呼叫到 merge 和 merge_final ,以下開始詳細討論個函式功能。 研讀筆記 __attribute__((nonnull())) 在每個函式前面都有這一行程式,它是由 GNU C 編譯器所提供的一個特殊屬性,所謂 nonnull 是在告訴編譯器函式的第幾個參數不應該為空指標,否則會產生 undefined behavior 。 以 list_sort 為例
     Like  Bookmark