Complete Folding of Han Ideographs in Internationalized

Download Report

Transcript Complete Folding of Han Ideographs in Internationalized

第二章 作業系統概述
Operating Systems Overview
 介紹作業系統的歷史、原理
 作業系統的目標和功能,如何由最初的批次系統(batch
system)演進到複雜的多模式(multi-mode)與多使用者
(multi-user) 。
1
2.1 作業系統目標與功能
 作業系統的角色:
控制應用程式執行的程式。
使用者與電腦硬體之間的介面。
 作業系統的目標
方便性(convenience):使電腦更方便使用。
效率(efficiency):將電腦硬體資源做有效的利用。
演進能力(ability to evolve):測試與引進新功能不影響服務品質。
2
作業系統作為使用者與電腦之間的介面
 程式開發(program
development)
 程式執行(program
execution)
 存取輸出入裝置 (access to
I/O devices)
 控制檔案存取(controlled
access to files)
 系統存取(system access)
 錯誤偵測與回應(error
detection and response)
 帳務(accounting)
Figure 2.1 Layers and Views of a Computer System
3
作業系統作為資源管理者
 作業系統與一般電
腦軟體一樣,都是
由處理器執行的程
式。
 作業系統常讓出控
制權,並且需要重
新取得控制權。
 核心(kernel, nucleus):
包含作業系統最常
被使用的函式。
Figure 2.2 The Operating System as Resource
Manager
4
簡化作業系統的演進
 作業系統會不斷的隨時間演進,原因包括:
硬體升級與新硬體的產生:例如,分頁(paging)硬體與分頁機制的
發展。
新服務:例如,視窗顯示。
修正:發現錯誤、然後修正。修正也可能造成新的錯誤。
5
2.2 作業系統的演進
 循序處理(serial processing) 1940末期~1950中期
程式設計師直接面對電腦硬體,沒有作業系統存在。
電腦硬體及周邊:主機、顯示燈、輸入裝置、印表機、讀卡機。
主要問題:
排程(scheduling):使用簽名表預約使用的時間。
設定時間(setup time):連串的設定動作,浪費時間。
6
簡單批次系統(simple batch systems)
1950中期~1960初期
 使用監督程式(monitor)軟體。
使用者不再需要直接存取機器,只要將卡片或磁帶上的工作委託
給電腦操作員來處理。
電腦操作員將整批工作依序放在一起,並將全部的批次工作放在
監督程式使用的輸入裝置上。
每個工作結束後,監督程式會自動開始載入下一個工作。
 監督程式負責排程,利用工作控制語言(Job Control
Language, JCL):
$JOB
$FTN
.... Fortran instructions
$LOAD
$RUN
.... Data
$END
7
簡單批次系統 (續)
 監督程式期盼的硬體功能:
記憶體保護:使用者程式不能改
變監督程式所在的記憶體內容。
計時器:阻止單一工作獨占整個
系統。
特權指令:某些機器層級的指令
被指定為特權指令,且只能由監
督程式執行。
中斷:此功能使得讓出或取得控
制權時更有彈性。
Figure 2.3 Memory Layout
for a Resident Monitor
8
多重程式批次系統(multiprogrammed batch
systems)
 即使用簡單批次作業,處理器仍然時常處於閒置狀態,因
為I/O裝置的速度比處理器慢很多。
Read one record
0.0015 sec.
Execute 100 instructions
0.0001 sec.
Write one record
0.0015 sec.
TOTAL
0.0031 sec.
CPU Utilization
0.0001 / 0.0031 = 3.2%
 假使有足夠記憶體來儲存二個使用者程式,當一個工作正
在等待I/O時,另一個不在等待I/O的工作便可以執行。
 我們可以進一步增加記憶體,容納更多程式,交替執行他
們,如此稱為多重程式(multiprogramming)或多工
(multitasking)。
9
JOB1
JOB2
JOB3
工作類別
大量計算
大量I/O
大量I/O
持續時間
5 分鐘
15 分鐘
10 分鐘
記憶體需求
50K
100K
80K
需要磁碟機?
No
No
Yes
需要終端機?
No
Yes
No
需要印表機?
No
No
Yes
 依序執行:JOB1, JOB2, JOB3
 執行時間:5 分鐘, 15 分鐘, 10 分鐘.
 總執行時間:30 分鐘
