跳至主要内容

45 篇文件帶有標籤「Operating System」

檢視所有標籤

Client-Server 系統的通訊機制 (Communication in Client-Server Systems)

介紹 Client-Server 架構下的兩種高層通訊機制:Socket(以 IP + Port 定址跨機器通訊端點)與 RPC(讓遠端程序呼叫在語意上等同本地呼叫,涵蓋 Stub、Parameter Marshaling、At-Most-Once/Exactly-Once 語意、Port Binding),以及 Android Binder Framework 如何將 RPC 應用於同裝置的 IPC。

CPU 排程基本概念 (Basic Concepts)

介紹 CPU 排程的根本動機、CPU-I/O Burst Cycle 的運作規律、CPU Scheduler 的職責、搶占式與非搶占式排程的差異,以及 Dispatcher 的角色與 Dispatch Latency。

CPU 排程演算法 (Scheduling Algorithms)

詳解六種 CPU 排程演算法:FCFS、SJF(含指數平均預測與 SRTF)、Round-Robin、Priority Scheduling(含 Starvation 與 Aging)、Multilevel Queue、Multilevel Feedback Queue,並附 Gantt Chart 範例與各演算法的優缺點分析。

CPU 排程評估標準 (Scheduling Criteria)

介紹評估 CPU 排程演算法的五大標準:CPU 利用率、產能、回覆時間、等待時間、回應時間,以及它們的最佳化方向與彼此之間的取捨關係。

IPC 的具體實作 (Examples of IPC Systems)

以 POSIX 共享記憶體、Mach Message Passing、Windows ALPC、Pipes 四個具體 IPC 系統為例,說明各實作的 API 設計、通訊建立流程、效能考量與適用場景。

Liveness 與同步化工具的評估 (Liveness and Evaluation)

介紹同步化工具的活性問題(Liveness),涵蓋死結(Deadlock)的成因與 Resource Allocation Graph、優先權反轉(Priority Inversion)與優先繼承協定(Priority-Inheritance Protocol)的 Mars Pathfinder 實例,以及各類同步化工具在不同競爭程度下的效能評估與選用指引。

Monitors(監視器)

介紹 Monitor 的設計動機(Semaphore 的易錯性)、Monitor 的語法結構與互斥保證、Condition Variable 的 wait/signal 語義與 Signal-and-Wait 方案、用 Semaphore 實作 Monitor 的完整機制,以及 conditional-wait 與 priority number 的行程喚醒排序。

Mutex Locks 與 Semaphores

介紹 Mutex Lock 的結構與 Spinlock 特性、Semaphore 的兩種使用情境(互斥存取與執行順序控制)與兩種實作方式(忙碌等待 vs. 阻塞等待),涵蓋負值語義、原子性保證,以及 FIFO 排隊對 Starvation 的影響。

作業系統的設計與實作 (OS Design and Implementation)

介紹設計作業系統的三大核心議題:設計目標(使用者目標與系統目標的分類與模糊性)、機制與策略分離原則(Mechanism vs. Policy,為何分離是靈活性的關鍵)、以及實作語言的演進(Assembly → C/C++,高階語言的優勢與效能的真正來源)。

作業系統範例 (Operating-System Examples)

以 Linux CFS、Windows Dispatcher 與 Solaris 六大排程類別為例,說明排程理論在真實作業系統中的落實方式:vruntime 機制與紅黑樹、Windows 動態優先層級調整、Solaris Dispatch Table 的欄位含義與全域優先層級映射。

作業系統結構設計 (OS Structure)

介紹 OS 結構設計的五種主要方法:單體結構、分層方法、微核心、可載入核心模組,以及混合式系統(Darwin、Android),並以 UNIX、Linux、macOS、iOS、Android 為實例說明各方法的優缺點與取捨。

作業系統除錯 (Operating-System Debugging)

介紹作業系統除錯的核心方法:失敗分析(core dump 與 crash dump 的差異與原因)、以計數器工具(ps、vmstat、/proc)與追蹤工具(strace、perf)進行效能監控,以及 BCC/eBPF 動態核心追蹤的機制、工具鏈與應用。

即時 CPU 排程 (Real-Time CPU Scheduling)

深入解析即時作業系統的 CPU 排程設計,涵蓋軟性與硬性即時系統的差異、Event Latency/Interrupt Latency/Dispatch Latency 的組成,以及三種核心演算法:Rate-Monotonic(靜態優先權,以週期倒數為基準)、Earliest-Deadline-First(動態優先權,以最早截止時間優先)、Proportional Share(按比例分配處理器時間),以及 POSIX 即時排程 API。

同步的經典問題 (Classic Problems of Synchronization)

介紹作業系統同步化的三大經典問題:有界緩衝區問題(Bounded-Buffer)、讀者-寫者問題(Readers-Writers)、哲學家用餐問題(Dining-Philosophers),並以 Semaphore 與 Monitor 為工具詳解各問題的成因與解法。

執行緒函式庫:Pthreads、Windows、Java (Thread Libraries)

深入介紹三大執行緒函式庫(POSIX Pthreads、Windows Thread API、Java Thread API)的設計原理與實作方式,涵蓋非同步/同步執行緒策略、建立與等待的完整生命週期、Java Executor Framework 的 Callable/Future 機制,以及 JVM 如何將 Java 執行緒對應到底層 OS 執行緒。

