1. 程式人生 > >3.作業系統簡單介紹 作業系統發展歷史 批處理分時系統 作業系統是什麼 作業系統對檔案的抽象 程序 虛擬記憶體是什麼 作業系統作用 作業系統功能

3.作業系統簡單介紹 作業系統發展歷史 批處理分時系統 作業系統是什麼 作業系統對檔案的抽象 程序 虛擬記憶體是什麼 作業系統作用 作業系統功能

作業系統

其實 作業系統並不是與計算機硬體一起誕生的

它是在人們使用計算機的過程中,為了管理硬體資源,提高效能提高資源利用率,而逐步地形成和完善起來的。

作業系統也是一種程式,負責管理系統資源

上電自檢(經過BIOS)之後,處理器第一個要處理的程式

之所以叫做作業系統,其實就相當於它提供了一個工作臺

讓你可以更加方便的操作計算機的軟硬體資源

是機器的一種封裝,對於人機互動提供了統一的操作方式

批處理

自從第二代電晶體計算機之後,計算機的效能有了很大的提升

與之矛盾的自然是計算機手動輸入速度慢

為了提供系統利用率,出現了批處理系統

使用者將一批作業提交給作業系統後就不再幹預,由作業系統控制它們自動執行。

顯然不具備任何互動性,只是提高了系統的利用率

其中有

聯機批處理系統,聯機就是主機自己來控制輸入輸出

輸入輸出時,計算機的CPU是空閒的,需要等待資料傳輸完成

離線批處理系統就是輸入輸出不在交由主機處理,託管到另一個臺機器

顯然,處理機和主機可以並行工作,他們通過高速磁帶進行對接

但是僅僅只能執行一個程式

人們當然希望計算機可以同時執行多個任務

多道程式系統

然後很自然的出現了多道程式系統

允許多個程式同時進入記憶體並執行

交替在CPU中執行,它們共享系統中的各種硬、軟體資源。

多道批處理系統

顧名思義就是批處理與多道程式的結合,兼顧了多道與批處理的優點

不過沒有互動性

分時系統

把CPU時間分成時間片,各個任務按照時間片輪流執行,分時就是分配時間片

分時系統的實時性互動性比多道程式有更大的提高

實時系統

還有一些特定的場景,對於實時性要求更高,比如軍事裝置等

分為實時控制系統/實時資訊處理系統

響應更加及時,更加可靠,平時場景一般是用不到的

可以看得出來,作業系統的發展中有幾個主要矛盾

CPU效能與手工操作的矛盾

CPU效能與輸入輸出的矛盾

執行單一任務與希望可以執行多程式之間的矛盾

互動性差和希望可以提供更強互動性之間的矛盾

實時性差與希望可以提供更加實時可靠系統之間的矛盾

功能單一與希望可以提供通用功能系統之間的矛盾

整個發展過程就是為了解決這些矛盾

發展的結果也就是CPU的利用率大幅度上升,功能更加完備

可以同時執行多個任務

實時性互動性更高更可靠

也出現了更為通用的計算機

作業系統的型別更多的可以理解為邏輯上的意義,他們可以相互結合,比如上面的多道批處理

還有分時批處理  實時批處理 等

Unix是最早的通用作業系統

此後又出現了linux/windows/蘋果

 作業系統概括總結

計算機由硬體和軟體構成

我們可以認為作業系統是計算機軟體程式和硬體之間的一個薄層

這個薄層封裝了底層的硬體實現

基本功能是:

防止硬體被應用程式隨意濫用,並且嚮應用程式提供了簡單一致的機制來控制各種不同的硬體裝置

作業系統通過幾個基本的抽象概念來達到這個目的

/虛擬記憶體/程序/檔案/

既然是抽象,那自然是像譯碼器一樣,轉換了一種描述呈現表達操作方式

檔案

檔案是對IO裝置的抽象

就是位元組序列而已,所以每個IO裝置,哪怕是鍵盤顯示器都可以看成是檔案

嚮應用程式提供了一個統一的操作檢視

也可以理解為格式,也就是對於所有程式來說 所有的檔案都是這樣子的

不管你到底是什麼樣子的IO裝置,應用程式完全不用關注他具體的樣子

作業系統會提供一致性的解決方案

虛擬記憶體

虛擬記憶體是對主存和磁碟I/O的裝置的抽象

是計算機系統記憶體管理的一種技術。

它使得應用程式認為它擁有連續的可用的記憶體(一個連續完整的地址空間)

好像自己都獨佔使用主存

通過提供連續的記憶體空間,每個程序看到的虛擬地址空間由大量的固定的區塊構成

其實可以理解為戶型圖,每個程序的戶型都一樣

包括程式程式碼和資料區/堆/棧 等

他們看到的地址空間是一致的

而不用你自己費心的去管理地址

現在的計算機都可以多工同時執行,之前提到的中斷正是這種功能的硬體基礎

沒有哪個程式會一直獨佔處理器

每個程式都需要記憶體,想要多工執行自然需要更多的記憶體

怎麼才能在有限的記憶體空間服務於越來越多的程式呢?

注意到,雖然記憶體中有許多個程式同時執行,但是同一時間點,只有一個處理器在執行

如果記憶體不夠的話,可以讓暫時不用的資料和程式碼 存放到磁碟

騰出來空間載入將要使用的部分

如果需要的話,再將它們用同樣的方式載入回來

這樣編寫程式的時候,不用關注到底是否有記憶體可用,

對於當前程式,他會假定他肯定有足夠的記憶體使用

因為這部分記憶體並不存在,而是位於磁碟上,所以叫做虛擬記憶體

硬碟的速度是很慢的,如果需要訪問的內容不在記憶體中,而是從磁碟載入,代價是巨大的

所以計算機自然會很慢

也就是說,虛擬記憶體犧牲執行效率換執行空間(同時執行更多的程式)

對於程式設計師來說,作業系統提供的虛擬記憶體,可以說是給程式的執行提供了統一的記憶體空間

程序

程序是對處理器 主存 I/O裝置的抽象

每個程式在計算機上執行,看上去可以獨佔的使用處理器,主存和I/O裝置

處理器好像在不間斷的一條接一條的執行程式中的指令

對於程式來說好像只有他自己的程式的程式碼和資料在記憶體中

好像跟其他的正在執行的應用程式並沒有關係

這是作業系統提供的一種假象,這就是程序的概念

程序是對處理器 主存 I/O裝置的抽象,也即是一個正在執行的程式的一種抽象

程序也是硬體中斷以及系統cpu時間片排程的產物

一個正在執行的程式,這是一件抽象的事情,

想要把它具體的對映到系統中,而且還能有中斷,還能夠重新返回現場繼續執行

你必須用具體的資訊去描述記錄跟蹤它的執行

作業系統保持跟蹤程序執行時所需要的所有資訊,這種資訊也叫作上下文

它包括很多資訊,自然取決於作業系統的底層實現

可能包括PC和暫存器的值,主存的內容等

作業系統想要把控制權從當前程序轉移到某個新的程序,就會進行上下文切換

也就是儲存當前的上下文,恢復程序的上下文

當然現代作業系統一個程序又實際的被分為多個稱之為執行緒的執行單元組成

每個執行緒都執行在程序上下文,共享同樣的程式碼和全域性資料

作業系統也是計算機發展中的一個偉大創舉

他隱藏了大量的底層細節,提供了大量方便的抽象

總結:

作業系統就是對硬體的封裝,提供簡單統一的訪問形式.