操作系統 |OS的運行機制與體系結構


本文主要介紹兩部分內容:
1、操作系統如何從加電後啓動到正常運行,然後讓應用程序能夠正常的工作?
2、操作系統如何提供相應的接口,來爲應用提供服務,以及控制外設?這個問題涉及到中斷、異常和系統調用。

一、操作系統的運行機制

OS的啓動過程:計算機未啓動前,操作系統一直存放在硬盤上。計算機加電後,BIOS首先從一個特定的內存地址開始執行一系列自檢,自檢成功後,把Bootloader加載到內存中。進而通過Bootloader將OS加載到內存中,纔可以讓CPU去執行。

簡單來說就是,BIOS負責加載BootLoader,BootLoader負責加載OS。

BIOS,即(Basic Input Output System) 基本IO處理系統)功能:在計算機加載電源後,能夠讓計算機系統開始自檢, 即檢測各種外設。檢測完成後,才能加載相應的軟件進行執行。

  • DISK:存放OS。
  • BIOS:基本I/O處理系統。
  • BootLoader功能:將OS從硬盤加載到內存。

在計算機內存中,一部分內存已經被BIOS佔滿,加電後BIOS首先從一個特定的內存地址(在x86上是0xf000:fff0)開始執行,進而完成一系列工作,包括POST(加電自檢),當外設都能正常工作,就會把Bootloader加載到內存中。

  • 內存地址CS:IP = 0xf000:fff0 (CS:段寄存器,IP:指令寄存器)
  • POST:加電自檢,尋找顯卡和執行BIOS。
    在這裏插入圖片描述

1.1 BIOS加載Bootloader

加電前Bootloader被放在硬盤的第一個主引導扇區,方便BIOS查找。一般硬盤的第一個扇區大小爲512個字節。這意味着bootloader僅有512個字節,就可以完成有趣的功能,最主要的功能就是將OS從硬盤放入內存。
在這裏插入圖片描述

1.2 cpu控制權的轉移

由BIOS到bootloader:當BIOS將bootloader從硬盤放入內存之後,CPU的控制器也隨之移交給bootloader,bootloader接下來會去尋找硬盤起始扇區、硬盤上操作系統的起始扇區、操作系統的長度,將這幾個磁盤塊兒從硬盤讀到內存中。

由bootloader到OS:bootloader的功能完成之後,將CPU的控制權交給OS。

1.3 OS與外設和應用程序交互

OS與外設和應用程序交互是通過interface實現的,面向外設通過中斷與IO處理,面向應用程序通過系統調用異常提供相應的功能。

interface 來源 定義 處理時間 響應
系統調用 應用程序 應用程序主動向操作系統發出服務請求 異步或同步 等待和持續
異常 應用程序意想不到的行爲 非法指令或其他壞的處理狀態(如:內存出錯) 同步 殺死或重新執行
中斷 外設 來自不同的硬件設備的計時器和網絡的中斷 異步 持續,對用戶應用程序是透明的

爲什麼應用程序不能直接訪問外設,而是由OS來操作?

  • 計算機中,內核是被信任的第三方,使用OS操作外設更安全
  • 只有內核可以執行特權指令
  • 爲了方便應用程序

1.4運行機制的幾個概念

在這裏插入圖片描述

問題1:“指令”與“代碼”有什麼區別?

“指令”就是處理器能識別並執行的最基本的命令,分爲特權指令和非特權指令。
在這裏插入圖片描述

  • 特權指令:如內存清零。
  • 非特權指令:如普通的運算指令。

問題2:普通用戶是無法使用特權指令的,那麼cpu是如何判斷當前是否可以執行特權指令?

爲此,引入了cpu的兩種狀態

  • 用戶態(目態):此時cpu只能執行非特權指令。
  • 核心態(管態):特權指令、非特權指令都可以執行。

和心態-->用戶態的切換:使用程序狀態字寄存器(PSW)中的某個標誌位來標識當前處理器處於什麼狀態。如0爲用戶態,1爲核心態。

兩種程序:有的程序需要使用特權指令,有的程序只能使用非特權指令,因此計算機系統將程序分爲內核程序普通程序

  • 內核程序:內核程序是系統的管理者,既可以執行特權指令,也可以執行非特權指令,運行於核心態。
  • 應用程序:爲了保證系統的安全運行,普通應用程序只能執行非特權指令,運行在用戶態。

二、操作系統的體系結構

2.1 OS的內核

操作系統中並不是所有的東西都是核心的、並不是所有的東西都是必須存在的。

  • 內核:內核是計算機上配置的底層軟件,是操作系統最基本、最核心的部分。
    實現操作系統內核功能的程序就是內核程序

在這裏插入圖片描述

在這裏插入圖片描述

2.2 OS的體系結構

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章