天天看點

作業系統介紹

一、為什麼要有作業系統 

  現代的計算機系統主要是由一個或者多個處理器,主存,硬碟,鍵盤,滑鼠,顯示器,列印機,網絡接口及其他輸入輸出裝置組成。

  程式員無法把所有的硬體操作細節都了解到,管理這些硬體并且加以優化使用是非常繁瑣的工作,這個繁瑣的工作就是作業系統來幹的,有了他,程式員就從這些繁瑣的工作中解脫了出來,隻需要考慮自己的應用軟體的編寫就可以了,應用軟體直接使用作業系統提供的功能來間接使用硬體。

二、什麼是作業系統及作業系統功能

  定義:作業系統就是一個協調、管理和控制計算機硬體資源和軟體資源的控制程式。

  作業系統位于計算機硬體與應用軟體之間,本質也是一個軟體。作業系統由作業系統的核心(運作于核心态,管理硬體資源)以及系統調用(運作于使用者态,為應用程式員寫的應用程式提供系統調用接口)兩部分組成。

  

作業系統介紹

  上圖是作業系統所處的位置,作業系統應該分為兩部分功能:

1、隐藏了醜陋的硬體調用接口

  為應用程式員提供調用硬體資源的更好,更簡單,更清>晰的模型(系統調用接口)。應用程式員有了這些接口後,就不用再考慮操作硬體的細節,專心開發自己的應用程式即可。

例如:作業系統提供了檔案這個抽象概念,對檔案的操作就是對磁盤的操作,有了檔案我們無需再去考慮關于磁盤的讀寫控制(比如控制磁盤轉動,移動磁頭讀寫資料等細節)。

2、将應用程式對硬體資源的競态請求變得有序化。

例如:很多應用軟體其實是共享一套計算機硬體,比方說有可能有三個應用程式同時需要申請列印機來輸出内容,那麼a程式競争到了列印機資源就列印,然後可能是b競争到列印機資源,也可能是c,這就導緻了無序,列印機可能列印一段a的内容然後又去列印c...,操作系>統的一個功能就是将這種無序變得有序。

三、作業系統發展史

1、第一代計算機(1940~1955):真空管和穿孔卡片

  這個時期的電腦沒有作業系統,所有程式設計都是直接操控硬體。程式員拿着他的插件版到機房裡,将自己的插件闆街道計算機裡,這幾個小時内他獨享整個計算機資源,後面的一批人都得等着

  優點:在申請時間段内獨享資源,即時調試程式。

  缺點:浪費計算機資源,一個時間段隻有一個人用。

2、第二代計算機(1955~1965):半導體和批處理系統

  程式員在穿孔卡片上寫好程式,然後放在讀卡機上,收集足夠後,這些卡片讀進錄音帶。機房管理人員把錄音帶裝到錄音帶機上,操作人員裝入一個特殊程式,它從錄音帶讀取作業并運作輸出到第二盤錄音帶,當作業全完成,取下輸入和輸出的錄音帶,把輸出錄音帶拿到1401機器上進行脫機列印。

  1401:I/O操作  7094:計算操作

  特點:輸入攢一大波、仍是順序計算、輸出攢一大波

  優點:批處理,節省時間

  缺點:1.流程需要人參與控制;2.計算過程仍然是順序計算--》串行計算

     3.程式員等待結果和重新調試的過程都需要等同批次的其他程式都運作完才可以。(影響開發效率)

3、第三代計算機(1965~1980):內建電路晶片和多道程式設計

  由于第二代計算機有兩套機型:

  7094大型科學計算機:主要用于科學計算和工程計算。(面向字)

  1401商用計算機:主要用于銀行和保險從事錄音帶歸檔和列印服務。(面向字元)

  IBM通過system/360系列來同時滿足上述要求,低檔機與1401相當,高檔機與7094相當。

(1)解決人為參與問題

  将作業從卡片讀入磁盤,于是任何時刻當一個作業結束時,作業系統就能将一個作業從錄音帶讀出,裝進空出來的記憶體區域運作,這種技術叫做同時的外部裝置聯機操作:SPOOLING,該技術同時用于輸出。

(2)解決串行計算問題

  cpu運作的速度遠遠快于讀取硬碟資料的速度,是以引入了記憶體,CPU可以非常快速地讀取記憶體的資料。

  多道技術:多道指得是多個程式,解決多個程式競争或共享同一個資源的有序排程問題,解決方式是多路複用,多路複用分時間複用和空間上的複用。

  空間上的複用:複用記憶體空間,記憶體同時存多個程式

        空間複用存在的問題:必須保證實體層面上多個程式的記憶體是互相隔離的。否則會喪失安全性和穩定性。正是由于記憶體實體隔離的問題,第三代計算機作業系統依然是批處理

  時間上的複用:大家共享cpu的時間,當一個程式在等待I/O時,另一個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的使用率可以接近100%,類似于國小數學所學的統籌方法。

        切換情形:1)會在一個程序遇到io時進行;2)一個程序占用cpu時間過長也會切換,或者說被作業系統奪走cpu的執行權限。

(3)解決像第一代一樣即時調試自己的程式

  分時作業系統:多個聯機終端+多道技術,索引計算機能夠為許多使用者提供快速的互動式服務,所有的使用者都以為自己獨享了計算機資源

  UNIX:Ken Thompson開發了一個簡易、單使用者版本的MULTICS,為了使程式能在任何版本的unix上運作,IEEE提出了一個unix标準,即posix(可移植的作業系統接口Portable Operating System Interface)

  minix:教學用系統

  Linux:芬蘭學生Linus Torvalds基于minix它編寫

4、第四代計算機(1980~至今):個人計算機

四、總結

1、作業系統的作用

  1.隐藏醜陋複雜的硬體接口,提供良好的抽象接口

  2.管理、排程程序,并将多個程序對硬體的競争變得有序。

2、多道技術

  1.産生的背景:針對單核,實作并發(看起來多個程序像在同時運作,注意和并行的差別)  

        現在的主機一般是多核(幾個核最多可以幾個并行),那麼每個核都會利用多道技術。

        有4個cpu,運作于cpu1的某個程式遇到io阻塞,會等到io結束再重新排程,會被排程到4個cpu中的任意一個,具體由作業系統排程算法決定。

  2.空間上的複用:記憶體中同時有多道程式

  3.時間上的複用:複用一個cpu的時間片

      注意:遇到io切,占用cpu時間過長也切,核心在于切之前将程序的狀态儲存下來,這樣才能保證下次切換回來時,能基于上次切走的位置繼續運作