段描述符

描述符的概念

所谓描述符(Descriptor),就是描述段的属性的一个8字节存储单元。在实模式下,段的属性不外乎是代码段、堆栈段、数据段、段的起始地址、段的长度等等,而在保护模式下则复杂一些。80386将它们结合在一起用一个8字节的数表示,称为描述符 。80386的一个通用的段描述符的结构如图2.10所示。


段描述符不是寄存器,是用来描述一个段的结构,该结构在内存中。保护模式下,CPU首先根据段寄存器的值找到指向的描述符,描述符中记录了段基址,然后再用这个基址计算线性地址。由于保护模式下段寄存器的作用不是声明地址的,而是指向某个段描述符的,也就是说,保护模式下段寄存器是让CPU选择段描述符的,所以段寄存器叫做选择子
每一个描述符是8字节长,其中包含了很多信息,比如这个描述符所描述的段的基地址,段的总长度,访问权限,段的属性,等等。因为它描述了一个段的很多信息,所以才把它这么一片内存区域叫做描述符。
实际处理器里面还包括了很多和保护模式有关的寄存器和硬件,上面的仅仅是其中一部分。
上面讲的结构仅指32位x86系统结构(IA32架构)。

数据段描述符是在计算机系统的内存管理和保护机制中使用的一种数据结构,主要用于描述内存中的数据段的属性和访问权限等信息,通常存在于保护模式下的操作系统中,以下是详细介绍: ### 基本结构 一般的数据描述符为 64 位,其结构可以分为几个关键部分: - **段基地址**:表示该数据段在内存中的起始地址,用来定位数据段在物理内存中的位置。通常由描述符中的多个字段组合而成,以提供足够的地址范围。 - **段界限**:定义了数据段的大小,即该数据段的长度。它指定了从段基地址开始的可访问内存范围。 - **访问权限字段**:包含了关于该数据段的访问控制信息,例如是否可读、可写,以及该段的特权级别等。这些权限设置有助于操作系统实现内存保护,防止非法的内存访问。 - **其他标志位**:用于指定段的一些其他属性,如段的粒度(以字节还是以页为单位)、段是否可扩展等。 ### 作用 - **内存管理**:操作系统通过数据段描述符来管理内存中的数据段,为程序分配和回收内存资源。通过设置段基地址和段界限,可以精确地定义每个数据段的位置和大小。 - **内存保护**:访问权限字段和其他标志位可以限制对数据段的访问,确保只有具有适当权限的程序才能访问特定的数据段。这有助于防止程序之间的非法内存访问,提高系统的安全性和稳定性。 ### 应用场景 在多任务操作系统中,不同的任务可能有各自独立的数据段,每个数据段都有其对应的描述符。操作系统通过管理这些描述符,实现任务之间的内存隔离和保护。在 x86 架构的处理器中,数据段描述符是保护模式下内存管理的重要组成部分,用于实现分段式内存管理。 ### 示例代码(伪代码) ```plaintext // 数据段描述符结构体示例 struct SegmentDescriptor { // 段界限的低 16 位 unsigned short limit_low; // 段基地址的低 16 位 unsigned short base_low; // 段基地址的中间 8 位 unsigned char base_middle; // 访问权限字段 unsigned char access; // 其他标志位和段界限的高 4 位 unsigned char granularity; // 段基地址的高 8 位 unsigned char base_high; }; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值