--- 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 * ![](https://i.imgur.com/vbmJ2cS.png) * 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,把深度學習加速器放進低功率的處理機裡面,讓大家能做出更智慧的物聯網應用,但是你知道物聯網應用有哪些與效能相關的因素嗎? * 資安