了解Fuchsia
Fuchsia重新思考四个Unix的基础抽象机制
- 全局文件系统
- 用户
- 进程的创建
- 系统调用
Zircon架构
微内核和宏内核
宏内核
- 所有内核功能模块均工作在内核态
- 所有内核功能模块静态链接成一个image
- 内核各模块之间可直接函数调用,变量访问
- 整个内核可以看做一个大的裸机程序
- 优势:效率高,尤其是模块间调用时
- 劣势:安全性和健壮性差,灵活性差
微内核
- 只有两个核心功能模块工作在内核态
- 驱动和文件系统等周边功能模块工作在用户态
- 核心模块和周边模块间使用IPC机制通信
- 整个内核有多个独立程序联合构成
- 优势:安全性和健壮性好,灵活性好
- 劣势:效率低,对设计要求更高
宏内核和微内核在应用层开发是没有任何区别的,只不过在微内核中内核周边模块也和应用程序一样通过IPC进行通信。
论文阅读
- Redox 是一个用 Rust 语言编写的类 UNIX 操作系统。除了用 Rust 开发一个现代的微内核之外,Redox 同时将 Rust 语言的创新特性带入到了一组全系列的用户程序中。
- Tock OS 借助 Rust 的类型系统,在硬件隔离机制支持较为简单的低功耗微控制器上,构建系统内核。借助 Rust 的类型系统,Tock OS 在相同的硬件环境下,相比其他用 C 开发的内核,在性能和隔离性方面都有更好的表现。
- rCore 是使用 Rust 开发的内核的另一个尝试,整体设计采用宏内核,系统调用遵循 POSIX 标准,部分实现逻辑参考了 Linux 中的实现。
- Biscuit 是由 MIT 开发的宏内核,采用 Go 而非 Rust 作为主要开发语言,搭配少量汇编代码。
- ,zCore 是一个复合项目,项目的目标并不只是 zCore 微内核的实现,
而是基于 zircon 设计概念的一次重新思考。
指令集架构ISA
复杂指令集与精简指令集
两种主要的计算机处理器体系结构:
CISC(Complex Instruction Set Computer,复杂指令集计算机)
RISC(Reduced Instruction Set Computer,精简指令集计算机)
CISC(复杂指令集)
即 冯·诺依曼结构(普林斯顿结构),指令与数据存储在同一存储器中;
采用CISC结构的处理器,指令线与数据线分时复用;
程序指令存储地址与数据存储地址指向同一个存储器的不同物理位置,则程序指令和数据的宽度相同;
取指令与取数据不能同时进行,速度受限;
Intel 8051、Motorola MC68xxx、Atmel AT89
通俗理解:我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。
RISC(精简指令集)
即 哈佛结构,指令与数据存储于两个不同的存储空间;
程序存储器与数据存储器相互独立,独立编址,独立访问;
分离的程序总线与数据总线在一个机器周期中,可同时获得指令字和操作数,提高执行效率;
取指令和取数据同时进行,且一般指令线宽与数据线,可包含更多的处理信息;
Motorola/IBM PowerPC、Atmel AVR、Microchip PIC、ARM
通俗理解:有人认为这样吃饭整套流程会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”。
- 目前我们所遇到的CPU体系架构按照名称主要分为两大类:IA和x86,在这两类下又分别划分有32位和64位。
- 基于RISC的体系架构:
· ARM架构、MIPS架构、PowerPC架构、