作業系統 -電腦管理控製程式

作業系統

作業系統是管理電腦硬體資源,控製其他程式運行並為使用者提供互動操作介面的系統軟體的集合。作業系統是電腦系統的關鍵組成部分,負責管理與配置記憶體、決定系統資源供需的優先次序、控製輸入與輸出設備、操作網路與管理檔案系統等基本任務。作業系統的種類很多,各種設備安裝的作業系統可從簡單到復雜,可從手機的嵌入式作業系統到超級電腦的大型作業系統。目前流行的現代作業系統主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少數作業系統,大部分作業系統都為類Unix作業系統。
  • 中文名稱
    作業系統
  • 外文名稱
    Operating System
  • 英文簡稱
    OS
  • 組成部分
    核心、驅動程式、接口庫、外圍
  • 常見系統
    Android, iOS, Linux, Windows

系統簡介

​作業系統(英語:Operating System,簡稱OS)是管理和控製電腦硬體與軟體資源的電腦程式,是直接運行在“裸機”上的最基本的系統軟體,任何其他軟體都必須在作業系統的支持下才能運行。作業系統所處位置作系統是使用者和電腦的接口,同時也是電腦硬體和其他軟體的接口。作業系統的功能包括管理電腦系統的硬體、軟體及資料資源,控製程式運行,改善人機介面,為其它套用軟體提供支持等,使電腦系統所有資源最大限度地發揮作用,提供了各種形式的使用者介面,使使用者有一個好的工作環境,為其它軟體的開發提供必要的服務和相應的接口。

作業系統的種類相當多,各種設備安裝的作業系統可從簡單到復雜,可分為智慧型卡作業系統即時作業系統、感測器節點作業系統、嵌入式作業系統、個人電腦作業系統、多處理器作業系統、網路作業系統和大型機作業系統。[1]按套用領域劃分主要有三種:桌面作業系統伺服器作業系統和嵌入式作業系統。

桌面作業系統

桌面作業系統主要用于個人電腦上。個人電腦市場從硬體架構上來說主要分為兩大陣營,PC機與Mac機,從軟體上可主要分為兩大類,分別為類Unix作業系統和Windows作業系統:

1、Unix和類Unix作業系統:Mac OS X,Linux發行版(如Debian,Ubuntu,Linux Mint,openSUSE,Fedora等);

2、微軟公司Windows作業系統:Windows XP,Windows Vista,Windows 7,Windows 8,Windows NT等。

伺服器作業系統 

伺服器作業系統一般指的是安裝在大型電腦上的作業系統,比如Web伺服器、套用伺服器資料庫伺服器等。伺服器作業系統主要集中在三大類:

1、Unix系列:SUN Solaris,IBM-AIX,HP-UX,FreeBSD等;

2、Linux系列:Red Hat Linux,CentOS,Debian,Ubuntu等;

3、Windows系列:Windows Server 2003,Windows Server 2008,Windows Server 2008 R2等。

嵌入式作業系統

嵌入式作業系統是套用在嵌入式系統的作業系統。嵌入式系統廣泛套用在生活的各個方面,涵蓋範圍從便攜設備到大型固定設施,如數碼相機、手機、平板電腦、家用電器、醫療設備交通燈、航空電子設備和工廠控製設備等,越來越多嵌入式系統安裝有即時作業系統。

在嵌入式領域常用的作業系統有嵌入式Linux、Windows Embedded、VxWorks等,以及廣泛使用在智慧型手機或平板電腦等消費電子產品的作業系統,如Android、iOS、Symbian、Windows Phone和BlackBerry OS等。

發展歷史

1980年代前

第一部電腦並沒有作業系統。這是由于早期個人電腦的建立方式(如同建造機械算盤)與效能不足以執行如此程式。

但在1947年發明了電晶體,以及莫裏斯·威爾克斯(Maurice Vincent Wilkes)發明的微程式方法,使得電腦不再是機械設備,而是電子產品。系統管理工具以及簡化硬體操作流程的程式很快就出現了,且成為作業系統的基礎。

到了1960年代早期,商用電腦製造商製造了批次處理系統,此系統可將工作的建置、調度以及執行序列化。此時,廠商為每一台不同型號的電腦創造不同的作業系統,因此為某電腦而寫的程式無法移植到其他電腦上執行,即使是同型號的電腦也不行。

