第 9 章、虛擬機器 作者:陳鍾誠 旗標出版社.

Slides:



Advertisements
Similar presentations
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
Advertisements

報酬遞增與新的商業世界.
CH02 電腦軟體 介紹電腦軟體之概念 認識系統軟體、程式語言與軟體開發 認識作業系統的主要功能 認識作業系統的演進歷史 認識常用之應用軟體
第1章 Java语言概述.
第四章 電腦軟體 課前指引 實體的電腦裝置,我們稱之為「硬體」(Hardware),至於軟體則是個抽象的概念,軟體是經由人類以各種不同的程式語言撰寫而成,以達到控制硬體、進行各種工作的抽象化(例如文書處理)等動作。有些讀者經常迫不及買了一台新電腦,就以為可以開始使用!事實不然,一部配備齊全的電腦,如果沒有合適的軟體來控制與搭配,絕對也是英雄無用武之地。一般來說,我們將軟體分「系統軟體」(System.
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
8.1 系統軟件、應用軟件和驅動程序 電腦軟件 是使電腦處理指定工作的一連串指令 大致可分大為三類: 驅動程序 系統軟件 應用軟件.
2012/11/12 Virtual Machine.
作業系統的結構 日期 : 2018/9/17.
主題五 CPU Learning Lab.
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
VMware Player 安裝說明 2018/11/14.
Java簡介.
物件導向程式設計 CH1, CH2.
Chapter 1 Introduction.
MIT App Inventor簡介及 「Hello World」程式初體驗 靜宜大學資管系 楊子青
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
第1章 認識Arduino.
手機作業系統介紹.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
虛擬化基本概念.
Android 课程讲义 智能手机开发
2-1 接腳說明 2018/11/30 第2章 系統分析.
學習目標 列出Von Neumann machine的元件以及它們的功能。
計算機結構 – 概論 陳鍾誠 於金門大學.
R教學 安裝RStudio 羅琪老師.
Native Development Kit
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
第2章 Linux概述 2.1 操作系统的功能和分类 2.2 Linux操作系统概述 2.3 Linux的应用现状与前景
Lesson1 Java的基本概念 Java語言的簡介 Java學習地圖 Java程式開發的基本概念(一) 軟體下載、安裝與基本操作
安裝JDK 安裝Eclipse Eclipse 中文化
第 12 章、系統軟體實作 作者:陳鍾誠 旗標出版社.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
作業系統 (Operating System)
Unit 04 虛擬機器建構實驗 M. S. Jian Department of Computer Science and Information Engineering National Formosa University Yunlin, Taiwan, ROC.
雲端運算的基石(2) 虛擬化技術實作(XP篇─上)
雲端計算.
第 2 章、電腦的硬體結構 作者:陳鍾誠.
電腦攻擊與防禦 使用電腦教室VMware軟體說明.
二:JAVA开发环境的安装和配置.
虛擬機器 下載QEMU Windows版 (0.9.1) 下載Kqemu Windows版 安裝QEMU 安裝Kqumu
VS.NET 2003 IDE.
App Inventor 2初體驗 靜宜大學資管系 楊子青
使用 Altera Quartus II 進行電路設計與模擬
Linux作業系統 電腦教室Linux使用說明.
第1章 Java语言概述 学习目标 本章要点 上机练习 习 题.
第 19 章 XML記憶體執行模式.
雲端虛擬化 Cloud Virtualization
雲端運算的基石(1) 虛擬化技術簡介
複製硬碟映像檔 & 在 VirtualBox 加入硬碟檔
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
靜宜大學專用 PowerPoint 檔案 數位教材
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
雲端運算的基石(1) 虛擬化技術簡介
2019/4/29 计算机组成原理 辅导教师:陆明强.
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
第1章、系統軟體 作者:陳鍾誠 旗標出版社.
MultiThread Introduction
資料擷取與監控應用實務.
安裝JDK 配置windows win7 環境變數
第 4 章、組譯器 作者:陳鍾誠 旗標出版社.
開發Java程式語言的工具 JDK.
研究機構新聞稿揭露2012Q3智慧型手機出貨佔量比
Chapter 4 Multi-Threads (多執行緒).
Unix指令4-文字編輯與程式撰寫.
Memory Management 日期 : 2019/11/21.
Presentation transcript:

第 9 章、虛擬機器 作者:陳鍾誠 旗標出版社

第 9 章、虛擬機器 9.1 簡介 9.2 中間碼 9.3 CPU0 的虛擬機 9.4 實務案例 (一):Java 的 JVM 虛擬機 9.1 簡介 9.2 中間碼 9.3 CPU0 的虛擬機 9.4 實務案例 (一):Java 的 JVM 虛擬機 9.5 實務案例 (二):微軟的 Virtual PC 虛擬機

9.1 簡介 狹義的虛擬機 (Virtual Machine) 廣義的虛擬機 虛擬機:模擬處理器指令集的軟體 模擬器:模擬電腦行為的軟體 9.1 簡介 狹義的虛擬機 (Virtual Machine) 虛擬機:模擬處理器指令集的軟體 模擬器:模擬電腦行為的軟體 廣義的虛擬機 然而, 有些軟體既會模擬指令集, 又會模擬電腦的行 為, 像是 VMWare、Virtual PC、Virtual Box 這樣的 軟體, 也被我們視為是一種虛擬機器。 在大部分的情況下, 在我們不需要去區分虛擬機與模 擬器的時候, 我們會使用虛擬機器一詞統稱所有的模 擬程式, 而不去使用模擬器一詞。

圖 9.1原生與寄生式的虛擬機 作業系統層 行程 硬體層 虛擬機器層 虛擬機 1 虛擬機 2 作業系統 (a) 無虛擬機時 (b) 原生式虛擬機 (c) 寄生式虛擬機

虛擬機器的範例 原生式虛擬機 (Native VM) 寄生式虛擬機 (Hosted VM) IBM 的 CP-40 IBM 的 System/370 寄生式虛擬機 (Hosted VM) VMWare、Virtual PC、Virtual Box、Wine、Bochs、Qemu 程序虛擬機 (Process Virtual Machine) 又稱為應用層虛擬機 (Application Virtual Machine) 一種虛擬碼的解譯器 Java 的 Java Virtual Machine (JVM) 微軟 .NET 所使用的 CLR 虛擬機器

9.2 中間碼 功能 範例 如果我們設計出與機器架構無關的中間碼 然後利用虛擬機執行該中間碼 (p-code) 此種中間碼將具有跨平台能力 9.2 中間碼 功能 如果我們設計出與機器架構無關的中間碼 然後利用虛擬機執行該中間碼 (p-code) 此種中間碼將具有跨平台能力 範例 JAVA 的 bytecode :可在 JVM 虛擬機中執行 微軟的 MSIL:可在 .NET 平台中執行

三種虛擬機架構 記憶體機 (Memory Machine) 暫存器機 (Register Machine) 可以直接對記憶體變數進行運算 暫存器機 (Register Machine) 必須將變數載入暫存器中,才能進行運算 堆疊機 (Stack Machine) 取出堆疊上層元素進行運算 結果存回堆疊之中

範例 9.1 三種虛擬機的組合語言

堆疊機 所有參數都存入堆疊當中, 然後才進行運算 CPU 記憶體 堆疊 ALU (運算單元) Control Unit (控制單元) 匯流排 堆疊 CPU 圖 9.2堆疊機 (Stack Machine) 的架構圖

範例 9.2 堆疊機的組合語言

圖 9.3 堆疊機執行過程 ALU (加法) Control Unit (控制單元) 堆疊 6 2 3 CPU (減法) 5 (運算單元) 圖 9.3 堆疊機執行過程 ALU (加法) Control Unit (控制單元) 堆疊 6 2 3 CPU (減法) 5 (運算單元) 1 (a) ADD 指令執行時 (b) SUB 指令執行時 (c) SUB 指令執行後 圖 9.3<範例 9.2> 的堆疊機執行過程

9.3 CPU0 的虛擬機 功能 以軟體的方式模擬 CPU0 的執行過程 實作 解譯 CPU0 的機器指令 根據指令的意義,模擬對應的動作。

圖 9.4 CPU0 的虛擬機之演算法 (資料結構) 資料結構 暫存器 IR, R[0~15]

圖 9.4 CPU0 的虛擬機之演算法 (指令提取) 指令擷取階段,將指令從記憶體取到 IR

圖 9.4 CPU0 的虛擬機之演算法 (指令解碼)

圖 9.4 CPU0 的虛擬機之演算法 (載入儲存指令)

圖 9.4 CPU0 的虛擬機之演算法 (運算指令)

圖 9.4 CPU0 的虛擬機之演算法 (跳躍指令)

圖 9.4 CPU0 的虛擬機之演算法 (堆疊指令)

9.4 實務案例 (一):Java 的 JVM 虛擬機 JVM (Java Virtual Machine) JVM 是 Java 的虛擬機 開放原始碼界還有 Kaffe、Jikes、Mono, Apache Harmony, Google Dalvik, …

範例 9.3 Java 的程式與編譯執行過程

圖 9.5 Java 程式的編譯與執行方式 Hello.java 編譯 javac Hello.java Hello.class 虛擬機器 JVM java Hello

圖 9.6 利用虛擬機讓 Bytecode 跨平台執行 Bytecodes 虛擬機 Bytecode Interpreter Just in Time Compiler 執行系統 類別載入器 作業系統 (Windows) 硬體 (Intel IA32 處理器) 作業系統 (Linux) 硬體 (ARM9 處理器)

Java 當中動態載入技術的範例 範例 9.4 動態的載入一個由變數 name 所指定的 byte code 檔案, 然後利用該檔案建立出 對應的物件。 這樣的技術讓 Java 程式可以在詢問使用者之後, 再決定要載入哪一個類別 不需要在一開始時就載入所有的函式庫, 達成動態連結與動態載入的效果。

Java 語言程式HelloWorld.java 圖 9.7 Java 與 C 程式的執行模式對照 目的檔 CPU gcc 編譯器 C語言程式HelloWorld.c as 組譯器 組合語言程式 HelloWorld.s bytecode Java 虛擬機 (JVM) javac 編譯器 Java 語言程式HelloWorld.java jasmin 組譯器 HelloWorld.js (a) C 程式的執行方式 (b) Java 程式的執行方式

利用 javap 指令將 bytecode 反組譯成組合語言

9.5 實務案例 (二):微軟的 Virtual PC 虛擬機 X86 上常用的虛擬機 VMWare Virtual PC Virtual Box Bochs QEMU 本節使用 Virtual PC 作為範例

圖 9.8在 Microsoft Windows 當中以 Virtual PC 軟體執行 Red Hat 9.0 的情況

圖 9.9 Virtual PC 的啟動視窗

圖 9.10 Virtual PC 虛擬機的存檔畫面

圖 9.11 選擇 A new virtual hard disk 以建立新的虛擬硬碟。

圖 9.12 請按下 Start 鍵啟動 DOS 虛擬機

圖 9.13 Virtual PC 的虛擬機之啟動畫面

圖 9.14 在 Virtual PC 中指定 DOS 的軟碟開機映像檔

圖 9.15 在 Virtual PC 2007 中的 DOS 虛擬機開機畫面

結語 虛擬機器 虛擬機的類型 CPU0 虛擬機的實作 Java 的虛擬機 Virtual PC 虛擬機器 虛擬機:模擬處理器指令集的軟體 模擬器:模擬電腦行為的軟體 虛擬機的類型 原生式 v.s. 寄生式 1. 記憶體機 2. 暫存器機 3. 堆疊機 CPU0 虛擬機的實作 Java 的虛擬機 Virtual PC 虛擬機器

習題 9.1 請說明何謂虛擬機器? 9.2 請說明何謂記憶體機? 9.3 請說明何謂堆疊機? 9.4 請說明何謂暫存器機? 9.1 請說明何謂虛擬機器? 9.2 請說明何謂記憶體機? 9.3 請說明何謂堆疊機? 9.4 請說明何謂暫存器機? 9.5 請閱讀本書的第 12 章, 並取得 ch12/CPU0.c 這個程式, 看看這個虛 擬機是如何設計的。 9.6 請寫出一個 Java 程式, 並且使用 javac 編譯該程式, 然後使用 java 指 令執行該程式。 9.7 接續上一題, 請使用 javap 將上一題產生的 bytecode 反組譯, 並 分析反組譯後的程式碼? 9.8 請安裝 Virtual PC, 然後在其中安裝 DOS 作業系統。

未包含於書中的圖片

(VM Ware, Virtual PC, Virtual Box) 載入器 執行 虛擬機器 (VM Ware, Virtual PC, Virtual Box) 作業系統 (Linux, Windows, OS X) 實體機器 (CPU + Memory + Bus + IO) 執行檔 (Java VM, .NET CLR) (Bytecode) 高階語言 (Java, C#) 編譯器 (a) 程序式虛擬機 (b) 系統式虛擬機

作業系統層 行程 硬體層 虛擬機器層 虛擬機 1 虛擬機 2 作業系統 (a) 無虛擬機時 (b) 原生式虛擬機 (c) 寄生式虛擬機

(VM Ware, Virtual PC, Virtual Box) 載入器 執行 虛擬機器 (VM Ware, Virtual PC, Virtual Box) 作業系統 (Linux, Windows, OS X) 實體機器 (CPU + Memory + Bus + IO) 執行檔

堆疊機的 adi 指令之執行過程示意圖 ALU (運算單元) Control Unit (控制單元) 堆疊 6 5 CPU 2 3 adi

Google 平台Android的模擬器環境

微軟 Visual Studio 中的智慧型手機模擬器