作業系統概述(os 筆記一)

2022-05-07 12:06:12 字數 4376 閱讀 3426

1、目標:作為使用者/計算機介面

​ 計算機的使用人群大致可以分為三類,終端使用者,程式開發者,作業系統設計人員。

對於終端使用者,即應用程式的使用者來說,他們通常不關注電腦程式的組成和計算機的硬體細節,因此在終端使用者看來,計算機系統是一組應用程式的組合。終端使用者需要學習的只是各種應用程式的使用。

對於程式開發者來說,計算機系統是由各種程式語言和系統呼叫介面組成。程式開發者可以選擇一種程式語言去開發應用程式。而應用程式的執行脫離不了硬體的支援,如果程式開發者在開發應用時還需要考慮硬體的操作,控制細節,那麼對於他們來說開發應用程式無疑是一件極為複雜的工作,而且效率也很低下。為了簡化這種開發的難度,需要提供一些系統程式來實現對硬體的操作如 i/o 裝置操作,檔案管理等。作業系統正是這類程式,它為程式開發者提供了一系列的系統呼叫介面,向程式開發者遮蔽了硬體的細節,使他們更加容易的使用這些功能和服務。

而對於作業系統設計人員,計算機系統是乙個複雜的監控,管理類的程式,計算機系統的主要目標是作為程式開發者和硬體實現之間的中間層。向上為程式開發者提供易用的系統呼叫介面,向下通過低階語言實現對底層硬體的操作和控制。

2、目標:作為資源管理器

​ 一台計算機就是一組(硬體)資源,這些資源用於對資料的移動、儲存、和處理,以及對這些功能的控制。作業系統負責管理這些資源(對硬體的操控)。通常我們把具有控制能力的作業系統想象成在被控制物件(應用程式)之外或者至少與被控制物件有一些差別和距離。但是事實卻不然。實際的情況是,

作業系統與普通的計算機軟體相同,他也是由處理器執行的一段程式或一組程式。

作業系統也是一段可以被處理器執行的指令序列,它與應用程式的主要區別是二者的意圖不同。作業系統控制處理器使用其他系統資源,並控制其他程式的執行時機。因此作業系統經常會釋放控制,而且必須依賴處理器才能恢復控制(之後進一步討論如何釋放和恢復)。

3、功能

​ 簡要的說,作業系統通常提供了一下幾個方面的服務和功能:

程式執行:執行乙個程式需要很多步驟,包括必須把 指令 和 資料 載入到記憶體、初始化 i/o 裝置和檔案,準備一些資源,作業系統負責這些工作。(沒有作業系統時這些都需要程式設計師來實現)

檔案的訪問和控制

系統訪問:對共享資源和授權資源的訪問控制,同時還必須解決資源競爭時的衝突問題。

錯誤檢測和響應:計算機系統執行時可能發生各種錯誤,包括硬體錯誤,軟體錯誤。對於每種錯誤作業系統必須能對每種錯誤提供響應並清除錯誤條件,使其對正在執行的程式的影響降到最小。響應可以是終止引起錯誤的的程式、重試操作或簡單的給應用程式報告錯誤資訊。

記賬:統計收集對各種資源的使用資訊。用於**和優化效能。

1、序列處理

​ 對於早期沒有作業系統的計算機,程式設計師都是直接和硬體打交道,程式的輸入使用編有機器碼的打孔的紙帶,輸出通過控制台的指示燈和印表機顯示。在這個時期,現在的作業系統是以人工的形式進行的。當我們要執行乙個程式,首先需要估計程式將要執行的時間,然後在計算機裝置上的乙個硬拷貝的登記表預定機器時間,這個時間一旦登記後就不可更改,如果程式執行時間估計過長,那麼即便程式結束,計算機仍不能被使用。如果時間過短,那麼程式將被強制停止。另外,如果我們需要在執行的源程式中載入和鏈結公用函式或者是高階語言的編譯器,那麼還可能將涉及到磁帶和卡片組的拆卸和更換,而這些都是由人工來完成的,不僅很易出錯,而且效率非常低下。所以基於人工操作的序列處理其實是比較糟糕的。