到了1964年,IBM推出了一系列用途與價位都不同的大型電腦IBM System/360,大型主機的經典之作。而它們都共享代號為OS/360的作業系統(而非每種產品都用量身訂做的作業系統)。讓單一作業系統適用于整個系列的產品是System/360成功的關鍵,且實際上IBM大型系統便是此系統的後裔;為System/360所寫的應用程式依然可以在現代的IBM機器上執行!

OS/360也包含另一個優點:永久貯存設備—硬碟驅動器的面世(IBM稱為DASD(Direct access storage device))。另一個關鍵是分時概念的建立:將大型電腦珍貴的時間資源適當分配到所有使用者身上。分時也讓使用者有獨佔整部機器的感覺;而Multics的分時系統是此時眾多新作業系統中實踐此觀念最成功的。

1963年,奇異公司與貝爾實驗室合作以PL/I語言建立的Multics,是激發1970年代眾多作業系統建立的靈感來源,尤其是由AT&T貝爾實驗室的丹尼斯·裏奇與肯·湯普遜所建立的Unix系統,為了實踐平台移植能力,此作業系統在1969年由C語言重寫;另一個廣為市場採用的小型電腦作業系統是VMS。

20世紀80年代

第一代微型電腦並不像大型電腦或小型電腦,沒有裝設作業系統的需求或能力;它們隻需要最基本的作業系統,通常這種作業系統都是從ROM讀取的,此種程式被稱為監視程式(Monitor)。

1980年代,家用電腦開始普及。通常此時的電腦擁有8-bit處理器加上64KB記憶體、螢幕、鍵盤以及低音質喇叭。而80年代早期最著名的套裝電腦為使用微處理器6510(6502晶片特別版)的Commodore C64。此電腦沒有作業系統,而是以8KB唯讀記憶體BIOS初始化彩色螢幕、鍵盤以及軟碟機和印表機。它可用8KB唯讀記憶體BASIC語言來直接操作BIOS,並依此撰寫程式,大部分是遊戲。此BASIC語言的解釋器勉強可算是此電腦的作業系統,當然就沒有核心或軟硬體保護機製了。此電腦上的遊戲大多跳過BIOS層次,直接控製硬體。

早期最著名的磁碟啓動型作業系統是CP/M,它支持許多早期的微電腦,且被MS-DOS大量抄襲其功能。

最早期的IBM PC其架構類似C64。當然它們也使用了BIOS以初始化與抽象化硬體的操作,甚至也附了一個BASIC解釋器!但是它的BASIC優于其他公司產品的原因在于他有可攜性,並且兼容于任何符合IBM PC架構的機器上。這樣的PC可利用Intel-8088處理器(16-bit暫存器)定址,並最多可有1MB的記憶體,然而最初隻有640KB。軟式磁碟機取代了過去的磁帶機,成為新一代的儲存設備,並可在他512KB的空間上讀寫。為了支持更進一步的檔案讀寫概念,磁碟作業系統(Disk Operating System,DOS)因而誕生。此作業系統可以合並任意數量的磁區,因此可以在一張磁碟片上放置任意數量與大小的檔案。檔案之間以檔名區別。IBM並沒有很在意其上的DOS,因此以向外部公司購買的方式取得作業系統。

1980年微軟公司取得了與IBM的契約,並且收購了一家公司出產的作業系統,在將之修改後以MS-DOS的名義出品,此作業系統可以直接讓程式操作BIOS與檔案系統。到了Intel-80286處理器的時代,才開始實作基本的儲存設備保護措施。MS-DOS的架構並不足以滿足所有需求,因為它同時隻能執行最多一個程式(如果想要同時執行程式,隻能使用TSR的方式來跳過OS而由程式自行處理多任務的部份),且沒有任何記憶體保護措施。對驅動程式的支持也不夠完整,因此導致諸如音效設備必須由程式自行設定的狀況,造成不兼容的情況所在多有。某些操作的效能也是可怕地糟糕。許多應用程式因此跳過MS-DOS的服務程式,而直接存取硬體設備以取得較好的效能。雖然如此,但MS-DOS還是變成了IBM PC上面最常用的作業系統(IBM自己也有推出DOS,稱為IBM-DOS或PC-DOS)。MS-DOS的成功使得微軟成為地球上最賺錢的公司之一。

