文章目錄
- 1. 概念
-
- 1.1. 定義
- 1.2. 種類
- 1.3. 特征
- 1.4. 功能
- 2. 程式
-
- 2.1. 運作狀态
- 2.2. 程式順序執行的特征
- 2.3. 程式并發執行的特征
- 3. 程序
-
- 3.1. 特征
- 3.2. 程序控制塊PCB(Process Control Block)
- 3.3. 程序狀态
-
- 3.3.1. 臨界資源與臨界區
- 3.3.2. 程序同步
- 3.3.3. 程序互斥
-
- 3.3.3.1. 互斥的四條準則
- 3.3.4. 程序通信方式
- 3.4. 程序排程算法
- 4. 線程
-
- 4.1. 程序和線程的差別
- 5. 死鎖
-
- 5.1. 死鎖産生的原因
- 5.2. 死鎖産生的必要條件
- 5.3. 死鎖的處理方法
- 5.4. 安全序列與安全狀态
- 5.5. 避免死鎖
- 6. 存儲管理
-
- 6.1. 功能
- 6.2. 分區
- 6.3. 位址重定位
-
- 6.3.1. 重定位的類型
- 6.3.2. 邏輯位址空間
- 6.3.3. 實體位址空間
- 6.3.4. 位址映射
- 6.3.5. 分區的存儲保護
- 6.3.6. 程式的局部原理
- 6.3.7. 抖動、颠簸
- 7. I/O控制方式
-
- 7.1. Spooling技術優點
- 8. 檔案系統
-
- 8.1. 檔案分類
- 8.2. 檔案的實體結構
- 8.3. 檔案的邏輯存取方式
- 8.4. 檔案的管理方式
- 9. 總結
1. 概念
在講述計算機作業系統之前,需要引入一些概念。
在計算機不存在作業系統的年代,是完全沒有任何相關應用程式的,由于我們計算機是借助于硬體進行工作的,是以當時的“程式員”就需要用使用很多的開關将機器語言的程式輸入到計算機,由于需要扳動多個開關,過程十分麻煩,是以程式員們開發出僅具有加載和運作功能的監控程式,通過啟動監控程式将機器語言的程式進行加載和運作,雖然現在看起來依舊比較麻煩,但對于當時來說緩解了一部分工作量,随着時代的進一步發展,監控程式中開始有越來越多的功能被內建進去(如輸入輸出程式),由多個程式的集合體組成,這就是作業系統的原型。
1.1. 定義
- 裸機上加載的第一層軟體,對計算機硬體系統的首次擴充
- 控制和管理計算機軟硬體資源,合理組織計算機的工作流程,提高資源使用率
- 友善使用者使用的一個程式集合
1.2. 種類
-
批處理作業系統
優點:資源使用率高,系統吞吐量大
缺點:作業平均周轉時間長,無互動能力
-
分時作業系統
多使用者,互動性,及時性
-
實時作業系統
多使用者,互動性,及時性(比分時作業系統高),高可靠性
- 網絡作業系統
- 分布式作業系統
- 嵌入式作業系統
1.3. 特征
-
并發
兩個或兩個以上事件在同一時間間隔内發生,一個CPU同時執行多個任務,例如秒殺,多個人做同一件事
并行是指兩個或兩個事件在同一時刻發生,多個CPU同時執行多個任務
- 共享
- 虛拟
- 異步
1.4. 功能
2. 程式
2.1. 運作狀态
- 使用者态(目态)
- 核心态(管态)
2.2. 程式順序執行的特征
- 順序性
- 封閉性
- 可再現行
2.3. 程式并發執行的特征
- 間斷性
- 失去封閉性
- 不可再現性
3. 程序
作業系統設計的基本概念,是程式在給定資料集合上的一次執行過程,是系統進行資源配置設定和運作排程的最小機關。
- 程序是程式的運作過程,是系統進行資源配置設定和排程的一個獨立機關。
- 程序實體由PCB、程式、資料段、堆棧組成,有一定的生命周期,是程式的一次執行過程,是動态的,它的存在是暫時的,程式是指令的有序集合,是靜态的,它的存在是永久的。
- 一個程式可産生多個程序,一個程序可執行一個或幾個程式。
3.1. 特征
- 動态性
- 并發性
- 獨立性
- 異步性
- 結構特征
3.2. 程序控制塊PCB(Process Control Block)
程序存在的唯一辨別,包含程序的描述資訊和管理控制資訊,與程序存在一一對應關系,是記錄型資料結構。
- 組織方式
- 線性方式
- 連結方式
- 索引方式
3.3. 程序狀态
3.3.1. 臨界資源與臨界區
- 臨界資源指一次隻允許一個程序使用的資源
- 臨界區是指程序中通路臨界資源的那一段代碼
3.3.2. 程序同步
多個并發程序因互相協調産生的一種直接制約關系
3.3.3. 程序互斥
多個并發程序競争臨界資源時産生的一種間接制約關系
3.3.3.1. 互斥的四條準則
- 空閑讓進
- 忙則等待
- 有限等待
- 讓權等待
3.3.4. 程序通信方式
- 低級通信方式
-
進階通信方式
1. 共享存儲器
2. 消息傳遞
3. 管道通信
3.4. 程序排程算法
- 先來先服務排程算法
- 時間片輪轉排程算法
- 優先級排程算法
- 多級隊列排程算法
4. 線程
線程是程序中可獨立執行的子任務,僅是排程和配置設定CPU時間的基本機關,一個程序可以擁有多個線程。
4.1. 程序和線程的差別
- 程序是擁有資源的獨立機關,線程本身不擁有資源,但可以通路其隸屬程序的資源。
- 程序是擁有資源和獨立排程的基本機關,線程僅僅是排程和配置設定CPU時間的基本機關。
- 程序之間可并發執行,一個程序中的多個線程也可并發執行。
- 程序切換開銷遠大于線程切換的開銷。
5. 死鎖
計算機系統中多道程式并發執行時,兩個或兩個以上程序由于競争系統資源而出現的一種互相等待的現象。
5.1. 死鎖産生的原因
- 臨界資源配置設定不當
- 程序推進順序不當
5.2. 死鎖産生的必要條件
- 互斥條件
- 占用并等待條件
- 不可剝奪條件
- 環路等待條件
5.3. 死鎖的處理方法
- 視而不見
- 預防死鎖
- 避免死鎖
- 檢測和解除死鎖
5.4. 安全序列與安全狀态
安全序列:如果某一時刻,系統能夠按照某種程序順序,來為每個程序配置設定其所需要的資源,直至最大需求,使得每個程序均可順利完成,則稱這樣的一個程序式列為安全序列。
安全狀态:在某個時刻存在一個安全序列,能使所有的程序都可順利完成
死鎖狀态是不安全狀态
5.5. 避免死鎖
銀行家算法
6. 存儲管理
三級存儲器結構
6.1. 功能
- 記憶體配置設定與回收
- 記憶體擴充
- 位址映射
- 記憶體保護和共享
6.2. 分區
-
固定式分區
産生内零頭(配置設定給使用者而未被利用的部分
-
可變式分區
産生外零頭(未配置設定給使用者而未被利用的部分)
-
可重定位式分區管理
産生外零頭,采用記憶體緊縮技術,移動某些已配置設定區中的資訊,直到出現足夠配置設定的分區大小為止。
6.3. 位址重定位
由于一個作業裝入到與其位址空間不一緻的存儲空間所引起的對有關位址的部分調整過程,即邏輯位址向實體位址的變換。
6.3.1. 重定位的類型
- 靜态重定位
- 動态重定位
靜态重定位 | 動态重定位 | |
---|---|---|
位址轉換時刻 | 程式運作之前裝配完成 | 執行指令時完成 |
誰來完成任務 | 軟體完成位址轉換 | 硬體提供的位址轉換 |
完成的形式 | 裝入時一次性把程式中的位址進行轉換 | 對每條要執行的指令進行轉換 |
完成的結果 | 原指令位址部分被修改 | 不對原指令進行修改,按照形成的位址執行指令 |
6.3.2. 邏輯位址空間
編譯程式從0号單元開始為其配置設定,相對位址
6.3.3. 實體位址空間
主存中實體單元的集合,絕對位址
6.3.4. 位址映射
邏輯位址轉換為實體位址的過程
6.3.5. 分區的存儲保護
- 界限寄存器
- 存儲保護鍵
6.3.6. 程式的局部原理
- 時間局部性
- 空間局部性
6.3.7. 抖動、颠簸
配置設定給程序的存儲塊數量小于程序所需要的最小值,程序執行将很頻繁的産生缺頁中斷,頻率非常高的頁面置換現象稱為抖動。
7. I/O控制方式
- 程式直接控制方式
- 中斷控制方式
- DMA控制方式
- 通道控制方式
7.1. Spooling技術優點
- 高速虛拟I/O操作
- 對獨享裝置的共享
- 實作虛拟裝置的功能
8. 檔案系統
8.1. 檔案分類
- 系統檔案
- 使用者檔案
- 庫檔案
8.2. 檔案的實體結構
- 連續檔案
- 串聯檔案
- 索引檔案
8.3. 檔案的邏輯存取方式
- 順序存取
- 随機存取
8.4. 檔案的管理方式
- 空閑目錄檔案
- 空閑塊鍊
- 位示圖
9. 總結
一個完整的作業系統應該包含兩個東西:
- 核心(Kernel)與其提供的接口工具
-
利用此接口工具開發出的軟體
Kernel是一個作業系統最底層的東西,對硬體資源進行管理
- 系統呼叫接口(Systen Call Interface) 友善開發者程式與核心溝通
- 程序管理(Process Control)
- 記憶體管理(Memory Management) 管理整個記憶體,核心也可以提供虛拟記憶體
- 檔案系統管理(File System Management)
- 裝置驅動(Device Drivers)
我們日常使用的Windows7/Windows10/Linux/macOS等作業系統屬于軟體系統中的系統軟體,應用軟體需要在系統軟體的支援下進行工作。
作業系統是淩駕于硬體之上的,使使用者不必親自面對硬體系統來調用每一個硬體進行工作的軟體,進而大大的提高了計算機的使用效率。
簡單的講解完計算機系統原理後,我們來看一下我們常用的作業系統:
作業系統一般都分為32/64位,我們都知道一個位元組占8位二進制數,也就是32位作業系統一次能夠處理4個位元組,64位作業系統一次處理8個位元組,并且64位處理器不光可以運作64位程式,還可以相容32位程式。
大約在1970年,出現了一個相當穩定且成熟的作業系統UNIX
首先UNIX是一個古董級的作業系統了,時間應該是在1971年正式推出。
由于UNIX的源代碼受到版權保護,是以在1991年,芬蘭的Linus按照UNIX的設計思想開發了一個開源的UNIX核心,起名為Linux。
是以Linux 和 macOS 都是起源于 UNIX。
Linux系統主要是用于伺服器端,它們剛開始是沒有圖形界面的,一切都是DOS指令裡來操作,後來各種著名的公司例如Ubuntu,Redhat,還有Deepin在它的上面生生的加了一個圖形界面,可能就是應對使用者的需求,但是它的最主要作用還是在它的終端。
macOS就不必說了,蘋果公司自産的系統,用來做設計和商業檔案最好不過,因為它的系統封閉,比較安全,不易被病毒入侵,而且圖像的處理非常精細。唯一缺點就是價格昂貴。
Windows系統,1985年,美國的微軟公司正式推出了Wndows 1.0,微軟的産品線都是定位在個人使用者和商業使用者,是以總是會推出各種版本的Windows系統,到2001年的XP系統最為經典,它也是第一個支援64位處理機制的作業系統,直到現在也有人還在使用。
後來微軟推出好多的系統,我們拿主流來說,古老的我們暫時不做讨論,Win7/8/10。
Win7的使用率直到現在也是很大的,Win8系統更像是一個過渡期産品,取上不足取下有餘,它更像是适用于平闆的系統。
到了現在的Win10,據說可能是微軟的最後一代,雖然它的槽點很多,但是它的樣式精美,更加符合現在人們的審美觀念了。當然,很多槽點都是可以解決的,對策這一塊還是拿捏的死死的。
總之,新鮮的事物總是層出不窮,它就像是一列單程的地鐵,如果你擠不進去的話,就會誤了時間,無法趕上時代的潮流,是以,多接受一些新鮮的事物總是好的,總不能固步自封,原地不動。