版本 d04e1d859607e7bbb2d95f59d0d2cc9e819eddeb
Changes from d04e1d859607e7bbb2d95f59d0d2cc9e819eddeb to 3bf1da74be14d2b2f7c065380ae621429f4c4851
---
title: 系統軟體課程進度與開放資源
categories: system programming, linux, performance, security, compiler, kernel
toc: no
...
- Instructor: [Jim Huang](/User/jserv) (黃敬群) `<jserv.tw@gmail.com>`
* [Facebook 粉絲專頁](https://www.facebook.com/JservFans) (不要擔心提了笨問題,這專門用來和學生互動,可預約一對一討論)
- 討論區: [https://www.facebook.com/groups/system.software2018/](https://www.facebook.com/groups/system.software2018/)
- 課程信箱: `<embedded.master2015@gmail.com>`
作業系統設計與實作 (Spring 2018)
------------------------------------------------------
* 第 1 週 (Feb 27): 誠實面對自己
- [課程簡介和注意須知](https://docs.google.com/presentation/d/143asQtaklIxV_3PGZ1EIM_2DrFfOX7Qblt9xZorQXYg/edit?usp=sharing)
* [錄影解說](https://www.youtube.com/watch?v=XXiPPUzld84)
- [Bit-wise operations](https://hackmd.io/s/HkMAwkzdf)
- [CS:APP 學習指引 (1)](https://hackmd.io/s/SJ7V-qikG)
- 歷屆修課學生心得: [張家榮](/User/JaredCJR), [陳品睿](/User/ggary9424), [蕭奕凱](/User/Veck)
- [GNU/Linux 開發工具共筆](https://hackmd.io/c/rJKbX1pFZ): 務必 自主 學習 Linux 操作, Git, HackMD, LaTeX 語法 (特別是數學式), GNU make, perf, gnuplot
- [作業](https://hackmd.io/s/SJONH8fuz) (截止日: Mar 12)
* [phonebook](https://hackmd.io/s/SykZ8IMOf), [因為自動飲料機而延畢的那一年](http://opass.logdown.com/posts/1273243-the-story-of-auto-beverage-machine-1) (記錄心得和啟發)
* 課後學習: [你所不知道的C語言:數值系統篇](https://hackmd.io/s/BkRKhQGae), [你所不知道的C語言:指標篇](https://hackmd.io/s/HyBPr9WGl), [你所不知道的C語言:遞迴呼叫篇](https://hackmd.io/s/rJ8BOjGGl)
- [課程基本資料表單](https://goo.gl/forms/0ImbCMH1VMG0jyKg2)
- Week1 隨堂測驗: [題目](https://hackmd.io/s/rJh9U4Guf) / [作答表單](https://goo.gl/forms/alrwn5w6WT0VHfeM2)
* 第 2 週 (Mar 6): 數值系統
* [CS:APP 第 2 章重點提示和練習](https://hackmd.io/s/rJoxSsiuG)
- 冼鏡光教授的 [使用浮點數最最基本的觀念](http://blog.dcview.com/article.php?a=Az0HYgNrBDU%3D)
* [Bitwise Algorithms](https://www.geeksforgeeks.org/bitwise-algorithms/), [bit-reverse](https://hackmd.io/s/ByzoiggIb), [multiplier](https://hackmd.io/s/r1Z_zPx8-)
* [Git commit message 撰寫和改進](https://hackmd.io/s/HJQk5dt2x)
* Week2 隨堂測驗: [題目](https://hackmd.io/s/SJO5LN9_M) / [作答表單](https://goo.gl/forms/6IgybKUv8hcn0P9y1)
* 第 3 週 (Mar 13): 數值運算
* [從根號 2 的運算談浮點數](https://hackmd.io/s/ryOLwrVtz)
+ 對應 [CS:APP 3/e](http://csapp.cs.cmu.edu/) 的 **2.3.6** (Page 70-74), **2.4.5** (Page 85-87)
* [Code Review Guidelines](https://engineeringblog.yelp.com/2017/11/code-review-guidelines.html), Jonathan Maltz, Software Engineer at Yelp
* [你所不知道的C語言: linked list 和非連續記憶體操作](https://hackmd.io/s/SkE33UTHf)
* 千萬不要小看 [Linux 核心的 linked list 實作](https://github.com/torvalds/linux/blob/master/include/linux/list.h) (不到 800 行),很多人下載 Linux 核心程式碼後,就急著閱讀 `kernel/` 和 `drivers/` 目錄,沒多久就被各種「偉大」的程式碼嚇跑
+ 這些人不懂 C 語言和掌握 Linux 核心的設計概念
+ 無法掌握關鍵資料結構,如 linked list
* [作業](https://hackmd.io/s/BykAwRuKz): (截止日: Mar 27)
+ [introspect](https://hackmd.io/s/SJvojkBtG), [assessment](https://hackmd.io/s/BJ0v7eBFz)
+ 課後預習: [現代處理器設計:原理和關鍵特徵](https://hackmd.io/s/Hk2CscGcl), [現代處理器設計: Cache 原理和實際影響](https://hackmd.io/s/HkW3Dr1Rb)
* Week3 隨堂測驗: [題目](https://hackmd.io/s/SknkEfVFf) / [作答表單](https://goo.gl/forms/0b4FW4RhOCU46ldK2)
* 第 4 週 (Mar 20): 協同開發和計算機結構
* 公告:
+ Apr 3 配合校際活動週暫時實體授課,當天用 YouTube 補課,當週也會有對應的作業,請留意
+ 每週二 19:30 安排在資訊系舊館一樓 4217 室 (系圖書館) 一對一討論
* Video: [George Dyson: The birth of the computer](https://www.ted.com/talks/george_dyson_at_the_birth_of_the_computer) (有中文字幕,但品質不佳,之後會重新翻譯)
* Git commits 案例探討: [dcurl](https://github.com/chenwei-tw/dcurl) // [趣聞](https://www.facebook.com/photo.php?fbid=10156207653132389&set=a.484920257388.262658.541762388)
+ [SITCON 2018 簡報](https://www.slideshare.net/ChenWei15/sitcon2018-analysis-and-improvement-of-iota-pow-implementation)
+ [reddit 討論](https://www.reddit.com/r/Iota/comments/85bxsv/dcurl_multithreaded_curl_implementation/)
+ 指導原則: [Commit Often, Perfect Later, Publish Once](https://sethrobertson.github.io/GitBestPractices/)
* [CS:APP 第 3 章重點提示](https://hackmd.io/s/HJDRfVCFG)
* [CS:APP 第 4 章重點提示](https://hackmd.io/s/ByKFm4CFz)
* 回顧 [Homework1](https://hackmd.io/s/SJONH8fuz) 和 [Homework2](https://hackmd.io/s/BykAwRuKz)
* [作業](https://hackmd.io/s/BykAwRuKz): (截止日: Apr 2)
+ [prefix-search](https://hackmd.io/s/ByFWoR_tz)
* Week4 隨堂測驗: [題目](https://hackmd.io/s/SyK-WApKM) / [作答表單](https://goo.gl/forms/sL1irdTNE3Oj9QLw2)
* 第 5 週 (Mar 27): 計算機結構
* [CS:APP 第 4 章重點提示](https://hackmd.io/s/ByKFm4CFz)
* 課後預習: [手機裡頭的 ARM 處理器](http://hackfoldr.org/arm/) 的「系列講座導論」、「架構和指令集」和「基礎指令和開發環境」
* Week5 隨堂測驗:
* 上:[題目](https://hackmd.io/s/SynmEVIqG) / [作答表單](https://goo.gl/forms/EurRIrnorTrDq86A3)
* 中:[題目](https://hackmd.io/s/HkQjgqI5G) / [作答表單](https://goo.gl/forms/7KlPfjP1cH2U6apf2)
* 下:[題目](https://hackmd.io/s/Sk30MXDqM) / [作答表單](https://goo.gl/forms/fYlDUFKo5mUsX5h52)
* 第 6 周 (Apr 3): 停課一次 + 自學
* [作業](https://hackmd.io/s/S1iCyyziG) (截止日: Apr 24)
- [list](https://hackmd.io/s/HkxZbJzif)
- [c-review](https://hackmd.io/s/ByDzIZzjf)
* 第 7 週 (Apr 10): 學習檢討
* [測驗題](https://drive.google.com/open?id=1jp3nXj6Jy2JXZhHNwapn0FDFUSqwT2iZ) / [參考解答](https://drive.google.com/open?id=1XJSbR7gD7Q_QwXaC1YBKUIcctyux4_QF)
* 回顧 [Homework2](https://hackmd.io/s/BykAwRuKz)
* 延伸閱讀:
- [Minimum average and bounded worst-case routing lookup time](http://klamath.stanford.edu/~pankaj/thesis/chapter3.pdf)
- [Binary Search Is a Pathological Case for Caches](https://www.pvk.ca/Blog/2012/07/30/binary-search-is-a-pathological-case-for-caches/)
* 第 8 週 (Apr 17): Memory hierarchy
* [淺談 Microkernel 設計和真實世界中的應用](https://hackmd.io/s/SJ55y7fR)
* [Effect of CPU caches](https://medium.com/@minimarcel/effect-of-cpu-caches-57db81490a7f)
* [CPU caches](https://lwn.net/Articles/252125/) by Ulrich Drepper (前任 GNU glibc 維護人)
- 「[有沒有 glibc 的八卦?](https://news.ycombinator.com/item?id=7953771)」: 比較 Linus Torvalds (Linux 核心) 和 Ulrich Drepper (glibc) 管理風格的差異,不能把開放原始碼專案當作「單一文化」看待
* [software pipelining](https://hackmd.io/s/BJWcEb3xM), [現代處理器設計: Cache 原理和實際影響](https://hackmd.io/s/HkW3Dr1Rb)
* Week8 隨堂測驗: [題目](https://hackmd.io/s/Hknr4Rx3z) / [作答表單](https://goo.gl/forms/UtKuFEgEcKEBhL2l1)
* 填寫 [分組表](https://hackmd.io/MDIXcaHRTTK-SpAHLNYGTQ)
* 第 9 週 (Apr 24): Memory hierarchy + Virtual Memory
* [CPU caches](https://lwn.net/Articles/252125/) by Ulrich Drepper
* [CS:APP 第 6 章重點提示](https://hackmd.io/s/H1vQ3vu2z)
* intrusive vs. non-intrusive data structure
- [intrusive/non-intrusive data collection](https://medium.com/fcamels-notes/intrusive-non-intrusive-data-collection-2b937f3c0c0b)
- 示範: [intrusive-ds](https://github.com/sysprog21/intrusive-ds)
- [Intrusive Lists in Doom 3](https://gpfault.net/posts/intrusive-lists-doom3.txt.html)
- [DOOM 3 BFG Technical Note](http://fabiensanglard.net/doom3_documentation/DOOM-3-BFG-Technical-Note.pdf) (Page 7-9)
* Week9 隨堂測驗: [題目](https://hackmd.io/s/HyZ7mSn2f) / [作答表單](https://goo.gl/forms/Z0naLxHpaG9HriC12)
* 第 10 週 (May 1): Memory hierarchy + code review
* [CS:APP 第 6 章重點提示](https://hackmd.io/s/H1vQ3vu2z)
* 檢視 [分組狀況](https://hackmd.io/MDIXcaHRTTK-SpAHLNYGTQ)
進階電腦系統理論與實作 (Fall 2017)
------------------------------------------------------
* 第 1 週 (Sep 22): 誠實面對自己
- [課程簡介和注意須知](https://docs.google.com/presentation/d/1-6ZlaL3vd-a54omTpcTQPudbpxz-eqisyd7PY4e_Ctc/edit#)
- 注意: 第 2 週安排測驗,請準時參加。參考 [春季班考題](https://drive.google.com/file/d/0B2k5UNgAENkrSlBsOUJIQTNqQ0k/view?usp=sharing)
- 近期活動: [矽谷工作經驗談](https://headtoengineer.kktix.cc/events/7c90b8a0-5a5191-9487), [協助準備研究所推薦甄試和撰寫推薦信](https://www.facebook.com/JservFans/posts/1283913268401671)
- [21 世紀的系統軟體](https://hackmd.io/s/H1oxJ0Wo-): 「需求」層次: 正確 → 安全 → 可讀 → 優雅 → 利他; Benchmark / Profiling; 運算模式的巨變; Deep Learning 背後的資訊建設
- [軟體缺失導致的危害](https://hackmd.io/s/B1eo44C1-)
- [GNU/Linux 開發工具共筆](https://hackmd.io/c/rJKbX1pFZ): 務必 *自主* 學習 Linux 操作, Git, HackMD, LaTeX 語法 (特別是數學式), GNU make, perf, gnuplot
- [重新理解數值](https://hackmd.io/s/BkRKhQGae): 2 進位, 3 進位 (?!), 數值表達方式和阿貝爾群, integer overflow; 邏輯和算術的差異; 運用 bit-wise operator; 算術和數位邏輯的關聯
* 對應 [CS:APP3e](http://csapp.cs.cmu.edu/) 的第 2 章: 2.3 整數運算, 2.4.2 IEEE 浮點數表示, 2.4.5 浮點運算
- [Programming Small](https://hackmd.io/s/SkfffA-jZ): 對應 [CS:APP3e](http://csapp.cs.cmu.edu/) 的第 5 章: 5.13 效能提高技術
* 案例探討: [bit-reverse](https://hackmd.io/s/ByzoiggIb)
* 案例探討: [multiplier](https://hackmd.io/s/r1Z_zPx8-)
- [2017 年秋季作業說明](https://hackmd.io/s/B17yi6WoW)
- 選修/旁聽的學生請協助填寫 [課程表單](https://docs.google.com/forms/d/e/1FAIpQLScf9CcJ3_ETZQ8CJvE970Q1bSKUisKxdg8C5k-DTqFwoBLbsQ/viewform)
- [作業](https://hackmd.io/s/HyxQTaZj-) (截止日: Oct 8)
* [ternary](https://hackmd.io/s/Sym0UAk9Z), [phonebook](https://hackmd.io/s/HJJUmdXsZ), [clz](https://hackmd.io/s/Hyl9-PrjW)
- 歷屆修課學生心得: [張家榮](/User/JaredCJR), [陳品睿](/User/ggary9424), [蕭奕凱](/User/Veck)
* 第 2 週 (Sep 29): 期初測驗
- 時間: 09:10-14:10 (可中途離席,不要在電腦教室飲食)
- 總分 300 分,全部是程式設計題目 (主要用 C 語言),只要能得 60 分以上,就具備本學期課程所需要的基礎
- [期初測驗試題](http://wiki.csie.ncku.edu.tw/sysprog/exam-2017fall.pdf)
* 第 3 週 (Oct 6): 計算機組織與結構
- [Computer Architecture](https://hackmd.io/s/H1sZHv4R) ([NOTE](https://hackmd.io/s/rkloHgHcx))
- [Modern Microprocessors (A 90-Minute Guide!) 重點提示和解說](https://hackmd.io/s/Hk2CscGcl)
* 錄影: [現代處理器原理和關鍵特徵 (上)](https://www.youtube.com/watch?v=9hNl8fWnHLI) / [現代處理器原理和關鍵特徵 (下)](https://www.youtube.com/watch?v=UHOvgmZNjXI)
* 對應 [CS:APP3e](http://csapp.cs.cmu.edu/) 的第 4 章
- [作業](https://hackmd.io/s/HkVvxOD2-) (截止日: Oct 16)
* [prefix-search](https://hackmd.io/s/Bki0g_P3Z), [software-pipelining](https://hackmd.io/s/S1eEa_w2b)
* 第 4 週 (Oct 13): Code Review
- [Homework 1 講評](https://hackmd.io/s/HyxQTaZj-)
* [Implementation of Binary Search on a Singly Linked List Using Dual Pointers](http://www.ijcsit.com/docs/Volume%205/vol5issue02/ijcsit20140502215.pdf)
* 對應 [CS:APP3e](http://csapp.cs.cmu.edu/) 的第 5 章: 5.6
- 作業: [introspect](https://hackmd.io/s/B1aMNkXa-) (截止日: Oct 26)
* 第 5 週 (Oct 20): Code Review
- 複習統計學: 交通大學開放課程: [統計學(一)](http://ocw.nctu.edu.tw/course_detail.php?bgid=3&gid=0&nid=277) / [統計學(二)](http://ocw.nctu.edu.tw/course_detail.php?bgid=3&gid=0&nid=511)
* [一個群體參數的假說檢定](http://ocw.nctu.edu.tw/course/stat032/9.1.pdf)
- [Poisson distribution](http://www.agron.ntu.edu.tw/biostat/Poisson.html)
* video: [The Poisson Distribution: Mathematically Deriving the Mean and Variance](https://www.youtube.com/watch?v=65n_v92JZeE)
- [Homework 1 講評](https://hackmd.io/s/HyxQTaZj-) / [Homework 2 講評](https://hackmd.io/s/HkVvxOD2-)
* 第 6 週 (Oct 27): 現代處理器設計
- [第 1 週作業回顧](https://hackmd.io/s/H1crfllC-)
- [第 2 週作業回顧](https://hackmd.io/s/HJfSRge0Z)
- [現代處理器設計](http://hackfoldr.org/cpu) (原理和關鍵特徵, cache 原理和多核心議題, 虛擬機器設計與實作)
* 對應 [CS:APP3e](http://csapp.cs.cmu.edu/) 的第 4 章
- [作業](https://hackmd.io/s/BJR9BTlRW) (截止日: Nov 9)
* [simulator](https://hackmd.io/s/BkQgqpe0Z)
* 第 7 週 (Nov 3): Blockchain & Sandboxing
- [Don Tapscott 闡述為何區塊鏈是改變現有生態的關鍵技術](https://www.ted.com/talks/don_tapscott_how_the_blockchain_is_changing_money_and_business) [有繁體中文字幕]
* Don Tapscott 著有 "Blockchain Revolution : How the Technology Behind Bitcon Is Changing Money, Business and the World" 一書,在這個時間點,區塊鏈 + 數位內容 + 共享經濟平台疊合的效應不容小覷,革命性地跳脫中間抽成和交易成本
- [How Merkle trees enable the decentralized Web](https://taravancil.com/blog/how-merkle-trees-enable-decentralized-web/)
- [虛擬機器設計與實作](https://hackmd.io/s/SkBsZoReb)
- [Dalvik Implementation](https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxudHVhbmRyb2lkMjAxNHxneDoxN2RmZjEyNDQ2YTg1MTli)
- [st9007a: simulator](https://hackmd.io/s/Hkf6pkPAb)
- [Ledger launches moxie-based secure VM technology for blockchain applications](http://moxielogic.org/blog/introducing-bolos.html)
- [加密貨幣硬體錢包公司 Ledger 與 Intel 合作, 將 SGX 技術整合進產品中](http://blockcast.it/2017/10/25/intel-partners-with-ledger-to-integrate-bitcoin-wallet-software-and-sgx-tech/)
- [jslinux](https://bellard.org/jslinux/)
- [第 2 週作業回顧](https://hackmd.io/s/HJfSRge0Z)
* 第 8 週 (Nov 10): Sandboxing & Formal Verification
- 注意: 請在 11:10AM 前完成 [分組登錄](https://hackmd.io/OwDghgTALGDGsFpYFZYDMFQEZoCYIE4UAGBSARmWCmWSmFwFMg==?view)
- 若你沒打算退選,請在 11 月 15 日前發信到 `<jserv.tw@gmail.com>`,標題是 `[sysprog] 你的姓名` (中間有空格),說明以下:
* 自我評價前 8 週的學習狀況
* 導致學習進度落後的因素
* 預計補救的措施
- [隔離執行環境的建構與應用](https://hackmd.io/s/Hk9HLRbkf): 加密貨幣領域的系統軟體
* Trusted Execution Environment (TEE)
* Trusted Platform Module (TPM)
* Moxie 處理器架構
* Ledger 公司推出 BOLOS (Blockchain Open Ledger Operating System) 作為區塊鏈處理的作業系統
* Ledger 公司透過特製的 Moxie 虛擬機器,作為 TEE 的基礎
* Intel 的 Software Guard Extensions (SGX)
* 採用 Moxie 架構一來確保極小的處理器和 ISA 實作,二來又保證 GNU Toolchain 的支援
* 使用 GNU profiler 来提高程式碼執行速度
* 支援遠端除錯
- [形式化驗證](https://hackmd.io/s/H1xxp3pF0)
* [形式化驗證與 cbmc](https://hackmd.io/s/Hk4lYmzkf)
* [程式漏洞導致虛擬貨幣被駭客無限制提領](https://technews.tw/2016/06/21/etheriumdao-hack-that-cloud-get-unlimit-refund/)
* [DAO 遭駭事件](https://technews.tw/2016/06/21/etheriumdao-hack-that-cloud-get-unlimit-refund/)
- 詳情: [Analysis of the DAO exploit](http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/), [The DAO, The Hack, The Soft Fork and The Hard Fork](https://www.cryptocompare.com/coins/guides/the-dao-the-hack-the-soft-fork-and-the-hard-fork/)
- [第 6 週作業回顧](https://hackmd.io/s/BJR9BTlRW)
- [作業](https://hackmd.io/s/rk7xxIGkf) (截止日: Nov 23)
* [sandbox](https://hackmd.io/s/BJpTWUM1f)
* 第 9 週 (Nov 17): CS:APP
- [CS:APP 學習指引 (1)](https://hackmd.io/s/SJ7V-qikG)
- [Toward Concurrency](https://hackmd.io/s/Skh_AaVix)
* 第 10 週 (Nov 24)
- 近期活動:[半導體製造的第一手資訊](https://headtoengineer.kktix.cc/events/7c90b8a0-5a5191-9487-copy-2)
- nand2tetris: 運用數位邏輯的概念,使用基本閘組出一台電腦
* [用十分鐘向 nand2tetris 學會設計處理器](https://www.slideshare.net/ccckmit/nand2tetris)
* [Shimon Schocken 的 TED 演說](https://www.ted.com/talks/shimon_schocken_the_self_organizing_computer_course?language=zh-tw)
- [CS:APP 學習指引 (1)](https://hackmd.io/s/SJ7V-qikG)
- [第 8 週作業回顧](https://hackmd.io/s/rk7xxIGkf)
* 第 11 週 (Dec 1): SPS IPC Drives 展覽,停課一次
* 第 12 週 (Dec 8): [分組報告](https://hackmd.io/s/rk7xxIGkf)
* 第 13 週 (Dec 15)
- [Toward Concurrency](https://hackmd.io/s/Skh_AaVix)
- [分組報告](https://hackmd.io/s/rk7xxIGkf)
* 第 14 週 (Dec 22):
- 荷蘭能源公司 ElaadNL 發布[使用 IOTA 的動畫](https://www.youtube.com/watch?v=81rXoSRIRSA),很精緻又淺顯地探討分散式帳本技術在智慧充電的關鍵,特別是可靠的結算
* 第 15 週 (Dec 29):
- [Fog computing & P2P CDN](http://blog.hitripod.com/p2p-cdn-fog-computing/)
- [Web Ledger Protocol](https://w3c.github.io/web-ledger/): W3C 的草案,DLT 大範圍的落實
- [密碼貨幣與區塊鏈原理](http://www.math.sinica.edu.tw/www/file_upload/summer/crypt2017/data/2017/%E4%B8%8A%E8%AA%B2%E8%AC%9B%E7%BE%A9/[20170726][%E5%AF%86%E7%A2%BC%E8%B2%A8%E5%B9%A3%E8%88%87%E5%8D%80%E5%A1%8A%E9%8F%88%E5%8E%9F%E7%90%86].pdf) / [東京電力公司高層參訪成大 開啟交流第一步](http://news.secr.ncku.edu.tw/files/14-1054-173258,r81-1.php)
- [分組報告](https://hackmd.io/s/rk7xxIGkf)
- CS:APP Page 726 : 為何以下程式碼不能輸出 `Hello, world!` 呢?
```C
void *thread(void *vargp);
int main() {
pthread_t tid;
pthread_create(&tid, NULL, thread, NULL);
exit(0);
}
void *thread(void *vargp) {
sleep(1);
printf("Hello, world!\n");
return NULL;
}
```
* 第 16 週 (Jan 5):
- Virtual Memory: [Making Virtual Memory Fast](https://www.youtube.com/watch?v=uyrSn3qbZ8U), [TLB example](https://www.youtube.com/watch?v=95QpHJX55bM)
- [Kernel-memory-leaking Intel processor design flaw forces Linux, Windows redesign](https://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/)
* [Reading privileged memory with a side-channel](https://googleprojectzero.blogspot.tw/2018/01/reading-privileged-memory-with-side.html), Project Zero, Google Inc.
* [KASLR is Dead: Long Live KASLR](https://gruss.cc/files/kaiser.pdf), TU Graz
* [Vulnerability of Speculative Processors to Cache Timing Side-Channel Mechanism](https://developer.arm.com/support/security-update), Arm
- Twitter 上的討論
* [Reactions to Meltdown and Spectre exploits](https://twitter.com/CommitStrip/status/948985234837639169)
* ["Exploiting Speculative Execution via Javascript" is possibly one of the most terrifying lines of text I've ever seen, especially since this implies DUMPING KERNEL MEMORY from JAVASCRIPT.](https://twitter.com/blackhole0173/status/948687448053182464)
* [P5 microarchitecture. That means ORIGINAL PENTIUM, not PENTIUM PRO, which is P6. Pentium II and later are all P6 CPUs, and are vulnerable.](https://twitter.com/Foone/status/948634015090728960)
* [Using #Meltdown to steal passwords in real time](https://twitter.com/misc0110/status/948706387491786752)
* [not an Intel problem but an entire chipmaker design problem](https://twitter.com/nicoleperlroth/status/948684376249962496)
* 第 17 週 (Jan 12):
* [Meltdown 的攻擊方式](https://blog.gslin.org/archives/2018/01/07/8030/), [Meltdown 與 Spectre 都有用到的 FLUSH+RELOAD](https://blog.gslin.org/archives/2018/01/05/8028/)
* [Why Raspberry Pi isn't Vulnerable to Spectre or Meldown](https://www.raspberrypi.org/blog/why-raspberry-pi-isnt-vulnerable-to-spectre-or-meltdown/)
* 延伸閱讀:
- [The Last MileAn Empirical Study of Timing Channels on seL4](http://research.davidcock.fastmail.fm/papers/Cock_GMH_14.pdf)
- Speculative execution considered harmful in 1995: "Prefetching may fetch otherwise inaccesible instructions in Virtual 8086 mode.": [source](https://pdfs.semanticscholar.org/2209/42809262c17b6631c0f6536c91aaf7756857.pdf)
```C
#include <stdint.h>
#define MAGIC1 0x100
#define MAGIC2 "\0\xff"
#define IS_XXX (*(uint16_t *) MAGIC2 < MAGIC1)
```
- Quiz: [Bubble sort in ARM assembly](https://github.com/jserv/bubble-sort-arm)
作業系統設計與實作 (Spring 2017)
------------------------------------------------------
* 第 1 週 (Feb 21): 誠實面對自己:不是這門課程很操,是你過去欺騙了自己 ([第 1 週課程錄影](https://www.youtube.com/watch?v=XXiPPUzld84))
- [課程簡介和注意須知](https://docs.google.com/presentation/d/1eztX6zH26fTaGS5_c4nydp1rE-7UNzhzkx4EPn26B9c/edit#slide=id.p)
- [21 世紀的系統軟體](https://hackmd.io/s/BkeL-hLtg): 「需求」層次: 正確 → 安全 → 可讀 → 優雅 → 利他; Benchmark / Profiling; 運算模式的巨變; Deep Learning 背後的資訊建設: GPU; 軟體品質和安全議題
- [重新理解數值](https://hackmd.io/s/Hy-pTh8Fl): integer overflow; 邏輯和算術的差異; 運用 bit-wise operator; Count Leading Zero
- [Programming Small](https://hackmd.io/s/HkO2ZpIYe)
- [2017 年春季作業說明](https://hackmd.io/s/Bk-1zqIte)
- [課程表單](https://goo.gl/forms/jOIG9QDK3QtUE7Xh2) / 推薦閱讀: [因為自動飲料機而延畢的那一年](http://opass.logdown.com/posts/1273243-the-story-of-auto-beverage-machine-1)
- [期初測驗](https://drive.google.com/file/d/0B2k5UNgAENkrSlBsOUJIQTNqQ0k/view?usp=sharing)
- [作業](https://hackmd.io/s/Hy