10
11
Figure 2.6 Utilization Histograms
12
多重程式使用率、硬體特性
單程式
多重程式
處理器的使用 22%
43%
記憶體的使用 30%
67%
磁碟的使用
33%
67%
印表機的使用 33%
67%
花費時間
30 分鐘
15 分鐘
產能
6 jobs/hr 12 jobs/hr
平均回應時間 18 分鐘
10 分鐘
 上表由圖2.6分別整理得出。
 硬體特性:I/O中斷、DMA、記憶體管理、排程演算法 (多個程式放
在記憶體)。
13
分時系統(Time-Sharing Systems)
 因為多重程式的使用,批次處理可以相當有效率。然而,
許多工作需要讓使用者與電腦互動。
 多重程式也可用來處理多個交談式工作,稱為“分時”—
處理器的處理時間被許多使用者所分享。
主要目標
批次多重程式處理
分時處理
處理器使用率最大化
回應時間最小化
作業系統的命令 由工作所提供的工作控
來源
制語言(JCL)命令
在終端機輸入的指令
 1961年CTSS系統:系統時鐘每0.2秒發出一次中斷請求,
作業系統重新取得控制權。
14
Figure 2.7 CTSS Operation
15
2.3 主要的成就
 處理程序(Process)
 記憶體管理(Memory Management)
 資訊的保護與安全(Information protection and security)
 排程與資源管理(Scheduling and resource management)
 系統結構(System structure)
16
處理程序(Process)
 Multics (1960)設計人員最早使用Process這個字眼
有時比工作(Job)更普遍被使用
 處理程序有許多不同定義:
一個正在執行的程式。
一個在電腦執行的程式的個體(instance)。
一個能指定給處理器或在處理器執行的實體(entity)。
一個看作是單一循序執行緒(thread)的活動單位、一個目前的狀態,
以及一組系統資源。
 電腦發展的三個主要路線,引發了時序(timing)、同步
(synchronization)等問題
多重程式批次系統(multiprogrammed batch systems)
分時系統(time-sharing systems)
即時系統(real-time systems)
17
處理程序(Process) (續)
 設計一個系統軟體以便協調這些不同的活動,成為一件非
常困難的事。
系統中有多個工作時,不可能分析可能事件的所有順序組合。
即使錯誤已被偵測出來,要找到發生錯誤的原因也很困難。
 主要發生錯誤的原因:
不當的同步(Improper synchronization)
失敗的互斥(Failed mutual exclusion)
不確定性的程式運作(Non-determinate program operation)
死結(Deadlock)
 要解決這些問題必須要使用一個有系統的方法來監督並控
制各種在處理器上執行的程式,而處理程序(process)的概
念為此提供了基礎。
18
處理程序(Process)的組成
 一個可執行的程式
 與程式相關的資料(變數、工作
空間、緩衝區等)
 程式的執行序文(execution
context) 或稱為處理程序狀態
(process state)。
 執行序文內含: 各式各樣的處理
器暫存器(register)的內容、作業
系統所需的資訊。
Figure 2.8 Typical Process Implementation
19
記憶體管理(Memory Management)
 處理程序的分離 (Process Isolation)
 自動配置與管理(Automatic allocation and management)
 模組化程式設計的支援(Support modular programming)
 保護與存取控制(Protection and access control)
 長期的儲存空間(Long-term storage)
20
Figure 2.9 Virtual
Memory Concepts
21
Figure 2.10 Virtual Memory Addressing
22
資訊的保護與安全(Information protection and
security)
 存取的控制(Access Control)
 資訊流的控制(Information flow control)
 認證(Certification)
23
排程與資源管理(Scheduling and resource
management)
 公平性(Fairness)
 差別的回應
(Differential
responsiveness)
 效率(Efficiency)
