---
# System prepended metadata

title: 'CH 10 : 輸入輸出系統'

---

Chapter 10：輸入輸出系統
===
:::info
這是讀書筆記

![679544](https://hackmd.io/_uploads/HJB-ZFKV-l.jpg =30%x)

作者：鄭鋼
出版社：佳魁資訊股份有限公司
出版日期：2017/05/31
:::
>[time=2025-07-21]
---

# 同步機制簡介

* critical section
* mutex
* race condition
* 單行指令具有執行的最小性。
* semaphore

# 實作 lock

## Source Code

https://github.com/yifengyou/os-elephant/tree/master/code/c10/b

## Result

![截圖 2025-07-19 晚上8.39.23](https://hackmd.io/_uploads/rkbQfGKUxe.png)

# 從鍵盤取得輸入

## Source Code

https://github.com/yifengyou/os-elephant/tree/master/code/c10/c_3

## Result

![截圖 2025-07-20 晚上8.10.25](https://hackmd.io/_uploads/SkA1pLqIle.png)

# 撰寫鍵盤驅動

## Source Code

https://github.com/yifengyou/os-elephant/tree/master/code/c10/d

## Result

>[!Warning] Mac 切換大小寫：shift+caps lock，預設 caps lock 是切換輸入法。

![截圖 2025-07-21 凌晨1.06.27](https://hackmd.io/_uploads/ByHEGsqUll.png)

# 環狀輸入緩衝區 : io queue

## Source Code

https://github.com/yifengyou/os-elephant/tree/master/code/c10/e
https://github.com/yifengyou/os-elephant/tree/master/code/c10/e_PandC

## Result

![截圖 2025-07-21 下午2.25.33](https://hackmd.io/_uploads/ryk26LjIge.png)

