windows – 用户和内核之间的线程fs段寄存器切换
fs段寄存器如何指向TEB和KPCR.这些数据结构是保存在线程用户和内核堆栈上的吗?因此,当线程上下文切换从用户到内核发生时,fs段reg包含一个指针,TEB被保存到线程用户堆栈上,然后指向KPCR的内核fs段寄存器被加载回fs段注册?这是fs段寄存器指向TEB和KPCR的方式吗? FS寄存器在LDT或GDT(本地/全局段描述符表)中具有与其相关联的段基地址. FS几乎是描述符表的索引,它选择表中定义的段之一. 当您通过FS访问内存时(使用指令中的FS段覆盖前缀),您访问的内存的虚拟地址等于指令中的地址加上段基址. 该段基址必须与特定于线程的控制数据结构的位置一致.因此,当使用其特定的控制数据结构创建线程时,将基数设置为指向该数据. 对于同一进程中的不同线程,这些位置是不同的,因为它们都共享内存,不应该跨越彼此的结构.上下文切换只是更新FS以指向不同的段或更新描述符表中的段的基地址,然后重新加载FS,以便CPU观察到更改. 当一个线程从用户模式转换到内核模式时,FS及其指向的内容不受内核POV的限制,我希望内核使用指向内核端特定于线程的数据结构的值重新加载FS.在回来的路上,应该恢复用户模式FS.事实上,事情可能会有点复杂,但这应该会给你一个想法. 在64位模式下,您甚至可以使用SWAPGS指令快速交换GS寄存器的内容,在32位模式下扮演类似于FS的角色. (编辑:十堰站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 无法找到MSVCP120D.DLL或0x00007启动错误的解决方法
- windows-server-2008 – IIS可以从GPU核心创建线程吗?
- Windows Vista 64位的命令行subversion客户端
- winapi – 来自Win32应用程序的x64图像上的OpenProcess
- windows-runtime – 将Action绑定到XAML中UserControl的属性
- 在Windows上使用clang编译c 11程序时出错
- Microsoft Windows远程桌面协议中间人攻击漏洞(CVE-2005-17
- windows-services – 首先是TopShelf,Ninject和EF代码的Nin
- windows-ce – 确定Windows CE可执行文件使用的16位CRC /校
- Windows上Jenkins的git插件不使用带子模块的凭据
- windows – 是否可以以编程方式找出通过网络锁定
- 类共享警告不允许我使用visualVM在本地(Windows)
- windows-runtime – 将Action绑定到XAML中UserCo
- windows-7 – 无法完成操作,因为文件夹或其中的文
- Windows:忘记本地账户开机密码,但记得住PIN码
- 安装程序 – NSIS与Windows游戏资源管理器集成
- pyshark无法在Windows 7(python)上捕获数据包
- Windows Filtering Platform用户模式或内核模式?
- windows-phone-7 – 多长时间调用SpriteBatch.Be
- Windows Containers 大冒险: 优化计划(Dockerfil