作業系統(哈工大李治軍老師)

JunyouPeng發表於2020-11-08

L4 作業系統介面

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

作業系統介面

使用者通過程式(應用軟體)使用計算機
程式是普通程式碼加上一些重要的函式
如:

作業系統提供重要函式(重要函式就是作業系統介面,介面表現為函式呼叫,由系統提供,因此叫系統呼叫)

常見的系統呼叫:
在這裡插入圖片描述

L5 系統呼叫的實現

在這裡插入圖片描述
問題1:
作業系統在記憶體中,應用程式也在記憶體中,為什麼應用程式不能直接訪問存取核心中的資訊?
回答:
因為核心中有很多重要的資訊與內容,若能隨意呼叫和jmp那就很危險比如root密碼被修改,word內容通過視訊記憶體被看到

問題2:
怎麼做到不讓應用程式隨意的jmp,呼叫核心資料?
回答:
在這裡插入圖片描述
硬體把記憶體割成了兩個區域,一個叫使用者態,一個叫核心態。
核心態可以訪問任何資料,使用者態不能訪問核心資料
在這裡插入圖片描述
DPL用來描述目標記憶體段的特權級別(要訪問的目標區域的特權級別)
CPL當前的特權級別

特權級別:
在這裡插入圖片描述
在這裡插入圖片描述
若CPL的數字<=DPL的數字,表示當前特權級別更高,則可以進入,否則不能進入

問題3:
系統呼叫如何進入核心態?
回答:
硬體提供了主動進入核心的方法——中斷指令int(唯一的方法)
因此,系統呼叫的核心:
在這裡插入圖片描述
系統呼叫的實現:
在這裡插入圖片描述

L8 CPU管理

CPU的工作原理:
把一個程式放在記憶體中,設定初始的地址暫存器PC為第一個程式的記憶體地址,CPU自動的取址執行

管理CPU最簡單的方法:
設定好PC的初值,CPU自動工作

這樣會出現什麼問題?
阻塞

解決辦法:
多道程式設計(切來切去)

併發:一個CPU上交替的執行多個程式

怎麼做到?

  1. 修改暫存器PC
  2. 使用PCB來記錄CPU切出去的那個時刻程式執行到哪裡,方便CPU切回來的時候繼續執行

執行的程式 和 靜態的程式不同
執行中的程式叫做程式

  1. 程式有開始,有結束,程式沒有
  2. 程式會走走停停,程式不會
  3. 程式需要記錄,程式不用

L9 多程式影像

上層使用者看到的是3個程式同時使用
在這裡插入圖片描述
對於OS來說,是多個程式的推進
作業系統需要把程式記錄好,按照合理的次序推進(分配資源,進行排程)

多程式影像從開機到關機

在這裡插入圖片描述
開機時建立個程式,執行shell,shell再啟動其他程式在這裡插入圖片描述

多程式如何組織?

作業系統管理程式的核心就是PCB + 狀態 + 佇列
Process Control Block:用來記錄程式資訊的資料結構
把PCB組織成不同的資料結構,如就緒佇列,磁碟等待佇列在這裡插入圖片描述
狀態:
程式根據狀態分類
在這裡插入圖片描述

多程式如何交替(切換)?

在這裡插入圖片描述
在這裡插入圖片描述

相關文章