3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫...

41
3.1 第2第 第第第第 作作作作作作作 作作作作作作作作作 作作作作 (System Calls) 作作作作作作作 作作作作 (System Programs) 作作作作 作作作作 (Virtual Machines) 作作作作作作作 作作作作
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    288
  • download

    0

Transcript of 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫...

Page 1: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.1

第 2 章 系統結構

作業系統的服務 使用者作業系統介面 系統呼叫 (System Calls) 系統呼叫的類型 系統程式 (System Programs) 系統結構 虛擬機器 (Virtual Machines) 系統設計與製作 系統啟動

Page 2: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.2

作業系統服務項目 使用者介面 – 幾乎所有使用者有一個使用者介面 (UI)

Command-Line-Interpreter (CLI), Graphics User Interface (GUI), Batch

程式的執行 – 將一個程式載入並執行的系統功能 . I/O 指令 – 因為使用者不能直接執行輸出入指令 , 作業

系統必須提供執行輸出入的方法 . 檔案系統的操作 – 可以讀寫 , 產生及刪除檔案的程式功

能 . 通訊 – 不管是在行程間或者是網路相連的電腦及不同系

統間都可以交換資訊 . 經由共享記憶體或訊息傳遞的方式來製作 .

錯誤偵測 – 經由在 CPU﹑ 記憶體﹑ 硬體﹑ 輸出入設備或者是使用者程式中偵測錯誤以確保正確的運算環境 .

Page 3: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.3

額外的作業系統功能

額外功能的出現是為了確認有效的系統運作,並不只是幫助使用者 .資源配置 – 當有多個使用者或多個工作在相同時間執行時的配置資源 .

紀錄及統計 (Accounting )– 追蹤及紀錄哪些使用者使用多少資源,還有哪些種類的系統資源被使用,這是為了計費或者是為了使用上的累進統計資料 .

防護 (Protection) – 確定所有對於系統資源的存取都在掌控中 .

Page 4: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.4

使用者作業系統介面命令認知系統

(command-Interpreter System) 許多指令是下給作業系統來提出控制命令處

理 :行程的產生及管理輸出入處理 (I/O handling)次要儲存設備管理主記憶體管理檔案系統存取防護 網路

Page 5: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.5

使用者作業系統介面命令認知系統 (Cont.)

一個讀取及解譯控制命令的程式有不同的名稱 : command-line interpreter shell (in UNIX)

它的功能就是要獲取並執行接下來的指令 .

Page 6: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.6

使用者作業系統介面GUI

一個 GUl 允許提供以滑鼠為基礎的視窗和表單系統為介面。當移動滑鼠以便將滑鼠指標定位在螢幕的影像或圖像 (icons) , GUI 提供桌面(desktop) ,這些影像代表程式、檔案、子目錄和系統功能。根據滑員指標的位置,按下滑貝的按鍵,可以呼叫程式、選擇檔案或目錄 ( 即稱foIder) ,或拉下一個含有命令的表單。

Page 7: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.7

系統呼叫 (System Calls) 系統呼叫提供一個由作業系統服務的介面。這類呼叫一般以 C 或 C++ 寫成的常式,雖然低階工作 ( 例如,硬體必須直接存取的工作 ) 可能需要以組合語言指令來寫。

Page 8: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.8

系統呼叫

系統呼叫是使用者行程與作業系統間的介面 讓使用者行程可以使用週邊設備讓使用者行程得到較高的權限來處理工作

系統呼叫發生時 產生陷阱中斷進入系統模式 作業系統取得控制權 判斷使用者行程請求的是哪一種系統呼叫執行使用者行程所需要的服務

Page 9: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.9

當作是一個表格的參數傳遞

Page 10: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.10

系統呼叫的分類行程的控制 (process control) 正常結束,中止執行 (end, abort) 載入,執行 (load, execute) 建立行程,終止行程 (create process, terminate process) 獲取行程屬性,設定行程屬性 (get process attributes , set process

attributes) 等待時間 (wait for time) 等待事件,顯示事件 (wait event, signal event) 配置及釋放記憶體空間 (allocate and free memory)

檔案的管理 (File management) 建立檔案,刪除檔案 (create file, delete file) 開啟,關閉 (open,Close) 讀出,寫入,重定位置 (read, write, reposition) 獲取檔案屬性,設定檔案屬性 (get file attributes, set file attributes)

Page 11: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.11

