百科问答小站 logo
百科问答小站 font logo



x86 global页在新的page directory里不存在会发生什么? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

一直没明白题主的问题,我原来的回答可能对不上题目。

题主问的是TLB的状态,不是内存的状态,如果一个Page-Table的P位是0,G位是1,那么切换的时候应该是被刷掉的:

The processor is always free to invalidate additional entries in the TLBs and paging-structure caches.

---------------------------------

原回答:

1. 页内容没什么变化,load cr3不会改变内存里的内容;

2. 如果这个内存没有被访问,那么代码还会继续工作;

3. 如果这个页正好是当前的代码页,正在被执行,并且没有任务切换(包括中断),那么可能会继续正常执行,直到运行到当前页之外,因为页的物理地址可能是被缓存的,只要你的代码没跳出当前页,MMU可能会缓存当前的物理地址。不同CPU可能不一样,不一定真的跑到页表边界才出问题。

4. 如果这个页是代码页并且正在被执行,一旦发生中断或者任务切换,再就没办法正常切回来了,有时候,访问某些硬件寄存器也会导致一系列的动作发生(比如某些虚拟化指令等等),无法正常执行。

4. 如果是stack segment之类的,只要你执行一下push pop操作,马上就crash;

5. 普通的数据段访问,暂时不好确定,结果应该也是crash。




  

相关话题

  都说寄存器比内存快,但是为什么有些时候运行显示的是寄存器更慢? 
  为什么把内核镜像放在u盘里,电脑(BIOS)加载失败? 
  操作系统中到底是谁分配的资源? 
  为什么英特尔x86等多数中央处理器不支持源操作数和目标操作数同时为内存的指令? 
  为什么汇编语言不能越过操作系统操控硬件? 
  为什么修改esp寄存器会触发异常? 
  中断为什么一定要在内核空间处理,如果把中断放到用户态处理可能会产生什么问题? 
  如果arm或者其他架构严重到了威胁x86架构的地位,intel和amd会将其开源并开放授权吗? 
  有没有将c语言源代码转换成汇编语言的软件?有没有将python语言源代码转换成汇编语言的软件? 
  386处理器的64TB的虚拟寻址空间,对我们的使用,有什么现实意义吗? 

前一个讨论
请问这是四核还是双核四线程?
下一个讨论
嵌入式硬实时OS方面,国产技术能力怎么样?





© 2025-01-18 - tinynew.org. All Rights Reserved.
© 2025-01-18 - tinynew.org. 保留所有权利