而1980年代另一個崛起的作業系統異數是Mac OS,此作業系統緊緊與麥金塔電腦捆綁在一起。此時一位施樂帕羅奧托研究中心員工Dominik Hagen訪問了蘋果電腦的史蒂夫·喬布斯,並且向他展示了此時施樂發展的圖形化使用者介面。蘋果電腦驚為天人,並打算向施樂購買此技術,但因帕羅奧托研究中心並非商業單位而是研究單位,因此施樂回絕了這項買賣。在此之後蘋果一致認為個人電腦的未來必定屬于圖形使用者介面,因此也開始發展自己的圖形化作業系統。現今許多我們認為是基本要件的圖形化接口技術與規則,都是由蘋果電腦打下的基礎(例如下拉式選單、桌面圖示、拖曳式操作與雙點擊等)。但正確來說,圖形化使用者介面的確是施樂創始的。

20世紀90年代

Apple I電腦,蘋果電腦的第一代產品。延續80年代的競爭,1990年代出現了許多影響未來個人電腦市場深厚的作業系統。由于圖形化使用者介面日趨繁復,作業系統的能力也越來越復雜與巨大,因此強韌且具有彈性的作業系統就成了迫切的需求。此年代是許多套裝類的個人電腦作業系統互相競爭的時代。

上一年代于市場崛起的蘋果電腦,由于舊系統的設計不良,使得其後繼發展不力,蘋果電腦決定重新設計作業系統。經過許多失敗的項目後,蘋果于1997年釋出新作業系統——MacOS的測試版,而後推出的正式版取得了巨大的成功。讓原先失意離開蘋果的Steve Jobs風光再現。

除了商業主流的作業系統外,從1980年代起在開放原碼的世界中,BSD系統也發展了非常久的一段時間,但在1990年代由于與AT&T的法律爭端,使得遠在芬蘭赫爾辛基大學的另一股開源作業系統——Linux興起。Linux核心是一個標準POSIX核心,其血緣可算是Unix家族的一支。Linux與BSD家族都搭配GNU計畫所發展的應用程式,但是由于使用的許可證以及歷史因素的作弄下,Linux取得了相當可觀的開源作業系統市佔率,而BSD則小得多。

相較于MS-DOS的架構,Linux除了擁有傲人的可移植性(相較于Linux,MS-DOS隻能運行在Intel CPU上),它也是一個分時多進程核心,以及良好的記憶體空間管理(普通的進程不能存取核心區域的記憶體)。想要存取任何非自己的記憶體空間的進程隻能通過系統調用來達成。一般進程是處于使用者模式(User mode)底下,而執行系統調用時會被切換成核心模式(Kernel mode),所有的特殊指令隻能在核心模式執行,此措施讓核心可以完美管理系統內部與外部設備,並且拒絕無許可權的進程提出的請求。因此理論上任何應用程式執行時的錯誤,都不可能讓系統崩潰(Crash)。

另一方面,微軟對于更強力的作業系統呼聲的回應便是Windows NT于1993年的面世。

1983年開始微軟就想要為MS-DOS建構一個圖形化的作業系統應用程式,稱為Windows(有人說這是比爾·蓋茨被蘋果的Lisa電腦上市所刺激)。

一開始Windows並不是一個作業系統,隻是一個應用程式,其背景還是純MS-DOS系統,這是因為當時的BIOS設計以及MS-DOS的架構不甚良好之故。

在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令行模式,後來成為一個很成功但是曲高和寡的圖形化作業系統)項目中抽身,並且在1993年7月27日推出Windows NT 3.1,一個以OS/2為基礎的圖形化作業系統。

並在1995年8月15日推出Windows 95。

直到這時,Windows系統依然是建立在MS-DOS的基礎上,因此消費者莫不期待微軟在2000年所推出的Windows 2000上,因為它才算是第一個脫離MS-DOS基礎的圖形化作業系統。

Windows NT系統的架構為:在硬體階層之上,有一個由微核心直接接觸的硬體抽象層(HAL),而不同的驅動程式以模組的形式掛載在核心上執行。因此微核心可以使用諸如輸入輸出、檔案系統、網路、信息安全機製與虛擬記憶體等功能。而系統服務層提供所有統一規格的函式調用庫,可以統一所有副系統的實作方法。例如盡管POSIX與OS/2對于同一件服務的名稱與調用方法差異甚大,它們一樣可以無礙地實作于系統服務層上。在系統服務層之上的副系統,全都是使用者模式,因此可以避免使用者程式執行非法行動。

