什么是操作系統
可能很多人都會說,我們平時裝的windows7 windows10都是操作系統,沒錯,他們都是操作系統。還有沒有其他的?
想想我們使用的手機,Google公司的Android系統,Apple公司筆記本上的的MacOSX、IPhone的IOS,他們都是操作系統。
那么我們想想,操作系統都可以做什么?
我們買來電腦的后第一件事情就是安裝操作系統,有的電腦則在我們買來的時候已經安裝好了操作系統,比如說品牌機(Dell、HP、lenovo)。
我們可以在操作系統上通過安裝程序來看視頻,聽音樂,玩游戲、瀏覽網頁,還可以彈出移動硬盤和U 盤、管理我們硬盤中的文件等等;我們通過操作系統來和計算機交互,系統協調我們安排給計算機的各種任務。操作系統(Operating System, OS)是指控制和管理整個計算機系統的硬件和軟件資源,並合理地組織調度計算機的工作和資源的分配,以提供給用戶和其他軟件方便的接口和環境的程序集合。計算機操作系統是隨着計算機研究和應用的發展逐步形成並發展起來的,它是計算機系統中最基本的系統軟件。
我們通過操作系統來使用計算機。 知道了系統是用來做什么的,我們來了解一下系統的發展歷史。(操作系統工作方式的演變——20世紀五六十年代)。
手工操作(無操作系統)
人們先把程序紙帶(或卡片)裝上計算機,然后啟動輸入機把程序和送入計算機,接着通過控制台開關啟動程序運行。計算完畢,打印機輸出計算結果,用戶卸下並取走紙帶(或卡片)。第二個用戶上機,重復同樣的步驟。
特點: 用戶獨占機器,CPU等待手工操作,CPU利用不充分。
由於手工操作的滿速度和計算機的高速度之間形成了尖銳矛盾,手工操作的方式是計算機的資源利用率極低,唯一的解決辦法只有擺脫手工操作,實現作業的自動過渡。
批處理系統
批處理系統: 加載計算機上的一個監督軟件,在監督程序的控制下,計算機能夠自動的、成批的處理一個或多個用戶的作業(作業包括程序、數據、命令)。
首先出現的是聯機批處理系統,即作業的輸入輸出由CPU來處理。
聯機批處理系統
在主機和輸入機之間增加兩個存儲設備——磁帶機,在監督程序的自動控制下,計算機自動完成任務。
成批的把輸入機上的用戶作業讀入磁帶,依次把磁帶上的用戶作業讀入主機內存並執行,執行完成后把計算結果想輸出機輸出。 完成一批作業后,監督程度又從輸入機讀取作業存入磁帶機。按照上面的步驟重復處理任務。監督程序不停的處理各個作業,實現了作業的自動轉接,減少了作業的建立時間和手工操作時間,有效的克服了人機矛盾,提高了計算機資源的利用率。
問題: 在輸入作業和輸出結果時,CPU還是會處於線空閑狀態,等待慢速的輸入/輸出設備完成工作——主機處於忙等狀態。
脫機批處理系統
為了克服與緩解告訴主機與慢速外設(輸入輸出設備),提高CPU利用率,用又引入了脫機批處理系統,即輸入輸出脫離主機控制。
顯著特征就是:增加一台不與主機直接相連衛星機。衛星機用來從輸入機上讀取用戶作業並放到磁帶機上;將磁帶機上的執行結果傳給輸出機。這樣主機不再與慢速的輸入輸出設備連接。主機與衛星機兩者並行工作,分工明確,可充分發揮主機的告訴計算能力。
問題:每次主機內存中僅存放一道作業,每當它運行期間發出輸入/輸出(I/O)請求后,高速的CPU便處於等待低速的I/O完成狀態,致使CPU空閑。
多道程序系統
多道程序設計技術,就是指允許多個程序同時進入內存並運行。即同時把多個程序放入內存,並允許它們交替在CPU中運行,它們共享系統中的各種硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便立即轉去運行另一道程序。
單道程序運行過程 :在A程序計算時,I/O空閑, A程序I/O操作時,CPU空閑(B程序也是同樣);必須A工作完成后,B才能進入內存中開始工作,兩者是串行的,全部完成共需時間=T1+T2。
多道程序運行過程 :將A、B兩道程序同時存放在內存中,它們在系統的控制下,可相互穿插、交替地在CPU上運行:當A程序因請求I/O操作而放棄CPU時,B程序就可占用CPU運行,這樣 CPU不再空閑,而正進行A I/O操作的I/O設備也不空閑,顯然,CPU和I/O設備都處於“忙”狀態,大大提高了資源的利用率,從而也提高了系統的效率,A、B全部完成所需時間<T1+T2。
多道程序設計技術不僅使CPU得到充分利用,同時改善I/O設備和內存的利用率,從而提高了整個系統的資源利用率和系統吞吐量(單位時間內處理作業(程序)的個數),最終提高了整個系統的效率
多道:系統內可同時容納多個作業。這些作業放在外存中,組成一個后備隊列,系統按一定的調度原則每次從后備作業隊列中選取一個或多個作業進入內存運行,運行作業結束、退出運行和后備作業進入運行均由系統自動實現,從而在系統中形成一個自動轉接的、連續的作業流。
成批:在系統運行過程中,不允許用戶與其作業發生交互作用,即:作業一旦進入系統,用戶就不能直接干預其作業的運行。批處理系統的追求目標:提高系統資源利用率和系統吞吐量,以及作業流程的自動化。批處理系統的一個重要缺點:不提供人機交互能力,給用戶使用計算機帶來不便。
雖然用戶獨占全機資源,並且直接控制程序的運行,可以隨時了解程序運行情況。但這種工作方式因獨占全機造成資源效率極低。
20世紀60年代中期,在前述的批處理系統中,引入多道程序設計技術后形成多道批處理系統。
多道批處理系統的一個重要缺點:不提供人機交互能力,給用戶使用計算機帶來不便。雖然用戶獨占全機資源,並且直接控制程序的運行,可以隨時了解程序運行情況。但這種工作方式因獨占全機造成資源效率極低。即使CPU可以1分鍾運算100W次,如果作業是按照每分鍾100次來做運算,資源被大大浪費。
分時系統
分時技術:把處理機的運行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。若某個作業在分配給它的時間片內不能完成其計算,則該作業暫時中斷,把處理機讓給另一作業使用,等待下一輪時再繼續其運行。由於計算機速度很快,作業運行輪轉得很快,給每個用戶的印象是,好象他獨占了一台計算機。而每個用戶可以通過自己的終端向系統發出各種操作控制命令,在充分的人機交互情況下,完成作業的運行。具有上述特征的計算機系統稱為分時系統,它允許多個用戶同時聯機使用計算機。
問題: 無法對特殊任務做出及時響應
實時系統
雖然多道批處理系統和分時系統能獲得較令人滿意的資源利用率和系統響應時間,但卻不能滿足實時控制與實時信息處理兩個應用領域的需求。於是就產生了實時系統,即系統能夠及時響應隨機發生的外部事件,並在嚴格的時間范圍內完成對該事件的處理。
實時系統可分成兩類:
實時控制系統。當用於飛機飛行、導彈發射等的自動控制時,要求計算機能盡快處理測量系統測得的數據,及時地對飛機或導彈進行控制,或將有關信息通過顯示終端提供給決策人員。當用於軋鋼、石化等工業生產過程控制時,也要求計算機能及時處理由各類傳感器送來的數據,然后控制相應的執行機構。
實時信息處理系統。當用於預定飛機票、查詢有關航班、航線、票價等事宜時,或當用於銀行系統、情報檢索系統時,都要求計算機能對終端設備發來的服務請求及時予以正確的回答。此類對響應及時性的要求稍弱於第一類。
實時操作系統的主要特點:
及時響應,每一個信息接收、分析處理和發送的過程必須在嚴格的時間限制內完成。
高可靠性,需采取冗余措施,雙機系統前后台工作,也包括必要的保密措施等。
通用操作系統
操作系統的三種基本類型:多道批處理系統、分時系統、實時系統。
具有多種類型操作特征的操作系統。可以同時兼有多道批處理、分時、實時處理的功能,或其中兩種以上的功能。
例如:實時處理+批處理=實時批處理系統。首先保證優先處理實時任務,插空進行批處理作業。常把實時任務稱為前台作業,批作業稱為后台作業。
再如:批處理+分時處理=分時批處理系統。即:時間要求不強的作業放入“后台”(批處理)處理,需頻繁交互的作業在“前台”(以去銀行辦理業務,這個銀行只有一個窗口可以辦理業務。離業務窗口不遠的地方是等候區,兩者之間走路需要1分鍾。分時)處理,處理機優先運行“前台”作業。
從上世紀60年代中期,國際上開始研制一些大型的通用操作系統。這些系統試圖達到功能齊全、可適應各種應用范圍和操作方式變化多端的環境的目標。但是,這些系統過於復雜和龐大,不僅付出了巨大的代價,且在解決其可靠性、可維護性和可理解性方面都遇到很大的困難。
我們舉例來說明一下系統的發展過程:
最開始的時候,每次只能一個人去業務窗口辦理業務,等第一個人業務辦理完成,回到等候區后,下一個人才可以去窗口辦理業務。但是,每次在用戶走向/離開業務窗口的時候,都需要等到一分鍾,辦理一個人的業務就需要等待2分鍾。如果業務處理一個人的業務需要一個小時的時候,這個問題並不明顯,但是隨着業務窗口辦理業務的速度加快,變成10分鍾處理一個業務的時候,這個問題就凸顯出來了。不那里業務的速度越快,問題就明顯。 ( 此時相當於操作系統的發展史中的——手工操作)。
為了改進上面的問題,安排了一個調度員T,每次調度員T從等候區叫10個人,來窗口排隊辦理業務,這樣就相對上面來說,節省了很多時間,但是還有一個問題。在每次隊伍走向業務窗口和離開窗口的時候,還是會浪費時間。(此時相當於聯機批處理系統)在此基礎上改進,調度員T 每次安排多個隊伍,在處理第一個隊伍的時候,隊伍2已經被調度員T安排好, 這樣就避免了在 每次隊伍走向業務窗口和離開窗口的時候浪費的時間。(此時相當於聯機批處理系統)如果業務窗口在為某人辦理業務的時候,辦理業務的人來了個電話,這個時候業務窗口就需要等待他打完電話后才能繼續辦理業務。
為了解決上述問題,業務窗口又進行了改進,這次是業務窗口一個讓5個人同時等待窗口(而不是窗口前只等待一個人),如果在辦理業務的時候,第一個人來電話,業務窗口就先暫停辦理第一個人的業務,此時去辦理第二個人的業務,如果第二個人此時也來了電話,業務窗口就去辦理第三個人的業務。這樣業務窗口就提高了工作效率。 在相同的時間內辦理了更過的業務。 (此當相當於多道程序系統)辦理業務的時候,一個人獨占業務窗口,資源效率低。
業務窗口再次進行了改進。 業務窗口同時接待10個人,沒10秒處理一個人的業務,時間到了以后,不管有沒有處理完成當前業務,都會在下一個10秒鍾去處理下一個人的業務,這樣去輪流給10個人處理業務。隨着業務窗口辦理業務速度的提高,變成每一秒處理一個人的業務。這樣對在也窗口前的10個人來說,他們的業務就好像被同時處理一樣。(相當於分時操作系統)。如果這個時候,行長的親戚來辦理業務,但是行長親戚不想等,希望自己的業務馬上被處理。這個時候,就無法滿足需求了。現在無法滿足實時問題的處理。
業務窗口再次改進,對待特殊的業務需求馬上處理。這樣就可以對實時發生的問題進行處理,實時問題優先處理。(此時相當於實時系統)更形象的例子是,比如我們在開飛機,突然發現前面有一座大山,這個時候就需要我們馬上進行規避動作,躲開大山,對於非實時系統在此時需要有一個響應時間,如果響應時間過長,飛機就會撞山。
由於辦理業務的時候需要處理多種情況,將上面的各種情況進行綜合,吸取各自的優點,這樣業務窗口就能根據情況來處理業務。(相當於通用操作系統)早期的操作系統非常多樣化,生產商生產出針對各自硬件的系統。每一個操作系統都有很不同的命令模式、操作過程和調試工具,即使它們來自同一個生產商。最能反映這一狀況的是,廠家每生產一台新的機器都會配備一套新的操作系統。
同一廠家相同的操作系統
這種情況一直持續到二十世紀六十年代IBM公司開發了System/360系列機器。盡管這些機器在性能上有明顯的差異,但是他們有統一的操作系統——OS/360
1965年時,AT&T公司 下貝爾實驗室(Bell Labs)加入一項由奇異電子(General Electric)和麻省理工學院(MIT)合作的計划;該計划要建立一套多使用者、多任務、多層次(multi-user、multi- processor、multi-level)的MULTICS操作系統。
Multics 的目標是整合分時技術以及當時其他先進技術,允許用戶在遠程終端通過電話(撥號)登錄到主機,然后可以編輯文檔,閱讀電子郵件,運行計算器等等。但是項目目標太過激進,進度嚴重滯后。最后,直到1969年AT&T 高層決定放棄這個項目。
其中有一個 叫Ken Thompson 的人 ,因為工作需要,他希望開發一個小小的作業系統,,他花了一個月的時間 在這台PDP-7上寫了一個作業系統,和一些常用的工具程序,——這就是鼎鼎大名的Unics——后被改名為Unix。
到了1970年,PDP-7卻只能支持兩個用戶 ,因為PDP-7的性能不佳,肯·湯普遜 與丹尼斯·里奇決定把第一版UNIX移植到PDP-11/20的機器上,開發第二版UNIcs。在性能提升后,真正可以提供多人同時使用, 布萊恩·柯林漢提議將它的名稱改為UNIX。
Unix被稱為計算機/互聯網行業的基石。
肯·湯普遜的同事看到他寫的程序很好用,都開始使用這個系統,中間經過了多次改版。
由於當時的機器結構不同,所以每次安裝系統時,都需要重新編寫一遍。第一版的Unix是使用匯編語言和B語言來開發的,B語言不夠強大,所以Thompson和Ritchie對其進行了改造,並於1971年共同發明了C語言。
1973年Thompson和丹尼斯·里奇用C語言重寫了UNIX。這個時候,Unix的正式版本發行了。
同年,學術界參與到UNIX的開發工作中,重要的就是加州伯克利(Berkeley)大學。伯克利大學的Bill Joy在獲取了UNIX的核心源碼后,着手修改成適合自己機器的版本,並且同時增加了很多工具軟件與編譯程序,最終將其命名為Berkeley Software Distribution(BSD)。
由於UNIX的高度可移植性與強大的性能,加上當時並沒有版權糾紛,所以很多商業公司開始了UNIX操作系統的開發,例如AT&T自己的System V、IBM的AIX以及HP與DEC等公司,都采用自己的主機與自己的UNIX操作系統。但當時 並沒有統一的硬件標准,不同公司生產的硬件 不一樣,不同公司開發的的程序 無法兼容使用,只能運行在自己公司生產的硬件里。這個時候也沒有人針對個人電腦來開發unix系統。
Windows系統、蘋果系統? 先看一下下圖:
一直到1979年,AT&T推出 System V 第七版 Unix ,這個時候開始支持個人電腦。出於商業上的考慮,AT&T決定收回unix的版權,最重要的就是不可對學生提供源代碼。學校受到很大的沖擊,教學受到影響。
這個時候有一位 Andrew Tanenbaum(譚邦寧)教授,在1984-1986年間寫了一個叫Minix的Unix Like 核心程序;意思為:mini unix,並且與 unix兼容、支持X86 個人電腦。為避免版權糾紛,在編寫的時候不看unix的源代碼。由於譚邦寧教授 認為Minix主要用在教育事業上,所以對MInix的開發只是點到為止,不能滿足用戶的需求。在1988年間,Linus Torvalds進入了赫爾辛基大學,選讀了計算機科學系。在就學期間,托瓦茲接觸到了Unix 這個操作系統,但是使用unix需要等待,其他人使用的時候他就無法使用。他就想“我為什么不自己搞一部Unix玩?” , 不久之后,他就聽說有一個類似 Unix 的系統,和 Unix 完全兼容,還可以在 Intel 386 機器上面跑的操作系統,於是他在購買了最新的 Intel 386 的個人計算機后,就立即安裝了 Minix 這個操作系統。
托瓦茲跟在研究Minix的過程中,發現 Minix 雖然真的很棒,但是譚寧邦教授就是不願意進行功能的加強,導致一堆工程師在操作系統功能上面的欲求不滿! 這個時候年輕的托瓦茲就想:『既然如此,那我何不自己來改寫一個我想要的操作系統?』 二是他就開始了核心程序的撰寫了。到了1991年,Linus Torvalds在BBS上面貼了一則消息,宣稱他以bash、gcc等工具寫了一個小小的核心程序,不過還不夠,他希望這個程序可以獲得大家的一些修改建議,這個核心程序可以在Intel的386機器上運行。同時提供了下載地址。這讓很多人感興趣,從此便開始了Linux不平凡的路程。
Linux 應用領域
企業服務器 - 企業
嵌入式 - 手機、個人數字助理(PDA)、消費性電子產品及航空航天等領域中
桌面- 個人電腦
其他
Android
2003 安迪·魯賓創辦了Android公司 。Android--基於Linux內核的開放移動操作系統
2005年,Android公司被Google收購。
2007年11月5日,谷歌公司正式公布Android操作系統。
蘋果公司
Apple-I
Macintosh,簡稱Mac
微軟
Windows timeline history
蘋果與微軟
1973年施樂公司開發除了Alto——真正意義上的個人PC,有鍵盤、顯示器、圖形界面、以太網等。 但是並沒有重視。
1979年,喬布斯聽說了Alto,決定去看看,看到以后震驚了,回去就讓技術人員去實現圖形界面,為此還從施樂挖了好多技術人員,開發Lisa項目;然后最后失敗了。但是為后來的Macintosh,積攢了好多經驗。
1980年微軟和IBM合作PC系統,微軟以捆綁的方式在IBM-PC上預裝DOS,廉價銷售(5$)許可證。
1981年,喬布斯邀請蓋茨看Macintosh樣機,想讓微軟幫助Macintosh開發應用軟件,蓋茨看到Macintosh的圖形后,也震驚了,心想,這東西要是上市,我的DOS立馬完蛋,未來的天下是圖形的。不過喬布斯看出了蓋茨的信息,就要求微軟在給蘋果開發軟件過程中學到的東西用於任何非蘋果的設備上。但是喬布斯忽略了,不讓為微軟編寫類似Macintosh的系統。
蓋茨了解到Macintosh效法於施樂,於是也從施樂挖人,開發自己的圖形系統——windows。微軟把win的研發放在第一位,耽誤了Macintosh的發布。
1984年Macintosh 發布,風靡世界。
1985年 windows1.0發布,喬布斯發現win很想Macintosh,就說蓋茨偷了蘋果的東西。