首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从16位实模式(x86)切换到32位保护模式

从16位实模式(x86)切换到32位保护模式是指在x86架构的计算机中,从使用16位实模式运行的操作系统或应用程序切换到使用32位保护模式运行的操作系统或应用程序。

在16位实模式下,计算机的内存管理是基于段(segment)的,每个段的大小为64KB,并且没有内存保护机制和虚拟内存的支持。这意味着应用程序可以直接访问整个系统内存,并且一个应用程序的错误可能会影响整个系统的稳定性。

而在32位保护模式下,计算机的内存管理是基于分页(paging)的,每个页的大小通常为4KB,并且支持内存保护机制和虚拟内存。通过分页机制,操作系统可以将物理内存划分为多个虚拟内存页,并且可以为每个页设置访问权限,从而实现内存的隔离和保护。此外,32位保护模式还支持更大的内存寻址空间,可以访问超过1MB的内存。

切换到32位保护模式可以带来以下优势和应用场景:

  1. 内存保护和隔离:通过分页机制和访问权限设置,可以实现应用程序之间的内存隔离,防止错误的应用程序影响系统稳定性。
  2. 虚拟内存支持:通过虚拟内存机制,可以将物理内存扩展为更大的虚拟内存空间,提供更多的内存给应用程序使用。
  3. 大内存寻址空间:32位保护模式支持更大的内存寻址空间,可以访问超过1MB的内存,满足处理大型数据和应用程序的需求。
  4. 更高的性能:32位保护模式下,可以使用更多的寄存器和高级指令集,提高程序的执行效率和性能。
  5. 多任务和多线程支持:32位保护模式提供了更强大的任务调度和线程管理机制,支持同时运行多个应用程序和线程,提高系统的并发性能。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):提供高性能、可扩展的云服务器实例,满足不同规模和需求的应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:提供稳定可靠的云数据库服务,支持高可用、高性能的MySQL数据库。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):提供安全可靠、高扩展性的对象存储服务,适用于存储和管理各种类型的非结构化数据。详情请参考:https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):提供丰富的人工智能服务和解决方案,包括图像识别、语音识别、自然语言处理等。详情请参考:https://cloud.tencent.com/product/ai

请注意,以上仅为腾讯云的一些相关产品示例,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

图灵机到操作系统的启动

图灵机是模拟人用纸笔计算的过程得到的灵感。图灵设想只存在于想象中的机器由一个控制器、一个读写头和一根无限长的工作带组成的。...计算机的开机的过程到底是怎么样的(Intel X86计算机)。...Intel X86 PC开机时CPU处于模式模式寻址CS:IP(CS左移4位,然后加上IP的偏移值就是要寻址的地址),上电以后,CS=0xFFFF,IP=0x0000....从而使Intel X86CPU的模式换到保护模式(32位模式)。否则根据以前的寻址方式CS左移4位,加上IP,这样最多访问1MB的内存。进入模式后,寻址方式将会变成:根据CS查表,然后加上IP。...所以操作系统是在CPU的保护模式下运行的。 经过上面一系列的过程,我们的计算机就算正式开机了。

60020

使用WinDbg查看保护模式分页机制下的物理地址

我们知道,当今主流的x86/x64 Intel处理器默认都使用了保护模式,不同于8086时代的模式机制,保护模式和分页机制实现了内核层与用户层隔离,进程间执行环境隔离。...可以看出记事本进程的进程块起始地址为882e4030 因为当前是在系统进程断下,所以此时我们要切换到记事本的进程 使用.process -i 882e4030(进程块地址)命令,在输入 g 命令将WinDbg...当前调试进程切换到notepad.exe ?...下面来说以下Win32 X86下虚拟地址的构成,在开启PAE模式的情况下,一个32位的虚拟地址有以下几部分组成: ?...之前对虚拟地址的分解可知,页目录项的索引为0,也就是是第一项,所以页目录的基址为3a4b6000,而页目录索引为0 使用!dq 3a4b6000+0*8查看页表的基址 ? 使用!

1.7K10

X86保护模式入门简介

保护模式入门简介 一丶 什么是保护模式 1.1 CPU的三个模式 CPU分为 模式 保护模式 虚拟8086模式 说一下分别是什么意思 模式 在之前的DOS年代.我们用的就是模式....那时候的汇编可以随便乱写.然后也会影响其它进程.造成系统的不稳定 保护模式 现在我们用的计算.在电脑启动的时候是模式, 然后之后就会转入保护模式....保护模式 的保护 意思就是不让我们随便乱修改了. 进程独立开来.互不影响等等. 虚拟8086模式 如果我们想在x86保护模式下.还想运行16位汇编.以及运行DOS程序.此时怎么办....保护模式为我们提供了虚拟的功能. 虚拟一个8086模式来运行. 以上概念简单了解....我们要学的是保护模式 而之前 的16位汇编 王爽著作 都是讲的模式. 1.2 概念之 复杂指令集以及精简指令集 复杂指令集 复杂指令集 比较复杂.可以理解为很多汇编. 而CPU要一一实现.

