分享到plurk 分享到twitter 分享到facebook

版本 b2521c194b2897b5d74af67605a9bd4bdca6a1fb

embedded/2016q1h4

Changes from b2521c194b2897b5d74af67605a9bd4bdca6a1fb to current

---
title: 2016q1 Homework #4
toc: no
...

預期目標
------------
- 複習 / 重新學習後續課程所需要的背景知識
- 延續 [2016q1: Homework3](/embedded/2016q1h3) 和驗證 [2016q1 第 6 週提及的多執行緒設計概念](https://embedded2016.hackpad.com/ep/pad/static/VJmq0R0ILi6)

**注意**: Homework 4 包含 2 部份,請詳細閱讀

作業要求 (A)
-----------
* 在 4 月 17 日前,閱讀指定材料的 2 分之 1 以上,並在「[作業區](https://embedded2016.hackpad.com/2016q1-Homework-4-xqEEEVlynJg)」記錄學習心得和疑惑,涵蓋以下主題:
    - 計算機組織結構
    - ARM 處理器架構
    - 系統程式概念
    - C 語言程式設計
* 建議花 4 個整天來進行
* [示範用的 Hackpad 頁面](https://embedded2015.hackpad.com/2015--OsxFmQOf0cd) (請勿直接編輯,而是建立新的 Hackpad 頁面)
    - 提及參考資料的標題和超連結
    - 提問要標注頁碼,最好附上原本的敘述
    - 本作業非常重要,授課教師會斟酌回覆你的提問

### 計算機組織結構
* 黃婷婷教授的 Computer Architecture
  - [課程影片](https://www.youtube.com/playlist?list=PLS0SUwlYe8cxMiFW_PiaBu53nOAXl3dxS)
    - [共筆和補充](https://paper.dropbox.com/doc/Computer-Architecture-Notes-NfGP1aZt2pAkgTcFeiEmc)

### ARM 處理器架構
* [2016q1 第 6 週列出來的所有連結和材料](https://embedded2016.hackpad.com/ep/pad/static/VJmq0R0ILi6)
* [ARM Cortex-M3](http://www.slideshare.net/GauravVerma3/arm-cortex-processor-compatibility-mode)
* [Assembly language programming: ARM Cortex-M3](http://www.slideshare.net/GonzaloSantiago/assembly-language-programming-arm-cortexm3-vincent-mahout)

### 系統程式概念
* [From Source to Binary](http://www.slideshare.net/jserv/how-a-compiler-works-gnu-toolchain)
* [Hello World!](http://wen00072-blog.logdown.com/posts/190025-hello-world)
* [Something Behind Hello World](http://www.slideshare.net/jserv/helloworld-internals)

### C 語言程式設計
* [Deep C](http://www.slideshare.net/olvemaudal/deep-c) (前 246 頁)


作業要求 (B)
-----------
* 快速複習 [POSIX Thread Tutorial](http://randu.org/tutorials/threads/),並研究 [C-Thread-Pool](https://github.com/Pithikos/C-Thread-Pool) 的實做
    - 記得一併學習 C-Thread-Pool 提供的 [test suite](https://github.com/Pithikos/C-Thread-Pool/tree/master/tests)
* 以 lock-free thread pool 改寫 [Homework 3](/embedded/2016q1h3) 裡頭的 server-framework,並且證實效能的改善
* 指出 server-framework 實做內部對於 semaphore, mutex, condition variables 的調整,並且要指出調整同步處理機制後,對效能的改善
* 自 server-framework 抽出關鍵程式碼,建立 **新的** Git repository,確保有一致的功能,然後重新測試效能
* 在 4 月 11 日前完成,並將開發紀錄詳實更新於 [Homework 3 的作業區](https://embedded2016.hackpad.com/2016q1-Homework-3-a3Rb2XROJso)
    - 不需要建立新的 hackpad
    - 直接在 Homework 3 裡頭 fork 出來的 server-framework 中修改程式碼,若建立新的 git repository,則務必在共筆提及