SOGO論壇

標題: 1980年代前作業系統歷史 [列印本頁]

作者: 秘書長    時間: 2010-11-23 15:17:08     標題: 1980年代前作業系統歷史

 

綜觀電腦之歷史,作業系統與電腦硬體的發展息息相關。作業系統之本意原為提供簡單的工作排序能力,後為輔助更新更複雜的硬體設施而漸漸演化。從最早的批次範式開始,分時機制也隨之出現,在多處理器時代來臨時,作業系統也隨之添加多處理器協調功能,甚至是分散式系統的協調功能。其他方面的演變也類似於此。另一方面,在個人電腦上,個人電腦之作業系統因襲大型電腦的成長之路,在硬體越來越複雜、強大時,也逐步實踐以往只有大型電腦才有的功能。
總而言之,作業系統的歷史就是一部解決電腦系統需求與問題的歷史。

第一部電腦並沒有作業系統。這是由於早期電腦的建立方式(如同建造機械算盤)與效能不足以執行如此程式。但在1947年發明了電晶體,以及莫里斯·威爾克斯發明的微程式方法,使得電腦不再是機械裝置,而是電子產品。系統管理工具以及簡化硬體操作流程的程式很快就出現了,且成為作業系統的濫觴。到了1960年代早期,商用電腦製造商製造了批次處理系統,此系統可將工作的建置、排程以及執行序列化。此時,廠商為每一台不同型號的電腦創造不同的作業系統,因此為某電腦而寫的程式無法移植到其他電腦上執行,即使是同型號的電腦也不行。
到了1964年IBM System/360推出了一系列用途與價位都不同的大型電腦,而它們都共用代號為OS/360的作業系統(而非每種產品都用量身訂做的作業系統)。讓單一作業系統適用於整個系列的產品是System/360成功的關鍵,且實際上IBM目前的大型系統便是此系統的後裔;為System/360所寫的應用程式依然可以在現代的IBM機器上執行!
OS/360也包含另一個優點:永久貯存裝置—硬碟機的面世(IBM稱為DASDDirect access storage device))。另一個關鍵是分時概念的建立:將大型電腦珍貴的時間資源適當分配到所有使用者身上。分時也讓使用者有獨佔整部機器的感覺;而Multics的分時系統是此時眾多新作業系統中實踐此觀念最成功的。
1963年奇異公司貝爾實驗室合作以PL/I語言建立的Multics[1],是激發1970年代眾多作業系統建立的靈感來源,尤其是由AT&T貝爾實驗室的丹尼斯·里奇肯·湯普遜所建立的Unix系統,為了實踐平台移植能力,此作業系統在1973年由C語言重寫;另一個廣為市場採用的小型電腦作業系統是VMS
作者: 秘書長    時間: 2010-11-23 15:20:05     標題: 1980年代(起)作業系統歷史

 

第一代微型電腦並不像大型電腦或小型電腦,沒有裝設作業系統的需求或能力;它們只需要最基本的作業系統,通常這種作業系統都是從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年微軟公司利用騙術[2]取得了與IBM的合約,並且收購了一家公司出產的作業系統,在將之修改後以MS-DOS的名義出品,此作業系統可以直接讓程式操作BIOS與檔案系統。到了Intel-80286處理器的時代,才開始實作基本的儲存裝置保護措施。MS-DOS的架構並不足以滿足所有需求,因為它同時只能執行最多一個程式(如果想要同時執行程式,只能使用ISR(中斷處理常式)的方式來跳過OS而由程式自行處理多工的部份),且沒有任何記憶體保護措施。對驅動程式的支援也不夠完整,因此導致諸如音效裝置必須由程式自行設置的狀況,造成不相容的情況所在多有。某些操作的效能也是可怕地糟糕。許多應用程式因此跳過MS-DOS的服務程式,而直接存取硬體裝置以取得較好的效能。雖然如此,但MS-DOS還是變成了IBM PC上面最常用的作業系統(IBM自己也有推出DOS,稱為IBM-DOS或PC-DOS)。MS-DOS的成功使得微軟成為地球上最賺錢的公司之一。
作者: 秘書長    時間: 2010-11-23 15:21:12     標題: 1990年代作業系統歷史

 

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

