【从头开始写操作系统系列】一致代码段与非一致代码段

本文详细介绍了操作系统中的一致代码段和非一致代码段,包括它们的定义、限制以及如何在段间跳转。特权级的概念也被深入探讨,解释了为何需要这些机制来保护内核并确保系统安全。此外,还讨论了门描述符在代码段转移中的作用。
摘要由CSDN通过智能技术生成

上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构。在介绍这一跳转之前,这篇文章我们来介绍两个概念:一致代码段和非一致代码段。

首先,我们先来看几个问题:

  • 一致代码段和非一致代码段是什么?

  • 为什么要有一致代码段和非一致代码段?

  • 系统提供怎样的机制来使用户程序访问内核数据?

  • 程序如何在段与段之间跳转?

接下来,我们将讨论上述这些问题。

特权级

为了更好的理解之后的问题,我们先来讨论一个概念:特权级。

  • 特权级是一种机制来保护数据和防止恶意行为,特权级分4种:0,1,2,3。0为最高特权级,4为最低。(在 Linux 中只使用了0和3)

  • 这些特权级是通过三个标志来表示的:CPL,DPL,RPL

    • CPL 是存放于如 CS、SS 寄存器中的,表示当前特权级
    • DPL 是在 GDT(全局描述符表)/LDT(局部描述符表)中的,静态的
    • RPL是代码中根据不同段跳转而确定,用于刷新 CPL
  • CPL(Current Privilege Level)是表示当前执行程序的特权级,它被存放在CS 和 SS 的第0位和第1位。通常情况下,CPL等于代码的段的特权级。在遇

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值