Figure 2.11 Key Elements of an Operating
System for Multiprogramming
24
系統結構(System structure)
Level Name
Objects
Example Operations
13
Shell
User programming
environment
Statements in shell language
12
User processes
User processes
Quit, kill, suspend, resume
11
Directories
Directories
Create, destroy, attach, detach,
search, list
10
Devices
External devices, such Create, destroy, open, close,
as printer, displays
read, write
and keyboards
9
File system
Files
Create, destroy, open, close
read, write
8
Communications
Pipes
Create, destroy, open. close,
read, write
25
系統架構(System architecture) (續)
Level Name
Objects
Example Operations
7
Virtual Memory
Segments, pages
Read, write, fetch
6
Local secondary
store
Blocks of data, device Read, write, allocate, free
channels
5
Primitive processes Primitive process,
semaphores, ready
list
Suspend, resume, wait, signal
4
Interrupts
Interrupt-handling
programs
Invoke, mask, unmask, retry
3
Procedures
Procedures, call stack
Mark stack, call, return
2
Instruction Set
Evaluation stack, microprogram interpreter,
scalar and array data
Load, store, add, subtract
branch
1
Electronic circuits
Registers, gates, buses,
etc.
Clear, transfer, activate,
complement
26
2.4 現代作業系統的特徵
 微核心架構(Microkernel architecture)
 多重執行緒(Multithreading)
 對稱式多重處理(Symmetric multiprocessing; SMP)
 分散式作業系統(Distributed operating systems)
 物件導向設計(Object-oriented design)
27
微核心架構(Microkernel architecture)
 大部分作業系統皆為一個大的單體核心(monolithic kernel)
包含大部分作業系統該有的功能,包括:排程、檔案系統、網路、
裝置驅動程式、記憶體管理等。
實作成單一的處理程序,其中所有元素都分享了相同的位址空間。
 一個微核心架構只指定了一些必要的功能給核心
包括:位址空間、處理程序間通訊(Inter-process communication)、
基本的排程。
其他的作業系統服務由使用者模式的伺服器程式(server)提供。(這
些伺服器程式被微核心視為一般應用程式的處理程序。)
核心程式與伺服器程式的發展得以分離。
 微核心架構的特點
簡化實作並且提供彈性。
適合分散式環境。
28
多重執行緒(Multithreading)
 可以同時執行一個程式內不同執行緒的技術。
 Thread與Process的區別
執行緒(thread):一個可分派的工作單元,內含處理器序文(context;
含程式計數器及堆疊指標)、自己的資料區以提供堆疊(stack; 分支
到副程式使用)。
處理程序(process):一個或多個執行緒的集合,並含有相關系統
資源。
 多重執行緒的好處
將一個應用分解為數個相互獨立的執行緒同時執行。
每一執行緒直接對應到個別需同時執行的工作。
執行緒交錯執行,較處理程序交錯執行有效率。
29
對稱式多重處理(Symmetric multiprocessing)
 對稱式處理器的特徵
有多個處理器。
這些處理器共享相同的主記憶體與I/O裝置,並且由通訊匯流排
(bus)或其他內部連結結構來進行互連。
所有處理器都能執行相同的功能。(因此稱為“對稱式”)
 優點
效能(Performance):同時執行,提昇效率。
可用性(Availability) :其中一個故障,仍可繼續執行。
漸增式成長(Incremental growth):使用者可增加處理器的數目,配
合使用量的成長,增強執行效能。
延展性(Scaling):製造商可調整配置的處理器的數量,提供不同
價格與效能的產品。
30
Figure 2.12 Multiprogramming and Multiprocessing
31
分散式作業系統(Distributed operating systems)
 對一群分離的電腦(多重電腦系統; multi-computer system)
提供單一系統的外觀。
處理一個實體(電腦)的集合;
每個實體都有它自己的主記憶體、輔助記憶體、I/O模組等。
 分散式作業系統的執行環境
多個電腦系統經由網路連結。
每個電腦有自己的處理器、記憶體與周邊裝置。
 分散式作業系統的發展遠比單處理器及SMP作業系統還要
緩慢。
 分散式作業系統的功能, 舉例:
整合成單一主記憶體、單一輔助記憶體的系統
單一化的工具:分散式檔案系統
提供多個電腦的排程與同步
32
物件導向設計(Object-oriented design)
 提供核心模組設計的指引。
 客製化(customize)修改作業系統,而不影響系統的完整性。
 分散式工具、分散式作業系統的發展更為容易。
33
2.5 Windows 2000(W2K)的概觀
 歷史
必須從MS-DOS或PC-DOS開始說起。
MS-DOS或PC-DOS (1981):4,000行組合語言程式碼;8K記憶體;
8086微處理器。
DOS 2.0 (1983):PC XT,加入硬碟支援,子目錄、類似Unix的命
令、I/O轉向、背景列印
DOS 3.0 (1984):PC AT,80286,但未使用保護模式。
DOS 3.3 (1987): 支援IBM的PS/2封閉架構的新產品線。(註: IBM相
容PC市場受到衝擊,但開放架構後來成為主流,PS/2收場)
Windows 3.0 (1990):GUI系統,但仍執行在DOS上。要與蘋果的
麥金塔(Macintosh)競爭。
OS/2:微軟與IBM共同發展的下一代作業系統,後由IBM自行發
展,發行了幾個版本,幾經努力,最後終止。
34
W2K歷史(續)
 Windows NT 3.1:32-bit作業系統;Windows 3.1相同的