78410

Linux从头学09:x86 处理器如何进行-层层的内存保护?

模式:bootloader 为程序计算段的基地址 保护模式:bootloader 为自己创建段描述符 确定 GDT 的地址 创建代码段的描述符 创建数据段的描述符 创建栈段的描述符 段描述符是如何确保段的安全的...保护模式模式最本质的区别就是:保护模式使用了全局描述符表,用来保存每一个程序(bootloader,操作系统,应用程序)使用到的每个段信息:开始地址,长度,以及其他一些保护参数。...以上的这个过程,一直工作在模式,因此就没有段描述符什么事情。 在以后文章中,我们还会看到在保护模式下,bootloader 仍然会利用 OS 的 header 空间,来传递段的索引号。...保护模式:bootloader 为自己创建段描述符 bootloader BIOS 接管系统之后,刚开始是运行在模式下的。...书中直接把 x86 处理器中模式保护模式的寻址方式作为结论告诉我们了,但是并没有具体的讲解其中的原理。 如果把之前的这几篇文章都理解了,再去看 Linux 内核的相关书籍,就不会那么吃力了。

83930

Linux源码学习笔记day6 模式转换是什么鬼?

模式转换 接下来就要进行模式转换了,要从16位模式转换为32位保护模式。 这是x86的历史包袱。现在的CPU一般都是64位,至少也是32位的,所以需要写一段转换代码。...保护模式 还是在setup.s文件里,搬完操作系统代码就来到了end_move这个标签处。...想要理解这2个指令就涉及到模式保护模式的区别了。...目前我们还处于模式下,这个模式的CPU寻址方式是之前说的:段基址左移4位 + 偏移地址 表达方式为 ds:偏移量 变成保护模式后,内存地址计算方式就变了。...寄存器ds里的值 在模式下叫段基址 在保护模式下叫段选择子,段选择子里存的是段描述符的索引。 然后根据段描述符到 全局描述符表(gdt) 里找一个段描述符,段描述符里才存着段基址。

32610

写一个Loader引导加载程序

然后我们的loader需要把处理器切换到保护模式,这样就有了32位的寻址空间。最终再切换到IA-32e模式(长模式),获得64位的寻址空间。...这样能使得fs寄存器在模式下获得大于1MB的寻址能力。...大致流程如下 屏蔽外部中断 加载GDT的基地址和长度到GDTR寄存器 置位CR0的PE标志位 执行远跳转,切换到保护模式的代码段(将代码段寄存器更新为保护模式) 重新加载数据段选择子,或使用jmp/call...执行新任务,更新数据段寄存器为保护模式 执行LIDT 启用外部中断 保护模式进入IA-32e模式 保护模式进入IA-32e模式的过程与上面的类似。...,跳转到内核程序去执行,就成功将处理器切换到IA-32e模式了。

63320

操作系统启动顺序bios在哪里寻址机制bootloader结构建立段机制使能保护模式

概述 在这里以x86的处理器为例 机器在启动的时候会执行第一条指令。这条指令会去执行bios,将控制权交给bios。...bios完成硬件的质检,然后将bootloader硬盘读到内存中,执行bootloader,并将控制权交给bootloader bootloader负责使能保护模式、建立段机制以及加载操作系统,然后将控制权交给操作系统...一个地址由段寄存器:指令指针=16*段寄存器+指令指针来表示 由于在这一阶段,机器还是处于模式模式是20位寻址,所以单单只用段寄存器(16位)是不够的。...bootloader bootloader要完成使能保护模式模式——>保护模式)、建立段机制以及加载操作系统 bootloader结构 bootloader在硬盘中的第一个扇区也叫主引导扇区,一个扇区是...使能保护模式 将CR0寄存器(control 0 register控制寄存器),的第0位设为1,这样就开启了保护模式

1.1K100

MIT 6.828 操作系统工程 lab1 2018 fall part1 & part2 笔记 and 中文注释源代码阅读

引导加载程序必须执行的两个主要功能: 将处理器从实模式换到 32位保护模式; 通过x86的特殊I / O指令直接访问IDE磁盘设备寄存器,硬盘读取内核; 引导加载程序的源代码: boot/boot.S...#include # 启动CPU:切换到32位保护模式,跳至C代码; # BIOS将该代码硬盘的第一个扇区加载到 # 物理地址为0x7c00的内存,并开始以模式执行 #...seta20.2 movb $0xdf,%al # 0xdf -> 端口 0x60 outb %al,$0x60 # 使用引导GDT从实模式换到保护模式...* * * 控制boot.S开始-设置保护模式, * 和一个堆栈,然后运行C代码,然后调用bootmain() * * * 该文件中的bootmain()会接管,读取内核并跳转到该内核...HAS_SYMS, D_PAGED start address 0x0010000c 在开始时,gdb会提示:The target architecture is assumed to be i8086 切换到保护模式之后

