---
# System prepended metadata

title: Program Your Very Own Operating Systems - Prepare
tags: [Advantage Computer Science]

---

---
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，把深度學習加速器放進低功率的處理機裡面，讓大家能做出更智慧的物聯網應用，但是你知道物聯網應用有哪些與效能相關的因素嗎？
    *  資安