GUI。
 Windows NT 4.0: Windows 95相同的GUI。
 Windows 2000:主動式目錄(active directory)服務。
分為伺服器(server)與專業 (professional)二個版本。
本質上,微核心架構、執行架構,及服務都相同,
伺服器版本額外提供了一些網路上的服務,例如: 終端機伺服器
(terminal server)。
35
單使用者的多工
 Windows NT的設計動機
想要充分發揮今日32-bit微電腦的能力。
單人多工(Single-user multitasking):改善Windows 3.1及95的多工
主從式計算環境(Client-Server Computing Environment)
 Windows NT vs. Unix
Windows NT:單一使用者、多工作業系統,執行在個人電腦或工
作站
Unix:多人多工的作業系統,執行平台從微電腦一直到超級電腦
36
Figure 2.13 Windows 2000 Architecture
37
W2K的組織架構
 特點:修改的微核心、高度模組化
其設計人員發現純粹的微核心系統會使process與thread的轉換花費
增加。
 硬體抽象層(Hardware Abstraction Layer, HAL)
適應不同平台:Pentium、PowerPC、Alpha。
包括:系統Bus、直接記憶體存取(DMA)、中斷控制、系統時間、
記憶體模組、SMP支援。
 微核心(Microkernel)
最常使用與最基本的作業系統單元。
包含:thread的排程、process轉換、例外與中斷處理、多處理器同
步。
微核心內的程式並不以thread形式執行,不可以暫停或分頁。
 裝置驅動程式(device driver)
包含: 檔案系統及硬體裝置驅動程式,將使用者的I/O功能呼叫
(function call),轉換成特定的硬體裝置的I/O要求(I/O request)
38
管理層(Executive)
 包含特定系統功能的模組、應用程式介面(API) :
 I/O管理 (I/O manager):負責對適當的裝置驅動程式進行分派之工作。
 物件管理(object manager):建立物件的handle。(handle: 由存取控制資
訊及指向物件的指標所組成)
 安全參考監督 (security reference monitor):確保驗證與稽核規則。
 處理程序/執行緒管理 (process/thread manager) :產生及刪除process及
thread物件。
 區域程序呼叫(Local Procedure Call, LPC):應用程式與Executive間也
為主從式關係,與Remote Procedure Call (RPC) 類似。
 虛擬記憶體管理:虛擬位址對應到實體位址。
 快取記憶體管理(cache manager): 將最近參考的磁碟資料儲放在主記
憶體中,藉由延遲資料寫回磁碟,改進I/O效能。
 視窗/圖形模組(window manager):管理視窗介面及圖形裝置。
39
使用者處理程序
 W2K支援四種型態的使用者處理程序 (執行於使用者模式下)
 特殊系統支援的處理程序(special system support processes)
 伺服器處理程序(server processes)
 環境子系統(environment subsystem): Win32, POSIX, OS/2。每個環境子系
統包含動態連結函式庫(DLL),使得使用者應用程式的呼叫,能轉為
W2K的呼叫。
 使用者應用程式(user application): 共五種型式: Win32,POSIX, OS/2,
Windows 3.1, MS-DOS。
 每個子系統都是一個分離的處理程序
 提供一個圖形化或命令列的使用者介面。
 提供API給特定的操作環境使用。
 最重要的子系統: Win32
 W2K的Win32 API包含Windows 98的Win32 API。
 其他作業系統的API均對應到Win32,使之能夠在W2K上執行。
40
表2.5 Win32 API所涵蓋的一些範圍
41
主從模式
 運作方式
環境子系統及服務子系統都被實作成為一個或多個處理程序。
每一個處理程序都在等待用戶端發出的請求(request)。
用戶端可以是一個應用程式或其他的作業系統模組。
用戶端藉由傳送訊息(message)的方式提出請求,而訊息透過管理
層送到適當的伺服器程式(server)。
伺服器程式同樣使用傳送訊息的方式將結果或狀態傳回。
 優點
