前面我們已經瞭解了基礎的計算機組成以及cpu的執行流程
接下來需要了解操作系統的部分

操作系統

計算機當中最重要的軟件。

操作系統的分類

目前常見的操作系統分為:

  1. 電腦端:Windows系列,Linux系列,Mac OS系列
  2. 手機端:Android系列,IOS系列
    上述的系統之間是互相不兼容的
    Java之所以可以跨平台,是因為每一個操作系統都內嵌了對應的JVM虛擬機,裏面使用的是同一套字節碼,所以可以跨平台

操作系統的兩個基本功能

  1. 管理各種硬件設備
    操作系統–>通過驅動程序–>管理各種硬件資源設備
    注:驅動程序也是軟件
  2. 給各種應用程序提供一個穩定的運行環境
    a. 先描述一個進程是什麼樣——PCB(進程控制塊)
    b. 再把多個進程組織起來,進行運行

操作系統創建一個進程:創建一個PCB,初始化PCB屬性,將PCB加到組織的數據結構當中
銷燬一個進程,將進程從數據結構當中找到,並進行刪除
查看進程,進行遍歷操作,去除數據結構當中的元素(電腦當中操作進程的操作)

提供一個穩定的運行環境

其中離不開一個重要的概念——進程

什麼是進程

進程是一個操作系統對一個正在運行程序的一種抽象 進程是操作系統進行資源分配的基本單位

進程相關屬性

  1. pid :進程身份標識,唯一的
  2. 內存指針:
    雙擊.exe文件,運行一個程序,就會創建一個進程,操作系統就會進行加載
    1> 包含都要執行的哪些指令,.exe文件是程序員代碼生成的最終被編譯的二進制指令
    2> 指令運行過程當中,依賴的數據,都需要被找到
    基於上面兩個條件才出現了內存指針——就可以找到這些資源
  3. 文件描述符表
    進程在運行過程當中,需要與硬盤進行資源交互的,而硬盤是以文件的形式組織資源的
    讀寫文件需要“打開文件”,每次打開文件,將文件信息——>保存在文件描述符表當中
  4. 進程狀態
    a.就緒狀態——>隨叫隨到,進程隨時可以在CPU上執行
    b.阻塞狀態——>進程當前不適合到CPU上執行
  5. 進程優先級
    有些進程的優先級會高一些
    eg:當在玩遊戲的時候,可以開啓勿打擾模式,此時就是你自己承認了需要給遊戲這個進程多分配一些操作系統的i資源
  6. 進程上下文
    執行一會,失去CPU之後,再一次回來執行的時候,需要接着上次的執行的位置再次向下執行
  7. 進程記賬信息
    統計每個進程在CPU上運行多久,如果很久都沒有CPU資源,就會對資源進行傾斜

進程調度

早期的計算機,操作系統的“單任務”操作系統:當執行一個的時候,其他的進必須進行等待,同一時刻只能運行一個進程,要想運行下一個必須主動的把上一個進程關掉
多任務操作系統:一個核心,能夠同時運行多個進程:分時複用將一個時間分成很多份,CPU切換足夠快,快到超出我們的感知,就好像是“同時運行”

一個CPU上分時複用,執行多個進程的方式——“併發執行”(切換的速度足夠快)
多個CPU同時進行運行——“並行執行”
現代CPU是併發執行與並行執行同時執行 的