DOS副系統將每個DOS程式當成一進程執行,並以個別獨立的MS-DOS虛擬機器承載其運行環境。另外一個是Windows 3.1 NT 模擬系統,實際上是在Win32副系統下執行Win16程式。因此達到了安全掌控為MS-DOS與早期Windows系統所撰寫之舊版程式的能力。然而此架構隻在Intel 80386處理器及後繼機型上實作。且某些會直接讀取硬體的程式,例如大部分的Win16遊戲,就無法套用這套系統,因此很多早期遊戲便無法在Windows NT上執行。

Windows NT有3.1.3.5.3.51與4.0版。

Windows 2000是Windows NT的改進系列(事實上是Windows NT 5.0)、Windows XP(Windows NT 5.1)以及Windows Server 2003(Windows NT 5.2)、Windows Vista(Windows NT 6.0)、Windows 7(Windows NT 6.1)也都是立基于Windows NT的架構上。

而本年代漸漸成長並越趨復雜的嵌入式設備市場也促使嵌入式作業系統的成長。

現代作業系統通常都有一個使用的繪圖設備的圖形化使用者介面,並附加如滑鼠或觸控面版等有別于鍵盤的輸入設備。舊的OS或效能導向的伺服器通常不會有如此親切的接口,而是以命令行接口(CLI)加上鍵盤為輸入設備。以上兩種接口其實都是所謂的殼,其功能為接受並處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。

選擇要安裝的作業系統通常與其硬體架構有很大關系,隻有Linux與BSD幾乎可在所有硬體架構上執行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。

在1990年代早期,個人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。

大型機與嵌入式系統使用很多樣化的作業系統。大型主機有許多開始支持Java及Linux以便共享其他平台的資源。嵌入式系統百家爭鳴,從給Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的Windows CE都有。

今天

現代作業系統通常都有一個使用的繪圖設備的圖形使用者介面(GUI),並附加如滑鼠或觸控面版等有別于鍵盤的輸入設備。舊的OS或性能導向的伺服器通常不會有如此親切的介面,而是以命令行介面(CLI)加上鍵盤為輸入設備。以上兩種介面其實都是所謂的殼,其功能為接受並處理使用者的指令(例如按下一按鈕,或在命令提示列上鍵入指令)。

選擇要安裝的作業系統通常與其硬體架構有很大關系,隻有Linux與BSD幾乎可在所有硬體架構上運行,而Windows NT僅移植到了DEC Alpha與MIPS Magnum。在1990年代早期,個人電腦的選擇就已被局限在Windows家族、類Unix家族以及Linux上,而以Linux及Mac OS X為最主要的另類選擇,直至今日。

大型機與嵌入式系統使用很多樣化的作業系統。在伺服器方面Linux、UNIX和Windows Server佔據了市場的大部分份額。在超級電腦方面,Linux取代Unix成為了第一大作業系統,截止2012年6月,世界超級電腦500強排名中基于Linux的超級電腦佔據了462個席位,比率高達92%。隨著智慧型手機的發展,Android和iOS已經成為目前最流行的兩大手機作業系統

組成部分

作業系統理論研究者有時把作業系統分成四大部分:

驅動程式:最底層的、直接控製和監視各類硬體的部分,它們的職責是隱藏硬體的具體細節,並向其他部分提供一個抽象的、通用的接口。

核心:作業系統核心部分,通常運行在最高特權級,負責提供基礎性、結構性的功能。

接口庫:是一系列特殊的程式庫,它們職責在于把系統所提供的基本服務包裝成應用程式所能夠使用的編程接口(API),是最靠近應用程式的部分。例如,GNU C運行期庫就屬于此類,它把各種作業系統的內部編程接口包裝成ANSI C和POSIX編程接口的形式。

外圍:是指作業系統中除以上三類以外的所有其他部分,通常是用于提供特定高級服務的部件。例如,在微核心結構中,大部分系統服務,以及UNIX/Linux 中各種守護進程都通常被劃歸此列。

