AArch64(ARMv8/9指令集)學(xué)習(xí)2
一、操作系統(tǒng)結(jié)構(gòu)
系統(tǒng)復(fù)雜性和操作系統(tǒng)結(jié)構(gòu):
遵循分而治之,類似三權(quán)分立,各司其職,模塊化管理,分層抽象。
不要瓦薩號
1> 模塊化:文件、進(jìn)程、內(nèi)存、網(wǎng)絡(luò)、驅(qū)動
? ? ? 實(shí)現(xiàn)寬進(jìn)嚴(yán)出原則
2>分層原則:只能在同層和相鄰上下層模塊之間交互。
宏內(nèi)核:
宏結(jié)構(gòu):

但是模塊之間沒有很強(qiáng)大隔離,BUG會導(dǎo)致系統(tǒng)時延和癱瘓,容易引起連鎖反應(yīng)。
定制化也走不長,比如版本維護(hù)問題,總要有人維護(hù),時間金錢成本比較高。
功能安全比較差,信息安全問題。

同樣也無法滿足實(shí)時性場所。
微內(nèi)核:MacOS--蘋果??MINIX--教學(xué),QNX--黑莓,車輛、航天實(shí)時領(lǐng)域
把不變的功能放入內(nèi)核,形成不變的內(nèi)核。

兩種不同內(nèi)核結(jié)構(gòu):

微內(nèi)核比較復(fù)雜,但減少了文件或磁盤的BUG和安全問題。

Mach微內(nèi)核:任務(wù)資源分配基本單元,線程執(zhí)行基本單元。
? ? ? ? ? ? ? ? ? ? ? ?對應(yīng)用程序提供調(diào)度接口,可以實(shí)現(xiàn)自定義調(diào)度策略。
IPC:通過port接口通信。
虛擬內(nèi)存:允許用戶態(tài)代碼,直接實(shí)現(xiàn)內(nèi)存換頁,?。。。?yīng)用程序可以一定程度上管理自己的虛擬內(nèi)存。
系統(tǒng)調(diào)用重定向:

設(shè)備支持:

用戶態(tài)多進(jìn)程:

但性能慢(IPC代碼冗余)
L3/4微內(nèi)核的誕生:提升了IPC。

seL4微內(nèi)核 : IPC機(jī)制基于端點(diǎn)。

只有8700行C,沒有緩沖區(qū)溢出,空指針錯誤。
他對C語言進(jìn)行了限制:不適用函數(shù)指針、不適用union、使用全局變量。
QNX微內(nèi)核:流行
航天、醫(yī)療、車輛、機(jī)器人
Fuchsia----下一代操作系統(tǒng)
MINIX----教學(xué)微內(nèi)核

更安全、更健壯,性能差、生態(tài)差。
混合內(nèi)核:結(jié)合宏微
外核:Exokernel 實(shí)現(xiàn)更少的內(nèi)核代碼,把其他功能放到庫和應(yīng)用程序放在一起,叫LibOS。

抽象是浪費(fèi)時間的,所以只有應(yīng)用知道要不要用。
內(nèi)核只負(fù)責(zé)資源的隔離和保護(hù),不負(fù)責(zé)資源的管理。
保護(hù)功能:

一旦計(jì)算資源和應(yīng)用綁定,應(yīng)用就完全獨(dú)占對資源的訪問。
可用性:允許某個LibOS訪問計(jì)算機(jī)資源(內(nèi)存)
隔離性:多個應(yīng)用訪問必須保證彼此之間隔離

定制:可提升8倍

Unikernel:
虛擬機(jī)看成應(yīng)用(LibOS),虛擬機(jī)下面宿主操作系統(tǒng)看成Exokernel

調(diào)試周期短、實(shí)時高、難度大、生態(tài)差
多核:Multikernel 多核異構(gòu)

Barrelfish操作系統(tǒng):10000行C、500行匯編
智能網(wǎng)卡、智能SSD


用戶態(tài)文件系統(tǒng)可能會成為主流。大家記得更新認(rèn)知。