Download presentation
Presentation is loading. Please wait.
Published byGabriella Weaver Modified 6年之前
1
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
2
CHAPTER 2 系統結構 2.1 作業系統服務 2.2 使用者作業系統介面 2.3 系統呼叫 2.4 系統呼叫的類型 2.5 系統程式
2.1 作業系統服務 2.2 使用者作業系統介面 2.3 系統呼叫 2.4 系統呼叫的類型 2.5 系統程式 2.6 系統的設計和製作 2.7 作業系統結構 2.8 虛擬機器 2.9 作業系統除錯 2.10 作業系統建立 2.11 系統載入
3
2.1 作業系統服務(OS Services) 使用者介面(User interface (UI): Graphics User Interface (GUI), Batch Interface, Command-Line (CLI) 程式執行(Program Execution) 輸入和輸出作業(I/O Operations) 檔案系統的使用 通信(Communications) 錯誤偵測(Error Detection) 資源分配(Resource Allocation) 記帳(Accounting) 保護和安全 使用者及其他系統程式 Multiple Users 資源分配
4
2.2 使用者作業系統介面(User OS Interface)
命令直譯程式(Command Interpreter) 作業系統在核心(Kernel)中包含了命令直譯程式。 系統上多個命令直譯程式可供選擇執行,此直譯程式稱為外殼(shells),提供存取核心所提供之服務的程式。 命令直譯程式主要功能在於取得下一個使用者所指定的命令並執行。這些命令可以用來處理檔案:建立、刪除、列印、複製、及執行等。 有二種這些命令的製作方法:1.命令直譯程式本身含有執行命令的程式碼。2.由系統程式執行所有命令,直譯程式不需瞭解命令之意義,只是使用命令來指定一個要載入記憶體及執行的檔案(Unix)。 Ex. rm file.txt 2.2.2 圖形使用者介面, GUI (Graphic User Interface) 一個GUI提供以滑鼠為基礎的視窗和具桌面(Desktop)特性的表單系統為介面。移動滑鼠以便將滑鼠指標定位在螢幕的圖像(icons),這些圖像代表程式、檔案、子目錄和系統功能。根據滑鼠指標的位置,按下滑鼠的按鍵,可以呼叫程式、選擇檔案或目錄(即稱Folder)。
5
2.3 系統呼叫 系統呼叫(system calls)提供一個由作業系統服務的介面。這類呼叫一般以C或C++寫成的常式,低階工作(例如,直接存取硬體的工作)可能需要以組合語言指令來寫。 System call sequence to copy the contents of one file to another file.
6
open () open ()的實作 系統呼叫 : 返回 的實作
7
Standard C Library Example
C program invoking printf() library call, which calls write() system call 7
8
Application Program Interface (API)
Mostly accessed by programs via a high-level Application Program Interface (API) rather than direct system call use Three most common APIs are - Win32 API for Windows - POSIX API for POSIX-based systems (Virtually all versions of UNIX, Linux, and Mac OS X) - Java API for the Java virtual machine (JVM) Why use APIs rather than system calls? - Program Portability: the program can been compiler and run on any system.
9
Example of Standard API
Consider the ReadFile() function in the Win32 API—a function for reading from a file A description of the parameters passed to ReadFile() HANDLE file—the file to be read LPVOID buffer—a buffer where the data will be read into and written from DWORD bytesToRead—the number of bytes to be read into the buffer LPDWORD bytesRead—the number of bytes read during the last read LPOVERLAPPED ovl—indicates if overlapped I/O is being used
10
System Call Parameter Passing
Three general methods used to pass parameters to the OS Simplest: pass the parameters in registers In some cases, may be more parameters than registers Parameters stored in a block, or table, in memory, and address of block passed as a parameter in a register This approach taken by Linux and Solaris Parameters placed, or pushed, onto the stack by the program and popped off the stack by the operating system Block and stack methods do not limit the number or length of parameters being passed 10
12
2.4 系統呼叫的類型 2.4.1 行程的控制(process control) 正常結束、不正常中止執行(end, abort)
2.4 系統呼叫的類型 2.4.1 行程的控制(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)
13
MS-DOS execution (a) At system startup (b) running a program 13
14
FreeBSD Running Multiple Programs
14
15
2.4.2 檔案的管理(File management) 建立檔案、刪除檔案(create file, delete file)
開啟、關閉(open, close) 讀出、寫入、重定位置(read, write, reposition) 獲取檔案屬性、設定檔案屬性(get file attributes, set file attributes) – 檔案名稱、檔案類型等等 2.4.3 裝置的管理(Device management) 要求裝置、釋回裝置(request device, release device) 獲取裝置屬性、設定裝置屬性(get device attributes, set device attributes) 邏輯上加入或移去裝置(logically attach or detach devices) 15
16
2.4.4 資訊維護(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) 2.4.5 通信(communication) 建立、刪除通信連接(create, delete communication connection) 傳送、接收訊息(send, receive messages) 傳輸狀況訊息(transfer status information) 連接或分離遠程裝置(attach or detach remote devices) 2.4.6 保護(protection) 設定權限、取得權限(set permission, get permission)
17
Examples of Windows and Unix System Calls
18
2.5 系統程式 (System Programs)
System programs (System Tools) provide a convenient environment for program development and execution. The can be divided into: File manipulation (檔案的管理 ) Status information (狀態資訊) File modification (檔案的修改) Programming language support Program loading and execution Communications Application programs 使用者 應用程式 系 統 程 式 作 業 系 統 硬 體 18
19
檔案的管理 : 這些程式可以建立、刪除、拷貝、重新命名、列印、傾印、列出和一般操作檔案及目錄。
狀態資訊 : 有些程式會向作業系統詢問日期、時間、可用的記憶體或磁碟空 間、使用者數量或其它類似的狀態資訊。其它則較複雜,提供詳細的效能、登錄和除錯訊息。這類程式經格式化之後送到終端機或其它輸出裝置或檔案或者以視窗的圖形使用者介面顯示。有些系統也支援用來儲存和取回配置訊息的登錄( registry)。 檔案的修改 : 許多本文編輯程式在產生和修改存放在磁碟或其它儲存體中的檔案內容時非常有幫助。可能以特殊命令來尋求本文內容或完成本文的轉換。 提供程式語言: 編譯程式、組譯程式、除錯程式和普通程式語言的直譯程式。 程式的載入與執行 : 一旦某個程式組譯或編譯好之後,它必須載入記憶體中以 便執行。系統可以提供絕對載入程式、可重新定位載入程式、連結編修程式和重疊載入程式來執行載入的工作,並需要高階語言及機器語言的除錯系統。 通信 : 這些程式提供產生虛擬連接於行程、使用者及不同電腦系統之間的功 能。它們允許使用者傳送訊息到其它的螢幕上,瀏覽網頁,傳送電于郵件,遠 端登錄或者從某一機器傳送檔案至另一機器。
20
2.6 系統的設計和製作 2.6.1 設計目標 設計一個作業系統的第一個問題是定義系統目標及規格,系統設計很明顯的受到硬體的選擇與系統類型成批作業 (batch)、分時作業(time shared)、單一使用者、多重使用者、分散式系統、即時(real time)或一般目的(general purpose) 的影響。 User goals and System goals - User goals – operating system should be convenient to use, easy to learn, reliable, safe, and fast - System goals – operating system should be easy to design, implement, and maintain, as well as flexible, reliable, error-free, and efficient 2.6.2 方法與策略 一個重要的原則是從方法 (mechanism)中作策略(Policy)分離。方法決定如何做某些工作,相對的,策略決定做什麼事。 2.6.3 製作 傳統上,作業系統是由組合語言寫成的。然而,現在已經不完全這樣做,作業系統現在可以用較高階的語言寫成,例如C或C++。
21
2.7 作業系統結構(OS Structure)
簡單的結構 應用程式可以直接存取基本I/O常式
22
2.7.2 分層方法(Layered Approach)
分層方式最主要的好處是結構簡單和除錯。層次選定之後,每一個層次只能使用較低層的功能與服務。這種方式更容易做系統的除錯與驗證。第一層改正時,不必考慮系統的其餘部份,它只用了基礎的硬體完成它的功能。一旦第一層改正後,在第二層的工作可以假設它的功能正確。在特定層次除錯時,可以知道錯誤必定在那一層,因為在它底下的層都已改正。 系統分層、系統的設計與製作都可以更簡化。
23
2.7.3 微核心 (Microkernel System Structure)
在 1980年代中期Carnegie Mellon大學的研究人員發展出一套叫做Mach的作業系統,Mach使用微核心 (microkernel)的技術將核心模組化。這種方法藉由移去核心所有非必要的元件將作業系統結構化,並且改以系統和使用者層次的程式來製作。 2.7.4 模組
24
2.8 虛擬機器(Virtual Machines)
虛擬機器基本觀念是將單一電腦硬體 (CPU、記憶體、磁碟機、網路介面卡等等)想像成幾個不同的執行環境,因此產生了每一個獨立執行環境在自己私人電腦執行的幻覺。
25
歷 史 於1972年,在IBM大型主機經由VM作業系統,虛擬機器首次出現在商業用途上。IBM VM370將大型電腦劃分為多重的虛擬機器,每個虛擬機器執行各自的作業系統。 優 點 一個虛擬機器的優點是多重作業系統可以同時在開發者的工作站上執行。這個虛擬的工作站允許在不同環境下快速的移植和程式測試。 模 擬 程式可以在模擬器中轉換每個舊系統的指令對應到新系統的原生指令組之後才執行。
26
2.8.4 Para 虛 擬 化(Virtualization)
非試圖誘騙賓客(Guest)作業系統以為自己擁有一套自己的系統,para虛擬化呈現賓客系統是相似的但與賓客喜歡的系統不完全相同。 製 作 虛擬機器觀念非常有用,但它製作起來相當困難。困難在於提供與實際機器完全一樣的複製。要記住的是實際機器有兩種模式 (mode):使用者模式和核心模式。 虛擬機器軟體可以在核心模式中執行,因為它是作業系統。虛擬機器自己只可以在使用者模式中執行。就像實際機器有兩個模式一樣,所以虛擬機器也必須是如此。
27
2.9 作業系統除錯(Debugging) 除錯是發現和修正系統中錯誤或缺陷(bugs)的活動。除錯也包括效能調整,藉由移除發生在系統中處理的瓶頸(bottlenecks)來尋求效能改善。 2.9.1失敗分析 一個行程失敗了,大部分的作業系統會編寫錯誤資訊到一個記錄檔案(log)來警示系統操作者或使用者問題已經發生。除錯者是一個被設計成允許程式設計師探究行程碼和記憶體的工具。 2.9.2效能調整 一些系統中,作業系統藉由產生系統行為的追蹤列表來執行這個監視系統效能任務。 一個效能調整的方法是包含與系統有相互作用的工具,此乃允許使用者和管理者來詢問系統不同要素的情況來尋找瓶頸。
28
2.10 作業系統建立(OS Generation)
Operating systems are designed to run on any of a class of machines; the system must be configured for each specific computer site (SYSGEN) SYSGEN程式需要瞭解下列訊息: 使用那一種CPU? 設立那些選擇項 (擴充指令集、浮點小數運算等等)?如果是多元CPU,每個CPU都必須介紹。 啟動磁碟是如何被格式化的?會被分割成多少部份或分割,以及什麼會進入每個分割的狀態? 有多少記憶體可以使用?有些系統會藉由一個接著一個地參考記憶體位置直到一個 "違法位址"的錯誤產生來自己決定這個值。這個處理程序定義最後合法的位址以及可用記憶體的數量。 什麼裝置可以使用? 系統必須知道如何對每一個裝置定址 (它的裝置號碼)、裝置中斷編號、它的類型與模式以及任何特別的特性。 想要什麼類型的系統或使用什麼參數值? 這些選擇或值可能包括多少個這種大小的緩衝區可以使用、想要的CPU排班演算法則形式、可以支援行程的最大數量等等。
29
系統載入(System Boot) 所有工作都是由硬體來完成,軟體只是人指揮硬體執行命令的界面。電腦一開始啟動電源,硬體如何啟動作業系統? 藉由載入核心來開啟一部電腦的步驟就是載入(booting)系統。 在大部份電腦系統之中,有一小段程式碼,叫做靴帶式程式(bootstrap program)或叫做靴帶式載入器 (bootstrap loader)位於核心、載入記憶體,並開始執行核心程式(OS)。 有些電腦系統 (如PCs),把這個步驟變成兩個階段,先有一個非常簡單的靴帶式載入器從磁碟載入一個更複雜的載入程式(Memory),然後再由後者載入核心。
Similar presentations