並不是所有的作業系統都嚴格包括這四大部分。例如,在早期的微軟視窗作業系統中,各部分耦合程度很深,難以區分彼此。而在使用外核結構的作業系統中,則根本沒有驅動程式的概念。

作業系統中四大部分的不同布局,也就形成了幾種整體結構的分野。常見的結構包括:簡單結構、層結構、微核心結構、垂直結構、和虛擬機結構。

核心結構

核心是作業系統最核心最基礎的構件,因而,核心結構往往對作業系統的外部特徵以及套用領域有著一定程度的影響。盡管隨著理論和實踐的不斷演進,作業系統高層特徵與核心結構之間的耦合有日趨縮小之勢,但習慣上,核心結構仍然是作業系統分類之常用標準。

核心的結構可以分為單核心、微核心、混合核心外核心等。

單核心(Monolithic kernel),又稱為宏核心。單核心結構是作業系統中各核心部件雜然混居的形態,該結構于1960年代(亦有1950年代初之說,尚存爭議),歷史最長,是作業系統核心與外圍分離時的最初形態。

微核心(Microkernel),又稱為微核心。微核心結構是1980年代產生出來的較新的核心結構,強調結構性部件與功能性部件的分離。20世紀末,基于微核心結構,理論界中又發展出了超微核心與外核心等多種結構。盡管自1980年代起,大部分理論研究都集中在以微核心為首的“新興”結構之上,然而,在套用領域之中,以單核心結構為基礎的作業系統卻一直佔據著主導地位

混合核心(Hybrid kernel)像微核心結構,隻不過它的組件更多的在核心態中運行,以獲得更快的執行速度。

外核心(Exokernel)的設計理念是盡可能的減少軟體的抽象化,這使得開發者可以專註于硬體的抽象化。外核心的設計極為簡化,它的目標是在于同時簡化傳統微核心的訊息傳遞機製,以及整塊性核心的軟體抽象層。

在眾多常用作業系統之中,除了QNX和基于Mach的UNIX等個別系統外,幾乎全部採用單核心結構,例如大部分的Unix、Linux,以及Windows(微軟聲稱Windows NT是基于改良的微核心架構的,盡管理論界對此存有抗告)。 微核心和超微核心結構主要用于研究性作業系統,還有一些嵌入式系統使用外核。

基于單核心的作業系統通常有著較長的歷史淵源。例如,絕大部分UNIX的家族史都可上溯至1960年代。該類作業系統多數有著相對古老的設計和實現(例如某些UNIX中存在著大量1970年代、1980年代的代碼)。另外,往往在性能方面略優于同一套用領域中採用其他核心結構的作業系統(但通常認為此種性能優勢不能完全歸功于單核心結構)。

主要功能

作業系統的主要功能是資源管理,程式控製和人機互動等。電腦系統的資源可分為設備資源和信息資源兩大類。設備資源指的是組成電腦的硬體設備,如中央處理器主存儲器,磁碟存儲器,印表機,磁帶存儲器,顯示器,鍵盤輸入設備和滑鼠等。信息資源指的是存放于電腦內的各種資料,如檔案,程式庫,知識庫,系統軟體和套用軟體等。

作業系統位于底層硬體與使用者之間,是兩者溝通的橋梁。使用者可以通過作業系統的使用者介面,輸入命令。作業系統則對命令進行解釋,驅動硬體設備,實現使用者要求。以現代觀點而言,一個標準個人電腦的OS應該提供以下的功能:

進程管理(Processing management)

記憶體管理(Memory management)

檔案系統(File system)

網路通訊(Networking)

安全機製(Security)

使用者介面(User interface)

驅動程式(Device drivers)

資源管理

系統的設備資源和信息資源都是作業系統根據使用者需求按一定的策略來進行分配和調度的。作業系統的存儲管理就負責把記憶體單元分配給需要記憶體的程式以便讓它執行,在程式執行結束後將它佔用的記憶體單元收回以便再使用。對于提供虛擬存儲的電腦系統,作業系統還要與硬體配合做好頁面調度工作,根據執行程式的要求分配頁面,在執行中將頁面調入和調出記憶體以及回收頁面等。