執行緒排程 (Thread Scheduling)

深入說明使用者層級執行緒與核心層級執行緒的排程差異、PCS 與 SCS 兩種競爭範圍的機制與原因,以及 POSIX Pthread 排程 API 的實際用法。

多執行緒程式設計的議題 (Threading Issues)

深入探討多執行緒程式設計中的五大核心議題:fork/exec 語意變化、UNIX 信號處理的傳遞策略、執行緒取消的兩種模式與 Pthreads/Java API、執行緒區域儲存 (TLS) 的設計動機,以及 Scheduler Activations 的 LWP 架構與 Upcall 機制。

多處理器排程 (Multi-Processor Scheduling)

深入說明多處理器系統的 CPU 排程問題,涵蓋對稱多處理(SMP)、記憶體停頓與多執行緒核心(CMT)、兩層排程架構、負載平衡的推拉遷移、處理器親和性(Soft/Hard Affinity)與 NUMA、以及異質多處理(HMP)與 ARM big.LITTLE。

排程演算法的評估 (Algorithm Evaluation)

介紹評估 CPU 排程演算法的四種方法:確定性建模、排隊模型、模擬、實作,以及各方法的優缺點、Little's Formula 與 Trace-Driven Simulation 的原理。

死結的特徵條件 (Deadlock Characterization)

介紹死結發生的四個必要條件(互斥、持有並等待、不可搶占、循環等待),以及用於形式化描述資源分配狀態的資源分配圖(Resource-Allocation Graph),並說明如何從圖的結構判斷系統是否處於死結狀態。

死結迴避 (Deadlock Avoidance)

深入解析死結迴避(Deadlock Avoidance)的核心概念:安全狀態(Safe State)的定義與安全序列、資源分配圖演算法(RAG Algorithm)的聲索邊(Claim Edge)機制,以及適用於多實例資源的銀行家演算法(Banker's Algorithm)包含安全性演算法與資源請求演算法的完整推導與實例。

硬體同步支援:記憶體屏障、原子指令與原子變數

介紹硬體層級的三種同步原語:記憶體屏障(Memory Barrier)、硬體原子指令(test_and_set、compare_and_swap),以及原子變數(Atomic Variable)。說明各原語解決的問題、運作機制、如何用於實作臨界區互斥,以及其固有的限制。

系統呼叫 (System Calls)

深入介紹系統呼叫的本質、API 抽象層的設計動機、系統呼叫介面的運作機制、三種參數傳遞方式,以及六大類系統呼叫(行程控制、檔案管理、裝置管理、資訊維護、通訊、保護)的完整解說。

系統程式、連結器與載入器 (System Programs, Linkers, and Loaders)

介紹 OS 附帶的七大類系統程式(系統工具)、從原始碼到執行的完整 Compile-Link-Load 流程(含 Relocatable Object、靜態連結與動態連結的差異、ELF/PE/Mach-O 格式),以及跨平台應用程式面臨的根本障礙與三種解決策略(直譯語言、虛擬機器/RTE、移植),最後說明 ABI 的概念。

背景、臨界區問題與 Peterson's Solution

從生產者-消費者問題出發,介紹競爭條件(Race Condition)的成因,定義臨界區問題(Critical-Section Problem)及其三大正確性需求,並詳細分析軟體解法 Peterson's Solution 的演算法設計、正確性證明,以及在現代架構下因指令重排(Instruction Reordering)而失效的根本原因。

行程的操作 (Operations on Processes)

介紹行程的建立與終止機制,包含 PID、行程樹、fork()/exec() 的運作原理、Zombie 與 Orphan 行程、Cascading Termination,以及 Android 行程重要性層次。

行程間通訊 (Interprocess Communication)

介紹行程為何需要合作、IPC 的兩種基本模型(共享記憶體與訊息傳遞)的差異與適用場景,以及以 Producer-Consumer Problem 為核心說明共享記憶體 IPC 的具體實作機制。

訊息傳遞 IPC (IPC in Message-Passing Systems)

介紹訊息傳遞 IPC 的三個核心設計維度:命名(直接 vs 間接通訊、信箱機制)、同步(阻塞 vs 非阻塞、Rendezvous)、緩衝(零容量、有界、無界佇列),以及各種設計選擇如何影響行程間通訊的行為與程式設計模式。

資源管理 (Resource Management)

介紹作業系統作為資源管理者的六大職責:Process 管理、記憶體管理、檔案系統管理、大容量儲存管理、快取管理,以及 I/O 系統管理。

進程排程 (Process Scheduling)

介紹排程佇列(ready queue、wait queue)的資料結構、CPU 排程器的職責與執行頻率、Swapping 的概念,以及上下文切換(Context Switch)的完整機制與效能代價。

進程概念 (Process Concept)

介紹進程的定義與記憶體佈局(text、data、heap、stack)、五種進程狀態與轉換關係、進程控制區塊(PCB)的欄位,以及執行緒的基本概念。

運算環境 (Computing Environments)

介紹作業系統在六種現代運算環境中的角色:傳統運算、行動運算、主從式運算、點對點運算、雲端運算,以及即時嵌入式系統。