gs_fs0文件是什么_汇编 - 什么是“FS”/“GS”寄存器?

它们的目的是什么,以及它们用于Windows和Linux的用途。

段寄存器背后的初衷是允许程序访问许多不同(大)的内存段,这些内存段旨在独立并且是持久虚拟存储的一部分。 这个想法取自1966年的Multics操作系统,它将文件视为简单的可寻址内存段。 没有BS“打开文件,写入记录,关闭文件”,只是“将此值存储到该虚拟数据段”,脏页刷新。

我们目前的2010年操作系统是一个巨大的倒退,这就是为什么他们被称为“太监”。 您只能处理进程空间的单个段,从而产生所谓的“扁平(恕我直言)无效地址空间”。 x86-32机器上的段寄存器仍然可以用于真正的段寄存器,但没有人感到困扰(前任英特尔总裁安迪格罗夫在上个世纪有一个相当着名的公共场合,当他在所有英特尔工程师花费能量和 他实现这个功能的钱,没有人会用它。去吧,安迪!)

AMD进入64位后决定他们不关心是否将Multics作为一种选择(这是慈善解释;不可接受的是他们对Multics一无所知),因此在64位模式下禁用了段寄存器的一般功能。 仍然需要线程来访问线程本地存储,并且每个线程需要一个指针......在可立即访问的线程状态中的某处(例如,在寄存器中)......以线程本地存储。 由于Windows和Linux在32位版本中都使用FS和GS(感谢Nick澄清),AMD决定让64位段寄存器(GS和FS)基本上只用于此目的(我认为你可以 让它们指向您的进程空间中的任何位置;如果应用程序代码可以加载它们,则不知道。 英特尔在恐慌中没有失去64位的AMD市场份额,而安迪退休后,决定只复制AMD的计划。

如果让每个线程的内存映射都有一个绝对的虚拟地址(例如,0-FFF),那就是它的线程本地存储(不需要[segment]寄存器指针!),这在结构上更漂亮了。 我在20世纪70年代的8位操作系统中做到了这一点,它非常方便,就像有另一大堆寄存器一样。

因此,段寄存器现在有点像你的附录。 它们具有退化目的。 为了我们的集体损失。

那些不了解历史的人注定不会重演; 他们注定要做一些笨蛋。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值