處理器管理或稱處理器調度,是作業系統資源管理功能的另一個重要內容。在一個允許多道程式同時執行的系統裏,作業系統會根據一定的策略將處理器交替地分配給系統內等待運行的程式。一道等待運行的程式隻有在獲得了處理器後才能運行。一道程式在運行中若遇到某個事件,例如啓動外部設備而暫時不能繼續運行下去,或一個外部事件的發生等等,作業系統就要來處理相應的事件,然後將處理器重新分配。

作業系統的設備管理功能主要是分配和回收外部設備以及控製外部設備按使用者程式的要求進行操作等。對于非存儲型外部設備,如印表機、顯示器等,它們可以直接作為一個設備分配給一個使用者程式,在使用完畢後回收以便給另一個需求的使用者使用。對于存儲型的外部設備,如磁碟、磁帶等,則是提供存儲空間給使用者,用來存放檔案和資料。存儲性外部設備的管理與信息管理是密切結合的。

信息管理是作業系統的一個重要的功能,主要是向使用者提供一個檔案系統。一般說,一個檔案系統向使用者提供建立檔案,復原檔案,讀寫檔案,開啟和關閉檔案等功能。有了檔案系統後,使用者可按檔案名稱存取資料而無需知道這些資料存放在哪裏。這種做法不僅便于使用者使用而且還有利于使用者共享公共資料。此外,由于檔案建立時允許建立者規定使用許可權,這就可以保證資料的安全性。

程式控製

一個使用者程式的執行自始至終是在作業系統控製下進行的。一個使用者將他要解決的問題用某一種程式語言編寫了一個程式後就將該程式連同對它執行的要求輸入到電腦內,作業系統就根據要求控製這個使用者程式的執行直到結束。作業系統控製使用者的執行主要有以下一些內容:調入相應的編譯程式,將用某種程式語言編寫的源程式編譯成電腦可執行的目標程式,分配記憶體儲等資源將程式調入記憶體並啓動,按使用者指定的要求處理執行中出現的各種事件以及與操作員聯系請示有關意外事件的處理等。

人機互動

作業系統的人機互動功能是決定電腦系統“友善性”的一個重要因素。人機互動功能主要靠可輸入輸出的外部設備和相應的軟體來完成。可供人機互動使用的設備主要有鍵盤顯示、滑鼠、各種模式識別設備等。與這些設備相應的軟體就是作業系統提供人機互動功能的部分。人機互動部分的主要作用是控製有關設備的運行和理解並執行通過人機互動設備傳來的有關的各種命令和要求。

進程管理

不管是常駐程式或者應用程式,他們都以進程為標準執行單位。當年運用馮紐曼架構建造電腦時,每個中央處理器最多隻能同時執行一個進程。早期的OS(例如DOS)也不允許任何程式打破這個限製,且DOS同時隻有執行一個進程(雖然DOS自己宣稱他們擁有終止並等待駐留(TSR)能力,可以部分且艱難地解決這問題)。現代的作業系統,即使隻擁有一個CPU,也可以利用多進程(multitask)功能同時執行復數進程。進程管理指的是作業系統調整復數進程的功能。

由于大部分的電腦隻包含一顆中央處理器,在單核心(Core)的情況下多進程隻是簡單迅速地切換各進程,讓每個進程都能夠執行,在多核心或多處理器的情況下,所有進程通過許多協同技術在各處理器或核心上轉換。越多進程同時執行,每個進程能分配到的時間比率就越小。很多OS在遇到此問題時會出現諸如音效斷續或滑鼠跳格的情況(稱做崩潰(Thrashing),一種OS隻能不停執行自己的管理程式並耗盡系統資源的狀態,其他使用者或硬體的程式皆無法執行)。進程管理通常實現了分時的概念,大部分的OS可以利用指定不同的特權等級(priority),為每個進程改變所佔的分時比例。特權越高的進程,執行優先權越高,單位時間內佔的比例也越高。互動式OS也提供某種程度的回饋機製,讓直接與使用者互動的進程擁有較高的特權值。

記憶體管理

