前面我們已經瞭解了基礎的計算機組成以及cpu的執行流程
接下來需要了解操作系統的部分
操作系統
計算機當中最重要的軟件。
操作系統的分類
目前常見的操作系統分為:
- 電腦端:Windows系列,Linux系列,Mac OS系列
- 手機端:Android系列,IOS系列
上述的系統之間是互相不兼容的
Java之所以可以跨平台,是因為每一個操作系統都內嵌了對應的JVM虛擬機,裏面使用的是同一套字節碼,所以可以跨平台
操作系統的兩個基本功能
- 管理各種硬件設備
操作系統–>通過驅動程序–>管理各種硬件資源設備
注:驅動程序也是軟件 - 給各種應用程序提供一個穩定的運行環境
a. 先描述一個進程是什麼樣——PCB(進程控制塊)
b. 再把多個進程組織起來,進行運行
操作系統創建一個進程:創建一個PCB,初始化PCB屬性,將PCB加到組織的數據結構當中
銷燬一個進程,將進程從數據結構當中找到,並進行刪除
查看進程,進行遍歷操作,去除數據結構當中的元素(電腦當中操作進程的操作)
提供一個穩定的運行環境
其中離不開一個重要的概念——進程
什麼是進程
進程是一個操作系統對一個正在運行程序的一種抽象 進程是操作系統進行資源分配的基本單位
進程相關屬性
- pid :進程身份標識,唯一的
- 內存指針:
雙擊.exe文件,運行一個程序,就會創建一個進程,操作系統就會進行加載
1> 包含都要執行的哪些指令,.exe文件是程序員代碼生成的最終被編譯的二進制指令
2> 指令運行過程當中,依賴的數據,都需要被找到
基於上面兩個條件才出現了內存指針——就可以找到這些資源 - 文件描述符表
進程在運行過程當中,需要與硬盤進行資源交互的,而硬盤是以文件的形式組織資源的
讀寫文件需要“打開文件”,每次打開文件,將文件信息——>保存在文件描述符表當中 - 進程狀態
a.就緒狀態——>隨叫隨到,進程隨時可以在CPU上執行
b.阻塞狀態——>進程當前不適合到CPU上執行 - 進程優先級
有些進程的優先級會高一些
eg:當在玩遊戲的時候,可以開啓勿打擾模式,此時就是你自己承認了需要給遊戲這個進程多分配一些操作系統的i資源 - 進程上下文
執行一會,失去CPU之後,再一次回來執行的時候,需要接着上次的執行的位置再次向下執行 - 進程記賬信息
統計每個進程在CPU上運行多久,如果很久都沒有CPU資源,就會對資源進行傾斜
進程調度
早期的計算機,操作系統的“單任務”操作系統:當執行一個的時候,其他的進必須進行等待,同一時刻只能運行一個進程,要想運行下一個必須主動的把上一個進程關掉
多任務操作系統:一個核心,能夠同時運行多個進程:分時複用將一個時間分成很多份,CPU切換足夠快,快到超出我們的感知,就好像是“同時運行”
一個CPU上分時複用,執行多個進程的方式——“併發執行”(切換的速度足夠快)
多個CPU同時進行運行——“並行執行”
現代CPU是併發執行與並行執行同時執行 的