什麼是操做系統程序員
計算機系統由硬件和軟件兩部分組成。操做系統(OS,Operating System)是配置在計算機硬件上的第一層軟件,是對硬件系統的首次擴充。它在計算機系統中佔據了特別重要的地位;而其它的諸如彙編程序、編譯程序、數據庫管理系統等系統軟件,以及大量的應用軟件,都將依賴於操做系統的支持,取得它的服務。算法
精簡的說的話,操做系統就是一個協調、管理和控制計算機硬件資源和軟件資源的控制程序。數據庫
爲何要有操做系統編程
現代的計算機系統主要是由一個或者多個處理器,主存、硬盤、鍵盤、鼠標、顯示器、打印機、網絡接口及其餘輸入輸出設備組成。通常而言,現代計算機系統是一個複雜的系統。若是每位應用程序員都必須掌握該系統全部的細節,那就不可能再編寫代碼了(嚴重影響了程序員的開發效率,所有掌握這些細節可能須要一萬年....),而且管理這些部件並加以優化使用,是一件極有挑戰性的工做,因而,計算安裝了一層軟件(系統軟件),稱爲操做系統(OS,Operating System)。它的任務就是爲用戶程序提供一個更好、更簡單、更清晰的計算機模型,並管理剛纔提到的全部設備。安全
總結:網絡
程序員沒法把全部的硬件操做細節都瞭解到,管理這些硬件而且加以優化使用是很是繁瑣的工做,這個繁瑣的工做就是操做系統來乾的,有了它,程序員就從這些繁瑣的工做中解脫了出來,只須要考慮本身的應用軟件的編寫就能夠了,應用軟件直接使用操做系統提供的功能來間接使用硬件。併發
操做系統位於計算機硬件與應用軟件之間,本質也是一個軟件。操做系統由操做系統的內核(運行於內核態,管理硬件資源)以及系統調用(運行於用戶態,爲應用程序員寫的應用程序提供系統調用接口)兩部分組成,因此,單純的說操做系統是運行於內核態的,是不許確的。性能
細說的話,操做系統應該分紅兩部分功能:優化
一:隱藏了醜陋的硬件調用接口,爲應用程序員提供調用硬件資源的更好,更簡單,更清晰的模型(系統調用接口)。應用程序員有了這些接口後,就不用再考慮操做硬件的細節,專心開發本身的應用程序便可。例如:操做系統提供了文件這個抽象概念,對文件的操做就是對磁盤的操做,有了文件咱們無需再去考慮關於磁盤的讀寫控制(好比控制磁盤轉動,移動磁頭讀寫數據等細節)spa
二:將應用程序對硬件資源的競態請求變得有序化,例如:不少應用軟件實際上是共享一套計算機硬件,比方說有可能有三個應用程序同時須要申請打印機來輸出內容,那麼 a 程序競爭到了打印機資源就打印,而後多是 b 競爭到打印機資源,也多是 c,這就致使了無序,打印機可能打印一段 a 的內容而後又去打印 c...,操做系統的一個功能就是將這種無序變得有序。
操做系統發展史
摘自《湯小丹 - 計算機操做系統(第三版)》
從第一臺計算機誕生(1945 年)到 20 世紀 50 年代中期的計算機,屬於第一代計算機。此時的計算機是利用成千上萬個真空管作成的,它的運行速度僅爲每秒數千次,但體積卻十分龐大,且功耗也很是高。這時還未出現OS。計算機操做是由用戶(即程序員)採用人工操做方式直接使用計算機硬件系統,即由程序員將事先已穿孔(對應於程序和數據)的紙帶(或卡片)裝入紙帶輸入機(或卡片輸入機),再啓動它們將程序和數據輸入計算機,而後啓動計算機運行。當程序運行完畢並取走計算結果以後,才讓下一個用戶上機。這種人工操做方式有如下兩方面的缺點:
(1)用戶獨佔全機。此時,計算機及其所有資源只能由上機用戶獨佔。
(2)CPU 等待人工操做。當用戶進行裝帶(卡)、卸帶(卡)等人工操做時,CPU 及內存等資源是空閒的。
可見,人工操做方式嚴重下降了計算機資源的利用率,此即所謂的人機矛盾。隨着 CPU 速度的提升和系統規模的擴大,人機矛盾變得日趨嚴重。此外,隨着 CPU 速度的迅速提升而 I/O 設備的速度卻提升緩慢,這又使 CPU 與 I/O 設備之間速度不匹配的矛盾更加突出。爲了緩和此矛盾,曾前後出現了通道技術、緩衝技術,但都未能很好地解決上述矛盾,直至後來又引入了脫機輸入/輸出技術,纔得到了較爲使人滿意的結果。
爲了解決人機矛盾及 CPU 和 I/O 設備之間速度不匹配的矛盾,20 世紀 50 年代末出現了脫機輸入/輸出(Off-Line I/O)技術。該技術是事先將裝有用戶程序和數據的紙帶(或卡片)裝入紙帶輸入機(或卡片機),在一臺外圍機的控制下,把紙帶(卡片)上的數據(程序)輸入到磁帶上。當 CPU 須要這些程序和數據時,再從磁帶上將其高速地調入內存。相似地,當 CPU 須要輸出時,可由 CPU 直接高速地把數據從內存送到磁帶上,而後再在另外一臺外圍機的控制下, 將磁帶上的結果經過相應的輸出設備輸出。因爲程序和數據的輸入和輸出都是在外圍機的控制下完成的,或者說,它們是在脫離主機的狀況下進行的, 故稱爲脫機輸入/輸出方式;反之,在主機的直接控制下進行輸入/輸出的方式稱爲聯機輸入/輸出 (On-Line I/O) 方式。這種脫機 I/O 方式的主要優勢以下:
(1)減小了CPU的空閒時間。 裝帶(卡) 、卸帶 (卡) 以及將數據從低速 I/O 設備送到高速磁帶 (或盤)上,都是在脫機狀況下進行的,並不佔用主機時間, 從而有效地減小了 CPU 的空閒時間,緩和了人機矛盾。
(2)提升了 I/O 速度。當 CPU 在運行中須要數據時,是直接從高速的磁帶或磁盤上將數據調入內存的,再也不是從低速 I/O 設備上輸入,極大地提升了 I/O 速度,從而緩和了 CPU 和 I/O 設備速度不匹配的矛盾,進一步減小了 CPU 的空閒時間。
上世紀 50 年代中期發明了晶體管,人們開始用晶體管替代真空管來製做計算機,從而出現了第二代計算機。它不只使計算機的體積大大減少,功耗顯著下降,同時可靠性也獲得大幅度提升,使計算機已具備推廣應用的價值,但計算機系統仍很是昂貴。爲了能充分地利用它,應儘可能讓該系統連續運行,以減小空閒時間。爲此,一般是把一批做業以脫機方式輸入到磁帶上,並在系統中配上監督程序 (Monitor) ,在它的控制下使這批做業能一個接一個地連續處理。其自動處理過程是:首先,由監督程序將磁帶上的第一個做業裝入內存,並把運行控制權交給該做業。當該做業處理完成時,又把控制權交還給監督程序,再由監督程序把磁帶(盤)上的第二個做業調入內存。計算機系統就這樣自動地一個做業一個做業地進行處理,直至磁帶(盤)上的全部做業所有完成,這樣便造成了早期的批處理系統。因爲系統對做業的處理都是成批地進行的,且在內存中始終只保持一道做業,故稱此係統爲單道批處理系統(Simple Batch Processing System)。如圖所示爲單道批處理系統的處理流程,由此不難看出,單道批處理系統是在解決人機矛盾以及 CPU 與 I/O 設備速度不匹配問題的過程當中造成的。換言之,批處理系統旨在提升系統資源的利用率和系統吞吐量。但這種單道批處理系統仍然不能很好地利用系統資源,故現已不多使用。
20 世紀 60 年代中期,人們開始利用小規模集成電路來製做計算機,生產出第三代計算機。由 IBM 公司生產的第一臺小規模集成電路計算機——360 機,較之於晶體管計算機,不管在體積、功耗、速度和可靠性上,都有了顯著的改善。雖然在開發 360 機器使用的操做系統時,爲能在機器上運行多道程序而遇到了極大的困難,但最終仍是成功地開發出能在一臺機器中運行多道程序的操做系統 OS/360。
在單道批處理系統中,內存中僅有一道做業,它沒法充分利用系統中的全部資源,導致系統性能較差。爲了進一步提升資源的利用率和系統吞吐量,在 20 世紀 60 年代中期又引入了多道程序設計技術, 由此而造成了多道批處理系統(Multiprogrammed Batch ProcessingSystem)。在該系統中,用戶所提交的做業都先存放在外存上並排成一個隊列,稱爲 「後備隊列」 ;而後,由做業調度程序按必定的算法從後備隊列中選擇若干個做業調入內存,使它們共享 CPU 和系統中的各類資源。具體地說,在 OS 中引入多道程序設計技術可帶來如下好處:
(1)提升 CPU 的利用率,當內存中僅有一道程序時,每逢該程序在運行中發出 I/O 請求後,CPU 空閒,必須在其 I/O 完成後 CPU 才繼續運行;尤爲因 I/O 設備的低速性,更使CPU 的利用率顯著下降。在引入多道程序設計技術後, 因爲同時在內存中裝有若干道程序,並使它們交替地運行,這樣,當正在運行的程序因 I/O 而暫停執行時,系統可調度另外一道程序運行,從而保持了 CPU 處於忙碌狀態。
(2)可提升內存和 I/O 設備利用率。爲了能運行較大的做業, 一般內存都具備較大容量,但因爲 80% 以上的做業都屬於中小型,所以在單道程序環境下,也一定形成內存的浪費。相似地,對於系統中所配置的多種類型的 I/O 設備,在單道程序環境下也不能充分利用。若是容許在內存中裝入多道程序, 並容許它們併發執行, 則無疑會大大提升內存和 I/O 設備的利用率。
(3)增長系統吞吐量。在保持 CPU、I/O 設備不斷忙碌的同時,也必然會大幅度地提升系統的吞吐量,從而下降做業加工所需的費用。
多道批處理系統的優缺點:
雖然早在 20 世紀 60 年代就已出現了多道批處理系統,但至今它還是三大基本操做系統類型之一。在大多數大、中、小型機中都配置了它,說明它具備其它類型 OS 所不具備的優勢。多道批處理系統的主要優缺點以下:
(1)資源利用率高。因爲在內存中駐留了多道程序,它們共享資源,可保持資源處於忙碌狀態,從而使各類資源得以充分利用。
(2)系統吞吐量大。系統吞吐量是指系統在單位時間內所完成的總工做量。能提升系統吞吐量的主要緣由可歸結爲:第一,CPU 和其它資源保持 「忙碌」 狀態; 第二,僅看成業完成時或運行不下去時才進行切換,系統開銷小。
(3)平均週轉時間長。做業的週轉時間是指從做業進入系統開始,直至其完成並退出系統爲止所經歷的時間。在批處理系統中,因爲做業要排隊,依次進行處理,於是做業的週轉時間較長,一般需幾個小時,甚至幾天。
(4)無交互能力。用戶一旦把做業提交給系統後,直至做業完成,用戶都不能與本身的做業進行交互,這對修改和調試程序是極不方便的。
多道批處理系統須要解決的問題:
多道批處理系統是一種有效、但十分複雜的系統。爲使系統中的多道程序間能協調地運行,必須解決下述一系列問題。
(1)處理機管理問題。在多道程序之間,應如何分配被它們共享的處理機,使 CPU 既能知足各程序運行的須要,又能提升處理機的利用率,以及一旦把處理機分配給某程序後,又應在什麼時候收回等一系列問題,屬於處理機管理問題。
(2)內存管理問題。應如何爲每道程序分配必要的內存空間,使它們「各得其所」且不致因相互重疊而丟失信息,以及應如何防止因某道程序出現異常狀況而破壞其它程序等問題,就是內存管理問題。
(3)I/O 設備管理問題。系統中可能具備多種類型的 I/O 設備供多道程序所共享,應如何分配這些 I/O 設備,如何作到既方便用戶對設備的使用,又能提升設備的利用率,這就是I/O 設備管理問題。
(4)文件管理問題。在現代計算機系統中,一般都存放着大量的程序和數據(以文件形式存在),應如何組織這些程序和數據,才能使它們既便於用戶使用,又能保證數據的安全性和一致性,這些屬於文件管理問題。
(5)做業管理問題。對於系統中的各類應用程序,其中有的屬於計算型,即以計算爲主的程序;有的屬於 I/O 型,即以 I/O 爲主的程序;又有些做業既重要又緊迫;而有的做業則要求系統能及時響應,這時應如何組織這些做業,這即是做業管理問題。
爲此,應在計算機系統中增長一組軟件,用以對上述問題進行妥善、有效的處理。這組軟件應包括:能控制和管理四大資源的軟件,合理地對各種做業進行調度的軟件,以及方便用戶使用計算機的軟件。正是這樣一組軟件構成了操做系統。據此,咱們可把操做系統定義爲:操做系統是一組控制和管理計算機硬件和軟件資源,合理地對各種做業進行調度,以及方便用戶使用的程序的集合。