根據帕金森定律:“你給程式再多記憶體,程式也會想盡辦法耗光”,因此程式員通常希望系統給他無限量且無限快的存儲器。大部分的現代電腦存儲器架構都是層次結構式的,最快且數量最少的暫存器為首,然後是高速快取、存儲器以及最慢的磁碟存儲設備。而作業系統的存儲器管理提供查找可用的記憶空間、配置與釋放記憶空間以及交換存儲器和低速存儲設備的內含物……等功能。此類又被稱做虛擬記憶體管理的功能大幅增加每個進程可獲得的記憶空間(通常是4GB,既使實際上RAM的數量遠少于這數目)。然而這也帶來了微幅降低運行效率的缺點,嚴重時甚至也會導致進程崩潰。

存儲器管理的另一個重點活動就是借由CPU的幫助來管理虛擬位置。如果同時有許多進程存儲于記憶設備上,作業系統必須防止它們互相幹擾對方的存儲器內容(除非通過某些協定在可控製的範圍下操作,並限製可訪問的存儲器範圍)。分區存儲器空間可以達成目標。每個進程隻會看到整個存儲器空間(從0到存儲器空間的最大上限)被配置給它自己(當然,有些位置被作業系統保留而禁止訪問)。CPU事先存了幾個表以比對虛擬位置與實際存儲器位置,這種方法稱為標簽頁(paging)配置。

借由對每個進程產生分開獨立的位置空間,作業系統也可以輕易地一次釋放某進程所佔據的所有存儲器。如果這個進程不釋放存儲器,作業系統可以退出進程並將存儲器自動釋放。

虛擬記憶體

虛擬記憶體是電腦系統記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的記憶體(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時存儲在外部磁碟存儲器上,在需要時進行資料交換。

在早期的單使用者單任務作業系統(如DOS)中,每台電腦隻有一個使用者,每次運行一個程式,且次序不是很大,單個程式完全可以存放在實際記憶體中。這時虛擬記憶體並沒有太大的用處。但隨著程式佔用存儲器容量的成長和多使用者多任務作業系統的出現,在程式設計時,在程式所需要的存儲量與電腦系統實際配備的主存儲器的容量之間往往存在著矛盾。例如,在某些低檔的電腦中,物理記憶體的容量較小,而某些程式卻需要很大的記憶體才能運行;而在多使用者多任務系統中,多個使用者或多個任務更新全部主存,要求同時執行獨斷程式。這些同時運行的程式到底佔用實際記憶體中的哪一部分,在編寫程式時是無法確定的,必須等到程式運行時才動態分配。[4]

為此,希望在編寫程式時獨立編址,既不考慮程式是否能在物理存儲中存放得下,也不考慮程式應該存放在什麽物理位置。而在程式運行時,則分配給每個程式一定的運行空間,由地址轉換部件將編程時的地址轉換成實際記憶體的物理地址。如果分配的記憶體不夠,則隻調入當前正在運行的或將要運行的程式塊(或資料塊),其餘部分暫時駐留在輔存中。

分類方法

作業系統種類繁多,很難用單一標準統一分類。

根據套用領域來劃分,可分為桌面作業系統、伺服器作業系統、嵌入式作業系統;

根據所支持的使用者數目,可分為單使用者作業系統(如MSDOS、OS/2.Windows)、多使用者作業系統(如UNIX、Linux、MVS);

根據源碼開放程度,可分為開源作業系統(如Linux、FreeBSD)和閉源作業系統(如Mac OS X、Windows);

根據硬體結構,可分為網路作業系統(Netware、Windows NT、OS/2 warp)、多媒體作業系統(Amiga)、和分散式作業系統等;

根據作業系統的使用環境和對作業處理方式來考慮,可分為批處理作業系統(如MVX、DOS/VSE)、分時作業系統( 如Linux、UNIX、XENIX、Mac OS X)、即時作業系統(如iEMX、VRTX、RTOS,RT WINDOWS);

根據存儲器定址的寬度可以將作業系統分為8位、16位、32位、64位、128位的作業系統。早期的作業系統一般隻支持8位和16位存儲器尋指寬度,現代的作業系統如Linux和Windows 7都支持32位和64位。

根據作業系統的技術復雜程度,可分為簡單作業系統、智慧型作業系統(見智慧型軟體)。所謂簡單作業系統,指的是電腦初期所配置的作業系統,如IBM公司的磁碟作業系統DOS/360和微型電腦的作業系統CP/M等。這類作業系統的功能主要是操作命令的執行,檔案服務,支持高級程式語言編譯程式和控製外部設備等。

相關詞條

相關搜尋

其它詞條