上一年代於市場崛起的蘋果電腦,由於舊系統的設計不良,使得其後繼發展不力,蘋果電腦決定重新設計作業系統。經過許多失敗的專案後,蘋果於1997年釋出新作業系統——Mac OS X的測試版,而後推出的正式版取得了巨大的成功。讓原先失意離開蘋果的史提夫·賈伯斯風光再現。

除了商業主流的作業系統外,從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於1999年的面世。

1983年開始微軟就想要為MS-DOS建構一個圖形化的作業系統應用程式,稱為Windows(有人說這是比爾蓋茲被蘋果的Lisa電腦上市所刺激)。一開始Windows並不是一個作業系統,只是一個應用程式,其背景還是純MS-DOS系統,這是因為當時的BIOS設計以及MS-DOS的架構不甚良好之故。在1990年代初,微軟與IBM的合作破裂,微軟從OS/2(早期為命令列範式,後來成為一個很成功但是曲高和寡的圖形化作業系統)專案中抽身,並且在1993年7月27日推出Windows 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模擬系統,實際上是在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 NT的架構上。

而本年代漸漸增長並越趨複雜的嵌入式設備市場也促使嵌入式作業系統的成長。
作者: 秘書長    時間: 2010-11-23 15:31:13     標題: (今日)作業系統歷史

 

現代作業系統通常都有一個使用的繪圖裝置的圖形化使用者介面,並附加如滑鼠或觸控面版等有別於鍵盤的輸入裝置。舊的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都有。個人電腦

個人電腦市場目前分為兩大陣營,此兩種架構分別有支援的作業系統:

    * Apple Macintosh - Mac OS X,Windows(僅Intel平台),Linux、BSD。
    * IBM相容PC - Windows、Linux、BSD、Mac OS X(非正式支援)。


大型電腦

最早的作業系統是針對20世紀60年代的大型主結構開發的,由於對這些系統在軟體方面做了巨大投資,因此原來的電腦廠商繼續開發與原來作業系統相相容的硬體與作業系統。這些早期的作業系統是現代作業系統的先驅。現在仍被支援的大型主機作業系統包括:

    * 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.

現代的大型主機一般也可執行Linux或Unix變種。


嵌入式系統

