程序員都應該瞭解的操作系統知識


一、什麼是操作系統

操作系統很難有一個精確的定義,因爲它是一個複雜的軟件,其外延邊界並不固定,但是我們可以從功能的角度來理解操作系統。操作系統其實是站在管理者的角度,來爲應用程序和底層的硬件提供相應的管理、控制、服務的功能。可以從對上和對下兩個層面來理解。

1.1 向上理解

  • 從用戶角度講,操作系統是一個控制程序
    可以控制計算機系統中的應用程序如何運行;同時,限制不同的應用程序佔用不同的資源。
  • 操作系統可以①管理應用程序、②爲應用程序提供各種服務、③殺死應用程序
    如IO服務、聲卡,網卡的訪問等。

下圖是站在用戶角度看到的Windows10系統界面,提供了很方便的圖形界面。
在這裏插入圖片描述

1.2 向下理解

  • 對內部資源來講,操作系統是一個資源分配器
    在計算機系統中,有各種資源,例如,cpu是資源,內存是資源,外設也是資源。操作系統需要協調好各種資源,使資源的利用率和計算機的效率得到保障。

下圖是操作系統把cpu、磁盤、內存三部分物理資源分別抽象爲進程、文件、地址空間,從而給應用程序使用。

在這裏插入圖片描述

1.3 承上啓下

  • 操作系統處於硬件之上、應用程序之下。
    操作系統是一種特殊的軟件,被稱之爲系統軟件。是直接面向硬件的,向下直接管理硬件資源,向上提供抽象的接口

  • 操作系統位於應用程序之下,爲應用程序提供服務支持。

操作系統對外的接口叫做(外殼Shell),對內的接口叫做(內核Kernel),操作系統這門課更加關注的是操作系統的內部,即Kernel。

二、OS-Kernel操作系統內核

2.1 操作系統內部組件

操作系統內部組件,包括:

  • CPU調度器
  • 物理內存管理
  • 虛擬內存管理
  • 文件系統管理
  • 中斷處理與設備驅動

操作系統是管理硬件資源的,計算機最重要的三大硬件資源分別是:CPU內存磁盤

①CPU的管理涉及:CPU的調度、進程線程的管理、

②內存的管理涉及:物理內存、虛擬內存。

③磁盤的管理涉及:disk是以磁盤塊爲基本單位讀寫單位,抽象出文件系統,以文件的形式爲應用程序提供存儲、訪問的環境。

除了這三塊,和底層打交道的還有④中斷處理和IO設備驅動

2.2 OS-Kernel的特徵

(1) 併發

計算機系統中同時存在多個運行的程序,需要OS管理和調度。

注意,併發的並行的區別:

  • 併發指的是,在一段時間內,多個程序可以運行;
  • 並行指的是,在一個時間點上,多個程序可以同時執行。

能夠並行執行的程序,一般要求計算機系統存在多個CPU,若計算機只有一個CPU則無法完成並行的工作。

(2) 共享

"同時"訪問,實際上是互斥共享

操作系統是一個資源管理器,它需要有效的讓資源共享給不同的應用程序。

表面上看可以同時訪問內存、IO等,但其實在操作系統的內部,這種“同時”是一種互斥共享訪問,又稱爲“分時”訪問。即在一個時間點上只有一個程序可以訪問一個資源。

比如說,有一塊內存,那麼在一個時間點上,對於某一個內存單元只能有一個程序來訪問。但是,如果把一塊內存分爲相互隔離的兩半,那麼就可以同時讓兩個程序同時訪問不同的內存單元。

(3) 虛擬

  • 利用多道程序設計技術,讓每個用戶都覺得有一個計算機專門爲他服務。

操作系統直接面對的是硬件,但是操作系統把硬件虛擬化了。例如,把CPU虛擬化爲進程;把磁盤虛擬化爲文件;把內存虛擬化爲地址空間。這樣就使得每一個應用程序(或者用戶)感覺到自己獨佔一臺計算機。

這也是多到程序設計中常見的方式:把一臺物理機器,虛擬成多臺機器,在操作系統支持之下,就可以完成相應的功能。

(4) 異步

  • 程序的執行不是一貫到底,而是走走停停,向前推進的速度不可預知。
  • 但只要運行環境相同,OS需要保證程序運行的結果相同。

如果只有一個CPU,在任何一個時刻只能有一個程序在跑。下一個程序什麼時候跑,取決於操作系統的調度。

三、操作系統實例

當前市面上有各種各樣的操作系統,有面向桌面的、面向服務器的、面向移動終端的、面向工控領域等,下面介紹一些經典的操作系統實例。

1. UNIX家族

在這裏插入圖片描述

UNIX是在60年代,由肯•湯普森(Ken Thompson)丹尼斯•裏奇(Dennis Ritchie)(C語言之父),完成的基於C語言的操作系統,從而改變了世界。
在這裏插入圖片描述

BSD是在UNIX操作系統之上,做了進一步改進和擴展,特別是在網絡協議站上有獨到之處,形成了UNIX-BSD(伯克利發行版)。隨後,出現了各種版本的 UNIX-BSD 系統。

2. Linux家族

在這裏插入圖片描述

Linux是仿UNIX的操作系統,1991年由一個學生Linus發明。如今,Linux在智能終端領域得到了很大的發展,Google推出的Android操作系統也使用了Linux OS內核,當前Linux內核佔據了最大的比例,遠超蘋果的IOS。

3. Windows家族

在這裏插入圖片描述

微軟公司(microsoft)在90年代設計了WindowsOS,其前身是80年代DOS,在桌面領域,Windows佔據絕對統治地位。但在服務器和終端領域,更多的是Linux操作系統。

Windows操作系統的出現,對計算機推廣到千家萬戶起到了很大的作用。

四、操作系統的發展歷史

  • 早期計算機使用紙帶傳輸程序和數據,操作系統只起到加載作用。

CPU等硬件快速發展,計算機速度得到提升,性能未得到充分利用。

  • 批處理階段

內存容量越來越大,可以存放多個程序,CPU執行多個程序。

  • 多道程序設計階段

爲了更好的利用計算機資源,更好的和用戶交互,出現了分時系統。

  • 分時調度階段

  • 個人電腦操作系統

如今,操作系統有兩大熱門發展方向:

①集成電路發展:一個CPU中可以集成多個CPU核,多核多處理。

②網速發展:出現分佈式 操作系統。

隨着物聯網,大數據,雲計算的發展。可以預見,將來一個人周圍會有大量的嵌入式設備來提供感知,計算,服務。從早期的一羣人圍着一臺計算機服務,逐步的發展演化到一羣計算機爲一個人服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章