虚拟内存可以作为内存保护的工具

CSAPP 10.5

如果某条指令违反了这些许可条件,那么CPU就会触发一个一般性保护错误,该错误将控制传递给内核中的异常处理程序。

general protection fault (GPF)

一般保护错

一般保护错是在PC机用户程序企图访问不可访问地址时出现的错误。操作系统一般将内存划分为不同的区域,有的区域只供操作系统使用,而有的区域是供应用程序使用的。当应用程序企图在分配给它的内存区域外进行访问操作时,操作系统将中止这个程序的运行,用户得到的是一行错误码,告诉用户程序出现了一般保护错,用户只能再次启动程序,希望这次程序在执行时会一切正常,随此以外没有什么办法可想。如果允许应用程序在分配给它的区域以外进行读写操作,就会使其它程序(或操作系统)的数据被破坏,如果破坏了操作系统的数据,系统就会崩溃,这样损失就太大了,倒不如关闭一个程序而保护整个系统的安全。

 

一般性保护错误(GPF)是指当一个应用程序试图访问没有分配给它的内存时引起的错误的名字。操作系统(如Win95)应自己的需求及其管理的应用程序的需求,需要对随机存储器(RAM)加以管理。操作系统一般将应用程序作为任务来管理。每当一个任务尝试向自己被分配的存储区域之外的RAM中某区域写数据,操作系统就会命令任务或者应用程序关掉。用户经常会收到上面所述情况发生时的报告,但是得到报告之后,用户并没有什么办法可以解决问题,只能重新打开程序,祈祷下次程序可以成功运行。

  如果一个应用程序能够在自己被分配的存储区域之外写数据,那么它将可以改写其他应用程序或操作系统的指令和数据。因此将出错的应用程序关掉对其他的应用程序和操作系统有一定的保护作用。

  一般性保护错误更容易在测试beta测试版的软件时发生。不过即使是很成熟的应用程序也可能会引起一般性保护错误,因为有些用户的不正当操作程序员是很难预测的。一般性保护错误还可能因为系统设置错误而产生。如果重复遇到同样的一般性保护错误消息,你可以将具体的错误报告记下来然后打电话给生产引起错误消息的那个软件的公司,以解决问题。

  Windows的一般性保护错误显示通常是指蓝屏死机。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值