---
tags: Operating System
---
Program Your Very Own Operating Systems - Prepare
===
# Direction
* [How To Program Your Very Own Operating Systems (OS)](https://www.whoishostingthis.com/resources/os-development/)
* [OSDev.org: Introduction](https://wiki.osdev.org/Introduction)
* [OSDev.org:forums](https://forum.osdev.org/)
# Pre-required Knowledge
* [Required Knowledge](https://wiki.osdev.org/Required_Knowledge)
* Hardware:
* [邏輯設計(Logic Design)](http://ocw.ksu.edu.tw/course/view.php?id=6)
* [HTG Explains: How Does a CPU Actually Work?](https://www.howtogeek.com/367931/htg-explains-how-does-a-cpu-actually-work/)
* [The Fetch Execute Cycle](https://www.youtube.com/watch?v=xfJbpCJSpd8&feature=youtu.be)
* [See How a CPU Works](https://www.youtube.com/watch?v=cNN_tTXABUA&t=378s)
* [See How Computers Add Numbers In One Lesson](https://www.youtube.com/watch?v=VBDoT8o4q00)
* Computer Science
* CS:APP related resource:
* [CS:APP 學習指引緒論:Computer Systems: A Programmer’s Perspective](
https://hackmd.io/c/S1vGugaDQ/https%3A%2F%2Fhackmd.io%2Fs%2FSJ7V-qikG%23)
* [成大資工 Wiki-Linux核心設計](http://wiki.csie.ncku.edu.tw/linux/schedule)
* [Book: Computer Systems: A Programmer's Perspective](https://github.com/smellslikekeenspirit/an-askreddit-list-of-compsci-books/blob/master/Randal%20E.%20Bryant%2C%20David%20R.%20O%E2%80%99Hallaron%20-%20Computer%20Systems.%20A%20Programmer%E2%80%99s%20Perspective%20%5B3rd%20ed.%5D%20(2016%2C%20Pearson).pdf)
* [深入理解计算机系统(中文版).pdf](https://github.com/3masterplus/book/blob/master/%E3%80%901%E3%80%91%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F(%E4%B8%AD%E6%96%87%E7%89%88).pdf)
* Other Resource
* [GPU Parallel Program Development Using CUDA](https://www.crcpress.com/GPU-Parallel-Program-Development-Using-CUDA/Soyata/p/book/9781498750752)
* [[探索 5 分鐘] stack 與 heap 的底層概念](https://nwpie.blogspot.com/2017/05/5-stack-heap.html)
* Embedded Programming:
* [Embedded Controllers, Using C and Arduino / 2E](http://www.dissidents.com/resources/EmbeddedControllers.pdf)
* [Embedded Programming Introduction](https://www.iotforall.com/embedded-programming-iot/)
* Programming
* [Udacity: Software Development Process](https://www.udacity.com/course/software-development-process--ud805)
* Software Development
* 
* Assembly Language
# OS Development
* [Linux From Scratch](http://www.linuxfromscratch.org/lfs/read.html)
# [CS:APP](https://hackmd.io/@EricMLYang/rJRhF-Ddw)
# What is 系統架構師 need (from 洪士灝):
* Read:
* [架构大咖言传身教:从程序员到架构师](https://mp.weixin.qq.com/s/CqRruULCJQCa5cbxVk66uA?fbclid=IwAR2nYma5SRCjnJ2KxMu9L4TkN52BjyDhWSGarhJc6lutGB5e1TkvLSjYjpI)
* [什麼是架構師(Architect)以及要如何養成?](https://www.bnext.com.tw/article/53336/how-to-become-a-architect)
* **系統** 或 **處理機架構**:但不一定純碰硬體,常常要要修改軟體做系統整體的效能優化,設計處理機架構也不會碰電路設計的細節。
* EX:設計大樓(晶片),建築師(架構師)綜合考量(軟體特性、效能能耗限制、成本...等)後畫藍圖,搭配工程師(晶片設計師)去計算規劃工程細節。
* **計算機結構必備**:尤其**多核心平行計算**和 **GPU** 會是重點
* 最好要懂,會加分,不懂也不是大問題:
* 電路設計
* 作業系統:為了優化大型系統的效能,有不少與作業系統相關的工作。要知道一個程式在存取檔案、傳輸網路資料的時候都要使用作業系統,完全不懂作業系統,怎麼做好大數據分析和物聯網?
* 編譯器:現代編譯器技術的重點在於針對處理機架構優化的後端(backend),以及即時監控應用的特性做動態優化(just-in-time dynamic optimization ),都是我們關切的議題
* 平行程式設計
* 機器學習:傾向如何優化系統讓ML變強
* 物聯網:物流網的重點在於蒐集資訊、分析資訊、即時做出回應,都與系統有關。這陣子大廠紛紛推出智慧物聯網開發版,像是Edge TPU、Jetson Nano,把深度學習加速器放進低功率的處理機裡面,讓大家能做出更智慧的物聯網應用,但是你知道物聯網應用有哪些與效能相關的因素嗎?
* 資安