嵌入式系統使用非常廣泛的作業系統(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能縮減版本的Linux或者其他作業系統。某些情況下,OS指稱的是一個內建了固定應用軟體的巨大泛用程式。在許多最簡單的嵌入式系統中,所謂的OS就是指其上唯一的應用程式。

 

類Unix系統

    主條目:類Unix

一個在Linux下執行的KDE桌面系統

所謂的類Unix家族指的是一族種類繁多的OS,此族包含了System V、BSD與Linux。由於Unix是The Open Group的註冊商標,特指遵守此公司定義的行為的作業系統。而類Unix通常指的是比原先的Unix包含更多特徵的OS。

Unix系統可在非常多的處理器架構下執行,在伺服器系統上有很高的使用率,例如大專院校或專案應用的工作站。自由軟體Unix變種,例如Linux與BSD近來越來越受歡迎,它們也在個人桌面電腦市場上大有斬獲,例如Ubuntu系統。

某些Unix變種,例如HP的HP-UX以及IBM的AIX僅設計用於自家的硬體產品上,而SUN的Solaris可安裝於自家的硬體或x86電腦上。蘋果電腦的Mac OS X是一個從NeXTSTEP、Mach以及FreeBSD共同衍生出來的微核心BSD系統,此OS取代了蘋果電腦早期非Unix家族的Mac OS。

經歷數年的披荊斬棘,自由開源的Unix系統逐漸蠶食以往專利軟體的專業領域,例如以往電腦動畫運算巨擘──SGI的IRIX系統已被Linux家族及貝爾實驗室研發小組設計的九號計畫與Inferno系統取代,皆用於分散運算式環境。它們並不像其他Unix系統,而是選擇內建圖形化使用者介面。九號計畫原先並不普及,因為它剛推出時並非自由軟體。後來改在自由及開源軟體許可證Lucent Public License釋出後,便開始擁有廣大的使用者及社群。Inferno已被售予Vita Nuova並以GPL/MIT許可證釋出。

當前,計算機按照計算能力排名世界500強中472台使用Linux,6台使用Windows,其餘為各類BSD等Unix。

 


驅動程式

    主條目:驅動程式

所謂的驅動程式(Device driver)是指某類設計來與硬體互動的電腦軟體。通常是一設計完善的裝置互動介面,利用與此硬體連接的電腦匯排流或通訊子系統,提供對此裝置下令與接收資訊的功能;以及最終目的,將訊息提供給OS或應用程式。驅動程式是針對特定硬體與特定OS設計的軟體,通常以作業系統核心模組、應用軟體包或普通電腦程式的形式在OS核心底下執行,以達到通透順暢地與硬體互動的效果,且提供硬體在處理非同步的時間依賴性介面(asynchronous time-dependent hardware interface)時所需的中斷處理常式(Interrupt handler)。

設計驅動程式的主要目的在於操作抽象化,任何硬體模組,既使是同一類的裝置,在硬體設計面上也有巨大差異。廠商推出的較新模組通常更可靠更有效率,控制方法也會有所不同。電腦與其OS每每不能預期那些現有與新裝置的變異之處,因此無法知道其操作方法。為解決此問題OS通常會主動制訂每種裝置該有的操作方式,而驅動程式功能則是將那些OS制訂的行為描述,轉譯為可讓裝置瞭解的自訂操作手法。

理論上適合的驅動程式一旦安裝,相對應的新裝置就可以無誤地執行。此新驅動程式可以讓此裝置完美地切合在OS中,讓使用者察覺不到這是OS原本沒有的功能。


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

    * 驅動程式 - 最底層的、直接控制和監視各類硬體的部分,它們的職責是隱藏硬體的具體細節,並向其他部分提供一個抽象的、通用的介面。
    * 核心 - 作業系統之最核心部分,通常執行在最高特權級,負責提供基礎性、結構性的功能。
    * 支承函式庫 - (亦作「介面函式庫」)是一系列特殊的程式函式庫,它們職責在於把系統所提供的基本服務包裝成應用程式所能夠使用的編程介面(API),是最靠近應用程式的部分。例如,GNU C執行期函式庫就屬於此類,它把各種作業系統的內部編程介面包裝成ANSI C和POSIX編程介面的形式。
    * 外圍 - 所謂外圍,是指作業系統中除以上三類以外的所有其他部分,通常是用於提供特定高階服務的部件。例如,在微核心結構中,大部分系統服務,以及UNIX/Linux中各種守護行程都通常被劃歸此列。

當然,本節所提出的四部結構觀也絕非放之四海皆準。例如,在早期的微軟視窗作業系統中,各部分耦合程度很深,難以區分彼此。而在使用外核結構的作業系統中,則根本沒有驅動程式的概念。因而,本節的討論只適用於一般情況,具體特例需具體分析。

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


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

核心的結構可以分為單核心、微核心、超微核心、以及外核等。

單核心結構是作業系統中各核心部件雜然混居的形態,該結構產生於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位元、128位元

所謂8位元、16位元、32位元、64位元、128位元等術語有時指匯流排寬度,有時指指令寬度(在定長指令集中),而在作業系統理論中主要是指記憶體定址的寬度。如果記憶體的定址寬度是16位元,那麼每一個記憶體位址可以用16個二進位位來表示,也就是說可以在64KB的範圍內定址。同樣道理32 位元的寬度對應4GB的定址範圍,64位元的寬度對應16 Exabyte的定址範圍。記憶體定址範圍並非僅僅是對作業系統而言的,其他類型的軟體的設計有時也會被定址範圍而影響。但是在作業系統的設計與實現中,定址範圍卻有著更為重要的意義。

在早期的16位元作業系統中,由於64KB的定址範圍太小,大都都採用「段」加「線性位址」的二維平面位址空間的設計。分配記憶體時通常需要考慮「段置換」的問題,同時,應用程式所能夠使用的位址空間也往往有比較小的上限。

在32位元作業系統中,4GB的定址範圍對於一般應用程式來說是綽綽有餘的,因而,通常使用一維的線性位址空間,而不使用「段」。
作者: lf22470036    時間: 2011-9-3 01:10:59

非常完整的歷史啊!謝謝分享
作者: ezp5    時間: 2011-9-3 11:16:55

謝謝大大詳細的解說~感謝分享
作者: yes23457    時間: 2011-9-12 10:08:33

好詳細的介紹 真是卸卸大大
作者: chen1979    時間: 2011-10-7 21:13:44

很詳細的介紹了 電腦從早期單調的作業環境 到現在已經是現在人密不可分的好幫手  感謝分享




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM