发新帖我要提问
123
返回列表
[应用相关]

嵌入式系统基础

[复制链接]
楼主: labasi
手机看帖
扫描二维码
随时随地手机跟帖
labasi|  楼主 | 2018-10-11 15:07 | 显示全部楼层
7、地址映射

地址映射也叫地址重定位。
逻辑地址和物理地址是完全不同的,不能用逻辑地址来直接访问内存单元。
为了保证CPU在执行指令的时候,可以正确地访问内存单元,需要将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址。这个过程称为:地址映射。
地址映射由存储管理单元MMU来完成。
地址映射主要有两种方式:静态地址映射和动态地址映射。
静态地址映射:当用户程序被装入内存时,直接对指令代码进行修改,一次性地实现逻辑地址到物理地址的转换。
动态地址映射:当用户程序被装入内存时,不对指令代码做任何修改,而是在程序的运行过程中,当它需要访问内存单元的时候,再来进行地址转换。
在具体实现时,这项转换工作一般是由硬件的地址映射机制来完成的。通常设置一个基地址寄存器,或者叫重定位寄存器。当一个任务被调度运行时,就把它所在分区的起始地址装入到整个寄存器中。然后,在程序运行的过程中,当需要访问某个内存单元时,硬件就会自动地将其中的逻辑地址加上基地址寄存器中的内容,从而得到实际的物理地址,并且按照这个物理地址区执行。
这个基地址寄存器位于MMU的内部,整个地址映射过程是自动运行的。从理论上说,每访问一次内存都要进行一次地址映射。


使用特权

评论回复
labasi|  楼主 | 2018-10-11 15:08 | 显示全部楼层
8、页式存储管理(重点)

基本思路:把物理内存划分为许多固定大小的内存块,称为物理页面;把逻辑地址空间也划分为大小相同的块,称为逻辑页面。当一个用户程序被装入内存时,不是以整个程序为单位,把它存放在一整块连续的区域,而是以页面为单位来进行分配的。对于一个大小为N的页面程序,需要有N个空闲的物理页面来把它装载。这些物理页面不一定是要连续的。
在页式存储管理中需要解决三个问题:数据结构、内存分配与回收、地址映射。
数据结构有两个:页表和物理页面表。
A. 页表:给出了任务逻辑页面号和内存中物理页面号之间的对应关系。
B. 物理页面表:描述内存空间中,各个物理页面的使用情况。

内存的分配过程:
A. 对于一个新来的任务,计算它所需要的页面数N,然后查看位示图,看是否还有N个空闲的物理页面。
B. 如果有足够的空闲物理页面,就去申请一个页表,其长度为N,并把页表的起始地址填入到该任务的控制块中。
C. 分配N个空闲的物理页面,把他们的变换填到页表中,建立逻辑页面与物理页面直接的对应关系。
D. 修改位示图,对刚刚被占用的那些物理页面进行标记。
地址映射的基本思路:
A. 逻辑地址分析:对逻辑地址,找到它所在的逻辑页面,以及它在页面内的偏移地址。
B. 页表查找:根据逻辑页面号,从页表中找出它对应的物理页面号。
C. 物理地址合成:根据物理页面号和页内偏移地址,最终确定物理地址。
逻辑地址分析:
页面的大小都是2的整数次幂。对于给定的一个逻辑地址,可以直接把它的高位部分作为逻辑页面号,把它的低位部分作为页内偏移地址。例如,假设页面的大小是4KB,即2的12次幂,逻辑地址为32为,那么在一个逻辑地址当中,最低12位为页内偏移地址,而剩下的20位就是逻辑页面号。
计算方法:
逻辑页面号=逻辑地址/页面大小
页内偏移量=逻辑地址%页面大小
页表查找:
页表作为操作系统的一个数据结构,通常保存在内核的地址空间中。
页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。
物理地址合成:
假设物理页面号为f,页内偏移地址为offset,每个页面大小为2n,那么相应的物理地址为:f×2n +offset。


使用特权

评论回复
labasi|  楼主 | 2018-10-11 15:09 | 显示全部楼层
9、虚拟存储管理

程序局部性原理:时间局限性和空间局限性。
虚拟页式存储管理:在页式管理的基础上,增加了请求调页和页面置换的功能。
基本思路:当一个用户程序需要调入内存去运行时,不是将这个程序的所有页面都装入内存,而是只装载部分的页面,就可以启动这个程序运行。在运行过程中,如果发现要执行的指令或者访问的数据不在内存当中,就向系统发出缺页中断请求,然后系统在处理这个中断请求时,就会将保存在外存中的相应页面调入内存,从而使该程序能继续运行。
在虚拟页式存储管理中,页表包含:逻辑页面号、物理页面号、驻留位、保护位、修改位和访问位。
常用的页面置换算法:
A. 最优页面置换算法:理想化算法。
B. 最近最久未使用算法:链表法和栈方法。寻找长时间没有被访问的页面。
C. 最不常用算法:每个页面设置一个访问计数器。
D. 先进先出算法:性能比较差。
E. 时钟页面置换算法:把页面组成环形链表,类似时钟面。
一般来说,当一个任务刚刚启动的时候,它会不断去访问一些新的页面,然后逐步建立一个比较稳定的工作集。工作集是指当前任务正在使用的逻辑页面的集合。如果分配给一个任务的物理页面数太少,不能包含整个的工作集,任务将会造成很多缺页中断,需要频繁地进行页面置换,这种现象称为“抖动”。


使用特权

评论回复
callhgd| | 2018-10-18 15:31 | 显示全部楼层
哈哈,不错,占到沙发了。

使用特权

评论回复
keaibukelian| | 2018-10-22 12:56 | 显示全部楼层
嵌入式这都几十年了吧

使用特权

评论回复
木木guainv| | 2018-10-23 13:05 | 显示全部楼层
一直没关心过具体概念

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则