2、簡單的批處理系統

​ 為了提高計算機的利用率,人們有了開發批處理作業系統的想法。批處理系統不再像序列處理中每次需要人工的切換,排程程式,而是將多個程式作為乙個批次一同處理,程式的切換和時間安排由批處理系統處理。單單這一項將人工的操作更改為電子的操作就極大地提高了計算機的利用率。

簡單批處理系統的中心思想使用乙個稱作監控程式的軟體。這個程式可以監控使用者程式的執行,每當有使用者程式執行結束時,控制就返回到監控程式,同時監控程式自動載入下乙個程式。(用電腦程式實現了電腦程式更換裝載的自動化:))

為了實現監控程式對事件執行順序的控制,大部分監控程式必須總是處於記憶體中,並且可以執行。這部分稱作__常駐監控程式__。

從處理器角度來說,監控程式和使用者程式的切換是通過分支指令來實現的。通過分支指令可以讓處理器從監控程式**段起始位址開始取址執行,也可以從使用者程式**段處開始。

可以看出,監控程式或者說批處理作業系統,只是乙個簡單的電腦程式。它依賴於處理器可以從記憶體的不同部分取指令的能力,以交替的獲取或釋放控制權。此外,還有其他的硬體功能:

定時器:用於防止乙個使用者程式長時間獨佔計算機。在每個程式開始時設定定時器,如果時間到了,使用者程序被停止,控制返回監控程式。

特權指令:只能由監控程式執行的指令,如果使用者程式執行了這些指令,將引發乙個錯誤。如果使用者需要執行特權指令的操作,那麼必須請求監控程式為自己執行這個操作。

中斷:為不同的程式的交替執行提供了可能。

記憶體保護和特權指令引入的同時也產生了乙個新的概念——操作模式。即 使用者態 和 核心態。

3、多道程式設計批處理系統

在批處理系統的使用中,人們發現由於 cpu 和 i/o 速度的嚴重不匹配使得整個__計算機效能__很差。考慮這樣一種情況,當乙個程式發出 i/o 請求後,由於批處理系統每次處理乙個程式,所以此時處理器保持空閒等待 i/o 結束後再繼續執行指令。cpu 等待 i/o 的過程與 cpu 的執行指令的速度相比是非常慢的,例項證明計算機可能在 90% 的時間都在等待 i/o 的操作結束。這種每次必須等到乙個程式結束才能繼續下乙個程式的執行的計算機系統被稱為 單道程式設計系統 。

這種低效在當時的技術層面上是可以避免的(使用中斷)。解決辦法就是使用 多道程式設計批處理系統。針對於單道程式設計批處理系統的低效問題,多道批處理系統提供了解決辦法。

在多道批處理系統中,當乙個使用者程式有涉及到 i/o 請求時,cpu 不選擇空閒等待,而是轉而去執行另乙個或多個可執行的使用者程式,並可能在他們當中不斷的切換,而當等待 i/o 的程式 i/o 結束後,cpu 再次返回這個程式繼續執行。顯而易見,這種設計方法有效的利用了程式在執行 i/o 期間 cpu 空閒的時間,盡量的保證了 cpu 的利用率,從而提高了計算機的整體利用率。和簡單的批處理系統一樣,多道批處理系統也需要依賴一些硬體的功能,支援 i/o 中斷 和 直接儲存器訪問(dma)是最為顯著的硬體功能。通過中斷驅動的 i/o 或 dma ,當乙個 i/o 操作完成後,處理器被中斷,控制器被傳遞給作業系統中的中斷處理程式,然後作業系統將控制權傳遞給另乙個程式。

