# OS Structure 使用者目標:簡單使用、學習、安全、可靠 系統目標:簡單設計、維護、有效率 --- ## Simple OS Architecture - 只有一兩層code,互相interact - 缺點:難去維護,不安全,難擴充 --- ## Layered OS Architecture - 較低層會獨立於高層,隱藏其結構 - 只能access比自己低層提供的服務 - 優點:好維護 - 缺點:沒效率(在切換一個layer的時候,要call api)、難去定義層 --- ## Microkernel OS - kernal精簡化,processes module化,挪到user space - 客戶端與各式服務以==message passing==通訊 - 優點:容易擴展(加到user space)、容易porting(移植到其他硬體平台) - 缺點:系統功能增加,效能降低、processes溝通,需要interrupt,比較慢 --- ## Modular OS Architecture (現多採用) - kernel有核心元件,boot/run time==動態==啟動額外服務 - 核心內模組可以互相呼叫透過interface - 不分類,module化,還是放在monitor mode - ![](https://i.imgur.com/jFSInoF.png) --- ## Virtual Machine - layered approach - 視原本的==硬體與作業系統==為硬體 - virtual user-mode和virtual kernel-mode皆運行在真實使用者模式,因此需模擬在真實機器上的模式轉換 - 虛擬機器運行在真實使用者模式;==虛擬機器軟體運行在核心模式== - ![](https://i.imgur.com/mYRdapB.png) ### 用處 - 不怕crash,頂多vm掰掰;虛擬機彼此間獨立 - legacy software,有些軟體只能在特定環境下執行 - 把vm當作honey pot,讓外界攻擊...,由原本的去觀察 - 雲端計算 ### Full Virtualization V.S. Para-virtualization - 原本的叫host,裝上去的叫guess - Full Virtualization:==沒有做修改==就裝進去,作為一應用程式運行在user mode - Para-virtualization(Within a container (zone)):==有做修改,加一些module==才裝得進去 --- ## JVM Compiled Java programs are platform-neutral bytecodes executed by a Java Virtual Machine(JVM)