AArch64(ARMv8/9指令集)学习2
一、操作系统结构
系统复杂性和操作系统结构:
遵循分而治之,类似三权分立,各司其职,模块化管理,分层抽象。
不要瓦萨号
1> 模块化:文件、进程、内存、网络、驱动
实现宽进严出原则
2>分层原则:只能在同层和相邻上下层模块之间交互。
宏内核:
宏结构:

但是模块之间没有很强大隔离,BUG会导致系统时延和瘫痪,容易引起连锁反应。
定制化也走不长,比如版本维护问题,总要有人维护,时间金钱成本比较高。
功能安全比较差,信息安全问题。

同样也无法满足实时性场所。
微内核:MacOS--苹果 MINIX--教学,QNX--黑莓,车辆、航天实时领域
把不变的功能放入内核,形成不变的内核。

两种不同内核结构:

微内核比较复杂,但减少了文件或磁盘的BUG和安全问题。

Mach微内核:任务资源分配基本单元,线程执行基本单元。
对应用程序提供调度接口,可以实现自定义调度策略。
IPC:通过port接口通信。
虚拟内存:允许用户态代码,直接实现内存换页,!!!!应用程序可以一定程度上管理自己的虚拟内存。
系统调用重定向:

设备支持:

用户态多进程:

但性能慢(IPC代码冗余)
L3/4微内核的诞生:提升了IPC。

seL4微内核 : IPC机制基于端点。

只有8700行C,没有缓冲区溢出,空指针错误。
他对C语言进行了限制:不适用函数指针、不适用union、使用全局变量。
QNX微内核:流行
航天、医疗、车辆、机器人
Fuchsia----下一代操作系统
MINIX----教学微内核

更安全、更健壮,性能差、生态差。
混合内核:结合宏微
外核:Exokernel 实现更少的内核代码,把其他功能放到库和应用程序放在一起,叫LibOS。

抽象是浪费时间的,所以只有应用知道要不要用。
内核只负责资源的隔离和保护,不负责资源的管理。
保护功能:

一旦计算资源和应用绑定,应用就完全独占对资源的访问。
可用性:允许某个LibOS访问计算机资源(内存)
隔离性:多个应用访问必须保证彼此之间隔离

定制:可提升8倍

Unikernel:
虚拟机看成应用(LibOS),虚拟机下面宿主操作系统看成Exokernel

调试周期短、实时高、难度大、生态差
多核:Multikernel 多核异构

Barrelfish操作系统:10000行C、500行汇编
智能网卡、智能SSD


用户态文件系统可能会成为主流。大家记得更新认知。