当前位置:  技术问答>linux和unix

什么是保护模式和实模式

    来源: 互联网  发布时间:2016-01-03

    本文导语:  看linux内核分析的时候 看到保护模式这个概念 但是书上没有解释 网上查了一下 也没有很好的答案,只看到相应的还有个实模式 请问,这两个概念是什么意思 两种模式在什么时候切换 | 从8038...

看linux内核分析的时候
看到保护模式这个概念
但是书上没有解释
网上查了一下
也没有很好的答案,只看到相应的还有个实模式
请问,这两个概念是什么意思
两种模式在什么时候切换

|
从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。
实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。
在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间;
扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持;
支持多任务,能够快速地进行任务切换和保护任务环境;
4个特权级和完善的特权检查机制,既能实现资源共享又能保证代码和数据的安全和保密及任务的隔离;
支持虚拟8086方式,便于执行8086程序。

|
楼上的基本上从技术上阐述了保护模式和实模式。我要补充一下。

1.虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。

2.保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。
实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用户程序的一个指针如果指向了系统程序区域或其他用户程序区域,并改变了值,那么对于这个被修改的系统程序或用户程序,其后果就很可能是灾难性的。为了克服这种低劣的内存管理方式,处理器厂商开发出保护模式。这样,物理内存地址不能直接被程序访问,程序内部的地址(虚拟地址)要由操作系统转化为物理地址去访问,程序对此一无所知。至此,进程(这时我们可以称程序为进程了)有了严格的边界,任何其他进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的虚拟地址范围内也不是可以任意访问的,因为有一些虚拟区域已经被放进一些公共系统运行库。这些区域也不能随便修改,若修改就会有: SIGSEGV(linux 段错误);非法内存访问对话框(windows 对话框)。

CPU启动环境为16位实模式,之后可以切换到保护模式。但从保护模式无法切换回实模式

3.事实上,现在的64位奔腾4处理器,拥有三种基本模式和一种扩展模式,
    a)基本模式:
      ****保护模式:纯32位保护执行环境。
      ****实模式:纯16位无保护执行环境。
      ****系统管理模式:当SMI引脚为有效进入系统管理模式,首先保存当前的CPU上下文。它有独立的地址空间,用来执行电源管理或系统安全方面的指令。
    b)扩展模式:****IA-32e模式,64位操作系统运行在该模式。该模式有两种子模式:
         1)**兼容模式:该模式下,64位操作系统运行在32位兼容环境,能正常运行16,32位应用程序就像基本的保护模式一样,访问32位地址空间,但不能运行纯16位实模式程序(就是不能运行虚拟86模式程序了)。
         2)**64位模式:在该模式下,处理器完全执行64位指令,使用64位地址空间和64操作数,运行16,32位程序必须切换到兼容模式。
    IA-32e子模式的切换完全基于代码段寄存器。这样一来,运行在IA-32e模式中(64位)的OS完全可以无缝的运行所有16,32,64为应用程序,通过设置32位后的CS。

    
 
 

您可能感兴趣的文章:

  • IA32架构下,能从保护模式返回实模式吗?
  • 一般的linux嵌入式设备,系统工作在实模式还是保护模式下呢
  • AT&T汇编 Linux保护模式编程问题
  • 嵌入式linux在正常运行后也是用的保护模式吗?
  • 保护模式下的I/O
  • 已经由DOS实模式进入保护模式(可以在DOS访问32位指针),但具体不知怎样用?
  • 保护模式怎么进呢
  • 保护模式杂问
  • 请问学习x86保护模式编程有什么意义?
  • linux操作系统的保护模式和分页机制,高手请进。
  • 请问关于保护模式下逻辑地址的一个问题
  • 显示器保护模式问题!!!!!!!!!
  • 保护模式小问
  • 保护模式的问题
  • 怎样在Bochs环境里模拟DOS保护模式?
  • [Oracle] Data Guard 之 三种保护模式介绍
  • 关于保护模式下打开地址线A20的问题
  • 再dos中有生成保护模式代码的c编译器吗?
  • 保护模式下怎么和硬件打交道 ?
  • 保护模式编程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • solaris 屏幕保护问题(Screen saver)!
  • 金山隐私保护器 PrivacyProtection
  • 关于SCO的屏幕保护的问题
  • 硬盘保护卡是什么道理? 它的工作原理是什么?
  • 屏幕保护程序 Kannasaver
  • 保护视力,用休息提醒软件 Workrave
  • 及其郁闷的事,请问个位硬盘保护卡怎么才能搞掉啊!
  • 386的保护机制为何与这个有点冲突,高手请指教
  • Linux屏幕保护 Really Slick Screensavers GLX Port
  • Linux下对写保护的u盘操作问题
  • 怎样用java作一个屏幕保护程序?请帮忙
  • SSH保护程序 sshguard
  • P2P保护工具 PeerGuardian2
  • 屏幕保护程序 Idle Screen Project
  • 请投票保护长城
  • 如何保护你的Java源码?
  • 菜鸟简单屏幕保护问题,请大家帮个忙!!!
  • 对一个int32的赋值需要加锁保护么?
  • 怎么解决linux下禁用屏幕保护程序和去掉节省电源的功能????


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3