Operating system 在上下文开关上刷新TLB

Operating system 在上下文开关上刷新TLB,operating-system,virtual-memory,context-switch,tlb,page-tables,Operating System,Virtual Memory,Context Switch,Tlb,Page Tables,这可能取决于操作系统,但一般来说,据我所知,当出现页面错误(所需页面不在主存中)时,操作系统会指示CPU从磁盘读取页面,我想知道,当磁盘I/O发生时,操作系统是否会调度到另一个进程?如果确实如此,则上下文开关上的TLB将完全刷新,对吗 或多或少,但页面错误并不总是意味着页面在磁盘上(它也可能根本不存在,可能是延迟分配页面,也可能是写入时的副本页面,可能存在但标记为不可读/不可写入,等等)。但如果是这样的话,它可能会安排另一个线程,至少因为磁盘IO大约需要永远的时间 所需的切换量取决于它切换到什么

这可能取决于操作系统,但一般来说,据我所知,当出现页面错误(所需页面不在主存中)时,操作系统会指示CPU从磁盘读取页面,我想知道,当磁盘I/O发生时,操作系统是否会调度到另一个进程?如果确实如此,则上下文开关上的TLB将完全刷新,对吗

或多或少,但页面错误并不总是意味着页面在磁盘上(它也可能根本不存在,可能是延迟分配页面,也可能是写入时的副本页面,可能存在但标记为不可读/不可写入,等等)。但如果是这样的话,它可能会安排另一个线程,至少因为磁盘IO大约需要永远的时间


所需的切换量取决于它切换到什么,在同一上下文中的线程之间切换并不意味着TLB刷新。如果需要TLB刷新,则可能不是完全刷新,因为全局页面(因此通常不会刷新内核页面的TLB条目)。还有PCID可以避免完全刷新(刷新可以限制为指定的进程上下文ID),但这是最近才出现的,而且使用起来很棘手,因为只有4096个不同的ID。

或多或少,但页面错误并不总是意味着页面在磁盘上(它也可能根本不存在,可能是一个延迟分配页,可能是一个写入页上的副本,可能存在但被标记为不可读/不可写,等等)。但如果是这样的话,它可能会安排另一个线程,至少因为磁盘IO大约需要永远的时间


所需的切换量取决于它切换到的内容,在同一上下文的线程之间切换并不意味着TLB刷新。如果需要TLB刷新,则可能不是完全刷新,因为全局页面(因此通常不会刷新内核页面的TLB条目)。还有PCID可避免完全刷新(刷新可以限制为指定的进程上下文ID),但这是最近才出现的,而且使用起来很棘手,因为只有4096个不同的ID。

我明白了。我之所以问这个问题,是因为在i/O完成后,处理器会更新页表和TLB,所以我想完全刷新是没有意义的。@peter它仍然可以工作,但会更慢,因为您d有很多额外的TLB未命中,但事实上不会出错。我明白了。我问这个问题的原因是,在i/O完成后,处理器将更新页表和TLB,所以完全刷新是没有意义的,我想。@peter它仍然可以工作,但速度会慢一些,因为你有很多EXTTLB未命中,但实际上不会出错。