第16章
2013-10-29 09:07
309 查看
段错误的解释:
用户访问一个虚拟内存,经过MMU<虚拟内存>检查之后发现没有权限;
MMU产生一个异常,使CPU从用户模式到特权模式,然后执行内核中相应的内核处理;
内核把这个异常解释为段错误,终止引发进程。
操作系统配合MMU去访问内存:
虚拟内存映射到哪个物理内存其实是通过页表来描述的,而页表是存放在物理内存中的;
操作系统在初始化数据的时候,会执行一些指令在物理内存中填写页表,然后用指令设置MMU,告诉MMU页表在内存中的什么位置;
然后CPU每次去访问内存的指令都会自动引发MMU去做相应的查表和地址转换,而这些转换是由硬件自动完成。
内存保护:
CPU去访问一个VA时,MMU会检查CPU当前处于用户模式还是特权模式,如果和页面的权限相符合,则允许,否则产生异常。
用户访问一个虚拟内存,经过MMU<虚拟内存>检查之后发现没有权限;
MMU产生一个异常,使CPU从用户模式到特权模式,然后执行内核中相应的内核处理;
内核把这个异常解释为段错误,终止引发进程。
操作系统配合MMU去访问内存:
虚拟内存映射到哪个物理内存其实是通过页表来描述的,而页表是存放在物理内存中的;
操作系统在初始化数据的时候,会执行一些指令在物理内存中填写页表,然后用指令设置MMU,告诉MMU页表在内存中的什么位置;
然后CPU每次去访问内存的指令都会自动引发MMU去做相应的查表和地址转换,而这些转换是由硬件自动完成。
内存保护:
CPU去访问一个VA时,MMU会检查CPU当前处于用户模式还是特权模式,如果和页面的权限相符合,则允许,否则产生异常。
相关文章推荐
- Linux内核--usb子系统的分析
- sql数据库之多库查询
- C#入门篇6-3:字符串操作 string的ToString() Split()和Copy()方法
- Linux内核中链表实现
- 大卫谈学习4:为何你会一年经验用十年?
- JDBC保存EXCEL数据到数据库(1.JDBC操作类)
- 大卫谈学习3:方法还是问题,这是个问题!
- PL/SQL Developer 中文乱码解决
- Android 根据屏幕大小设置字体大小
- 搭建mysql负载均衡及高可用环境
- destoon二次开发
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
- Mac OS app, sandbox with command line tool
- Linux内核中链表实现
- net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串(转)
- 两个div同时滚动
- 大卫谈学习2:习惯的力量
- Android实时监控网络状态
- C#入门篇6-2:字符串操作 string常用的函数
- Unable to process Jar entry [COM/ibm/db2os390/sqlj/custom/DB2SQLJCustomizer.class]