首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >程序员都会的 CRUD 之段描述符表

程序员都会的 CRUD 之段描述符表

作者头像
码农UP2U
发布2026-03-16 18:24:52
发布2026-03-16 18:24:52
730
举报
文章被收录于专栏:码农UP2U码农UP2U

大家好,感谢大家的关注,今天继续分享!

日久见人心不古,路遥知马力不足!

今天来聊聊段描述符表,这是操作系统为了配合 CPU 保护模式而建立的一张表,类似的表在操作系统里非常的多。CRUD 不单单是对数据库,其实无处不在~!

0x01:段的产生

Intel 推出的第一款个人 CPU 是 4004,它是 4 位的处理器;后来又推出的 8080 是 8 位的处理器;那时候访问内存就直接是物理内存,也没有段的概念,不过这两 CPU 我都没有接触过。

后来有了 8086 的 16 位 CPU,就有了段这个概念。当然,它也不是凭空出现的,也是有缘由的。8086 的寄存器是 16 位的,而地址总线是 20 位的。

用 16 位的寄存器去访问 20 位的地址是有难度的。16 位的寄存器只能访问 2 的 16 次方的地址,也就是 64K;地址总线是 20 位,那么就是 2 的 20 次方,就是 1M 的范围。

为了让 16 位的寄存器能访问 20 位的地址,就有了 段 这个概念,并且在寄存器中,有了 段 寄存器,当然也是 16 位的;配合段寄存器和段内偏移,通过相应的运算,就可以完成 20 位的内存访问。具体方式为:段寄存器左移四位加上指令指针的段内偏移就构成了 20 位的物理地址了。

这样看段的概念就不是凭空产生的了,是因为 CPU 的寄存器和地址总线的位数不同而产生的。

0x02:段描述符

在 8086 时代,段基址是由段寄存器指定的,比如代码由 CS 指定,数据段由 DS 指定。只要通过改变段寄存器的值,那么就可以访问到内存的任意位置了,这样就产生了安全的问题,内存随便访问了,搞不好会不会破坏掉系统的数据呢?

因此,在 32 位的 80386 时就有了新的概念,叫做“保护模式”;而对于早期的 8086 可以直接操作任意内存地址的方式称为“实模式”。

在 32 位的 CPU 下,段寄存器仍然是 16 位的,而且仍然兼容实模式的工作方式。

如果要使用保护模式的话,那么就不能使用 16 位的段基址左移四位加上段内偏移的方式去访问内存了。因为在这个时候,段不但指定一个基址,而且有了更多的属性,从而对内存的访问有了一定保护。既然段有了这么多的属性,那么 16 位的段寄存器就显得有些短了。

此时,段寄存器中就不再保存段基址了,而是保存了段的索引,所以段寄存器改名叫“段选择子”。

而真正的段则需要用 64 位的结构体来进行定义和描述,所以出现一个“段描述符”的概念。一个段描述符可以描述一个段,系统中有多个段,那么就有多个段描述符,就构成了段描述符表。那么段选择子其实就是段描述符表的下标。通过段选择子来索引段描述符,从而获取段的相关信息与属性。

下图是段描述符的定义,以及各个属性的描述。

段描述符指定了段的起始位置,段的长度,段的各种属性之类的,比如特权级、粒度等。

0x03:64 位模式下的段描述符

到 64 位模式下,也就是 64 位的 CPU 下的 64 位模式,段描述符还是上面的样子,还是使用 64 位来进行描述的。但是很多位都已经不在使用了,比如段的起始位置,段的长度,都不使用了,但是段的属性还是使用的。在上图中的 L 位,也就是高 32 位的第 21 位,在 32 位模式时,它始终是 0 值,在 64 位模式下,此处变成了 1 值。

属性中的 长模式、存在位、特权级、描述符类型和段类型还继续使用,其他位都置为 0 了。

0x04:段描述符表

操作系统启动时,为了配合 CPU 的保护模式,由操作系统建立段描述符表,CPU 为了不频繁的访问段描述符表,它会将其缓存到高速缓存当中。然后,由段选择子来决定程序使用的是哪个段。

创建段描述符表,相当于建表,段选择子是段描述符表的索引,相当于查表。在操作系统中,类似这样的表非常的多,其实操作系统本身也算的上是一个 MIS 系统,只是它管理的是支持操作系统运行的数据,进程、线程的管理,不也是对应的内核数据结构构成的表吗?因此,看来什么地方都离不开 CRUD!其实 CRUD 是一个思路,不局限在数据库中,只要是对数据的管理,都会用得上。

不知道对于段和段描述符是否描述的清楚,不过,都看完了,那就点个赞,支持一下我再走吧!

1. 工业互联网超级干货合集

https://pan.quark.cn/s/ca9487a6f1b0

2. 超赞的40个知识模型分享给你,个个经典总有启发

https://pan.quark.cn/s/f72d47a58abe

3. 国家数据局的首批50个数字中国建设典型案例。反映了近年来数字中国建设的实践和成效,以供学习借鉴

https://pan.quark.cn/s/48d165737267

4. 狂人马斯克分享的“50个思维陷阱”据说是所有人都应该知道的50种认知偏差

https://pan.quark.cn/s/2b6f9d5b65f8

5. OKR 工作法超全合集

https://pan.quark.cn/s/c51ad1c3bb5e

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 源代码010 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档