2K50

x86保护模式下的内存分段的地址映射

阅读此文,先熟悉x86体系早期的模式下的内存分段的地址映射。...正是由于在模式下直接对物理内存进行读写,非常不安全,所以诞生了新的内存分段的映射方式,其目的就是对物理内存进行保护,而对内存进行保护需要注意的是一下三点: 1.内存的起始地址。...保护模式下内存分段的地址映射的模式:段描述符+段表。 其中段表是由段表项组成的,那么有多少个段表项?,段表项具体描述了什么信息?,每个段表项有多大字节?,段表的起始地址在哪里存放?...x86保护模式下内存分段和内存分页的地址映射的工作流程: 1.通过段寄存右移三位,获得在段表中的下标。 2.根据段寄存的TI判断使用GTRD或LDTR。...3.LDTR或GTRD中拿到段描述符表的起始地址。

62740

计算机组织结构(十) 内存管理

将程序和数据划分为段, 并进一步将段划分为页, 每一个段都有它自己页表 虚拟地址: 段号 + 页号 + 偏移量 优势: 程序在段中可以共享和保护 劣势: 需要多次查表 补充 PA 中的内存管理部分 模式...8086的模式 寄存器长度:16 位 访问内存需要结合段寄存器(segment register)进行 地址线:20 根 物理地址计算方式 physical address = (seg_reg<<...4)+offset,offset 为 16 位的偏移量 可寻址空间: 分段机制 x86 的机器开机后首先进入模式 加载操作系统 操作系统初始化段表 拨动一个”开关”, 从实模式换到保护模式 进入保护模式后...程序给出 48 位逻辑地址(16位段选择符 + 32 位有效地址) 使用段选择符来查段表 进行段级地址转换得到线性地址 分段机制(地址转换) 80386 保护模式下的地址转换 逻辑地址到线性地址的转换

33410

写一个操作系统_06 内存寻址

保护模式 为什么要有保护模式   模式是有很大弊端的,首先,直接操作物理内存,这样的话每次只能运行一个程序,并且不安全;另外,内存最大使用到1M,限制太大。   ...保护模式下,程序不能直接访问物理地址,程序的虚拟地址需要被转换为物理地址后再去访问,地址转换是由处理器和操作系统协作完成的,处理器在硬件上提供地址转换部件,操作系统提供转换过程中需要的页表。...保护模式的寄存器扩展 除段寄存器外,通用寄存器,指令指针寄存器,标志寄存器等都从16位升到了32位,因为段寄存器保留原来的16位也够用。...如今x86架构的OS,大都都把分段视为是兼容性的考虑(类似于对模式的处理),在系统初始化阶段象征性地初始化GDT,之后的运行就没分段啥事儿了。...二级模式只为进程实际使用的那些虚拟内存区分配页表,既提升了效率,也减少了内存的使用量。 ? 页目录项结构 ? 页表项结构 ? REF 深入理解Linux内核 x86保护模式

65110

逆向工程——汇编基础

段寄存器和选择器 模式下的段寄存器到保护模式下,摇身一变就成了选择器。不同的是,模式下的段选择器是16-bit的,而保护模式下的选择器是32-bit的。 CS 代码段 CS,代码段,或代码选择器。...####模式种类 80386开始,cpu有三种工作方式:模式保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。...虚拟8086模式是运行在保护模式中的模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。 ####模式区别 保护模式模式的根本区别是进程内存受保护与否 。...####64位奔腾4处理器工作模式 事实上,现在的64位奔腾4处理器,拥有三种基本模式和一种扩展模式, 基本模式保护模式:纯32位保护执行环境。 模式:纯16位无保护执行环境。...2)64位模式:在该模式下,处理器完全执行64位指令,使用64位地址空间和64操作数,运行16,32位程序必须切换到兼容模式。 IA-32e子模式的切换完全基于代码段寄存器。

1.4K10

进入Linux内核前的准备

32位的x86 CPU用做高速的8086。在模式下,所有的段都是可以读、写和可执行的。...而当CPU切换到32位保护模式后,内存地址的计算方式还会改变,首先ds寄存器里面的值在模式下称为段基址,在保护模式下叫做段选择子,段选择子里存储着段描述符的索引。...就是为了16位模式换到32位保护模式后,能从GDT中找到段描述符,拼凑成最终的物理地址。具体的例子我们后面转换到32位保护模式后,会再举实际例子来解释的,这里先理清楚思路就好。...进入保护模式 设置完GDT后,接下来就要从16位模式换到32位保护模式啦。...cr0中,当我们准备好切换到保护模式时,前两行汇编做的就是将cr0这个寄存器的位0置1,我们就从实模式换到保护模式了。