多道批處理系統引入的同時,也帶來了新的問題,對準備執行的多個程式,他們必須保留在記憶體中,這就需要 記憶體管理 方案,如果 cpu 等待期間多個作業都準備執行,處理器必須選擇執行哪乙個,這就需要某種 排程演算法。

4、分時系統

​ 通過使用多道批處理系統使得計算機處理一批使用者程式變得更加高效。但是有時我們需要一種模式可以使使用者和計算機進行互動,即多個使用者程式能同時響應多個使用者的請求。分時系統與多道批處理系統非常相像,不同的是分時系統用來處理互動式的任務。由於多個使用者同時分享處理器的時間(處理器在多個互動類的程式之間飛快的切換),所以這種技術被稱為 分時系統 (本質仍是多道批處理系統)。

而分時技術能同時實現多使用者互動的原因在於,人的反應時間要遠遠慢於處理器在不同程式間切換的速度,每個使用者程序執行乙個很短的時間片,然後切換到下乙個程序,從而給每個使用者一種計算機在單獨服務自己的假像。

1、層次結構

​ 我們可以將作業系統看做是一系列的層,每一層執行作業系統所需的功能的相關子集。他依賴於下乙個較低層,較低層執行更為原始的功能並隱藏這些功能的細節。他還給相鄰的較高層提供服務。通常情況下,較低層的處理時間很短,作業系統的某些部分必須直接與計算機硬體進行互動,在硬體層次,事件的時間刻度為幾十億分之一秒。而在作業系統與使用者互動的一端,使用者發出指令的頻率要小得多,可能每隔幾秒中傳送一次。使用層次結構可以很好的與這種頻率差別場景保持一致。

2、shell

​ 為使用者提供作業系統的乙個介面。他之所以被稱為命令列直譯器,是因為它將使用者和作業系統細節分離開,而簡單的把作業系統作為一組服務的集合提供給使用者,通過使用者輸入命令實現對系統的控制。

3、unix的歷史

unix 最初是在貝爾實驗室開發的。unix 的設計開發參考了 mit 的分時系統 ctss。而隨著貝爾實驗室工作的展開和其他地方關於 unix 的工作產生了一系列 unix 版本。第乙個著名的歷程碑是把 unix 系統從 pdp-7 移植到 pdp-11 上,第一次暗示了unix 將成為所有計算機上的作業系統;下乙個重要的里程碑是用 c 語言重寫了unix ,這在當時是聞所未聞的策略。原因如下:

現在,幾乎所有的unix 都是使用 c編寫的。

出處:本部落格中未標明**的文章歸作者 skipper 和共有,歡迎**,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

OS 作業系統概述1

這是計算機作業系統這門課程的學習總結筆記,一共五個部分,包括 沒有配置任何軟體的計算機稱為裸機,裸機僅僅構成了計算機系統的硬體基礎。引入作業系統的目的是 作業系統的概念可以從四個角度來理解,這四個角度的理解觀點彼此不衝突,只是站在不同角度對計算機作業系統進行分析產生的結果。不同的作業系統可能有不同的...

作業系統筆記一(作業系統概述)

1.1作業系統是什麼?作業系統是管理計算機硬體和軟體資源的計算機程式,管理配置記憶體 決定資源供需順序 控制輸入輸出裝置等,作業系統提供讓使用者和系統互動的操作介面。1.2作業系統有什麼用?作業系統統一管理計算機資源!計算機資源包括處理器資源 io資源 儲存器資源 檔案資源 作業系統實現了對計算機資...

作業系統課堂筆記一 作業系統概述

作業系統的特徵 作業系統架構 作業系統的分類 核心點參考 include intmain int argc,char const ar 使用者告知作業系統 方式很多 作業系統判斷檔案是否是可執行檔案 pe,elf 作業系統建立乙個程序,將可執行檔案格式對映到程序結構,由該程序執行程式 作業系統將控制...