欢迎光临散文网 会员登陆 & 注册

AArch64(ARMv8/9指令集)学习

2023-03-22 11:43 作者:圣母和正负喜欢没办法  | 我要投稿

一、概述

贝尔实验室-----Unix

施乐公司------GUI

Linux-----开源系统

LWIP-----低功耗、远距离,优于NB

5G、AI、loT-----诞生Android、Freertos、VXW

CPU、GPU、NPU、TPU、IPU----诞生OpenCL、OpenCV、OpenGL、OpenAL

Robot系统-----拥有多个系统共同运行,异构多核。

Minix作用于不同芯片之间的芯片级系统。

SOC

二、定义

libc----属于应用部分、也属于操作系统

文件系统:支持运行在用户态

Windows:NTFS

Macos:AppleFS

Linux:ext4

U盘&移动硬盘:FAT

问题:libc属不属于操作系统?

Linux: 应用程序可以不用libc实现printf,可以自己实现,或调用别的库。

Windows:也有libc实现,不属于特定操作系统

Android:其中有一套运行在用户态的框架,管理用户,提供服务,属于操作系统。

特例:微信,对于HTML&JavaScript写的小程序提供很多接口,并且管理这些小程序,所以微信就是操作系统。比如IOS的APP Clips。

即:操作系统没有明确定义

三、架构

1 苹果

MAC OS BIG SUR  使用Rosetta 2技术将X86-64指令转换成ARM64指令,支持两种指令。

现在架构

2 微内核

ChCore:

micro-core

用户态:一部分是用户进程 

              一部分是用户进程服务(文件系统驱动用户态调度等)

IPC接口提供用户态系统服务和用户态程序通信

ChCore记录用户用户态进程持有能力Cap(用户物理资源、系统服务调用),cap可以限制用户态程序权力,预防异常和内核bug。

3 运行环境(底层环境)

ARM平台---AArch64体系结构

5G、基站、笔记本、服务器

ARMv8:支持64位指令集、自旋锁优化、兼容A32、T32、T16


1> ISA:执行模式、指令集、特权级、安全扩展、性能加速扩展

启动

精简指令集:固定长度

RISC

特权级:

用户、内核、虚拟级监控器、安全监控器

寄存器:x

图1
图2

状态寄存器:

图3

总结:

2> 中断和异常

键盘和外设具有缓冲区,会先输入到缓冲区,通过轮询、中断来判别。

图4

现代采取方式:高速设备用轮询和中断结合

具体方式:网卡接受到包,先拒绝这个包,然后发一个中断,OS处理完中断后,切换成轮询模式,把后面的包全接收,再切换成中断模式,等待下一个中断,如此反复。

显示器显示:

操纵系统将显示的内容放入显存,显示器以一定频率扫描显存,如30Hz、60Hz、144Hz即每秒钟扫描的次数,将内容显示出来。


图5

中断:外部硬件设备产生,异步操作。

异常:程序产生,如System Call,同步操作。

不同点:异常是CPU内部,执行的是特定指令来完成用户态到内核态的主动转换。

              CPU无法预测中断发生。

图6

中断&异常处理流程:

都会使用handler来处理。

比如发生除0、缺页、设备中断

当发生异常--->CPU会在特定寄存器中设置异常原因--->操作系统设置异常向量表,为每一种异常设置一种handler函数--->当发生异常后,会保存上下文PC、PSTATE、栈指针--->然后跳转到相应处理函数处理异常--->处理完毕后调用Exception Return(图7)--->完成

图7

ChCore异常向量表:

图8

.align---表示地址对齐,每一个表项都是128字节。

具体处理过程1:

图9

具体实现过程2:

图10

问题:

图11
图12

3> SVC(CPU执行的特殊指令)

图13

SVC---AArch64

INT/SYSENTER/SYSCALL----X86

内核中会有表,记录系统调用号和系统调用函数之间对应关系。

图14

ChCore:

图15
图16

图中是触发了同步异常:

图17

系统安全&调用

图18

指针问题:

图19
图20

但是完备的指针检测是十分的耗时的。

Linux采用了非全面检测,如下图。

图21
图22

记住就是这个规则,在Linux中不是所有地方都遵守,诸侯不听周王之命啊。这就是安全漏洞。

系统调用有系统调用表它是耗时耗能的,X86是采用syscall等命令代替int,我们应该减少系统调用,减少系统单次调用都还是要完善优化。



AArch64(ARMv8/9指令集)学习的评论 (共 条)

分享到微博请遵守国家法律