免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3629 | 回复: 9
打印 上一主题 下一主题

访问1个不存在的物理地址会发生什么情况??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-30 12:40 |只看该作者 |倒序浏览
假设在cpu不使用虚拟地址访问内存,只使用物理地址方式,机器的内存只有500KB
但我执行如下c程序:

main()
{
  char* p = 0xfffff;
  *p = 0;
}

从硬件的角度看,cpu向这个不存在内存芯片相连的地址发一个信号后,
会产生什么结果呢?? 会不会可以发出这个地址请求,然后往那死等数据总线
上过来结果呢?? 然后系统直接死掉(连蓝屏,kernel panic之类的提示信息
都没有)??

现在如果想用dos做这个实验好像不太可能,dos下用16位的tc写一个程序,最多
只能访问到1M的地址,可是现在机器的内存似乎太大了,达不到实验效果

不知道是否有32位的运行在实模式下的dos或类似的东西? 那样可以在物理机
上做做这个实验了

论坛徽章:
0
2 [报告]
发表于 2009-12-30 17:01 |只看该作者
vxworks5.0系统的内存就是没虚拟没保护的,一个task的内存访问错误会导致整个系统reset。

论坛徽章:
0
3 [报告]
发表于 2009-12-30 17:08 |只看该作者
任何情况

论坛徽章:
0
4 [报告]
发表于 2009-12-30 17:49 |只看该作者
系统启动的时候都已经把内存检测了,你再写越界写肯定报错吗

论坛徽章:
0
5 [报告]
发表于 2009-12-30 18:10 |只看该作者
看看intel手册不就知道了。

论坛徽章:
0
6 [报告]
发表于 2009-12-30 18:15 |只看该作者
原帖由 cskyrain 于 2009-12-30 17:08 发表
任何情况

支持

论坛徽章:
0
7 [报告]
发表于 2009-12-30 18:19 |只看该作者
楼主,一个卖苹果的篮子里有五个苹果,你非要买第六个。你说卖苹果的会给你说什么

论坛徽章:
0
8 [报告]
发表于 2009-12-31 00:39 |只看该作者
LZ,你用的是 DOS 5.0 以后的版本么?老版本不清楚,后面的版本记得最少需要 1M 内存才能启动啊,这 500K 是常规内存的余量吧,不是物理地址的顶端。更何况 VMWare 管理控制台也不允许你分配小于 1M 的物理内存,这个实验你可以不用做了,你的 CPU 必然是假想的,你想让 CPU 怎么处理你的 CPU 就能怎么处理。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2009-12-31 01:23 |只看该作者
看CPU
最近在弄得一颗ARM:
1. 产生bus访问错
2. 判断CPU运行模式, 较低优先级模式会产生HardFault异常,
    最高优先级模式则跳转到地址-1, 直接锁死.

论坛徽章:
0
10 [报告]
发表于 2009-12-31 16:13 |只看该作者
对非法地址的访问,一般cpu都会产生一个中断。如果你有对这个中断向量注册处理函数,那么会跳转到这个处理函数里执行。如果没有,一般就造成代码跑飞。如果有看门狗,那么会由于喂狗部分代码执行不到而导致系统重启!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP