实模式与保护模式

news/2024/7/20 15:01:39 标签: 内存管理, 系统安全, 操作系统

<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } H4 { margin-bottom: 0.08in } H4.cjk { font-family: "AR PL UMing HK" } H4.ctl { font-family: "Lohit Hindi" } -->



1. 实模式,又叫实地址模式,CPU完全按照8086的实际寻址方法访问从00000h--FFFFFh1MB大小)的地址范围的内存,在这种模式下,CPU只能做单任务运行;寻址公式为:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段内偏移地址组成的。
2.
保护模式,又叫内存保护模式,寻址采用32位段和偏移量,最大寻址空间4GB,在这种模式下,系统运行于多任务,设计这种模式的原因和好处是:保护模式增加了寻址空间,增加了对多任务的支持,增加了段页式寻址机制的内存管理(分段机制使得段具有访问权限和特权级,各应用程序和操作系统的代码和核心是被保护的,这也是多任务支持的实现关键和保护这个名字的由来)。寻址过程为:物理地址=由段地址查询全局描述符表中给出的段基址+偏移地址,即:物理地址由影像寄存器中的基址加上16位或者32位的偏移组成。

==============================================

1:实模式
CPU启动的时候的模式
这时候就相当于一个速度超快的8086
不能使用多线程
不能实现权限分级
还不能访问20位以上地址线,也就是说只能访问1M内存(!!!)
2:
保护模式
操作系统接管CPU.
会使CPU进入保护模式.
这时候可以发挥80x86的所有威力..
包括权限分级.内存分页.等等等等各种功能
============================================
1.
虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。

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

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

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

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


http://www.niftyadmin.cn/n/1598764.html

相关文章

5_2. 差错控制

计算机网络原理【总学习笔记】 2. 差错控制 差错控制的四种基本方式: 检错重发前向纠错 接收端进行差错纠正。反馈校验 接收端将收到的数据原封不动发回发送端。检错丢弃 差错编码基本原理 香农信道编码定理: 理论上可以通过编码使得数据传输过程不发生错误&#xff0c;或者将…

一位Java工程师的阶段性工作总结:代码规范、sql规范与优化、事物

一、技术积累&#xff08;1&#xff09;代码规范1.1.1、通常的模块分布&#xff1a;一般如果你要实现一个web应用&#xff0c;你从后台将数据展示到前端页面&#xff0c;在一个比较大的公司&#xff0c;你少不了跟其他项目有交集&#xff08;你调用他的接口&#xff0c;他依赖你…

5_3. 多路访问控制协议

计算机网络原理【总学习笔记】 3. 多路访问控制协议 信道划分MAC协议 多路访问控制MAC: 广播信道上用于协调各个结点的数据发送。 信道划分MAC协议: 频分多路复用:在频域内将信道带宽划分为多个子信道。时分多路复用:将通信信道的传输信号在时域内划分为多个等长的时隙。波分多…

Linux0.11内核--启动引导过程

<!-- page { margin: 0.79in } P { margin-bottom: 0.08in } --> 启动搬迁过程&#xff1a;  1、BIOS将磁盘引导块程序bootsect读入到内存0x7c00&#xff0c;开始执行指令&#xff1b;  2、bootsect将自己搬迁到内存0x90000&#xff0c;跳到该段中的自己的下一条指令…

通过plsql窗口创建定时任务job

1、打开PLSQL&#xff0c;展开左侧工具上的DBMS_JOBS定时器文件夹。通过plsql查看tables、views等文件夹&#xff0c;找到定时器对应的DBMS_Jobs文件夹。2、新建定时器job。在文件夹或者在已有的定时器上右键 new... 创建一个新的job&#xff08;定时器&#xff09;3、输入红色…

cubemx配置stm32(四)__STM32定时器中断TIMER

cubemx配置stm32(四)__STM32定时器中断TIMER 1.建立工程并进行核心配置 根据文章2.使用cubemx配置stm32(二)__核心配置 进行如下配置&#xff1a; CubeMX新建工程 CubeMX图形配置调试时钟信号 CubeMX图形配置时钟树 CubeMX图形配置调试接口 (这里之前那个水星版的板子坏了&a…

Linux0.11内核--几种地址(逻辑地址、线性地址、物理地址)的含义

程序&#xff08;进程&#xff09;的虚拟地址和逻辑地址 虚拟地址&#xff08;virtual address&#xff09;指程序产生的有段选择符和段内偏移两部分组成的地址。一个程序的虚拟地址空间有GDT映射的全地址空间和LDT映射的局部地址空间组成。 逻辑地址&#xff08;logical add…