5.5K20

进入内核态看内存管理

我们把这种使用真实物理地址且未加任何限制的寻址方式称为模式(real mode,即实际地址模式保护模式 模式上的物理地址由段寄存器中的段基址:IP 计算而来,而段基址可由用户随意指定,显然非常不安全...那么保护模式是如何实现的呢,细心的你可能发现了上图中在段选择子和段描述符中里出现了 RPL 和 DPL 这两个新名词,这两个表示啥意思呢?...exception) 那么特权等级(也就是 CPL)是怎么变化的呢,我们之前说了 CPU 运行于用户空间时,处于用户态,特权等级为 3,运行于内核空间时,处于内核态,特权等级为 0,所以也可以换个问法 CPU 是如何用户空间切换到内核空间或者内核空间切换到用户空间的...,又是用户态切换到内核态,又是保存寄存器的值,可谓是非常的耗时,光看一下以下图示就知道像 int 0x80 这样的软件中断开销是有多大了 系统调用 所以后来又开发出了 SYSENTER/SYSCALL...,保护模式,特权级转换,分段,分页等概念应该有了比较清晰的认识。

90950

《笨开发学习操作系统》1启动

这个翻译着实一开始让我很难对应到英文的相关资料 模式 (Real mode) CPU 的一种工作模式,在这种工作模式下有以下几个特点: 对所需执行的指令不做任何区分,不加限制 访问内存的地址是真实的...只有1MB的存储器可以被寻址 可以直接软件访问 BIOS 程序及周边硬件 总之,在模式下权限非常大,想干什么就干什么,但是寻址空间小 保护模式 保护模式 (Protected Mode) CPU 的一种工作模式...之前 CPU 是以模式的工作模式运行的,但对于内核来说 1M 的空间肯定不够用,再者,后面的运行也涉及到安全问题,故需要权限收紧。...此时 CPU 的工作模式 模式换到保护模式 接下来用户可以通过 GRUB 来选择需要启动的操作系统,这里我们选择 Linux,至此就进入了第三阶段。...操作系统启动方法就是 start_kernel (就如同我们写代码时的 main 方法一样),首先运行的就是我们的 0 号进程 ,并且初始化各种所需环境(rootfs、调度模块等),最后内核态切换到用户态

54410

应用软件开发的基础知识-操作系统

x86 架构下,内核态的特权级为 0,用户态的特权级为 3。当程序运行在内核态时,CPU 将切换到特权级 0。当程序运行在用户态时,CPU 将切换到特权级 3。...内存管理计算机启动时,处于模式模式下,计算机的地址空间只有 1 MB,并且所有的内存都是直接可访问的。...以X86指令集的CPU为例,在模式下,BIOS 会加载内核到内存的 内存管理计算机启动时,处于模式模式下,计算机的地址空间只有 1 MB,并且所有的内存都是直接可访问的。...以X86指令集的CPU为例,在模式下,BIOS 会加载内核到内存的 0x0000:0x7C00 处。内核是一个特殊的程序,它负责启动操作系统。...加载完毕内核后,BIOS会把对硬件的控制健全交给内核,内核会通过 lgdt 和 lidt 指令来切换到保护模式,从而完成模式保护模式的切换,在保护模式下,计算机的地址空间可以大于 1 MB,并且内存被分为两部分

33120

Linux从头学02:x86中内存【段寻址】方式的来龙去脉

当一个新数据入栈时,先把数据放入这个位置,然后栈顶指针指向下一个空的位置; 递增:是指在数据入栈时,栈顶指针向高地址方向增长; 递减:是指在数据入栈时,栈顶指针向低地址方向递减; 模式保护模式 以上对内存的寻址方式中可以看出...为了对内存进行有效的保护, 80386 开始,引入了 保护模式 来对内存进行寻址。...虽然引进了保护模式,但是也存在模式,即向前兼容。电脑开机后处于模式,BIOS 加载主引导记录以及进行一些寄存器的设置之后就进入保护模式。... 386 以后引入的保护模式下,地址线变成了 32 根,最大寻址空间可以达到 4GB。 当然,处理器中的寄存器也变成了 32 位。...一句话总结:模式保护模式最根本的区别就是 内存是否收到保护。 Linux 中的分段策略 上面描述的分段机制是 x86 处理器中所提供的一种内存寻址机制,这仅仅是一种机制而已。

1.5K30
领券