前言思維導圖
作業系統的定義
很多書本上,都有對作業系統的定義,但直到現在,作業系統都沒有乙個完整、精確、公認的定義,因為它的外延和邊界都不是固定的。我們現在先從功能的角度來對作業系統進行乙個定義:
對上:作業系統是乙個控制軟體,它控制了計算機系統中的應用程式怎麼執行。作業系統還為使用者提供了各種服務,例如放歌。如果乙個計算機,沒有作業系統,那這些服務都是不存在的。
對下:作業系統是乙個資源控制器,資源指的是cpu、記憶體、磁碟、外設等,作業系統將這些資源進行共享、分配、協調。我們的計算機有各種應用程式,會去搶占這些資源,那麼我們的作業系統,可以把這些應用程式協調好。
作業系統就像乙個管理員,它管理計算機的應用服務,硬體。
那麼對於硬體,作業系統是如何能對它們進行管理的呢?
這些物理資源,作業系統會對它們進行乙個抽象:
- cpu抽象成了程序
- 磁碟抽象成了檔案
- 記憶體抽象成了位址空間
剛剛我們從功能的角度定義了作業系統,下面我們從軟體的角度來定義作業系統。
軟體我們首先可以把它分類兩大類:
系統軟體
作業系統屬於系統軟體,而對於系統軟體,我們可以進一步細化為:
功能軟體:是指的有特定功能的軟體,例如編譯器、庫。
作業系統:負責的對硬體的管理和控制。作業系統軟體其實分為兩個層面:
shell:作業系統對外暴露的介面,提**用服務給使用者使用,我們可以通過gui來操作,也可以通過命令列來操作。
我們著重觀察的重點,其實是kernel,從作業系統的核心來了解它到底是什麼。
kernel由哪些部分組成呢?如下:
我們之前提到,作業系統可以對cpu進行管理,其實主要是由cpu排程器來完成的。而物理記憶體管理與虛擬記憶體管理,是對我們的記憶體進行管理的。檔案系統管理,其實是建立在disks(disks是磁碟塊的乙個操作單位,可以進行讀、寫的操作來儲存資料)之上的,但是disks是抽象的概念,因此有了檔案系統管理。
終端處理與裝置驅動,是kernel核心的底層,直接與硬體打交道,它是作業系統非常重要的乙個單元,有了它,我們的作業系統才能對上提供各種應用服務。
作業系統架構層次結構
作業系統的位置,是在硬體之上,應用程式之下的。
作業系統核心的特徵
我們可以在計算機中同時執行多個應用程式,作業系統對它們進行管理。這裡我們需要注意一下併發與並行的區別,併發指的是乙個時間段內,多個程式執行。並行指的是乙個時間點內,多個程式執行。當我們只有乙個cpu的時候,並行是不存在的
共享讓我們的應用程式可以訪問各種各樣的資源。共享有兩種型別,一種是互斥共享,一種是「共享」訪問。我們的作業系統管理的資源,其實在乙個時間點上,是乙個應用服務只能訪問乙個資源,當然,這是跟資源的粒度相關。
這個我們在前面已經提到了,就是將cpu虛擬成了程序,磁碟抽象成了檔案等。在虛擬的條件下,我們可以將一台物理機器,虛擬成多台機器。
我們的程式執行並不是一貫到底,而是走走停停,向前推進的速度不可預知。但是只要執行的環境相同,我們程式非同步執行的結果都會是一樣的,例如1+1=2,在同等環境下,非同步執行的結果都會是一樣的。
總結
對於作業系統的定義,可以從控制的層面、軟體的層面來進行理解。
對於作業系統的組成,我們需要知道shell和kernel,在本篇部落格中,我們側重的是kernel的講解。
對於作業系統的位置,我們需要知道它面向硬體,在硬體之上,軟體之下的。
對於作業系統的特徵,我們需要記住併發、共享、虛擬、非同步。
什麼是作業系統
提要 沒有作業系統的計算機稱之為裸機,無法方便的使用。能夠是計算機硬體工作的只有機器語言,也就是一大串由01兩個數字組成的編碼。1 作業系統的作用是什麼?作業系統的主要作用是直接跟計算機的硬體打交道。作業系統將跟計算機硬體打交道的工作都封裝成乙個乙個的系統呼叫 系統呼叫 將要實現的某些功能通過系統呼...
什麼是作業系統?
os提供的介面 命令的表示方式 命令的使用方式 離線使用方式 off line 和聯機使用方式 on line 特點 監視資源 分配 資源 保護資源 該觀點認為,作業系統是計算機系統工作流程的組織者,它負責協調在系統中執行的各個應用軟體的執行次序。特點 用於巨型機和大型伺服器上,以批檔案方式提交作業...
什麼是作業系統
從使用者角度來說,作業系統是乙個控制軟體,控制應用程式的執行以及限制不同應用程式占用不同大小的資源。作業系統會提供不同的服務,比如i o服務,網絡卡的訪問等等,使得我們能夠更好的操作計算機。對於計算機內部管理來說,作業系統相當於資源管理器,在我們的計算機中有各種各樣的資源,cpu是一種資源,記憶體是...