系統呼叫的分類裝置的管理 (Device management) 要求裝置,釋回裝置 (request device, release device) 讀出,寫入,重定位置 (read, write, reposition) 獲取裝置屬性,設定裝置屬性 (get device attributes, set device attributes) 遇輯上地加入或移去裝置 (logically attach or detach devices)

資訊維護 (Information maintenance) 取得時間或日期,設定時間或日期 (get time or date, set time or date) 取得系統資料,設定系統資料 (get system data, set system data) 取得行程、檔案或裝置的屬性 (get process, file, or device attributes) 設定行程、檔案或裝置的屬性 (set process , file , or device attributes)

通信 (communication) 建立,刪除通信連接 (create, delete communication connection) 傳送,接收訊息 (send, receive messages) 傳輸狀況訊息 (transfer status information) 連接或分離遠程裝置 (attach or detach remote devices)

Page 12: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.12

MS-DOS Execution

At System Start-up Running a Program

Page 13: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.13

UNIX 執行多組程式

Page 14: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.14

行程間通訊

兩種常見的行程間通訊模式 訊息傳遞模式

訊息傳遞模式每次傳遞訊息都需要經過作業系統,因此比較沒有效率。

行程間就不需要考慮同步的問題。共享記憶體模式

存取速度會比訊息傳遞模式快。 必須視情況加入同步的機制。

Page 15: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.15

行程間通訊模式

Msg Passing Shared Memory

行程間通訊可以靠訊息傳遞或共享記憶體的方式來達成 .

Page 16: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.16

系統程式 系統程式提供一個程式發展及執行的便利環境,可以分成:檔案處理 (File mangement)狀態資訊 (Status information)檔案變更 (File modification)程式語言的支援程式的載入及執行通訊功能應用程式

使得多數使用者認為的作業系統應該是系統程式,而不是系統呼叫 .

Page 17: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.17

系統結構

維護與修改作業系統是一件龐大又複雜的工程,需要好好規劃。

常見的方法是 將作業系統模組化每個模組都要經過周詳的定義 形成一個有組織的系統結構

Page 18: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.18

MS-DOS 系統結構

MS-DOS – 被設計成在最小空間來達到最大的作業系統功能沒有分成模組 .縱使它有一些結構及它自己的一些介面和功能的分層負責 , 但彼此間並沒有完全分開 .

Page 19: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.19

MS-DOS 階層架構

Page 20: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.20

UNIX 系統結構

UNIX – 受限於硬體功能 , 原來的作業系統有限制的結構 . UNIX OS 包含兩個分離的部分 .系統程式核心 (The kernel)

包含在系統呼叫下與硬體之上的介面部分 提供檔案系統 , CPU 排程 , 記憶體管理及其他作業系統功能 ; 在一層上提供一大堆的功能 .

Page 21: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.21

UNIX System Structure

Page 22: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.22

Unix 系統結構

使用者命令直譯程式

編譯器和直譯器系統函式庫

核心的系統呼叫介面訊號

終端機處理終端機驅動程式字元 I/O 系統

檔案系統置換

區塊 I/O 系統磁碟和磁帶驅動程式

CPU 排程分頁替換需求分頁

虛擬記憶體硬體的核心介面

終端機控制器終端機

裝置控制器磁碟、磁帶、光碟

記憶體控制器記憶體

Page 23: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.23

分層方法Layered Approach

也就是將作業系統分成數個層次 (layers of levels), 每一層都架構在較低一層之上 . 最低層 (layer 0) 就是硬體 ; 最高層就是使用者介面 .

有了模組化 (modularity), 系統功能所選擇到的一些層次會使得利用到的功能操作及服務都會侷限在其相關的較低層次 .

Page 24: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.24

分層方法

分層方法最主要的好處就是模組化,這個方法讓除錯更加容易。

分層方法的缺點是執行起來會比較沒有效率在每一層往下尋求服務時,都會需要傳遞些資料或是參數,因此系統中的層次越多,對系統的額外負擔也會越大。

Page 25: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.25

一個作業系統的層次

Page 26: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.26

OS/2 階層架構

Page 27: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.27

分層結構 Direct user access to low level

facilities is not allowed.

內層不可以呼叫外層。

外層只能一層一層呼叫。

可以在不更改該介面的條件下,將某一層抽離換新,而不會影響其他幾層。

Page 28: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.28

微核心 (Microkernel)系統結構

盡量多將作業系統的一些功能從核心移到使用者空間 (user space).

使用者模組之間可以利用訊息傳遞來達到比此間的通訊功能 .

