現代的計算機系統主要是由乙個或者多個處理器,主存,硬碟,鍵盤,滑鼠,顯示器,印表機,網路介面及其他輸入輸出裝置組成。
現代計算機系統是乙個複雜的系統。
應用軟體直接使用作業系統提供的功能來間接使用硬體。
作業系統
作業系統就是乙個協調、管理和控制計算機硬體資源和軟體資源的控制程式。
.1 作業系統位置
作業系統位於計算機硬體與應用軟體之間,本質也是乙個軟體。
作業系統由作業系統的核心(執行於核心態,管理硬體資源)以及系統呼叫(執行於使用者態,為應用程式設計師寫的應用程式提供系統呼叫介面)兩部分組成。
所以,單純的說作業系統是執行於核心態的,是不準確的。
.2 作業系統功能
隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型(系統呼叫介面)。
將應用程式對硬體資源的競態請求變得有序化。
作用一:為應用程式提供如何使用硬體資源的抽象功能舉例例如:作業系統提供了檔案這個抽象概念,對檔案的操作就是對磁碟的操作,有了檔案我們無需再去考慮關於磁碟的讀寫控制。
注意:作業系統提供給應用程式的該抽象是簡單,清晰,優雅的。
為何要提供該抽象呢?
硬體廠商需要為作業系統提供自己硬體的驅動程式(裝置驅動,這也是為何我們要使用音效卡,就必須安裝音效卡驅動。。。),廠商為了節省成本或者相容舊的硬體,它們的驅動程式是複雜且醜陋的
作業系統就是為了隱藏這些醜陋的資訊,從而為使用者提供更好的介面
這樣使用者使用的shell,gnome,kde看到的是不同的介面,但其實都使用了同一套由linux系統提供的抽象介面
作用二:管理硬體資源
現代的作業系統執行同時執行多道程式,
作業系統的任務是在相互競爭的程式之間有序地控制對處理器、儲存器以及其他i/o介面裝置的分配。
例如:同一臺計算機上同時執行三個程式,它們三個想在同一時刻在同一臺計算機上輸出結果,那麼開始的幾行可能是程式1的輸出,接著幾行是程式2的輸出,然後又是程式3的輸出,最終將是一團糟(程式之間是一種互相競爭資源的過程)
作業系統將印表機的結果送到磁碟的緩衝區,在乙個程式完全結束後,才將暫存在磁碟上的檔案送到印表機輸出,同時其他的程式可以繼續產生更多的輸出結果(這些程式的輸出沒有真正的送到印表機),這樣,作業系統就將由競爭產生的無序變得有序化。
作業系統與普通軟體的區別
普通軟體你可以棄用或者使用和該軟體功能相同的軟體,但你無法寫乙個屬於作業系統一部分的程式(時鐘中斷處理程式),作業系統由硬體保護,不能被使用者修改。
作業系統與使用者程式的差異並不在於二者所處的地位。特別地,作業系統是乙個大型、複雜、長壽的軟體。
發展歷史
.1第一代計算機
沒有作業系統的概念;所有的程式設計都是直接操控硬體
優點:程式設計師在申請的時間段內獨享整個資源,可以即時地除錯自己的程式(有bug可以立刻處理)
缺點:浪費計算機資源,乙個時間段內只有乙個人用。
同一時刻只有乙個程式在記憶體中,被cpu呼叫執行,比方說10個程式的執行,是序列的
.2第二代計算機
有了作業系統的概念;有了程式語言:fortran語言或組合語言
優點:批處理,節省了機時
缺點:整個流程需要人參與控制;計算的過程仍然是順序計算,序列;程式設計師原來獨享一段時間的計算機,現在必須被統一規劃到一批作業中,等待結果和重新除錯的過程都需要等同批次的其他程式都運作完才可以(這極大的影響了程式的開發效率,無法及時除錯程式)
第二代如何解決第一代的問題/缺點:
1.把輸入攢成一大波輸入
2.然後順序計算(這是有問題的,但是第二代計算也沒有解決)
3.把輸出攢成一大波輸出
.3第三代計算機
同時的外部裝置聯機操作:spooling,該技術同時用於輸出;多道技術;作業系統仍然是批處理
為了解決批處理:
分時作業系統:多個聯機終端+多道技術
20個客戶端同時載入到記憶體,有17在思考,3個在執行,cpu就採用多道的方式處理記憶體中的這3個程式,由於客戶提交的一般都是簡短的指令而且很少有耗時長的,索引計算機能夠為許多使用者提供快速的互動式服務,所有的使用者都以為自己獨享了計算機資源
.4個人計算機
作業系統歷史
第一階段 狀態機作業系統 1940以前 第二階段 單一操作員,單一控制端作業系統 40年代 輸入乙個命令,執行乙個庫函式 第三階段 批處理作業系統 50年代 將命令列成乙個清單,列印在紙帶上,乙個乙個地執行使用者程式 第四階段 多道批處理作業系統 60年代 乙個程式輸入輸出時,讓另乙個程式繼續執行,...
作業系統歷史
1.真空管與穿孔卡片1940 1955 無作業系統 使用過程,首先當時的計算機組成是這樣的,首先是輸入機,將已經穿孔的紙帶裝入 輸入機,然後把輸入機執行後的資料人工拿到計算機執行,再把計算機執行的資料人工拿到,印表機輸出結果。同時只能乙個程式設計師使用計算機資源 輸入機 計算機 印表機 都是人工搬運...
作業系統歷史
2 作業系統歷史 2.1 真空管與穿孔卡片 無作業系統 過程 萬能程式設計師們將對應於程式和資料的已穿孔的紙帶 或卡片 裝入輸入機,然後啟動輸入機把程式和資料輸入計算機記憶體,接著通過控制台開關啟動程式針對資料執行 計算完畢,印表機輸出計算結果 使用者取走結果並卸下紙帶 或卡片 後,才讓下乙個使用者...