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

为什么段描述符的第11位和第12位不能组合在一起?

段描述符的第11位和第12位不能组合在一起的原因是因为它们分别用于指示段的粒度和段的类型。

第11位是段描述符的粒度位,用于指示段的粒度是字节级还是4KB级。当第11位为0时,表示段的粒度是字节级,即段内的偏移地址是以字节为单位的;当第11位为1时,表示段的粒度是4KB级,即段内的偏移地址是以4KB为单位的。

第12位是段描述符的类型位,用于指示段的类型是系统段还是代码/数据段。当第12位为0时,表示段是系统段,用于存储操作系统的数据结构和控制信息;当第12位为1时,表示段是代码/数据段,用于存储程序的指令和数据。

由于第11位和第12位具有不同的含义和作用,因此它们不能组合在一起使用。如果将它们组合在一起,就会导致混淆和冲突,无法正确解析段描述符的粒度和类型信息,从而影响系统的正常运行。

总结起来,段描述符的第11位和第12位不能组合在一起是为了保证段描述符的解析和使用的准确性和一致性。

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

相关·内容

一文详解 32 位保护模式与内存分段机制

操作系统内存管理 — 分段与分页、虚拟地址、逻辑地址、线性地址、物理地址 那么操作系统为什么要实现这一系列复杂机制呢?上文提到 GDT、LDT、IDT 又是什么呢?他们结构是什么样呢?...基址 * 16 + 偏移 这样计算原因是为了兼容 Intel 8086 CPU,8086 CPU 由若干个 16 位寄存器、16 位数据总线以及 20 位地址总线组成,通过地址与偏移组合...在这一思想下,32 位操作系统中分段思想诞生了,他通过创建一个表,每个表项用来存储一个基址与界限组合,从而实现一个内存定义,每个表项同时还定义了该内存若干属性,从而实现对这段内存“保护...当前特权级 CPL(Current Privilege Level) 他被存储在 cs 寄存器与 ss 寄存器 0 位 1 位上。...TYPE 字段 3 位就是一致位,为 0 代码就是非一致代码,表示只有程序 CPL 与 DPL 相等时,才允许程序访问该代码 一致代码通过调用门访问非一致代码 — 只有 CPL 大于等于

1.2K31

数据分析简易入门(1)

现代管理学之父彼得·德鲁克提出用管理促进企业增长说过:“如果你不能衡量,那么你就不能有效增长”。 02 为什么要进行数据分析?...举例说明:“登录次数”指总聊天消息数,“每次登录浏览网页数”指每次登录平均网页浏览量。 并不是每个指标都能与每一个维度组合使用,每个维度指标都有各自数据范围。...在大多数情况下,只有将具有相同范围维度指标组合在一起才有意义。 数据分析可以从以下几个方面分析进行维度指标的衡量: 总体数据概览: 反映某一数据指标的整体规模大小、总量多少指标。...为什么要关注留存:留存可以评估产品功能对用户粘性。...如果不能,还需要获取什么数据。 处理数据:处理数据中异常数据、重复数据、缺失数据等。 分析数据:围绕关键指标进行分析,分析过程中采用下钻法,如分析某一天CTR下降、哪个时间、哪些app等等。

