Apr 19, 2016 課程紀錄

[2016q1 Week #9] [編輯共筆內容]

為什麼我們拖到第 9 週才開始介紹作業系統概念?

解剖成大資訊系

異質多核心運算

[ source ]

數值的思維

計算機結構的改變

source: 洪士灝教授 

Programming Small

實驗和統計的重要

「Process 和 Thread 有什麼差異?」

大部份的學生很快就可以「背誦」作業系統課程給予的「心法」,回答一長串,可是,其中多少人「看過」Process 和 Thread 呢?多少人知道這兩者怎麼實做出來?又,為何當初電腦科學家和工程師會提出這兩個概念呢?

書本說 thread 建立比 process 快,但你知道快多少?是不是每次都會快?然後這兩者的 context switch 成本為何?又,在 SMP 中,是否會得到一致的行為呢?

之前選修課程的學生透過一系列的實驗,藉由統計來「看到」process 與 thread。物理學家如何「看到」微觀的世界呢?當然不是透過顯微鏡,因為整個尺度已經太小了。統計物理學 (statistical physics) 指的是根據物質微觀夠以及微觀粒子相互作用的認知,藉由統計的方法,對大量粒子組成的物理特性和巨觀規律,做出微觀解釋的理論物理分支。今天我們要「看到」context switch, interrupt latency, jitter, ... 無一不透過統計學!

Concurrency vs. Parallelism

Task: Let’s burn a pile of obsolete language manuals! One at a time!

Concurrency: There are many concurrently decompositions of the task! One example:

[ Interruptability ]

Parallelism: The previous configuration occurs in parallel if there are at least 2 gophers working at the same time or not.

[ Independentability ]

換個觀點來理解 [ source ]

Process vs. Thread vs. Coroutines

一圖勝千語:

將函式呼叫從原本的面貌: [ source ]

轉換成以下:

C 程式實做 coroutines 的手法相當多,像是:

以 Linux 為分析對象

[ Thread & Synchronization ]

[ Process Management ]

對照去年選修課程學生的 ARM-Linux 技術報告

ARM + Multitasking

[ Build A Minimal OS Kernel fork ARM ]

[ STM32 程式開發:以 GNU Toolchain 為例 ]

[ Build minimal ARM Kernel from Scratch ]

Code Review

延伸閱讀