操作系统
维基百科,自由的百科全书
操作系统(Operating System,简称OS) 是一管理電腦硬體與軟體資源的程式,同时也是计算机系统的核心与基石。OS身負諸如管理與配置記憶空間(Memory space)、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網路與管理檔案系統等基本事務。OS也提供一個讓使用者與系統互動的操作介面(請參照殼及图形用户界面)。
OS的型態非常多樣,不同機器安裝的OS可從簡單到複雜,可從手機的嵌入式系統到超級電腦的大型操作系統。許多OS製造者對OS的定義也不大一致,例如有些OS整合了圖形使用者介面,而有些OS僅使用文字介面,而將圖形介面視為一種非必要的應用程式。
OS理论是计算机科学中一个古老而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与核心。
目录 |
[编辑] 歷史
綜觀電腦之歷史,作業系統與電腦硬體的發展息息相關。作業系統之本意原為提供簡單的工作排序能力,後為輔助更新的硬體設施而漸漸演化。從最早的批次模式開始,分時機制也隨之出現,在多處理器時代來臨時,作業系統也隨之添加多處理器協調功能,甚至是分散式系統的協調功能。其他方面的演變也類似於此。另一方面,在個人電腦上,個人電腦之作業系統因襲大型電腦的成長之路,在硬體越來越複雜、強大時,也逐步實踐以往只有大型電腦才有的功能。
總而言之,作業系統的歷史就是一部解決電腦系統需求與問題的歷史。
[编辑] 1980年代前
第一部電腦並沒有OS。這是由於早期電腦的建立方式(如同建造機械算盤)與效能不足以執行如此程式。 但在1947年發明了電晶體,以及Maurice V. Wilkes發明的微程序方法,使得電腦不再是機械裝置,而是電子產品。系統管理工具以及簡化硬體操作流程的程式很快就出現了,且成為OS的濫觴。到了1960年代早期,商用電腦製造商製造了批次處理系統,此系統可將工作的建置、排程以及執行序列化。此時廠商為每一台不同型號的電腦創造不同的OS,因此為某電腦而寫的程式無法移植到其他電腦上執行,即使是同型號的電腦也不行。
到了1964年,IBM System/360推出了一系列用途與價位都不同的大型電腦,而它們都共用代號為OS/360的OS(而非每種產品都用量身訂做的OS)。讓單一OS適用於整個系列的產品是System/360成功的關鍵,且實際上IBM目前的大型系統便是此系統的後裔;為System/360所寫的應用程式依然可以在現代的IBM機器上執行!
OS/360也包含另一個優點:永久貯存裝置—硬碟機的面世(IBM稱為DASD。另一個關鍵是分時概念的建立:將大型電腦珍貴的時間資源適當分配到所有使用者身上。分時也讓使用者有獨佔整部機器的感覺;而Multics的分時系統是此時眾多新OS中實踐此觀念最成功的。
1963年奇異公司與貝爾實驗室合作以PL/I語言建立的Multics是激發1970年代眾多OS建立的靈感來源,尤其是由AT&T貝爾實驗室的Dennis Richie與Ken Thompson所建立的Unix系統,為了實踐平台移植能力,此OS在1969年由C語言重寫;另一個廣為市場採用的小型電腦OS是VMS。
[编辑] 1980年代
第一代微型计算机並不像大型電腦或小型電腦,沒有裝設OS的需求或能力;它們只需要最基本的OS,通常這種OS都是從ROM讀取的,此種程式被稱為監視程式(Monitor)。1980年代,家用電腦開始普及。通常此時的電腦擁有8-bit處理器加上64KB記憶體、螢幕、鍵盤以及低音質喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502晶片特別版)的Commodore C64。此電腦沒有OS,而是以一8KB唯讀記憶體BIOS初始化彩色螢幕、鍵盤以及軟碟機和印表機。它可用8KB唯讀記憶體BASIC來直接操作BIOS,並依此撰寫程式,大部分是遊戲。此BASIC語言的直譯器勉強可算是此電腦的OS,當然就沒有核心或軟硬體保護機制了。此電腦上的遊戲大多跳過BIOS層次,直接控制硬體。
早期最著名的磁碟啟動型OS是CP/M,它支援許多早期的微電腦,且被MS-DOS大量抄襲其功能。最早期的IBM PC其架構類似C64。當然它們也使用了BIOS以初始化與抽象化硬體的操作,甚至也附了一個BASIC直譯器!但是它的BASIC優於其他公司產品的原因在於他有可攜性,並且相容於任何符合IBM PC架構的機器上。這樣的PC可利用Intel-8088處理器(16-bit暫存器)定址,並最多可有1MB的記憶體,然而最初只有640KB。軟式磁碟機取代了過去的磁帶機,成為新一代的儲存裝置,並可在他512KB的空間上讀寫。為了支援更進一步的檔案讀寫概念,磁碟作業系統(Disk Operating System,DOS)因而誕生。此OS可以合併任意數量的磁區,因此可以在一張磁碟片上放置任意數量與大小的檔案。檔案之間以檔名區別。IBM並沒有很在意其上的DOS,因此以向外部公司購買的方式取得OS。1980年微軟公司利用騙術取得了與IBM的合約,並且收購了一家公司出產的OS,在將之修改後以MS-DOS的名義出品,此OS可以直接讓程式操作BIOS與檔案系統。到了Intel-80286處理器的時代,才開始實作基本的儲存裝置保護措施。MS-DOS的架構並不足以滿足所有需求,因為它同時只能執行最多一個程式,且沒有任何記憶體保護措施。它也不支援一部份的硬體,必須透過程式自行操作,因此導致諸如音效裝置必須由程式自行設置的狀況。某些操作的效能也是可怕地糟糕。許多應用程式因此跳過MS-DOS的服務程式,而直接存取硬體裝置以取得較好的效能。雖然如此,但MS-DOS還是變成了IBM PC標準作業系統,也使得它成了地球上最普及的OS(IBM自己也有推出DOS,稱為IBM-DOS或PC-DOS)。MS-DOS的成功使得微軟成為地球上最賺錢的公司之一。
而1980年代另一個崛起的OS異數是Mac OS,此OS緊緊與麥金塔電腦綑綁在一起。此時一位全錄伯拉圖實驗室的員工Dominik Hagen訪問了蘋果電腦的Steve Jobs,並且向他展示了此時全錄發展的圖形化使用者介面。蘋果電腦驚為天人,並打算向全錄購買此技術,但因伯拉圖實驗室並非商業單位而是研究單位,因此全錄回絕了這項買賣。在此之後蘋果一致認為個人電腦的未來必定屬於圖形使用者介面,因此也開始發展自己的圖形化OS。現今許多我們認為是基本要件的圖形化介面技術與規則,都是由蘋果電腦打下的基礎(例如下拉式選單、桌面圖示、拖曳式操作與雙點擊等)。但正確來說,圖形化使用者介面的確是全錄創始的。
[编辑] 1990年代
延續1980年代的競爭,1990年代出現了許多影響未來個人電腦市場深厚的OS。由於圖形化使用者介面日趨繁複,OS的能力也越來越複雜與巨大,因此強韌且具有彈性的OS就成了迫切的需求。此年代是許多套裝類的個人電腦OS互相競爭的時代。
上一年代於市場崛起的蘋果電腦,由於舊系統的設計不良,使得其後繼發展不力,蘋果電腦決定重新設計OS。經過許多失敗的專案後,蘋果於1997年釋出新OS——Mac OS X,並取得了巨大的成功。且讓原先失意離開蘋果的Steve Jobs風光回師。
除了商業主流的OS外,從1980年代起在開放原碼的世界中,BSD系統也發展了非常久的一段時間,但在1990年代由於與AT&T的法律爭端,使得遠在芬蘭赫爾辛基大學的另一股開源OS——Linux興起。Linux核心是一個標準POSIX核心,其血緣可算是Unix家族的一支。Linux與BSD家族都搭配GNU計畫所發展的應用程式,但是由於使用的許可證以及歷史因素的作弄下,Linux取得了相當可觀的開源OS佔有量,而BSD則小得多。相較於MS-DOS的架構,Linux除了擁有傲人的可移植性(相較於Linux,MS-DOS只能運行在Intel CPU上),它也是一個分時多行程核心,以及良好的記憶體空間管理(普通的行程不能存取核心區域的記憶體)。想要存取任何非自己的記憶體空間的行程只能透過系統呼叫來達成。一般行程是處於使用者模式(User mode)底下,而執行系統呼叫時會被切換成核心模式(Kernel mode),所有的特殊指令只能在核心模式執行,此措施讓核心可以完美管理系統內部與外部裝置,並且拒絕無權限的行程提出的請求。因此理論上任何應用程式執行時的錯誤,都不可能讓系統崩潰。
另一方面,微軟對於更強力的OS呼聲的回應便是Windows NT於1999年的面世。
1983年開始微軟就想要為MS-DOS建構一個圖形化的OS應用程式,稱為Windows(有人說這是因為Bill Gates被蘋果的Lisa電腦上市所刺激)。一開始Windows並不是一個OS,只是一個應用程式,其背景還是純MS-DOS系統,這是因為當時的BIOS設計以及MS-DOS的架構不甚良好之故。在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(一個很成功但是曲高和寡的圖形化OS)專案中抽身,並且在1993年7月27日推出Windows NT3.1,一個以OS/2為基礎的圖形化OS。並在1995年8月15日推出Windows 95。直到這時,Windows系統依然是建立在MS-DOS的基礎上,因此消費者莫不期待微軟在2000年所推出的Windows 2000上,因為它才算是第一個脫離MS-DOS基礎的圖形化OS。
下圖為Windows NT系統的架構:在硬體階層之上,有一個由微核心直接接觸的硬體抽象層(HAL),而不同的驅動程式以模組的形式掛載在核心上執行。因此微核心可以使用諸如輸入輸出、檔案系統、網路、資訊安全機制與虛擬記憶體等功能。而系統服務層提供所有統一規格的函式呼叫庫,可以統一所有副系統的實作方法。例如儘管POSIX與OS/2對於同一件服務的名稱與呼叫方法差異甚大,它們一樣可以無礙地實作於系統服務層上。在系統服務層之上的副系統,全都是使用者模式,因此可以避免使用者程式執行非法行動。
Over Personalities so mentioned was then copied the interfaces of existing systems, first for Microsoft own, new Win32-System, in addition, for OS/2 (without diagram) and POSIX.1, thus from a standard, which should actually standardize Unix systems. Personalities ran like user programs in the unprivilegierten user mode. The DOS subsystem was implemented in the form of processes, which in each case represented a complete PC with MS-DOS as virtual machine; whereupon could with a special version of Windows 3,1, which Windows on Windows, also Win16-Programme are implemented. Windows on Windows faded in in addition the windows of the Win16-Programme into the Win32-Subsystem, which administered the expenditure for diagram. The system permitted therefore the execution of programs both for MS-DOS and for the older Windows operating systems, however under perfect control of the operating system. This applied however only to the implementation to Intel-80386-Prozessoren and their successor. Programs, which access directly the hardware, remained however outside forwards. In particular many plays could not be implemented therefore under Windows NT, at least up to the conception of WinG, which was renamed later in DirectX. Without the possibility of a direct access to the diagram hardware and/or - driver was first limited to the older Windows versions the programming of efficient Actionspielen. Windows NT appeared in the versions 3,1, 3,5, 3,51 and 4.0. Windows 2000 represented an advancement of Windows NT. Also Windows XP, Windows server 2003 and Windows Vista develop on the structure of Windows NT.
The growing complexity of embedded devices has led to increasing use of embedded operating systems.
[编辑] 2000年代
Modern operating systems usually have a Graphical user interface which uses a pointing device such as a mouse or stylus for input in addition to the keyboard. Older models and Operating Systems not designed for direct-human interaction (such as web-servers) generally use a Command line interface (or CLI) typically with only the keyboard for input. Both models are centered around a "shell" which accepts and processes commands from the user (eg. clicking on a button, or a typed command at a prompt). The choice of OS may depend on the hardware architecture, specifically the CPU, with only Linux and BSD running on almost any CPU. Windows NT, which is no longer supported, was ported to the DEC Alpha and MIPS Magnum. Since the early 1990s, the choice for personal computers has largely been limited to the Microsoft Windows family, the Unix-like family and Linux, of which Linux and Mac OS X are becoming the major alternatives. Mainframe computers and embedded systems use a variety of different operating systems, many with no direct connection to Windows or Unix.
[编辑] 個人電腦
- IBM PC compatible - Microsoft Windows, Unix variants, and Linux variants.
- Apple Macintosh - Mac OS X (a Unix variant), Windows (x86 variants only), Linux and BSD
[编辑] 大型機|大型電腦
The earliest operating systems were developed for mainframe computer architectures in the 1960's. The enormous investment in software for these systems caused most of the original computer manufacturers to continue to develop hardware and operating systems that are compatible with those early operating systems. Those early sytems pioneered many of the features of modern operating systems. Mainframe operating systems that are still supported include:
- Burroughs MCP-- B5000,1961 to Unisys Clearpath/MCP, present.
- IBM OS/360 -- IBM System/360, 1964 to IBM zSeries, present
- UNIVAC EXEC 8 -- UNIVAC 1108, 1964, to Unisys Clearpath IX, present.
Modern mainframes typically also run Linux or Unix variants.
[编辑] 嵌入式系統
Embedded systems use a variety of dedicated operating systems and limited versions of Linux or other operating systems. In some cases, the "operating system" software is directly linked to the application to produce a monolithic special-purpose program. In the simplest embedded systems, there is no distinction between the OS and the application.
[编辑] 類Unix系統
The Unix-like family is a diverse group of operating systems, with several major sub-categories including System V, BSD, and Linux. The name "Unix" is a trademark of The Open Group which licenses it for use with any operating system that has been shown to conform to their definitions. "Unix-like" is commonly used to refer to the large set of operating systems which resemble the original Unix.
Unix systems run on a wide variety of machine architectures. They are used heavily as server systems in business, as well as workstations in academic and engineering environments. Free software Unix variants, such as Linux and BSD, are increasingly popular. They are used in the desktop market as well, for example Ubuntu, but mostly by hobbyists.
Some Unix variants like HP's HP-UX and IBM's AIX are designed to run only on that vendor's proprietary hardware. Others, such as Solaris, can run on both proprietary hardware and on commodity x86 PCs. Apple's Mac OS X, a microkernel BSD variant derived from NeXTSTEP, Mach, and FreeBSD, has replaced Apple's earlier (non-Unix) Mac OS. Over the past several years, free Unix systems have supplanted proprietary ones in most instances. For instance, scientific modeling and computer animation were once the province of SGI's IRIX. Today, they are dominated by Linux-based or Plan 9 clusters. [來源請求]
The team at Bell Labs that designed and developed Unix went on to develop Plan 9 and Inferno, which were designed for modern distributed environments. They had graphics built-in, unlike Unix counterparts that added it to the design later. Plan 9 did not become popular because, unlike many Unix distributions, it was not originally free. It has since been released under Free Software and Open Source Lucent Public License, and has an expanding community of developers. Inferno was sold to Vita Nuova and has been released under a GPL/MIT license.
[编辑] 微軟Windows
Microsoft Windows 系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统.现在的Windows系统,如Windows 2000, Windows 是建立于现代的Windows NT 核心.NT核心是按照OS/2指定和从OpenVMS上借用来的. Windows 可以在32位和64位的Intel 和AMD 的处理器上运行, 但是早期的版本也可以在DEC Alpha, MIPS, and PowerPC 构架上运行。 虽然由于人们对于开源系统兴趣的提升Windows的市场占有率由所下降,但是到2004年为止Windows操作系统在世界范围内占据了桌面操作系统90%的市场。[1] Windows系统也被用在低端和中端服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。 Windows家族的最新成员是WindowsXP.WindowsXP在2001年10月25日发布,2004年8月24日发布最新的升级包WindowsXP Service Pack 2. 巍然现在正在研发Windows的最新平台,命名为Windows Vista(开发代码为Longhorn).Windwos Vista增加了许多功能,尤其是系统的安全性和网络管理功能.Windows Vista拥有界面华丽的Aero Glass.
[编辑] 其他
Mainframe operating systems, such as IBM's z/OS, and embedded operating systems such as VxWorks, eCos, and Palm OS, are usually unrelated to Unix and Windows, except for Windows CE, Windows NT Embedded 4.0 and Windows XP Embedded which are descendants of Windows, and several *BSDs, and Linux distributions tailored for embedded systems. OpenVMS from Hewlett-Packard (formerly DEC), is still under active development.
Older operating systems which are still used in niche markets include OS/2 from IBM; Mac OS, the non-Unix precursor to Apple's Mac OS X; BeOS; XTS-300.
Popular prior to the Dot COM era, operating systems such as AmigaOS and RISC OS continue to be developed as minority platforms for enthusiast communities and specialist applications.
Research and development of new operating systems continues. GNU Hurd is designed to be backwards compatible with Unix, but with enhanced functionality and a microkernel architecture. Microsoft Singularity is a research project to develop an operating system with better memory protection based on the .Net managed code model.
至2005年为止,用于通用计算机上的分布的操作系统主要两个家族:类Unix家族和微软Windows家族。而主机系统和嵌入式操作系统使用多样的系统,并且很多和Windows、Unix都没有直接的联系。
类Unix家族包括多个组织的操作系统,其中有几个主要的子类包括System V、BSD和Linux。这里'Unix'是一个商标,开发组织允许使用操作系统在一个定义前提下自由地开发。这名字是通用大型设置操作系统类似组织Unix。Unix系统运行在从巨型机到嵌入式系统的多种机器架构上。Unix主要使用于重要的商务服务器系统以及学院和工程环境中的工作站之上。和AT&T Unix不同,自由软件比如Linux和BSD逐步开始流行,并且开始进入桌面操作系统领域。和一些Unix操作系统不同,像惠普公司的HPUX和IBM公司的AIX是设计仅运行在客户购买的设备上,其中有一些特殊的(比如昇陽的Solaris)可以运行在客户购买设备和基于工业标准的PC上。蘋果電腦的Mac OS X是一个BSD特例,以取代早期小型市场上的苹果公司Mac OS,众多流行的Unix操作系统正在走向一体。
微软公司的Windows操作系统家族起源于早期的IBM PC环境中的MS-DOS,现在版本是基于新的Windows NT内核,第一次是在OS/2中制定。和Unix不同,Windows只能运行在32位和64位的x86 CPU(如Intel或者AMD的芯片)上,尽管早期有版本运行于DEC Alpha,MIPS 和 PowerPC体系结构。今天Windows是一个流行的操作系统,在全球桌面市场中占有90%左右的份额,同时在中低端服务器市场也有广泛的应用,如Web服务器和数据库服务器。
大型机系统,比如IBM公司的Z/OS,和嵌入式操作系统比如QNX、eCOs和PalmOS都是和Unix和Windows无关的操作系统,而Windows CE、Windows NT Embedded 4.0和Windows XP Embedded都是和Windows相关的。
老的操作系统停留在市场包括类似IBM Windows的OS/2、来自惠普的VMS(以前的DEC);苹果公司的Mac OS操作系统、非Unix先驱苹果公司Mac OS X,以及AmigaOS,第一个图形用户界面的操作系统,包括对于普通用户的高级的多媒体能力。
[编辑] 功能
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以現代觀點而言,一個標準個人電腦的OS應該提供以下的功能:
|
|
[编辑] 行程管理
不管是常駐程式或者應用程式,他們都以行程為標準執行單位。當年運用馮紐曼架構建造電腦時,每個中央處理器最多只能同時執行一個行程。早期的OS(例如DOS)也不允許任何程式打破這個限制,且DOS同時只有執行一個行程(雖然DOS自己宣稱他們擁有終止並等待駐留(TSR)能力,可以部分且艱難地解決這問題)。現代的作業系統,即使只擁有一個CPU,也可以利用多行程(multitask)功能同時執行複數行程。行程管理指的是作業系統調整複數行程的功能。
由於大部分的電腦只包含一顆中央處理器,在單核心(Core)的情況下多行程只是簡單迅速地切換各行程,讓每個行程都能夠執行,在多核心或多處理器的情況下,所有行程透過許多協同技術在各處理器或核心上轉換。越多行程同時執行,每個行程能分配到的時間比率就越小。很多OS在遇到此問題時會出現諸如音效斷續或滑鼠跳格的情況(稱做崩潰(Thrashing),一種OS只能不停執行自己的管理程式並耗盡系統資源的狀態,其他使用者或硬體的程式皆無法執行)。行程管理通常實踐了分時的概念,大部分的OS可以利用指定不同的特權等級(priority),為每個行程改變所佔的分時比例。特權越高的行程,執行優先順序越高,單位時間內佔的比例也越高。互動式OS也提供某種程度的回饋機制,讓直接與使用者互動的行程擁有較高的特權值。
[编辑] 記憶體管理
根據帕金森定律:「你給程式再多記憶體,程式也會想盡辦法耗光」,因此程式設計師通常希望系統給他無限量且無限快的記憶體。大部分的現代電腦記憶體架構都是階層式的,最快且數量最少的暫存器為首,然後是快取、記憶體以及最慢的磁碟儲存裝置。而OS的記憶體管理提供尋找可用的記憶空間、配置與釋放記憶空間以及交換記憶體和低速儲存裝置的內含物……等功能。此類又被稱做虛擬記憶體管理的功能大幅增加每個行程可獲得的記憶空間(通常是4GB,既使實際上RAM的數量遠少於這數目)。然而這也帶來了微幅降低執行效率的缺點,嚴重時甚至也會導致行程崩潰。
記憶體管理的另一個重點活動就是藉由CPU的幫助來管理虛擬位置。如果同時有許多行程儲存於記憶裝置上,作業系統必須防止它們互相干擾對方的記憶體內容(除非透過某些協定在可控制的範圍下操作,並限制可存取的記憶體範圍)。分割記憶體空間可以達成目標。每個行程只會看到整個記憶體空間(從0到記憶體空間的最大上限)被配置給它自己(當然,有些位置被OS保留而禁止存取)。CPU事先存了幾個表以比對虛擬位置與實際記憶體位置,這種方法稱為分頁(en:paging)配置。
藉由對每個行程產生分開獨立的位置空間,OS也可以輕易地一次釋放某行程所佔據的所有記憶體。如果這個行程不釋放記憶體,OS可以結束行程並將記憶體自動釋放。
[编辑] 磁碟與檔案系統
詳細的說明,請參照檔案系統。
所謂的檔案系統,通常指稱管理磁碟資料的系統,可將資料以目錄或檔案的型式儲存。每個檔案系統都有自己的特殊格式與功能,例如日誌管理或不需磁碟重整。
OS擁有許多種內建檔案系統。例如Linux擁有非常廣泛的內建檔案系統,如ext2、ext3、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS與Google檔案系統。Linux也支援非原生檔案系統,例如XFS、JFS、FAT家族與NTFS。另一方面,Windows能支援的檔案系統只有FAT12、FAT16、FAT32與NTFS。NTFS系統是Windows上最可靠與最有效率的檔案系統。其他的FAT家族都比NTFS老舊,且對於檔案長度與分割磁碟能力都有很大限制,因此造成很多問題。而UNIX的檔案系統多半是UFS,而UNIX中的一個分支Solaris最近則開始支援一種新式的ZFS
大部份上述的檔案系統都有兩種建置方法。系統可以以日誌式(Journaling file system)或非日誌式建置。日誌式檔案系統可以以較安全的手法執行系統回復。如果一個沒有日誌式建置的檔案系統遇上突然的系統崩潰,導致資料建立在一半時停頓,則此系統需要特殊的檔案系統檢查工具才能復原;日誌式則可自動回復。微軟的NTFS與Linux的ext3、reiserFS與JFS都是日誌式檔案系統。
每個檔案系統都實作相似的目錄/子目錄架構,但在相似之下也有許多不同點。微軟使用「\」符號以建立目錄/子目錄關係,且檔案名稱忽略其大小寫差異;UNIX系統則是以「/」建立目錄架構,且檔案名稱大小寫有差異。
[编辑] 網路
許多現代的OS都具備操作主流網路通訊協定TCP/IP的能力。也就是說這樣的作業系統可以進入網路世界,並且與其他系統分享諸如檔案、印表機與掃描器等資源。
許多OS也支援多個過去網路啟蒙時代的各路網路通訊協定,例如IBM建立的SNA、DEC在它所生產的系統所設定的DECnet架構與微軟為Windows製作的特殊通訊協定。還有許多為了特殊功能而研發的通訊協定,例如可以在網路上提供檔案存取功能的NFS系統。現今大量用於影音串流(Streaming media)及遊戲訊息傳送的UDP協定等。
[编辑] 安全
大多數OS都含有某種程度的資訊安全機制。資訊安全機制主要基於兩大理念:
- OS提供外界直接或間接存取數種資源的管道,例如本地端磁碟機的檔案、受保護的特權系統呼叫(System call)、使用者的隱私資料與系統執行的程式所提供的服務。
- OS有能力認證(Authorization)資源存取的請求。允許通過認證的請求並拒絕無法通過的非法請求,並將適當的權力授權(Authentication)給此請求。有些系統的認證機制僅簡略地把資源分為特權或非特權,且每個請求都有獨特的身份辨識號碼,例如使用者名稱。資源請求通常分成兩大種類:
除了允許/拒絕形式的安全機制,一個高安全等級的系統也會提供記錄選項,允許記錄各種請求對資源存取的行為(例如「誰曾經讀了這個檔案?」)。
肇因於軍方與商業組織將敏感資料記錄在電腦上,安全機制在OS歷史上是一個被長久關注與討論的問題。美國國防部(DoD)便創立了《可信賴之計算機系統評鑑程序》(TCSEC),此手冊確立了評鑑安全機制成效的基本原則。這對OS作者來說非常重要,因為TCSEC是用於評鑑、分類與選拔出用於處理、儲存與獲取敏感或機密資料的電腦系統的標準程序。
[编辑] 內部資訊安全
內部資訊安全可視為防止正在執行的程式任意存取系統資源的手段。大多OS讓普通程式可直接操作電腦的CPU,所以產生了一些問題,例如怎樣把可如OS一樣處理事務、執行同樣特殊指令的程式強迫停止,畢竟在此情境下,OS也只是另一個平起平坐的程式。為通用OS所生產的CPU通常於硬體層級上實踐了一定程度的特殊指令保護概念。通常特權層級較低的程式想要執行某些特殊指令時會被阻斷,例如直接存取像是硬碟之類的外部裝置。因此,程式必須得經由詢問OS,讓OS執行特殊指令來存取磁碟。因此OS就有機會檢查此程式的識別身份,並依此接受或拒絕它的請求。
在不支援特殊指令架構的硬體上,另一個也是唯一的保護方法,則是OS並不直接利用CPU執行使用者的程式,而是藉由模擬一個假CPU或提供一p-Code系統(偽代碼執行機),像是Java一樣讓程式在虛擬機器上執行。
內部安全機制在多使用者電腦上特別重要:它允許每個系統使用者擁有自己個人的檔案與目錄,且其他使用者不能任意存取或刪除。因為任何程式都可能繞過OS的監控,更有可能繞過側錄程式的監控,擁有強制力的內部安全機制在側錄啟動時也非常重要。
[编辑] 外部資訊安全
通常一個作業系統會為其他網路上的電腦或使用者提供(主持)各種服務。這些服務通常藉由埠或OS網路地址後的數字存取點提供。通常此服務包括提供檔案共享(NTFS)、列印共享、電子郵件、網頁服務與檔案傳輸協定(FTP)。 外部資訊安全的最前線,是諸如防火墙等的硬體裝置。在OS內部也常設置許多種類的軟體防火牆。軟體防火牆可設定接受或拒絕在OS上執行的服務與外界的連線。因此任何人都可以安裝並執行某些不安全的網路服務,例如Telnet或FTP,並且設定除了某些自用通道之外阻擋其他所有連線,以達成防賭不良連線的機制。
[编辑] 使用者圖形介面
今日大部分的OS都包含圖形使用者介面。有幾類較舊的OS將GUI與核心緊密結合,例如最早的Windows與Mac OS實作產品。此種手法可提供較快速的圖形回應能力,且實作時不需切割模組因而較為省工,但是會有強烈副作用,例如圖形系統崩潰將導致整個系統崩潰,例如死亡藍螢幕。許多近代的OS已模組化,將圖形介面的副系統與核心分開(已知Linux與Mac OS X原先就是如此設計,而某些擴充版本的Windows終於也採用此手法)。
許多OS允許使用者安裝或創造任何他們喜歡的圖形介面[1]。大部分的Unix與Unix衍生系統(BSD、Linux與Minix)通常會安裝X Window系統配合GNOME或KDE桌面環境。而某些OS就沒有這麼彈性的GUI,例如Windows。這類的OS只能透過外加的程式來改變其GUI,甚或根本只能改變諸如選單風格或顏色配置等部分。
GUI與時並進,例如Windows在每次新版本上市時就會將其GUI改頭換面,而Mac OS的GUI也在Mac OS X上市時出現重大轉變。
[编辑] 驅動程式
所謂的驅動程式是指某類設計來與硬體互動的電腦軟體。通常是一設計完善的裝置互動介面,利用與此硬體連接的電腦匯排流或通訊子系統,提供對此裝置下令與接收資訊的功能;以及最終目的,將訊息提供給OS或應用程式。驅動程式是針對特定硬體與特定OS設計的軟體,通常以作業系統核心模組、應用軟體包或普通電腦程式的形式在OS核心底下執行,以達到通透順暢地與硬體互動的效果,且提供硬體在處理非同步的時間依賴性介面(asynchronous time-dependent hardware interface)時所需的中斷處理常式(Interrupt handler)。
設計驅動程式的主要目的在於操作抽象化,任何硬體模組,既使是同一類的裝置,在硬體設計面上也有巨大差異。廠商推出的較新模組通常更可靠更有效率,控制方法也會有所不同。電腦與其OS每每不能預期那些現有與新裝置的變異之處,因此無法知道其操作方法。為解決此問題OS通常會主動制訂每種裝置該有的操作方式,而驅動程式功能則是將那些OS制訂的行為描述,轉譯為可讓裝置瞭解的自訂操作手法。
理論上適合的驅動程式一旦安裝,相對應的新裝置就可以無誤地執行。此新驅動程式可以讓此裝置完美地切合在OS中,讓使用者察覺不到這是OS原本沒有的功能。
[编辑] 结构
操作系统理论研究者有时把操作系统分成四大部分:
- 驱动程序 - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
- 内核 - 操作系统之最核心部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
- 支承库 - (亦作“接口库”)是一系列特殊的程序库,它们指责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
- 外围 - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和虚拟机(Virtual Machine)结构。
[编辑] 分类
[编辑] 内核结构
- 主条目: 内核
内核是操作系统最核心最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。
内核的结构可以分为[[内核#单内核|]](monolithic kernel)、微内核(microkernel)、超微内核(nanokernel)、以及外核(exokernel)等。详情参见操作系统内核。
单内核结构是操作系统中各核心部件杂然混居的形态,该结构于1960年代(亦有1950年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。
微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。
[编辑] 通用与专用、嵌入式
通用操作系统是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。
[编辑] 实时与非实时
“实时操作系统”(Real Time OS)泛指所有据有一定实时资源调度以及通讯能力的操作系统。而所谓“实时”,不同语境中往往有着非常不同的意义。某些时候仅仅用作“高性能”的同义词。但在操作系统理论中“实时性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。比如,如果说某个操作系统提供实时内存分配操作,那也就是说一个内存分配操作所用时间(及空间)无论如何也不会超出操作系统所承诺的上限。实时性在某些领域非常重要,比如在工业控制、医疗器材、影音频合成、以及军事领域,实时性都是无可或缺的特性。
常用实时操作系统有QNX、VxWorks、RTLinux等等,而Linux、多数UNIX、以及多数Windows家族成员等都属于非实时操作系统。操作系统整体的实时性通常依仗内核的实时能力,但有时也可在非实时内核上建立实时操作系统,很多在Windows上建立的实时操作系统就属于此类。
在POSIX标准中专有一系用于规范实时操作系统的API,其中包括POSIX.4、POSIX.4a、POSIX.4b(合称POSIX.4)以及POSIX.13等等。符合POSIX.4的操作系统通常被认可为实时操作系统(但实时操作系统并不需要符合POSIX.4标准)。
[编辑] 多任务与单任务
[编辑] 8位、16位、32位、64位
所謂8位、16位、32位、64位等術語有時指匯流排寬度,有時指指令寬度(在定長指令集中),而在作業系統理論中主要是指記憶體定址的寬度。如果記憶體的定址寬度是16位,那麼每一個記憶體地址可以用16個二進位位來表示,也就是說可以在64KB的範圍內定址。同樣道理32位的寬度對應4GB的定址範圍,64位的寬度對應16 Exabyte的定址範圍。記憶體定址範圍並非僅僅是對作業系統而言的,其他類型的軟件的設計有時也會被定址範圍而影響。但是在作業系統的設計與實現中,定址範圍卻有着更為重要的意義。
在早期的16位作業系統中,由於64KB的定址範圍太小,大都都採用「段」加「線性地址」的二維平面地址空間的設計。分配記憶體時通常需要考慮「段置換」的問題,同時,應用程序所能夠使用的地址空間也往往有比較小的上限。
在32位作業系統中,4GB的定址範圍對於一般應用程序來說是綽綽有余的,因而,通常使用一維的線性地址空間,而不使用「段」。
[编辑] 参看
[编辑] 註釋
- ↑ 各項多采多姿的KDE/GNOME桌面快照http://freesf.tw/modules/xcgal/thumbnails.php?album=lastup&cat=0&page=1
[编辑] 外部链接
- Deitel, Harvey M.; Deitel, Paul; Choffnes, David (2004). Operating Systems, Upper Saddle River, NJ: Pearson/Prentice Hall. ISBN 0131828274.
- Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2004). Operating System Concepts, Hoboken, NJ: John Wiley & Sons. ISBN 0471694665.(俗稱恐龍書,OS教科書聖經本)
- Tanenbaum, Andrew S.; Woodhull, Albert S. (2006). Operating Systems. Design and Implementation, Upper Saddle River, N.J.: Pearson/Prentice Hall. ISBN 0131429388.(Linux由此書而啟發,可惜新版本將實作內容移除)
- Stallings, William (2005). Operating Systems: Internals and Design Principles, 5/E, Prentice Hall. ISBN 0131479547.
- 簡略OS介紹的教學網站。
- OSDP,所有作業系統的文件網站(英文)。
- 作業系統原理介紹(德文)。
- 所有非Unix OS家族的歷史樹(英文)。
- Unix OS家族的歷史樹(英文)。
- Windows的歷史(英文)。
- TLDP,Linux核心徹底講解,適用於想要徹底了解OS核心結構者。