YM Chen

@cymizer

Joined on Aug 19, 2019

  • contributed by < > 作業說明 GitHub repository 開發環境 $ uname -a Linux notebook 5.8.0-55-generic #62~20.04.1-Ubuntu SMP Wed Jun 2 08:55:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ gcc -v gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
     Like  Bookmark
  • contributed by < cymizer > GitHub 開發環境 $ uname -a Linux notebook 5.8.0-55-generic #62~20.04.1-Ubuntu SMP Wed Jun 2 08:55:04 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux $ gcc -v gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
     Like  Bookmark
  • Memory Allocation heap Heap Init ,如果沒有使用過的話 xWantSize +=HeapStructSize 和做 alingment heapSTRUCT_SIZE = ( ( sizeof( BlockLink_t ) + ( portBYTE_ALIGNMENT - 1 ) ) & ~portBYTE_ALIGNMENT_MASK );
     Like  Bookmark
  • Caller / Callee 的關係,為什麼要分開有 Caller / Callee? 因為函式呼叫牽涉到參數的傳遞, 並不只是單純跳到那個Address執行程式碼再跳回來這麼簡單, 呼叫副程式(callee)的主程式(caller), 需要知道怎麼填參數,副程式才能接到參數後進行處理, 再將結果, 傳給主程式, 所以這段協定, 稱之為Calling Convention(呼叫慣例)。 呼叫慣例 (Calling Convention) 函式的呼叫,在不同的指令集有所差別,透過呼叫慣例 (Calling Convention)規範下,描述了函數的呼叫方式。 例如: caller 或 callee 去分別要負責保存哪些 register
     Like  Bookmark
  • How to refer memory in a program – Address Binding 決定程式起始位置,即程式要在記憶體的哪個地方開始執行。Binding 有 3 個可能執行的時機,compile time, load time 和 execution time。 Compile Time 程式中的資料、參數等必須要有對應的記憶體位置,早期的作法是在編譯期間,就決定要放在哪裡。Compiler 會將組合語言轉換成實際的記憶體位置 在 compile time 就做 binding 的缺點是若起始地址變更(可能該地址被其他 process 占住),則需要重新編譯 (recompile),等於要關閉並重新執行 Load Time Compiler 不會決定實際的記憶體地址,而是會留一個變數(Base Register),給出相對位置。程式讀取(Load)的時候,確定 memory 哪裡有空位之後,才透過該變數決定真正的地址
     Like  Bookmark
  • Operating System 思考為什麼需要 os ? os 負責什麼工作 ? 資源的管理 ( resource ) 工作的管理 ( jobs) Program Program 意旨軟體工程師所寫的程式碼 (code) 的集合,也就是還尚未 load 進記憶體的程式碼
     Like  Bookmark
  • # Interrupt & Context Switch ###### tags: `OS`
     Like  Bookmark
  • contributed by < cymb103u > 第1週測驗題目 [x] 1.解釋程式原理 [ ] 2.引入其他 Pseudorandom number generator [x] 3.非遞迴呼叫改寫 [ ] 4.仿效 linux-list 並改寫 [ ] 5.思考高效率的 linked list 排序演算法
     Like  Bookmark