ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

现代操作系统 原理与实现(银杏书)—— 概述、arm硬件结构

2021-09-05 13:30:02  阅读:396  来源: 互联网

标签:缓存 操作系统 银杏 arm 地址 寄存器 EL1 异常 CPU


概述

操作系统的共性

  • 从硬件的角度来看:
    • 管理硬件

      将硬件资源纳入统一的管理

    • 对硬件提供抽象

      将有限的、离散的资源抽象成无限的、连续的资源

  • 从应用的角度来看:
    • 服务于应用

      提供了不同层次的接口(系统调用)以满足应用的需求

    • 管理应用

      对应用的生命周期进行管理(加载、启动、切换、调度、销毁)

操作系统接口

  • 系统调用接口
    • 应用程序通过系统调用向操作系统内核申请服务
  • POSIX接口
    • Portable Operating System Interface for uniX (可移植操作系统接口)

ChCore:一个简单的实验操作系统

  • ChCore包括两个部分:
    • 运行在内核态的ChCore为内核
    • 运行在用户态的各种操作系统服务

ARM硬件结构

AArch64中特权级

AArch64的特权级别分类

  • AArch64中的特权级别被称为异常级别,共四种:
  • EL0:
    • 用户态
  • EL1
    • 内核态
  • EL2
    • 虚拟机监控器(VMM,也称为Hypervisor)
  • EL3
    • 和TrustZone相关,负责普通世界(normal world)和安全世界(secure world)之间的切换

从EL0到EL1的场景

  1. 系统调用
  2. 指令触发异常(exception)
  3. CPU收到中断(interrupt)

前两种属于同步的CPU特权级切换,是由CPU中正在执行的指令导致的
第3种称为异步的CPU特权级切换

保存现场的状态

  • 在发生特权级切换时,CPU负责保存当前执行状态,以便操作系统内核在处理异常时使用,并在处理之后恢复应用程序的执行。
  • 要保存的内容包括:
  1. 触发异常的PC, 保存在ELR_EL1(异常链接寄存器)
  2. 异常原因, 保存在ESR_EL1(异常症状寄存器)
  3. 栈指针从SP_EL0切换到SP_EL1
  4. 其他状态:CPU的相关状态保存在SPSR_EL1(已保存的程序状态寄存器),引发缺页异常的地址保存在FAR_EL1(错误地址寄存器)

异常向量表

  • 异常向量表中为不同的异常类型配置相应的异常处理函数
  • 发生特权级切换时,CPU读取VBAR_EL1(向量基地址寄存器)来获的异常向量表的基地址,根据异常原因(ESR_EL1中保存的内容)调用相应的异常处理函数。

AArch64寄存器

  • 31个64位通用寄存器: X0 ~ X30
    其中:
    • X29:栈指针寄存器(FP)
      • 保存函数调用过程中栈顶的地址
    • X30:链接地址寄存器(LP)
      • CPU在执行函数调用指令bl时,会把返回地址保存在其中
  • EL1特权级下有两个页表基址寄存器(TTBR)
    负责翻译虚拟地址空间中不同的地址段。
    • TTBR0_EL1
    • TTBR1_EL1

物理缓存

相联度

  • 组相联 = 组内全相联,组间直接映射

    = 路内直接映射, 路间全相联

缓存结构

  • CPU缓存是由若干个==缓存行(cache line)==组成的(常见64B)
  • 物理地址包括分为三个部分:
    tagindexoffset
    路(way)组(set)缓存行内偏移量

AArch64缓存寻址

  • 物理地址长度44位(2^44)
  • 缓存大小为32KB(2^15)
  • 缓存行大小为64B(2^6)
    • 缓存内有2^9=512个缓存行
  • 2路组相联
    • 分成256个组(组间直接映射)
    • 每个组2个缓存行(组内全相联)
  • 寻址过程:
    1. 先定位组(对比index部分)
    2. 找到组后,在组内找块(对比tag部分)

设备与中断

内存映射输入输出(MMIO Memory-Mapped I/O)

把输入输出设备和物理内存放到同一个地址空间,为设备内部的内存和寄存器也分配相应的地址。

轮询与中断

标签:缓存,操作系统,银杏,arm,地址,寄存器,EL1,异常,CPU
来源: https://blog.csdn.net/konghhhhh/article/details/120107022

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有