《LINUX實戰:計算機基礎系列教程二:操作系統簡介》要點:
本文介紹了LINUX實戰:計算機基礎系列教程二:操作系統簡介,希望對您有用。如果有疑問,可以聯系我們。
一. 為什么必要操作系統(Operating System,OS)
第一代計算機(1940~1955)使用真空管和穿孔卡片,是直接對硬件進行操作,同時只能運行一個程序,當時根本沒有操作系統的概念.隨著計算機硬件的急速發展,計算機系統已經由一個或者多個處理器,主存,硬盤,鍵盤,鼠標,顯示器,打印機,網絡接口及其他輸入輸出設備組成.面對如此繁多、復雜的硬件,如果要求每位應用程序員都必需掌握該系統所有的細節,那就不可能再編寫代碼了(嚴重影響了程序員的開發效率:全部掌握這些細節可能需要一萬年....).因為管理這些部件并加以優化使用,是一件極富挑戰性的工作,于是,計算安裝了一層軟件(系統軟件),稱為操作系統.它的任務就是為用戶程序提供一個更好、更簡單、更清晰的計算機模型,并管理剛才提到的所有設備.
二. 什么是操作體系
操作系統是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統軟件,任何其他軟件都必需在操作系統的支持下才能運行.
操作系統的位置:位于計算機硬件與應用軟件之間,本色也是一個軟件.操作系統由操作系統的內核(運行于內核態,管理硬件資源)以及系統調用(運行于用戶態,為應用程序員寫的應用程序提供系統調用接口)兩部分組成,所以,單純的說操作系統是運行于內核態的,是不準確的.
圖1
操作系統的功能:操作系統的功能包含管理計算機系統的硬件、軟件及數據資源,控制程序運行,改善人機界面,為其它應用軟件提供支持,讓計算機系統所有資源最大限度地發揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環境,為其它軟件的開發提供必要的服務和相應的接口等.主要功能為以下兩點:
1. 暗藏了丑陋的硬件調用接口,為應用程序員提供調用硬件資源的更好,更簡單,更清晰的模型(系統調用接口).應用程序員有了這些接口后,就不用再考慮操作硬件的細節,專心開發自己的應用程序即可.
好比,磁盤資源的抽象是文件系統(C盤,D盤,E盤...下的目錄及文件),有了文件的概念,我們直接打開文件,讀或者寫就可以了,無需關心記錄是否應該使用修正的調頻記錄方式,以及當前電機的狀態等細節.
圖2
2. 管理硬件資源,即將應用程序對硬件資源的競態哀求變得有序化.現代的操作系統同時運行多道程序,操作系統的任務是在相互競爭的程序之間有序地控制對處理器、存儲器以及其他I/O接口設備的分配.
例如:同一臺計算機上同時運行三個程序,它們三個想在同一時刻在同一臺計算機上輸出結果,那么開始的幾行可能是程序1的輸出,接著幾行是程序2的輸出,然后又是程序3的輸出,最終將是一團糟(程序之間是一種互相競爭資源的過程).操作系統將打印機的結果送到磁盤的緩沖區,在一個程序完全結束后,才將暫存在磁盤上的文件送到打印機輸出,同時其他的程序可以繼續發生更多的輸出結果(這些程序的輸出沒有真正的送到打印機),這樣,操作系統就將由競爭發生的無序變得有序化.
三. 操作系統的成長
第一代計算機(1940~1955):真空管和穿孔卡片
第一代計算機的產生配景:
第一代之前人類是想用機械取代人力,第一代計算機的產生是計算機由機械時代進入電子時代的標志,從Babbage失敗之后一直到第二次世界大戰,數字計算機的建造幾乎沒有什么進展,第二次世界大戰刺激了有關計算機研究的爆炸性進展.lowa州立大學的John Atanasoff教授和他的學生Clifford Berry建造了據認為是第一臺可工作的數字計算機.該機器使用300個真空管.大約在同時,Konrad Zuse在柏林用繼電器構建了Z3計算機,英格蘭布萊切利園的一個小組在1944年構建了Colossus,Howard Aiken在哈佛大學建造了Mark 1,賓夕法尼亞大學的William Mauchley和他的學生J.Presper Eckert建造了ENIAC.這些機器有的是二進制的,有的使用真空管,有的是可編程的,但都非常原始,設置必要花費數秒鐘時間才能完成最簡單的運算.
在這個時期,同一個小組里的工程師們,設計、建造、編程、操作及維護同一臺機器,所有的程序設計是用純粹的機器語言編寫的,甚至更糟糕,必要通過成千上萬根電纜街道插件板上連成電路來控制機器的基本功能.沒有程序設計語言(匯編也沒有),操作系統則是從來都沒聽說過.使用機器的過程更加原始.
特點:
a. 沒有操作系統的概念
b. 所有的法式設計都是由純粹的機器語言編寫的
工作過程:
程序員在墻上的機時表預約一段時間,然后程序員拿著他的插件版到機房里,將本身的插件板街道計算機里,這幾個小時內他獨享整個計算機資源,后面的一批人都得等著(兩萬多個真空管經常會有被燒壞的情況出現).后來出現了穿孔卡片,可以將程序寫在卡片上,然后讀入機而不用插件板
優點:程序員在申請的時間段內獨享整個資源,即時的調試本身的程序,如果有bug可以即時處理.
缺點:這對于計算機提供商來說是一種浪費(你買一臺電腦4000塊,那 一年中你用365比只用1天,肯定是省本錢的,物盡其用)你有一臺電腦你往外租,你一次租2個小時,那么即便是用戶在第一個小時就已經完成工作了,剩下的1個小時你的電腦就空閑了,而一天你只能租給12個人,相當于要浪費12個小時.
注意:同一時刻只有一個程序在內存中,被cpu調用執行,好比說10個程序的執行,是串行的.
第二代計算機(1955~1965):晶體管和批處置系統
第二代計算機的產生配景:
由于當時的計算機非常昂貴,自認很自然的想方法較少機時的浪費.通常采用的方法就是批處理系統.
特點:
設計人員、生產人員、操作人員、程序人員和維護人員直接有了明確的分工,計算機被鎖在專用空調房間中,由專業操作人員運行,這就是“大型機”.
有了操作系統的概念,下圖就是最早期的操作系統:是人力與計算機結合的系統,必要人參與.
有了法式設計語言:FORTRAN語言或匯編語言,寫到紙上,然后穿孔打成卡片,再講卡片盒帶到輸入室,交給操作員,然后喝著咖啡等待輸出接口
工作進程:插圖
圖3
第一代計算機的問題是:
人機交互太多了(人機交互過程:輸入-》計算-》輸出)
一小我的交互:輸入-》計算-》輸出
10小我的交互:
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
輸入-》計算-》輸出
第二代如何辦理第一代的問題:
1.把一堆人的輸入攢成一大波輸入,
2.然后順序計算(這是有問題的,但是第二代計算也沒有辦理)
3.把一堆人的輸出攢成一大波輸出
?
更多詳情見請繼續閱讀下一頁的出色內容:
_baidu_page_break_tag_當代操作系統的前身:
在收集了大約一個小時的批量作業之后,這些卡片被讀入磁帶,然后磁帶被送到機房里并裝到磁帶上.然后磁帶被送到機房里并裝到磁帶機上.隨后,操作員裝入一個特殊的程序,它負責從磁帶上讀入第一個作業(job,一個或一組程序)并運行,其輸出寫到第二個磁帶上,而且不打印.每個作業結束后,操作系統自動的從磁帶上讀入下一個作業并且運行.當一整批的作業全部結束后,操作員去下輸入和輸出磁帶,講輸入磁帶換成下一批作業,并且把輸出磁帶拿到一臺1041機器上進行脫機(不與主計算機聯機)打印,這一套必要人參的情況下機器才能運行的系統乃現代操作系統的前身
優點:批處理,節省了機時
缺點:
1.整個流程必要人參與控制,將磁帶搬來搬去(中間倆小人)
2.計算的過程仍然是次序計算-》串行
3.程序員本來獨享一段時間的計算機,現在必須被統一規劃到一批作業中,等待結果和重新調試的過程都需要等同批次的其他程序都運作完才可以(這極大的影響了程序的開發效率,無法及時調試程序)
第三代計算機(1965~1980):集成電路芯片和多道法式設計
第三代計算機的產生配景:
20世紀60年代初期,年夜多數計算機廠商都有兩條完全不兼容的生產線.
一條是面向字的:年夜型的科學計算機,如IBM 7094,見上圖,主要用于科學計算和工程計算
另外一條是面向字符的:商用計算機,如IBM 1401,見上圖,主要用于銀行和保險公司從事磁帶歸檔和打印服務
開發和維護完全分歧的產品是昂貴的,同時分歧的用戶對計算機的用途分歧.
IBM公司試圖通過引入system/360系列來同時滿足科學計算和商業計算,360系列低檔機與1401相當,高檔機比7094功能強很多,分歧的性能賣分歧的價格
360是第一個采用了(小規模)芯片(集成電路)的主流機型,與采用晶體管的第二代計算機相比,性價比有了很大的提高.這些計算機的后代仍在大型的計算機中心里使用,此乃現在服務器的前身,這些服務器每秒處理不小于千次的哀求.
如何辦理第二代計算機的問題1:
卡片被拿到機房后能夠很快的將作業從卡片讀入磁盤,于是任何時刻當一個作業結束時,操作系統就能將一個作業從磁帶讀出,裝進空出來的內存區域運行,這種技術叫做
同時的外部設備聯機操作:SPOOLING,該技術同時用于輸出.當采用了這種技術后,就不在需要IBM1401機了,也不必將磁帶搬來搬去了(中間倆小人不再需要)
如何辦理第二代計算機的問題2:
第三代計算機的操作系統廣泛應用了第二代計算機的操作系統沒有的癥結技術:多道技術
多道技術(詳見第七節):
多道技術中的多道指的是多個程序,多道技術的實現是為了辦理多個程序競爭或者說共享同一個資源(比如cpu)的有序調度問題,辦理方式即多路復用,多路復用分為時間上的復用和空間上的復用.
空間上的復用:將內存分為幾部門,每個部門放入一個程序,這樣,同一時間內存中就有了多道程序.
圖4
?
?
時間上的復用:當一個程序在等待I/O時,另一個程序可以使用cpu,如果內存中可以同時存放足夠多的作業,則cpu的利用率可以接近100%,類似于我們小學數學所學的統籌辦法.
空間上的復用最大的問題是:程序直接的內存必須分割,這種分割在硬件層面實現,由操作系統控制實現.如果內存彼此不分割,則一個程序可以拜訪另外一個程序的內存,
首先喪失的是平安性,比如你的qq程序可以訪問操作系統的內存,這意味著你的qq可以拿到操作系統的所有權限.
其次喪失的是穩定性,某個程序瓦解時有可能把別人的內存也給回收了,比方說把操作系統的內存給回收了,則操作系統瓦解.
第三代計算機的操作系統仍然是批處置
許多程序員懷念第一代獨享的計算機,可以即時調試本身的程序.為了滿足程序員們很快可以得到響應,出現了分時操作系統
如何辦理第二代計算機的問題3:
分時操作體系:
多個聯機終端+多道技術
20個客戶端同時加載到內存,有17在思考,3個在運行,cpu就采用多道的方式處理內存中的這3個程序,由于客戶提交的一般都是簡短的指令而且很少有耗時長的,索引計算機能夠為許多用戶提供快速的交互式服務,所有的用戶都以為本身獨享了計算機資源
CTTS:麻省理工(MIT)在一臺改裝過的7094機上開發成功的,CTSS兼容分時系統,第三代計算機廣泛采用了必須的掩護硬件(程序之間的內存彼此隔離)之后,分時系統才開始流行
MIT,貝爾實驗室和通用電氣在CTTS勝利研制后決定開發能夠同時支持上百終端的MULTICS(其設計者著眼于建造滿足波士頓地區所有用戶計算需求的一臺機器),很明顯真是要上天啊,最后摔死了.
后來一位參加過MULTICS研制的貝爾實驗室計算機科學家Ken Thompson開發了一個簡易的,單用戶版本的MULTICS,這便是后來的UNIX系統.基于它衍生了很多其他的Unix版本,為了使程序能在任何版本的unix上運行,IEEE提出了一個unix標準,即posix(可移植的操作系統接口Portable Operating System Interface)
后來,在1987年,呈現了一個UNIX的小型克隆,即minix,用于教學使用.芬蘭學生Linus Torvalds基于它編寫了Linux
第四代計算機(1980~至今):小我計算機
略?
四. 多道技術
多道技術(多道程序設計技術)是指在內存同時放若干道程序,使它們在系統中并發執行,共享系統中的各種資源.當一道程序暫停執行時,CPU立即轉去執行另一道程序.這是由于當今計算機或者網絡都是多用戶的,多個用戶不僅共享硬件,并且共享文件,數據庫等信息,共享意味著沖突和無序.
操作體系主要使用來
1.記錄哪個法式使用什么資源
2.對資源哀求進行分配
3.為不同的程序和用戶調解互相沖突的資源哀求
我們可將上述操作系統的功能總結為:處理來自多個程序發起的多個(多個即多路)共享(共享即復用)資源的哀求,簡稱多路復用.多路復用有兩種實現方式:
1. 時間上的復用.當一個資源在時間上復用時,分歧的程序或用戶輪流使用它,第一個程序獲取該資源使用結束后,再輪到第二個,第三個……
例如:只有一個cpu,多個程序必要在該cpu上運行,操作系統先把cpu分給第一個程序,在這個程序運行的足夠長的時間(時間長短由操作系統的算法說了算)或者遇到了I/O阻塞,操作系統則把cpu分配給下一個程序.以此類推,直到第一個程序重新被分配到了cpu然后再次運行,由于cpu的切換速度很快,給用戶的感覺就是這些程序是同時運行的,或者說是并發的,或者說是偽并行的.至于資源如何實現時間復用,或者說誰應該是下一個要運行的程序,以及一個任務必要運行多長時間,這些都是操作系統的工作.
2. 空間上的復用.每個程序都獲取了一個大的資源中的一小部門資源,從而減少了排隊等待資源的時間.
例如:多個運行的程序同時進入內存,硬件層面提供保護機制來確保各自的內存是分割開的,且由操作系統控制,這比一個程序獨占內存一個一個排隊進入內存效率要高的多.有關空間復用的其他資源還有磁盤,在許多系統中,一個磁盤同時為許多用戶保留文件.分配磁盤空間并且記錄誰正在使用哪個磁盤塊是操作系統資源管理的典型任務.
以上兩種方式結合起來便是多道技術.
本文永遠更新鏈接地址:
學習更多LINUX教程,請查看站內專欄,如果有LINUX疑問,可以加QQ交流《LINUX實戰:計算機基礎系列教程二:操作系統簡介》。