原以為我對硬體會很有興趣,而且摸得到得硬體應該不難,結果實際上寫筆記卡超久。難怪很少聽到文組轉硬體工程師😁 以下是 ChatGPT 重新幫我整理,針對作業系統和 CPU 發表文章的架構:
標題可以直接點,連結到我的細節文章q(≧▽≦q)
目標:理解操作系統是什麼,如何與硬體和使用者互動
- OS 觀念:什麼是操作系統?
- 用手機或電腦系統當例子,解釋 OS 就像是「電腦的大總管」,負責管理硬體、軟體和應用程式的協作。
- Kernel & Shell(核心與介面)
- 用「工廠」的比喻來解釋:Kernel 是工廠裡的主管,直接控制硬體。Shell 是工廠的接單業務,負責跟客戶溝通,傳遞工作指令。
- Interrupt(中斷)與 System Call(系統呼叫) & System Bus
- 中斷(Interrupt):就像遊戲通知彈出視窗,強行打斷你正在做的事,迫使你立刻處理更重要的事情。
- System Call:程式向 OS 請求幫忙,比如開啟檔案或網路連線。
- System Bus:像電腦裡的「資料高速公路」,用來傳輸指令和資料。
- Processor, CPU, Core(處理器與核心)
- 用多核心手機比喻:Processor(處理器):整個大腦,內含多個 Core(核心)。CPU(中央處理單元):特指運算核心的執行部分,負責處理指令。
目標:了解 CPU 如何處理指令,記憶體如何儲存資料
- Introduction to Memory (Big Picture)
- 記憶體的角色:用臨時辦公桌比喻記憶體(RAM),用儲藏室比喻硬碟。
- Memory(RAM, SRAM, DRAM, ROM, Storage)
- RAM 像辦公桌,SRAM 像 CPU 的快取,ROM 像手機的系統資料。
- Fetch-Execute Cycle of CPU(取指 - 解碼 - 執行)
- 用遊戲技能釋放比喻:Fetch(取指):CPU 從記憶體中拿指令。Decode(解碼):分析要做什麼。Execute(執行):進行運算或執行指令。
目標:了解作業系統如何管理程式
- Process & Thread & Process Control Block(PCB)
- 遊戲副本比喻:Process(行程):每個遊戲房間就是一個程式。Thread(執行緒):遊戲中的每個角色就是一個執行緒。PCB(行程控制區塊):遊戲房間裡的狀態紀錄,儲存誰進來過、血量等資訊。
- Context Switch(上下文切換)
- 被打電話打斷後繼續寫作業的比喻,解釋 CPU 在程式間切換的過程。
- Process State(行程狀態)
- 遊戲排隊比喻:角色從「建立、準備、等待、執行、終止」的過程,強調 Ready 不會直接到 Running。
目標:理解程式的排程策略,如何讓多個應用程式同時執行
- CPU Scheduling Criteria(CPU 調度準則)
- CPU Scheduling(Preemptive & Non-Preemptive)
- 用比賽排程和搶座位比喻,解釋八種常見的 CPU 排程策略。
目標:處理多個應用程式的競爭與協作
- Interprocess Communication(IPC, 行程間通訊)
- Race Condition & Critical Section & Dekker's Algorithm
- 同時有大量的人按讚,如何讓來自不同地方的程式依序更新資料?
- Deadlock 與形成的四個條件
- 兩輛車在窄巷相遇的場景,說明「死結」的形成與解決方案。
目標:記憶體分配與虛擬化應用
- Logical Memory & Physical Address(邏輯與實體記憶體)
- Segmentation and Paging(分段與頁面管理)
- Virtual Memory, Page In/Out, Disk Thrashing(虛擬記憶體管理)
- Virtual Memory & Containers(虛擬記憶體與容器技術)
- 雲端遊戲伺服器比喻,說明虛擬化技術如何分配資源給不同的應用程式。
總結:學習順序的邏輯與文章連結。
- 操作系統基礎(OS 入門)
- 硬體運作基礎(CPU 與記憶體)
- 程式執行流程(Process 與執行緒)
- CPU 資源管理(排程與調度)
- 多程式管理(Process 間的通信與死結)
- 記憶體管理與虛擬化(進階技術)