Linux子系统
1)进程管理:管理进程的创建、调度、销毁等
2)内存管理:管理内存的申请、释放、映射等
3)文件系统:管理和访问磁盘中的文件
4)设备管理:硬件设备及驱动的管理
5)网络协议:通过网络协议栈(TCP、IP...)进行通信
计算机组成
1)输入设备
把其他信号转换成计算机能识别和处理的信号并送入计算机中
如键盘、鼠标、摄像头等
2)输出设备
把运算结果以人或其他设备所能接受的形式送出计算机外
如显示器、音响、打印机等
3)存储器
存储器是用来存储程序和数据的部件,是实现"存储程序控制"的基础
如内存、硬盘等
4)运算器
CPU中负责进行算数运算和逻辑运算的部件,其核心是算术逻辑单元ALU
5)控制器
控制器是CPU的指挥中心,其控制着整个CPU执行程序的逻辑过程
注:运算器和控制器共同组成了CPU
总线
- 总线:总线是计算机中各个部件之间传送信息的公共通信干线, 在物理上就是一束导线按照其传递信息的类型可以分为数据总线、地址总线、控制总线
- DMA总线:DMA(Direct Memory Access)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器之间进行数据传递
三级存储结构
1)辅助存储器:速度最慢、价格最低、容量最大、断电数据不丢失、cpu不可直接访问(硬盘)
2)主存储器:容量介于Cache与辅存之间、断电数据丢失、cpu可直接访问,存储当前正在执行的程序和数据(内存)
3)Cache:存储当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据(高速缓存)
地址空间:一个处理器能够访问(读写)的存储空间是有限的,我们称这个空间为它的地址空间(寻址空间),一般来说N位地址总线的处理器的地址空间是2的N次方。
CPU工作原理概述
运算器和控制器组成CPU
指令执行分为三个阶段
1)取值:CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回
到CPU中的指令寄存器(IR)
- 译码:译码器对IR中的指令进行识别,将指令(机器码)解析成具体的运算
3)执行:控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
每执行一条指令后PC的值会自动增加指向下一条指令
SOC:片上系统,将一个系统中所需要的全部部件集成在一个芯片中
指令
能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...)
指令在内存中以机器码(二进制)的方式存在
每一条指令都对应一条汇编,汇编就是用一个字符代表二进制码,汇编指令与机器码一一对应的
程序是指令的有序集合
指令集
处理器能识别的指令的集合称为指令集
不同架构的处理器指令集不同
指令集是处理器对开发者提供的接口
大多数ARM处理器都支持两种指令集:
1)ARM指令集
所有指令(机器码)都占用32bit存储空间
代码灵活度高、简化了解码复杂度
执行ARM指令集时PC值每次自增4
2)Thumb指令集
所有指令(机器码)都占用16bit存储空间
代码密度高、节省存储空间
执行Thumb指令集时PC值每次自增2
编译原理
1)机器码(二进制):不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
2)汇编语言:即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
3)C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植
ARM存储模型
ARM采用32位架构(单次处理数据的能力),基本数据类型有以下三种:
Byte 8bits
Halfword 16bits
Word 32bits
字节序
大端对齐:低地址存放高位,高地址存放低位
小端对齐:低地址存放低位,高地址存放高位
ARM指令存储
处理器处于ARM(是32位的)状态时:所有指令在内存的起始地址必须是4的整数倍
处理器处于Thumb(因为是16位的)状态时:所有指令在内存的起始地址必须是2的整数倍
ARM工作模式
ARM有8种基本的工作模式:
User 非特权模式,一般在执行上层的应用程序时ARM处于该模式(用户模式)
FIQ 当一个高优先级中断产生后ARM将进入这种模式(快速中断模式)
IRQ 当一个低优先级中断产生后ARM将进入这种模式(普通中断模式)
SVC 当复位或执行软中断指令后ARM将进入这种模式
Abort 当产生存取异常时ARM将进入这种模式(终止模式)
Undef 当执行未定义的指令时ARM将进入这种模式
System 使用和User模式相同寄存器集的特权模式(系统模式)
Monitor 为了安全而扩展出的用于执行安全监控代码的模式(监控模式)
User为非特权模式(权限较低),其余模式均为特权模式(权限较高)
FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后会进入对应的模式
不同模式拥有不同权限
不同模式执行不同代码
不同模式完成不同的功能