好處 : easier to extend a microkernel easier to port the operating system to new

architectures more reliable (less code is running in kernel

mode) more secure

Page 29: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.29

Windows NT Client-Server Structure

Page 30: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.30

虛擬機器Virtual Machines

虛擬機器基本觀念是將單一電腦硬體 (CPU 、記憶體、磁碟機、網路介面卡等等 )想像成幾個不同的執行環境,因此產生了每一個獨立執行環境在自己私人電腦執行的幻覺。

實體電腦上的資源是被分享藉以產生虛擬機器 . CPU排程可以產生讓使用者有自己處理器的假象 . Spooling 及一個檔案系統可以提供虛擬讀卡機及虛擬印表機 .

一個使用者使用分時終端機就像是一部虛擬機器的operator’s console.

Page 31: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.31

系統模型

Non-virtual Machine Virtual Machine

Page 32: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.32

虛擬機器的優缺點 虛擬機器的觀念提供系統資源的完全保護 , 因為虛擬機器是完全獨立於其他虛擬主機之外 , 然而這樣的各自獨立也使得資源不可以共享 .

一個虛擬機器系統是一個完美的作業系統研究發展工具 . 可以在虛擬機器上發展系統 , 而不是在一台實體機器上 , 這樣不會影響正常系統運作 .

虛擬機器觀念的製作是困難 , 因為必須要花功夫將下層的機器能夠完整模擬 .

Page 33: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.33

製 作 虛擬機器觀念非常有用,但它製作起來相當困難。困難是在於提供

與實際機器完全一樣的複製。要記住的是實際機器有兩種模式 (mode): 使用者模式和核心模式。

虛擬機器軟體可以在核心模式中執行,因為它是作業系統。虛擬機器自己只可以在使用者模式中執行。就像實際機器有兩個模式一樣,所以虛擬機器也必須是如此。

Page 34: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.34

範例

Page 35: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.35

Java Virtual Machine

一個經過編譯後的 Java 程式的位元碼(bytecodes) 是與機器平台無關 (platform-neutral) 可以在一個 Java Virtual Machine (JVM) 上執行 .

JVM 含有 class loader class verifier runtime interpreter

Just-In-Time(JIT)編譯器可以增加執行效能

Page 36: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.36

Java Virtual Machine

Page 37: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.37

Java Virtual Machine

Byte Code

PC Workstation Host

Java Run Time Java Run Time Java Run Time

for CPU1 for CPU2 for CPU3

CPU1 CPU2 CPU3

圖 2.13 Java 虛擬機器

Page 38: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.38

Java Virtual Machine Java挾其可攜帶性之優點,橫掃跨平台作業系統,它便是一種虛擬機器的代表。

從外層的角度來看,所有命令都與機器無關,它們是位元組碼。

從內層來看,不同機器的 Java 執行模組均不相同,因為 Java 執行模組必須依據所使用的中央處理器,撰寫不同的機器碼,來命令電腦工作。

Page 39: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.39

系統設計目標

使用者目標 (User goals)作業系統應該要方便使用 , 方便學習 , 可靠 , 安全及快速 .

系統目標 (System goals)作業系統必須容易設計製作和維護 , 同樣還要有彈性 , 可靠 , 不出錯及執行有效率 .

Page 40: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.40

系統載入 藉由載入核心來開啟一部電

腦的步驟就是載入 (booting) 系統。

在大部份電腦系統之中,有一小段程式碼,叫做靴帶式程式 (bootstrap program) 或叫做靴帶式載入器 (bootstrap loader)位於核心、載入記憶體,並開始執行核心程式。

有些電腦系統 ( 如 PCs),把這個步驟憂成兩個階段,先有一個非常簡單的靴帶式載入器從磁碟載入一個更複雜的載入程式,然後再由後者載入核心。

bootstrap program

Page 41: 3.1 第 2 章 系統結構 n 作業系統的服務 n 使用者作業系統介面 n 系統呼叫 (System Calls) n 系統呼叫的類型 n 系統程式 (System Programs) n 系統結構

3.41

系統的製作 傳統的作業系統是以組合語言完成 , 現在的作業系統可以高階語言來撰寫 .

以高階語言撰寫作業系統碼的好處 :撰寫速度加快 .作業系統程式碼可以更精簡 .可讀性及除錯能力提高 .

假使作業系統是用高階語言撰寫,這個作業系統的相容性會提高許多 (is far easier to port) (move to some other hardware).