请问在保护模式下,CPU做了那些保护? 地址空间保护是什么概念?

2006-03-19 06:05:41
我想 不能在应用程序使用IO指令算是一个保护
...全文
246 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
icbm 2006-03-24
  • 打赏
  • 举报
回复
何谓“保护”?

对数据的保护:

一、保护数据访问不越界。在保护模式下,数据段有段界限。超过界限,会发生通用保护异常。在实模式下,数据的段界限为64k,因此会发生数据段重叠的情况。对一个数据段越界写操作,不会报错,但这会破坏相邻数据段内的数据。

二、保护数据不被误用。在保护模式下,数据段分为只读数据段、可读可写数据段。对只读数据段进行写操作,会发生通用保护异常。数据段是不可以执行的,把数据段作为代码段执行,也会发生异常。在实模式下,任何数据段都是可写的,包括代码段也是可写的。

三、保护数据不被非法使用。在保护模式下,代码分为0、1、2、和3这四个运行特权级,0级特权级最高,1、2、3特权级依次降低。数据段也分为相应的4个特权级。只有当前代码段的特权级大于、等于数据段特权级的情况下,才能访问数据。

对代码的保护:

一、保护代码段访问不越界。与保护数据访问不越界类似。

二、保护代码码不被误用。在保护模式下,代码段分为只执行代码段、可读可执行段,普通代码段、一致代码段。代码段总是不可写的,对代码段进行写操作,会发生通用保护异常。

三、保护代码不被非法使用。在保护模式下,代码分为0、1、2、和3这四个运行特权级,0级特权级最高,1、2、3特权级依次降低。不同特权级之间代码的相互转移,需要满足特定的特权等级要求。

还有其它的一些保护措施,具体内容比较多,可以参考 Intel 参考手册。这里有个镜像站,有MASM和Intel的参考资料。网址:http://web.sau.edu/LillisKevinM/csci240/masmdocs/

上面有朋友说,保护模式主要是保护操作系统的,我比较赞同。在DOS下,任何程序都可以修改中断向量表,即一个想搞破坏的程序随时都可以让Dos崩溃。运行在保护模式下的Windows 2000,想搞破坏的程序如果权限不够,Windows 2000只是简单弹出个对话框,报告有非法程序执行,然后结束掉这个非法程序,Windows 2000不受影响。

运行在保护模式下的操作系统,稳定性、可靠性大大增强。

  • 打赏
  • 举报
回复
286就支持保护模式了。
lyh908 2006-03-21
  • 打赏
  • 举报
回复
回1楼:在80386之后才出现保护模式,保护模式提供了更多的内存。事实上,保护模式的目的不是为了保护程序,而是要保护程序以外的所有程序(包括操作系统)。
2006-03-20
  • 打赏
  • 举报
回复
一楼的主要目的是问,何谓“保护”
WYlslrt 2006-03-20
  • 打赏
  • 举报
回复
主要是做得特权及的保护,保证低特权级的代码,不会破坏到搞特权级的空间。
  • 打赏
  • 举报
回复
能否使用I/O指令取决于进程空间中I/O MAP的设置。
段限制决定一个段(保护模式下通常称之为选择符)所能访问的地址空间的大小,访问一个段内的地址超出这个范围会引发INT 0Dh(通常保护性错误)。
fhb13 2006-03-19
  • 打赏
  • 举报
回复
段限--规定一个段用多大的空间
楼主我不晓得你一楼说的东西是什么意思
2006-03-19
  • 打赏
  • 举报
回复
段限(limit)有什么作用?
我看到有人是这么说段限的“在80286中若给出的16位偏移地址小于段限值,则应在实存中寻址;反之在虚存中寻址”
迷惑?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