【计算机基础】 操作系统总结(未完)
操作系統
基礎篇
多道程序設計
- 早期批處理系統只能一次處理一個任務,多道程序設計可以讓計算機一次處理多個任務
- 多道程序設計是指在計算機內存中同時存放多個程序
- 多道程序在計算機的管理程序下相互穿插運行
操作系統概覽
- 是管理計算機硬件和軟件資源的計算機程序
- 是管理硬件、提供用戶交互的軟件系統
- 通過管理配置內存、決定資源供需順序、控制輸入輸出設備等來管理
- 提供讓用戶和系統交互的操作界面
基本功能
-
操作系統統一管理著計算機資源
- 處理器資源
- 存儲器資源
- IO設備資源
- 文件資源
-
操作系統實現了對計算機資源的抽象
IO設備管理軟件,提供讀寫接口 -->> 用戶無需面向硬件接口編程
比如:文件管理軟件,提供操作文件接口
-
提供了用戶與計算機之間的接口
- 圖像窗口形式
- 命令形式
- 系統調用形式
相關概念
-
并發性
并行?并發?
并行是指兩個或多個事件可以在同一個時刻發生
并發是指兩個或多個事件可以在同一個時間間隔發生
多道程序設計:
對于單處理器來說,程序都是并發進行的。
-
共享性
操作系統中的資源可供多個并發的程序共同使用 -->> 資源共享
根據屬性可分為兩種方式
-
互斥共享形式
當資源被程序A占用時,其他程序想使用的話只能等待進程A結束后才能使用
比如:打印機
-
同時訪問形式
某種資源在一段時間內并發地被多個程序訪問
這種“同時“是宏觀的,從宏觀去看該資源可以被同時訪問
比如:硬盤
-
-
虛擬性
把一個物理實體轉變為若干個邏輯實體
物理實體是真是存在的,邏輯實體是虛擬的
虛擬的技術主要有時分復用技術和空分復用技術
-
時分復用技術
資源在時間上進行復用,不同程序并發使用
多道程序分時使用計算機的硬件資源
提高資源的利用率
-
虛擬處理器技術
借助多道程序設計技術
為每個程序建立進程
多個程序分時復用處理器
-
虛擬設備技術
物理設備虛擬為多個邏輯設備
每個程序占用一個邏輯設備
多個程序通過邏輯設備并發訪問
-
-
空分復用技術
實現虛擬磁盤、虛擬內存等
提高資源的利用率,提升編程效率
-
虛擬磁盤
物理磁盤虛擬為邏輯磁盤(比如一個硬盤可以虛擬為C盤D盤…
使用起來更加安全、方便
-
虛擬內存技術
在邏輯上擴大程序的存儲容量
大大提升編程效率
-
-
-
異步性
在多道程序環境下、允許多個進程并發執行
進程在使用資源時可能需要等待或放棄
進程以走走停停的形式推進
進程實體
- 為什么需要進程?
- 進程是系統進行資源分配和調度的基本單位
- 進程作為程序獨立運行的載體保障程序正常執行
- 進程的存在使操作系統資源的利用率大幅提升
- 進程的實體
主存中的進程形態
進程控制塊(process control block) PCB
-
標識符
唯一標記一個進程,用于區別其他進程
比如:進程ID 就是常見的標識符
-
狀態
標記進程的進程狀態,如運行態、阻塞狀態
-
程序計數器
進程即將被執行的下一條指令的地址
-
內存指針
程序代碼、進程數據相關指針
-
上下文數據
進程執行時處理器存儲的數據
-
IO狀態信息
被進程IO操作所占用的文件列表
-
記賬信息
使用處理器時間、時鐘數總和等
對調試或者獲取狀態都是很有用的
可以分為四類:
-
進程標識符
-
處理機狀態
-
進程調度信息
-
進程控制信息
進程控制塊(PCB)
-
用于描述和控制進程運行的通用數據結構
-
記錄進程當前狀態和控制進程運行的全部信息
-
PCB使得進程是能夠獨立運行的基本單位
-
PCB是操作系統進行調度經常會被讀取的信息
-
PCB是常駐內存的,存放在系統專門開辟的PCB區域內
進程與線程
進程(Process) 線程(Thread)
一個進程可以有一個或多個線程
線程是操作系統進行運行調度的最小單位
進程是系統進行資源分配和調度的基本單位
(操作系統對進程的調度實際上是對進程中的線程的調度)
線程包含在進程中,是進程中實際運行工作的單位
一個進程可以并發多個線程,每個線程執行不同的任務
進程的線程共享進程資源
五狀態模型
就緒、阻塞、執行
創建、終止
-
就緒狀態
-
當進程被分配到除了CPU以外所有必要的資源后
-
只要再獲得CPU的使用權就可以立即運行
-
其他資源都準備好、只差CPU資源的狀態為就緒狀態
-
在一個系統中多個處于就緒狀態的進程通常排成一個隊列
-
-
執行狀態
- 進程獲得CPU,其程序正在執行稱為執行狀態
- 在單處理器機中,在某個時刻只能有一個進程處于執行狀態
-
阻塞狀態
-
進程因某種原因如:其他設備未就緒而無法繼續執行
-
從而放棄CPU的狀態成為阻塞狀態
比如:請求打印機未就緒而無法執行
-
-
狀態間如何切換的呢?
-
就緒 <----> 執行
當進程發生進程調度的時候就會從就緒態轉為執行態
當分配給進程的CPU時長用完后就會從執行態轉為就緒態
-
阻塞 <----> 執行
當執行狀態發送IO請求的時候就有可能轉為阻塞狀態
當某個進程在執行的時候需要IO設備,但此時IO設備還沒有準備好,那么這個進程就有可能調出CPU變成阻塞狀態
-
阻塞 <----> 就緒
當IO設備準備完成后,就會從阻塞狀態轉為就緒狀態
IO設備準備好后會向進程發送一個中斷來喚醒進程,從而進入就緒狀態
-
-
創建狀態
創建進程時擁有PCB但其他資源尚未就緒的狀態稱為創建狀態
操作系統提供fork函數接口創建進程
- 終止狀態
進程結束由系統清理或者歸還PCB的狀態稱為終止狀態
進程同步
為什么需要進程同步?
單從生產者程序或消費者程序看是沒問題的
兩者并發執行時就可能出錯
筷子 ——>> 臨界資源
哲學家 ——>> 進程
根源問題: 彼此間沒有通信 ——>> 需要進程間的同步
- 進程同步的意義:
- 對競爭資源在多進程間進行使用次序的協調
- 使得并發執行的多個進程之間可以有效使用資源和相互合作
進程間同步的原則:
臨界資源:臨界資源指的是一些雖作為共享資源卻又無法同時被多個線程共同訪問的共享資源。當有進程在使用臨界資源時,其他進程必須依據操作系統的同步機制等待占用進程釋放該共享資源才可重新競爭使用共享資源。
四個原則:
- 空閑讓進:資源無占用,允許使用
- 忙則等待:資源有占用,請求進程等待
- 有限等待:保證有限等待時間能夠使用資源
- 讓權等待:等待時,進程需讓出CPU
進程間同步的方法:
- 消息隊列
- 共享存儲
- 信號量
線程同步
-
當多個線程并發使用進程資源時,會發生什么?
- 也會發生生產者問題和哲學家吃飯問題
- 所以進程內多線程也需要同步
-
線程同步的方法?
-
使用互斥量
保證多線程可以互斥使用臨界資源的一個鎖
-
讀寫鎖
為了應對多讀少些或者多寫少讀的情況
-
自旋鎖
-
條件變量
-
Linux的進程管理
Linux進程的相關概念
進程的類型
-
前臺進程
終端shell
前臺進程就是就有終端,可以和用戶交互的進程
-
后臺進程
與前臺進程相對,沒有占用終端的就是后臺進程
后臺程序基本不和用戶交互,優先級比前臺進程低
將需要執行的命令以&符號結束就會啟動后臺進程
-
守護進程(daemon)
是特殊的后臺進程
很多守護進程在系統引導的時候啟動,一直運行直到系統關閉。
Linux有很多典型的守護進程:進程名字以d結尾的一般都是守護進程
比如:crond 定時任務的守護進程
? httpd HTTP服務的守護進程
? sshd 用ssh登陸時的守護進程
? mysqld 數據庫的守護進程
進程的標記
-
進程ID
進程的唯一ID,每個進程擁有不同的ID
表現為非負整數,最大值由操作系統限定
-
進程的狀態標記
總結
以上是生活随笔為你收集整理的【计算机基础】 操作系统总结(未完)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机基础】 Virtual memo
- 下一篇: 【计算机基础】存储器层次 Memory