一直以来的一些老问题
大型应用程序包含很多代码模块,总是存在游离指针和内存意外破坏的问题,但更糟糕的是,在很久之后才发现此类问题,而此时已无从确定破坏发生的地点、时间、程度等。
处理内存访问错误的一个真实示例
我曾经处理过一个真的应该在其中使用存储键的项目,至今我仍然记得其中的情况。当我开发的终端处理程序在测试中心的每个屏幕上输出的全是信息时,整个编程团队开始转而向我寻求答案。我的变量全部被破坏,我不得不向代码中添加了大量的健全性检查和变量来尝试捕获出错的软件模块——这花了我一天的时间。然后,在下一次系统测试中,我发现是数据库代码造成的问题,但他们开始不相信,直到我输出了我的变量的十六进制转储,向他们指出一个数据库记录写入了错误的位置。这花了一个星期的时间,而编程团队的每个人都认定是我这边编码失误造成的!如果使用存储键,这个问题应该在一个小时之内就解决了。
但我们现在有了内存键这个新技术
内核程序员将其称为“存储键”——对于在 cpu 内部和虚拟内存中工作的内核程序员而言,存储就等于内存,因为他们使用加载和存储指令。对于其他人而言,这称为内存或 ram!我们在这里不是讨论“内核级别的内存键”,而仅是应用程序的普通程序员可以使用的用户级别的键。
对于内核程序员而言,存储键在用于查找第三方设备驱动程序小错误和添加到内核的新函数的错误特别有用,在 aix 中,这是为了保持较高级别的 ras,并删除了一些似乎从来没有完全解决的奇怪问题。据说已经发现了大量问题,而且已经得到了解决,将提高 aix 在所有计算机(不仅是 power6)上的性能。
如果喜欢aix 6 和 power 6 中的内存保护存储键(storage keys)请收藏或告诉您的好朋友.
阅读(233) | 评论(0) | 转发(0) |