簡化了管理層。
增強可靠度。
提供制式的方法經由區域程序呼叫(LPC)與管理層進行溝通。
提供分散式計算的基礎。(類似RPC的訊息傳送方式)
42
執行緒與對稱式多重處理(SMP)
 作業系統常式(routine)可執行在任一處理器上,不同常式
可在不同處理器上同時執行。
 同一個process的thread可執行在不同處理器上。
 server的process可使用多個thread,處理client的要求。
 彈性的處理程序通訊(IPC),方便資料與資源的分享。
43
Windows 2000的物件
 涵蓋的主要物件導向概念: 封裝(encapsulation) 、物件class與instance、
繼承(inheritance) 、多型態(polymorphism)
 W2K並非所有實體都是物件,以物件表示的資料型態
 使用者模式存取的資料、分享或保護情況下的資料
 舉例:檔案、process、thread、號誌(semaphore)、計時器(timer)、視窗等。
 核心物件: 管理層內的物件,配置於核心程式的記憶體空間內。(與使用
者階層的物件區隔)
 handle:指到物件的指標
 建立物件時傳回handle,呼叫Win32函式需要傳入handle。
 W2K並不是十分成熟的物件導向作業系統,它也不是用物件導向語
言所實作。
 存在於管理層元件內的資料結構並非以物件的方式呈現。
 W2K展現了物件導向技術持續用於作業系統設計的趨勢。
44
2.6 傳統UNIX作業系統
 UNIX的歷史
AT&T Bell Labs發展(1970):PDP-7;受CTSS影響較大,結合了
Multics許多的概念。
由PDP-7轉移至PDP-11:以C程式語言重新撰寫。
Version 7:大部分現代UNIX的始祖
BSD (Berkeley Software Distribution):加州柏克萊大學(University
of California at Berkeley)
45
Figure 2.14 UNIX History
46
一般UNIX架構
Figure 2.15 General UNIX Architecture
47
 使用者程式可以直接
或間接的由函式庫程
式(Library)呼叫系統
服務。
 系統呼叫介面(System
Call Interface)提供使
用者與高階軟體存取
kernel。
 Kernel分為二部分:
Process Control
Subsystem
File Subsystem
Figure 2.16 Traditional UNIX Kernel [BACH86]
48
2.7 現代UNIX系統
 模組化的新系統 (圖2.17)
小型的核心設施,提供處理程序所需的函式及服務。
外圍圓圈表示函式和介面。
 System V Release 4 (SVR4): 提供商業版UNIX的制式平台,
可在32位元微處理器、超級電腦上執行。
 Solaris 2.x: Sun基於SVR4及其SunOS的UNIX發行版本,
取代其基於BSD 4.2的SunOS。
 BSD 4.4: BSD的最後版本,其發展及實作組織後來被解散。
 Linux: (詳見下頁)
49
Figure 2.17 Modern UNIX
Kernel [VAHA96]
50
Linux
 由芬蘭一位電腦科學系的學生Linus Torvalds所撰寫。
 Torvalds在1991年將一個Linux的早期版本丟到Internet。
 Linux是免費/自由(free)軟體,它的程式碼可以取得。(開
放原始碼, open source)
 自由軟體基金會(Free Software Foundation, FSF)贊助。
 FSF的GNU(GNU is Not UNIX)計畫提供工具給軟體開發者
使用。
 Torvalds使用GNU工具發展他的核心程式。
 受GNU公共許可證(GNU Public License, GPL)所規範。
 Linux已經滲透到企業中。(尤其用於網際網路伺服器)
51
Linux的模組結構
 大部分的UNIX核心是緊密連結在一起的。
典型的單體作業系統(monolithic operating systems)
任何部分作改變,所有的模組和常式都必須重新連結及安裝。
這個問題特別困擾Linux,因為它是由全球共同開發,並且由獨立
的程式設計人員所組成。
 Linux被組織成相關獨立區塊的集合,稱為可載入模組
(loadable module),重要特徵:
動態連結(dynamic linking): 可以隨時連結及取消連結。Linux指令:
insmod (安裝模組), rmmod (移除模組)。
可堆疊模組(stackable module): 模組被安排成階層式(hierarchy)架
構。
 好處:
共通程式碼可以移到單一模組,以減少重複性。
核心程式可以確定被需要的模組是存在的。
52
Figure 2.18 Example List of Linux Kernel Modules
53