开发环境的建立-浙江大学.ppt

内核陈文智浙江大学计算机学院年月提纲系统结构简介内存管理的中断响应和处理系统调用系统的启动和初始化进程管理和调度的模块机制系统结构简介有种运行状态用户状态中断状态快中断状态监管状态终止状态无定义状态系统状态系统结构中各个寄存器的使用方式内存管理存储管理是一个很大的范畴地址映射空间分配保护机制存储管理机制的实现和具体的以及的结构关系非常紧密操作系统内核的复杂性相当程度上来自内存管理对整个系统的结构有着根本性的深远影响内存管理和也就是内存管理单元其主要作用是两个方面地址映射对地址访问的保护和限制就是

ARMLinux 内核 陈文智 wzchen@ 浙江大学计算机学院 2009年5月 提纲 1. ARM系统结构简介 2. ARM-Linux内存管理 3. ARM-Linux 的中断响应和处理 4. ARM-Linux系统调用 5. 系统的启动和初始化 6. ARM-Linux进程管理和调度 7. Linux的模块机制 1. ARM系统结构简介 ARM有7种运行状态: 用户状态(User) 中断状态(IRQ, Imterrupt Request) (0x18) 快中断状态(FIQ,Fast Imterrupt Request)(0x1c) 监管状态(Supervisor) 终止状态(Abort) 无定义状态(Undefined) 系统状态(System) ARM系统结构中各个寄存器的使用方式 2 ARM-Linux内存管理 存储管理是一个很大的范畴 地址映射、空间分配、保护机制 存储管理机制的实现和具体的CPU以及MMU的结构关系非常紧密 操作系统内核的复杂性相当程度上来自内存管理,对整个系统的结构有着根本性的深远影响 2.1内存管理和MMU MMU,也就是“内存管理单元”,其主要作用是两个方面: 地址映射 对地址访问的保护和限制 MMU就是提供一组寄存器 MMU可以做在芯片中,也可以作为协处理器 ARM中的CP15 2.2 冯·诺依曼结构和哈佛结构 冯·诺依曼结构:程序只是一种数据,对程序也可以像对数据一样加以处理,并且可以和数据存储在同一个存储器中 嵌入式系统中往往采用程序和数据两个存储器、两条总线的系统结构,称为“哈佛结构” 2.3 ARM存储管理机制 ARM系统结构中,地址映射可以是单层的按“段(section)”映射,也可以是二层的页面映射 采用单层的段映射的时候,内存中有个“段映射表” ,当CPU访问内存的时候: 其32位虚地址的高12位用作访问段映射表的下标,从表中找到相应的表项 每个表项提供一个12位的物理段地址,以及对这个段的访问许可标志,将这12位物理段地址和虚拟地址中的低20位拼接在一起,就得到了32位的物理地址 如果采用页面映射,“段映射表”就成了“首层页面映射表”,映射的过程如下(以页面大小=4KB为例): 以32位虚地址的高12位(bit20-bit31)作为访问首层映射表的下标,从表中找到相应的表项,每个表项指向一个二层映射表。 以虚拟地址中的次8位(bit12-bit19)作为访问所得二层映射表的下标,进一步从相应表项中取得20位的物理页面地址。 最后,将20位的物理页面地址和虚拟地址中的最低12位拼接在一起,就得到了32位的物理地址。 凡是支持虚存的CPU必须为有关的映射表提供高速缓存,使地址映射的过程在不访问内存的前提下完成,用于这个目的高速缓存称为TLB 高速缓存 (I/O的特殊性) ARM系统结构中配备了两个地址映射TLB和两个高速缓存 ARM处理器中,MMU是作为协处理器CP15的一部分实现的 MMU相关的最主要的寄存器有三个: 控制寄存器,控制MMU的开关、高速缓存的开关、写缓冲区的开关等 地址转换表基地址寄存器 域访问控制寄存器 控制寄存器中有S位(表示System)和R位(表示ROM),用于决定了CPU在当前运行状态下对目标段或者页面的访问权限,如果段或者页面映射表项中的2位的“访问权限” AP为00,那么S位和R位所起的作用如表 如果AP为01,则和S位R位无关,特权状态可读可写,用户状态不能访问。 如果AP为10,则和S位R位无关,特权状态可读可写,用户状态只读。 如果AP为11,则和S位R位无关,特权状态、用户状态都可读可写。 2.4 ARM-Linux存储机制的建立 ARM-Linux内核也将这4GB虚拟地址空间分为两个部分 ,系统空间和用户空间 ARM将I/O也放在内存地址空间中,所以系统空间的一部分虚拟地址不是映射到物理内存,而是映射到一些I/O设备的地址 Xsbase255开发系统存储管理的描述数据结构: ARM处理器上的实现和x86的既相似又有很多不同: 在ARM处理器上,如果整个段(1MB,并且和1MB边界对齐)都有映射,就采用单层映射;而在x86上总是采用二层映射 ARM处理器上所谓的“段(section)”是固定长度的,实质上就是超大型的页面;而x86上的“段(segment)”则是不定长的 Linux在启动初始化的时候依次调用:start_kernel()setup_arch()pageing_init()memtable_init()create_mapping() 2.5 ARM-Linux进程的虚存空间 Linux虚拟内存的实现需要6种机制

文档评论(0)

1亿VIP精品文档

相关文档