精选文章 Title: Protected Mode Memory 保护模式下的内存

Title: Protected Mode Memory 保护模式下的内存

作者:gsnet 时间: 2021-02-07 03:18:18
gsnet 2021-02-07 03:18:18
【摘要】*************Title: Protected Mode Memory***************************** 标题:保护模式下的内存******************=================译自Tutor by Hutch==================**====Original:Collected and packed by dREAMtH...

*************Title: Protected Mode Memory**************
*************** 标题:保护模式下的内存*****************
*=================译自Tutor by Hutch==================*
*====Original:Collected and packed by dREAMtHEATER====*
*======翻译:小桥 from QDU huasoft@163.com============*
*==================20020820 at home===================*
*******************************************************

保护模式下的内存(Protected Mode Memory)


在像DOS一样的实模式操作系统中,可以覆写操作系统的代码段。如果程序没有正确的写入,而这有可能搞跨整个操作系统,计算机只有重新启动才能运行。

如果你正在写这样一个程序:直接写CGA图形内存区域,程序开始于B800H,而代码中出现了循环错误,它将覆写整个区域直到DOS所能及的最大的地址范围。这将覆写一切并包括内存中的BIOS设置。

保护模式下的内存被设计为预防这种类似事情发生。一种保护模式下的内存管理器控制着应用程序所写的地址范围,如果此应用程序继续尝试写那些非自已应写的地址时,管理器将终止此应用程序。

这种内存管理方式在16位的Windows中是可用的,但是因为16位的Windows仿真多任务,它在错误的程序垮掉之前,可以覆写其它应用程序的内存区域,或者是操作系统。

依赖于在操作系统中的覆写的内容,一些其它的没有错误的程序可以调用操作系统函数,无论是程序还是操作系统都会垮掉。更常见的是你接收到“蓝屏之死”,它至少告诉你一点信息;但如果写了很多代码产生了太大的混乱,你接收到“黑屏之死”,一个直接的黑屏锁住了机器,什么也没有告诉你。

硬件的改进以及基于硬件的32位多任务使得保护模式下的内存管理更加可信。在保护模式的操作系统下写代码的基础是:只是读和写你的应用程序所被准许的内存。

因为编译器允许你读和写几乎任何地址范围,你需要注意你可以读写的内存范围。如果你分配10K缓冲但你尝试读20K时,地址越过了10K缓冲区之后,你将得到一个内存页读错误(page read fault)。如果你在寄存器中不正确的废弃了一个变量
并且尝试读写那个地址,你也会遇到麻烦,因为你超越了地址的范围。

页读写错误是“异常”(exceptions),这是从操作系统到应用程序传递时引起的错误,如果异常没被应用程序所把握,操作系统将关闭程序。这提供了一些保护应用程序远离地址范围错误的方法。

在多任务操作系统中,当多道程序运行时,如果这种的保护不可用,那么一个程序可能覆写另一个正运行程序的内存,这可以使另外运行中的程序垮掉。同样的问题也会发生在操作系统的代码中:一个程序覆写操作系统的代码将垮掉操作系统。
==============================================

勿删,copyright占位
您找到想要的结果了吗?
Title: Protected Mode Memory 保护模式下的内存
提交成功!非常感谢您的反馈,我们会继续努力做到更好
分享文章到微博
分享文章到朋友圈

上一篇:反思,然后进步-再论系统件开发模式

下一篇:利用WINDOWS标准函数来删除INI文件内容

您可能感兴趣

  • 在NBMA网络点到多点模式下配置OSPF实际案例(配图)+详细验证过程

    一个点到多点网络被看作若干具有一个或多个邻居的点到点接口。当一个接口被配置给点到多点网络,就不需要DR/BDR,不需要定义邻居,这大大简化了给NBMA网络配置OSPF。   使用端口命令 ip ospa network point-to-multioint可以给所有路...

  • eclipse解决tomcat热启动报内存溢出java.lang.OutOfMemoryError: PermGen space

    工具:eclipse、jdk1.7、tomcat7、windows10         项目正常启动偶尔报 java.lang.OutOfMemoryError: PermGen space 内存溢出,但是当改了部分代码。触发热启动时,基本上每次都会报内存溢出。windows下改了tomcat中的catalina.bat文件不行,改这个文件应该是针...

  • nmake 的 batch mode (批模式) 推理规则可以用一次命令行调用编译多个文件

    在一般的推理规则下,把 5 个 .cpp 文件编译为 5 个 .obj 文件需要调用 5 次 cl.exe,而 Microsoft nmake 支持 batch mode (批模式) 推理规则,只需调用一次 cl.exe 就能编译出这 5 个 .obj 文件,加快编译速度。 举例来说,有如下 Makefile: # start of Makefi...

  • TOMCAT内存溢出之解决方法

    当用户执行一个大数据的应用时(净字节码量约为5M)时,系统会提示出错: 前台错误为:HTTP Status 500-Dispatch[EAITool] to method listCurTree retrun an exception (以下省略) ……………………………………………………… ……………………………………………………… 问题分析...

  • Java虚拟机JVM - 关于内存的设置与调优

    来自: http://fengyouhua.iteye.com/blog/58170   JVM内存的设置的原理    默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。 设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存...

  • 保护电脑上的文件不被U盘拷贝走

    首先我们要做的就是打开注册,选择开始菜单,然后选择运行选项,在打开的运行选项对话窗口中,我们输入注册表命令,regedit,输入注册表命令之后,单击确定按钮打开注册表编辑器,我们依次打开注册表以下路径,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl,然后在Control键值上面右键,选择新建,选择项,...

  • tomcat内存溢出设置JAVA_OPTS

    tomcat内存溢出设置JAVA_OPTS     答案1设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置三、实例,以下给出1G内存环境下java jvm 的参数设置参考:JAVA_OPTS="-serve...

  • android 下修改 hosts文件 及 out of memory的解决

    需要使用 android模拟器访问某个网站,其实是指向开发机器上的,这时需要修改 andorid上的 hosts文件, 下面这个网站介绍了方法 http://www.hiapk.com/bbs/thread-63992-1-1.html 具体步骤如下 1、获得root权限:adb root 2、设置/system为可读写:adb remou...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
Title: Protected Mode Memory 保护模式下的内存介绍:华为云为您免费提供Title: Protected Mode Memory 保护模式下的内存在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多Title: Protected Mode Memory 保护模式下的内存的相关内容。| 移动地址: Title: Protected Mode Memory 保护模式下的内存 | 写博客