HARMONY
微内核
-
针对5G+IOT
-
全场景
-
手机,pc,平板,车辆,只能穿戴,家具设备。。。。
-
-
弹性部署
-
开源
-
方舟编译器
-
混合内核linux+LiteOS+...android
什么是操作系统?
软件-OS -CPU-memory-hd
操作系统(编程语言)
管理硬件 | 内存 | |
---|---|---|
OS | 硬盘 | |
cpu | ||
管理应用 | 进程 |
Kernel
cpu调度 | 文件系统 | |
---|---|---|
kernel | 应用管理进程调度 | |
内存管理 | 中断处理设备驱动 |
宏内核
cpu调度 | 文件系统 | |
---|---|---|
kernel | 应用管理进程调度 | |
内存管理 | 中断处理设备驱动 |
微内核
cpu调度 | 用户 | 文件系统 |
---|---|---|
用户 | kernel | 应用管理进程调度 |
内存管理 | 用户 | 中断处理设备驱动 |
微内核的优点:易拆装。缺点:运行速度底一点。
外核
office | browser | |||
---|---|---|---|---|
外核 | 外核 | |||
kernel | ||||
cpu调度 | 内存管理 | 中断处理设备驱动 | 应用管理进程调度 | 文件系统 |
VMM
硬件资源过剩
-
OS OS OS OS OS vmm virtual machine monitor HD
cmos
cmos:(complementary Metal Oxide Semiconductor)(电池)开机系统
中断:Ox80中断,硬件和操作系统打交道的时候是中断信号。
软件和操作系统打交道的时候就是软中断信号。
APP | 系统调用 | 内核态 |
---|---|---|
-
app发出Ox80中断或调用sysenter原语
-
OS进入内核态
-
在中断向量表中查找处理例程
-
保存硬件现场CSIP等寄存器值
-
保存app现场,堆栈与寄存器的值
-
执行中断例程system_call
1.根据参数与编号寻找对应例程
2.执行返回
7.回复现场
8.返回用户态
9.app继续执行 The mediation intermediary agent 中介,媒介 instrumentation 仪表
Fiber 纤程 ,线程里的线程 fiber n.纤维
Thread n.线 线程 vt.穿过;穿线;使交织 vi;通过;穿透过 agent n.代理
某种特定的情况下纤程比线程运算的快。
FIBER vs Thread
FIBER 一般用在回调函数
纤程的应用场景:用户空间的易步编程
-
Callable+Future
-
Guava的扩展 Listenable Future
-
Rx Java响应式编程
-
Quasar库(JAVA agent)
-
期待Fiber cache缓存 registers n.寄存器 v.登记,挂号邮寄 n.登记员,登记薄
寄存器的层次结构
(深入理解计算机系统,原书第三版p421)。
更小,更快,成本更高 | L0:寄存器 | cpu内存 |
---|---|---|
L1:高速缓存 | cpu内存,cache line 缓存行 | |
L2:高速缓存 | cpu内存,cache line 缓存行 | |
L3:高速缓存 | cache line 缓存行 | |
L4:主存 | cpu共享 | |
L5:磁盘 | cpu共享 | |
L6:远程文件储存 | cpu共享 |
从cpu到 | 大约需要的cpu周期 | 大约需要的时间 |
---|---|---|
主存 | 约60-80纳秒 | |
QPI总线传输 | 约20ns | |
L3 cache | 约40-45cycles | 约15ns |
L2 cache | 约10 cycles | 约3ns |
L1 cache | 约3-4 cycles | 约1ns |
寄存器 | 1cycle |
超线程:一个ALU对应多个pc|Registers 所谓的四核八线程。
缓存行:
缓存行越大,局部性空间效率越高,但读取时间慢。
缓存行越小,局部性空间效率越低,但读取时间快。
void adj,无效的;空白的;无人(居住)的缺乏的 n,空间,空白,空虚感
disorder 障碍 n,混乱,骚乱 vt,使失调;扰乱 cpu的乱序执行是为了保障有序性。
DCL
DCL Data control Language:数据控制语言
进程是什么?------>程序启动进入内存,资源分配的基本单位。
线程是什么?------>程序执行的基本单位
程序如何开始运行?----->cpu.读指令,pc(储存指令地址)读数据Register,计算,回写--->下一条
线程如何进行调度?------>linux 线程调度器(OS操作系统)
线程切换的概念是什么?--->context Switch CPU保存现场,执行新线程,恢复现场,继续执行原线程这样的一个过程。、
JAVA里不能写太多的线程。GO语言能够写很多的线程。
JVM | ||
---|---|---|
线程模型 | OS Kernel Thread | |
hotspot模型? | 1:1 | |
golang m:n 的关系 | 2000协程 | |
rust语言史上最NB的语言 | 不可以有野指针(内存安全) | |
可变不共享(线程安全) |
锁的概念
锁的概念:某一时刻只能允许一个人去做 synchronized(锁)
不持有锁的线程咋办?忙等待/进队列等待。
等待队列需要操作系统调用 | while循环消耗cpu资源 |
---|---|
轻量级 | 忙等待 |
等待队列 | 重量级锁 |