【教学课件】第7课ARMLinux内核.ppt
《【教学课件】第7课ARMLinux内核.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7课ARMLinux内核.ppt(49页珍藏版)》请在三一办公上搜索。
1、1,嵌入式系统An Introduction to Embedded System浙江大学计算机学院2012年4月,第7课 ARM Linux内核,提纲,1.ARM系统结构简介 2.ARM-Linux内存管理 3.ARM-Linux进程管理和调度 4.ARM-Linux 的中断响应和处理 5.ARM-Linux系统调用,4,1.ARM系统结构简介,ARM有7种运行状态:用户状态(User)中断状态(IRQ,Imterrupt Request)(0 x18)快中断状态(FIQ,Fast Imterrupt Request)(0 x1c)监管状态(Supervisor)终止状态(Abort)无定义
2、状态(Undefined)系统状态(System),5,ARM系统结构中各个寄存器的使用方式,6,2 ARM-Linux内存管理,存储管理是一个很大的范畴 地址映射、空间分配、保护机制操作系统内核的复杂性相当程度上来自内存管理,对整个系统的结构有着根本性的深远影响,7,2.1内存管理和MMU,MMU(Memory Management Unit),也就是“内存管理单元”,其主要作用是两个方面:地址映射 对地址访问的保护和限制 MMU可以做在芯片中,也可以作为协处理器(co-processor)ARM中的CP15,8,2.2 冯诺依曼结构和哈佛结构,冯诺依曼结构:程序只是一种数据,对程序也可以像
3、对数据一样加以处理,并且可以和数据存储在同一个存储器中,共享同一总线 嵌入式系统中往往采用程序和数据两个存储器、两条总线的系统结构,称为“哈佛结构”,9,2.3 ARM存储管理机制,ARM系统结构中,地址映射可以是单层的按段(section)映射,也可以是二层的页面(page)映射 采用单层的段映射的时候,内存中有个“段映射表”,当CPU访问内存的时候(假设每段大小为220=1MB):其32位虚地址的高12位用作访问段映射表的下标,从表中找到相应的表项 每个表项提供一个12位的物理段地址,以及对这个段的访问许可标志,将这12位物理段地址和虚拟地址中的低20位拼接在一起,就得到了32位的物理地址
4、,10,如果采用页面映射,“段映射表”就成了“首层页面映射表”,映射的过程如下(假设每页大小为212=4KB):以32位虚地址的高12位(bit20-bit31)作为访问首层映射表的下标,从表中找到相应的表项,每个表项指向一个二层映射表。以虚拟地址中的次8位(bit12-bit19)作为访问所得二层映射表的下标,进一步从相应表项中取得20位的物理页面地址。最后,将20位的物理页面地址和虚拟地址中的最低12位拼接在一起,就得到了32位的物理地址。,11,凡是支持虚存的CPU必须为有关的映射表提供高速缓存,使地址映射的过程在不访问内存的前提下完成,用于这个目的的高速缓存称为TLB(Translat
5、ion Lookaside Buffer),12,ARM处理器中,MMU是作为协处理器CP15来实现的 MMU相关的最主要的寄存器有三个:控制寄存器,控制MMU的开关、高速缓存的开关、写缓冲区的开关等地址转换表基地址寄存器 域访问控制寄存器,13,控制寄存器中有S位(表示System)和R位(表示ROM),用于决定了CPU在当前运行状态下对目标段或者页面的访问权限,如果段或者页面映射表项中的2位的“访问权限”AP为00,那么S位和R位所起的作用如表,14,如果AP为01,则和S位R位无关,特权状态可读可写,用户状态不能访问。如果AP为10,则和S位R位无关,特权状态可读可写,用户状态只读。如果
6、AP为11,则和S位R位无关,特权状态、用户状态都可读可写。,15,2.4 ARM-Linux存储机制的建立,ARM-Linux内核也将这4GB虚拟地址空间分为两个部分,系统空间和用户空间 ARM将I/O也放在内存地址空间中,所以系统空间的一部分虚拟地址不是映射到物理内存,而是映射到一些I/O设备的地址,16,17,ARM处理器上的实现和x86的既相似又有很多不同:在ARM处理器上,如果整个段(1MB,并且和1MB边界对齐)都有映射,就采用单层映射;而在x86上总是采用二层映射 ARM处理器上所谓的“段(section)”是固定长度的,实质上就是超大型的页面;而x86上的“段(segment)
7、”则是不定长的Linux在启动初始化的时候依次调用:start_kernel()setup_arch()paging_init()memtable_init()create_mapping(),18,2.5 ARM-Linux进程的虚存空间,Linux虚拟内存的实现需要6种机制的支持:地址映射机制内存分配回收机制缓存和刷新机制请求页机制交换机制内存共享机制,19,系统中的每个进程都各有自己的首层映射表,这就是它的空间,没有独立的空间的就只是线程而不是进程 Linux内核需要管理所有的虚拟内存地址,每个进程虚拟内存中的内容在其task_struct结构中指向的 vm_area_struct结构中
8、描叙,20,task_struct结构分析图:,21,由于那些虚拟内存区域来源各不相同,Linux使用vm_area_struct中指向一组虚拟内存处理过程的指针来抽象此接口 为进程创建新的虚拟内存区域或处理页面不在物理内存中的情况下,Linux内核重复使用进程的vm_area_struct数据结构集合。采用AVL树来减少查找时间。当进程请求分配虚拟内存时,Linux并不直接分配物理内存,22,3 ARM-Linux进程管理和调度,Linux进程有5种状态,分别是:TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE TASK_ZOMBIE
9、TASK_STOPPED,23,进程间状态变换,24,3.1 Linux进程的创建、执行和消亡,1.Linux进程的创建 系统的第一个真正的进程,init内核线程(或进程)的标志符为1 新进程通过克隆老进程或当前进程来创建,系统调用fork或clone可以创建新任务 复制完成后,Linux允许两个进程共享资源,25,2.Linux进程的执行 要让若干新进程按照需要处理不同的事情,就必须通过系统调用exec 函数sys_execve将可执行文件的名字从用户空间取入内核空间以后就调用do_execve()执行具体的操作,26,do_execve()执行的流程:打开可执行文件,获取该文件的 file
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 ARMLinux 内核
链接地址:https://www.31ppt.com/p-4879285.html