BIOS:基本输入输出系统,保存着计算机最重要的基本输入输出程序,开机后自检程序和系统自启动程序
主要业务和目标是研发基于国产X86架构的CPU、GPU和芯片的
X86架构:微处理器执行的计算机语言指令集
BootLoader:嵌入式系统上电后执行的第一段代码,在嵌入式系统中,通常没有像BIOS那样的固件程序,因此bootloader是在操作系统内核运行之前执行,可以初始化硬件设备、建立内存空间映射,就是把系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核准备好正确的环境
内存管理
mmu(内存管理单元):管理虚拟存储器,物理存储器的控制线路,虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权
虚拟存储,只把当前运行进程的页表驻留在内存中,其它进程页表不必驻留在内存中,在需要时进行页的置换
- 为每个进程提供了一致的地址空间,简化了存储器管理
- 虚拟存储器都是使用分页,内存被分成大小固定相等的称为页的块,且块相对比较小,每个进程也被分同同样大小的小块,称为页框,进程中的页就可以指定到内存中的页框;减少内存碎片
分段:可以把程序和其相关的数据分到几个段中,段的大小可以不等,类似于动态分区,不要求连续
虚拟寻址,CPU生成一个虚拟地址来访问主存,虚拟地址需要经过mmu地址翻译为物理地址
- 页表:将虚拟页映射到物理页,mmu将虚拟地址转换成物理地址时都会读取页表,操作系统为系统中的每个进程都维护一个独立
的页表 - 虚拟地址由虚拟页号和虚拟页偏移量组成,虚拟页号作为到页表的索引,将页表中的物理页号和虚拟页偏移量加起来就得到了物理地址
文件系统:操作系统中负责管理和存储文件的软件结构,为应用程序和用户访问文件的功能接口,也是唯一方式
进程管理:
用户模式,快速中断模式,外部中断模式,特权模式
37个32位寄存器,31个通用寄存器,6个状态寄存器
寄存器R13是做堆栈指针,
寄存器R14(lr):用作连接寄存器,用于保存函数的返回地址
寄存器R15是程序计数器,存放下一条要执行指令的地址
通过R0~R3来传递参数,R4~R11用来保存局部变量,
(R16)CPSR:当前程序状态寄存器
SPSR:备份程序状态寄存器
ARM异常类型:复位异常,软件中断,IRQ,FIQ
FIQ省去了中断过程的一条跳转指令,FIQ的向量地址紧接中断向量表存放,中断向量表后就是程序代码
SPI IIC
- SPI是四信号线协议,SCK(时钟线),MOSI和MISO(数据线),从设备片选信号线;
- 高速全双工同步通信总线,
- SPI是单主设备通信协议,当SPI主设备向读/写从设备时,它首先拉低从设备的SS线,然后将读/写信号发到MISO(实现读)和MOSI(实现写)
- 外设的读和写是同步进行的
- CPOL(时钟极性)=0,串行时钟空闲状态为0
- CPHA(时钟相位)=0,串行时钟的第一个跳变沿数据被采样
SPI不规定最大传输速率,没规定通信应答机制,没有规定流控制规则
IIC是多主设备的总线,高速同步半双工通信总线,两线式串行总线
- 每个IIC设备都有一个地址;数据帧大小为8位的字节,数据帧中某些数据位用于控制通信的开始、停止和应答
- 主设备发一个开始信号,主设备发送一个7位从设备地址加一位读写操作的数据帧;当从设备收到数据后,比对地址是否为目标设备,如果比对相符,设备会发送一个应答信号给主设备;主设备收到应答便开始传输数据;数据发送完毕,主设备发送一个stop信号,释放总线
- START:SCl为高,SDA由高电平变为低电平;
- STOP:SCL为高,SDA由低电平变为高电平
对比
- IIC两根信号线,SPI四根信号线,多个从设备信号线需要更多,IIC构建系统总线的唯一问题是有限的7位地址空间,新标准使用10位地址
- SPI高速数据传输,甚至到10Mbps
进程通信
- 管道
- 信号
- 信号量
- 共享内存
- 消息队列
线程同步:
- 临界区(关键代码段):单个进程中线程间的同步
- 事件:
- 互斥对象
- 信号量
进程:具有一定独立功能的程序加载到内存执行得到一个实体,进程是操作系统资源分配的基本单元;
线程:线程是进程的一个实体,是CPU调度的基本单元;线程自己基本上不拥有系统资源,只拥有一点运行必不可少的资源(栈,程序计数器),但是它和同属一个进程的其他线程共享进程的全部资源。一个线程可以创建和撤销另一个线程