36010
  • Linux内存寻址之分段机制及分页机制【转】

    但是,一个尴尬问题出现了,ALU宽度只有16位,也就是说,ALU不能计算20位地址。为了解决这个问题,分段机制被引入,登上了历史舞台。...在实模式下,属性不外乎是代码、堆栈、数据起始地址、长度等等,而在保护模式下则复杂一些。IA32将它们结合在一起用一个8字节数表示,称为描述符 。...IA32一个通用描述符结构 从图可以看出,一个描述符指出了32位基地址20位界限(即段长)。这里我们只关注基地址界限,其他属性略过。...描述符表 各种各样用户描述符系统描述符,都放在对应全局描述符表、局部描述符中断描述符表中。描述符表(即表)定义了IA32系统所有情况。...31~12位是20位物理页面地址,除6位外0~5位及9~11位用途页目录项一样,6位是页面项独有的,当对涉及页面进行写操作时,D位被置1。

    3.5K50

    JavaScript继承

    这里面并没有写constructor,但我建议同学们先搞懂原型继承,再搞明白为什么要添加constructor,而不要把它们俩放在一起。 借用?怎么个借用?...-- 组合继承 --> 168页,6.3.3组合继承,明确写着,“指的是将原型链借用构造函数组合到一块”,就是组合继承了。不必想太复杂。 ?...其实我觉得这种方式不应该放在一起使用,你都call了,就说明这二个函数是要解耦合。然后你又prototype给连成紧耦合了,这不是多余了么。 169页6.3.4原型式继承,扯了一这那,还搞个洋人名......在172页下数第二开头,写着“所谓寄生式继承,即通过借用构造函数来继承属性,通过原型链混成形式来继承方法。” 173页开头代码,还有下面的图,我确实是看明白了,它就是画一串原型链。

    38210

    80386分段机制、分页机制物理地址形成

    所谓描述符(Descriptor),就是描述属性一个8 字节存储单元。 2、用户描述符(Descriptor) ? ? 一个描述符指出了32 位基地址20 位界限(即大小)。...系统描述符5 个字节4 位为0,说明它是系统描述符,类型占4 位,没有A 位。6 个字节6 位为0,说明系统长度是字节粒度,所以,一个系统最大长度为1M 字节。...4、选择符、描述符描述符表寄存器 描述符表(即表)定义了386 系统所有情况。...(2)先根据相应描述符表寄存器中地址(确定描述符地址)界限(确定描述符大小),根据选择符TI决定从哪种描述符表中取,再根据选择符索引找到相应描述符位置,比较RPL与DPL,若该段无问题...这个描述符包括指向TSS 起始地址32 位基地址域,20 位界限域,界限域值不能小于十进制104(由TSS 最小长度决定)。

    1.3K50

    80386分段机制、分页机制物理地址形成

    所谓描述符(Descriptor),就是描述属性一个8 字节存储单元。 2、用户描述符(Descriptor) ? ? 一个描述符指出了32 位基地址20 位界限(即大小)。...系统描述符5 个字节4 位为0,说明它是系统描述符,类型占4 位,没有A 位。6 个字节6 位为0,说明系统长度是字节粒度,所以,一个系统最大长度为1M 字节。...4、选择符、描述符描述符表寄存器 描述符表(即表)定义了386 系统所有情况。...(2)先根据相应描述符表寄存器中地址(确定描述符地址)界限(确定描述符大小),根据选择符TI决定从哪种描述符表中取,再根据选择符索引找到相应描述符位置,比较RPL与DPL,若该段无问题...这个描述符包括指向TSS 起始地址32 位基地址域,20 位界限域,界限域值不能小于十进制104(由TSS 最小长度决定)。

    1.1K30

    保护模式-4讲--跨越权限

    -4讲--跨越权限 一丶描述符 选择子 等特权级讲解 1.1 CPU层面的模式 ​ 这一点主要是了解下....CPU执行这条指令时候.为什么要去查.难道不该限制吗.不管是ring3 还是 ring0都可以查表吗. 不是这样. RPL就是一个限制. 表示你想请求特权级别....我们可以看到.s跟type是紧密相连. 所以stype可以看作是一个整体二进制位. 并且这4位可以组成一个整体. 也就是一个16进制位 正好就是 高32位5个字节表示 表示了s与type....从GDT表中拷贝一个代码到GDT中没有使用位置 观察上图.我们看GDT时候. 第一项是没有使用. 我们将一个描述符(代码)拷贝到GDT表中16项中. 代码怎么找也是同上....通过以上指令我们可以看到 将GDT表中第四项,拷贝到了 16项中. 下面就是构造选择子 然后进行跨实验 3.选择子构造 以及跨实验 我们所添加新项在 GDT表中16项.

    1.2K30

    保护模式-第五讲-门-调用门

    堆栈图进行了改变 call 执行之后对战图 ? 可以看到,在进行call 调用之前.会保存调用者SS ESP CS 为什么要保存堆栈. 原因是 当跨提权时候. 堆栈不是ring3堆栈了....只不过我们要 以base+偏移方式进行组合.组合为一个真正地址. 2.2 调用门描述符 ?...在调用门描述符里面. 统一进行写死了. 12位 = 0 11-8固定是1100 因为 s位 我们学过描述符 当 s位 = 0 代表是系统描述符. 调用门描述符就是系统描述符....将门描述符写入到GDT表中 13项. 因为下标是从0开始. 所以下标为12才为我们实际描述符位置....所以选择子 构造为 12 RPL = 0 TI = 0 12二进制为 1100 组合起来 TI RPL = 1100000 = 0x60 所以在代码中我们设置我们描述符选择子为0x60

    1.7K10

    MPEG标准概览(续)

    在该标准中,现实世界虚拟对象表示以各种形式组合。该标准可以用来: MAR应用程序或服务设计。考虑到给定应用程序/服务需求,设计人员可以从MAR模型体系结构中指定组件中引用选择所需组件。...MPEG定义了接口技术,而IT标准通常定义了体系结构参考模型。这就解释了为什么ISO收到大多数专利声明都与MPEG标准有关。...11部分,MPEG组合信息指定扩展到HTML 5以与MMT一起使用 12部分,图像文件格式指定单个图像图像序列文件格式 13部分,MMT实施指南收集有关MMT使用有用指南 14部分,高动态范围宽色域视频转换编码实践...2部分,一致性参考软件,MPEG标准常规组件 3部分,实施指南,为实施者提供指导 4部分,加密验证,其指定DASH加密验证 5部分,服务器网络辅助DASH,指定了与质量相关辅助信息异步网络到客户端网络到网络通信...等 将每个bin读取转换为特定于该类18个描述符子集:例如,类P描述符是读取起始位置等。

    2K41

    NAND FLASH_NAND器件

    接下来,RBL会在NAND Flash1块0个页开始查找UBL描述符.如果没有找一个合法UBL特殊数字标志,RBL会继续到下一个块0个页查找描述符,最多24个块.RBL会到多个块里面查找描述符是根据...UBL描述符告诉RBL关于下载将控制权交给UBL所需要信息,具体见表1....UBL起始块号(block number)可以是存放UBL描述符块号一样. 如果UBL起始块号是存放UBL描述符块号一样, 那UBL起始页数一定不可以UBL描述符存放页数一样....UBL代码起始块号.这里+3意思就是UBL是存放在UBL描述符所放块号后面的第三块里面.headerPtr[4] = 0表示是从0页开始存放.当然这个值用户是可以修改.只要你烧写UBL代码位置描述符里面的起始块...DONE Jumping to entry point at 0x81080000 我们可以看到UBL是指8块地方找到了U-Boot描述符,这个DEVICE_NAND_UBL_SEARCH_START_BLOCK

    65750

    Linux 从头学 01:CPU 是如何执行一条指令

    随着内容不断扩展,越发觉得之前很多基础东西都差不多忘记了,比如下面这张表(《深入理解 LINUX 内核》 47 页): ? 这张表描述了 Linux 系统中几个描述符信息。...数据代码,仔细看一下相关书籍就知道这些描述符代表什么意思,但是: 为什么这几个 Base 地址都是 0x00000000? 为什么 Limit 都是 0xfffff?...为什么它们 Type 类型优先级 DPL 又各不相同? 如果没有对 x86 平台一些基础知识理解,要啃完这本书真的是挺费力气!...在 CPU 内部,一些都是代表 0 或 1 电信号,这些二进制数字一组电信号出现在处理器内部线路上,它们是一排高低电平组合,代表着二进制数中每一位。...还记得文章开头那张描述符表格吗? 其中代码和数据描述符起始地址都是 0x00000000,也就是说: 在数值上虚拟地址转换后线性地址是相等(稍后就会明白为什么是这样)。

    1.2K20

    操作系统开发:编写开机引导

    实模式下用户程序操作系统是同一级别的,所以要添加个特权级属性来区分用户程序系统。 内存是一片内存区域,访问内存就要提供基址,所以要有基址属性。...基址 0-7是基址16-23位,24-31位是基址高32位,加上段描述符低32位中基址0-15位,就构成了32位基地址。...选择子: 保护模式下段寄存器中存储就是选择子,选择子是一个索引值,用此索引值在描述符表中索引相应描述符,这样,便可以在描述符中得到了内存起始地址界限值等相关信息。...描述符索引 3-15位是描述符索引值,此值主要用于在GDT中索引符合条件描述符。...GDT_BASE 构建GDT起始地址(此位是0位,不可用,所以直接填充为全0即可) CODE_DESC/DATA_STACK_DESC/VIDEO_DESC 代码描述符,数据描述符

    65130

    实战特权级间跳转 -- 原理篇

    当前特权级 CPL(Current Privilege Level) 他被存储在 cs 寄存器与 ss 寄存器 0 位 1 位上。...访问特权级 RPL(Requested Privilege Level) RPL 是位于选择子中特权级字段,它位于选择子 0 位与 1 位,用于在程序跳转中动态决定权限与 CPL,它实现了多次访问相同但使用不同特权级功能...结构 如图所示,由于历史原因,描述目标代码入口偏移地址 4 个字节被拆到了门描述符前两个后两个字节,byte2、byte3 则写入了选择子,剩下两个字节则定义了一些属性与参数数量等信息。...选择子目标代码偏移地址共同确定了要跳转到目标地址内存物理地址,而属性添加则让这次跳转有了更多特定功能。...、ESP 寄存器值,在进行长跳转前,特权级 3 使用 ss 与 esp 寄存器组合会被压入目标栈中,通过 retf 返回时,会自动还原到原特权级 3 堆栈。

    57620

    中断机制中断描述符表、中断异常处理

    所有256 种中断可分为两大类:异常中断。异常又分为故障(Fault)、陷阱(Trap)夭折(Abort),它们共同特点是既不使用中断控制器,又不能被屏蔽。...表中每个表项占4 个字节,由两个字节基址两个字节偏移量组成,这样构成地址便是相应中断处理程序入口地址。...2.中断门(Interrupt gate) 其类型码为110,中断门包含了一个中断或异常处理程序所在选择符内偏移量。...• 分两步进行有效性检查:首先是“”级检查,将CPU 的当前特权级CPL(存放在CS寄存器最低两位)与IDT 中 i 项中选择符中RPL 相比较,如果RPL(3)大于CPL(0),就产生一个...CS : EIP 值就是IDT 表中i 项门描述符选择符偏移量值,此时,CPU 就跳转到了中断或异常处理程序。

    3.8K10

    Linux内核13-进程切换

    这个描述符包含一个32位基地址,指向TSS起始地址 以及20位Limit域,表示页大小。TSSDS标志被清零,说明这是一个系统(参见2章描述符)。...我们将会在7章发现,prevnext正是schedule()函数局部变量。 2.1 switch_to宏 进程硬件上下文切换是由宏switch_to完成。...为什么需要last参数呢? 当进程切换涉及到3个进程时候,3个进程分别假设为A、B、C。假设内核决定关掉A进程,激活B进程。...意义5步差不多,就是执行顺序相反。 跳转到__switch_to()函数执行,是一个C函数。 至此,进程A被进程B取代:开始执行B进程指令。第一步应该是先弹出eflagsebp寄存器值。...3个选择器存储在进程描述符tls_array数组中。 存储fsgs寄存器内容到旧进程prev_p->thread.fsprev_p->thread.gs中。

    1.9K20

    容器逃逸成真:从CTF解题到CVE-2019-5736漏洞挖掘分析

    一、前言 有些鸟是不能关在笼子里,他们羽毛太漂亮了。...分析到这里,我们可以确定是,在隔离环境内部,通过/tmp/flag路径已经不能直接拿到flag,因为它被新tmpfs遮盖;通过/flag路径能够拿到flag,虽然一开始我们不知道它权限所有者,但现在挂载在这里其实是原先...子进程从用户输入读取一数据作为ELF文件加载为匿名文件(memfd)[12]并返回文件描述符,然后在/tmp/chroot/下以当前沙盒序号为名称创建一个目录,同样改权限为777,并将根目录切换到这里...最后,子进程将执行前述匿名文件; 4 run_elf分支:首先由用户给定一个沙盒序号,并继续提示用户发送一数据作为将要执行ELF文件。接着创建一个子进程,父进程回到2步中循环体等待输入。...这里1步最后沙盒2循环等待联系在一起,构成了我们安排竞态攻击; 3 3.如果CPU调度结果是:沙盒3先mkdir,然后沙盒2检测到/tmp/chroots/3建立,并使用unlinkat API

    3.4K20

    中断描述符

    中断门描述符结构如下: 中断门包含中断处理程序所在选择子内偏移地址,当通过此方式进入中断后,标志寄存器eflags中IF位自动置0,表示把中断关闭,避免中断嵌套。...CPU内部有个中断描述符寄存器IDTR,该寄存器结构图如下图: 0~15位是表界限,即IDT减1,可容纳8192个中段描述符16~47位是IDT基地址。...对于内部中断来说,要求检查当前特权级CPL中断门描述符DPL及门描述符对应代码DPL,在数值上满足以下关系: 目标代码DPL < 当前特权级CPL < 门描述符DPL 对于外部中断,检查当前特权级...CPL目标代码DPL,在数值上满足以下关系: 目标代码DPL < 当前特权级CPL 如何执行中断处理程序?...为什么要保存CSEIP值? 当我们中断处理程序在返回时,检查备份CS选择子,根据其RPLDPL做特权级检查,如果通过,则需要更新寄存器CSEIP,这样才可以恢复到中断之前代码

    80440

    Windows程序设计学习笔记(一)Windows内存管理初步

    为了管理描述符表,80386引入两个寄存器一个是48位GDTR(全局描述符表寄存器)另一个是16位LDTR(局部描述符表寄存器)分别指向GDT(全局描述符表)LDT(局部描述符表)。...GDT(Global Descriptor Table)包含系统中所有任务都可用描述符,通常包含描述操作系统所使用代码、数据堆栈描述符及各任务LDT等;全局描述符表只有一个。...它包含有每个任务私有的代码、数据堆栈描述符,也包含该任务所使用一些门描述符,如任务门调用门描述符等。系统根据不同任务切换不同LDT。这样便于实现不同进程间内存隔离。...0位、1位合起来表示程序等级,2位TI位用来表示在描述符位置;TI=0表示在GDT中,TI=1表示在LDT中。...这个自然也不是,Windows我们都知道Windows提供了一系列API ,其中我们可以调用相应API访问内核所在内存,只是不能直接访问内核代码,也就是说不能直接用jmp指令访问内核代码,但是可以使用

    52010
    领券