context-switch相关内容

多核 CPU、多线程和上下文切换?

假设我们有一个具有 20 个内核的 CPU 和一个具有 20 个 CPU 密集型线程且彼此独立的进程:每个 CPU 内核一个线程.我试图弄清楚在这种情况下是否发生上下文切换.我相信这是因为操作系统中的系统进程也需要 CPU 时间. 我知道有不同的 CPU 架构,有些答案可能会有所不同,但请您解释一下: 上下文切换是如何发生的,例如在 Linux 或 Windows 以及一些已知的 CP ..
发布时间:2022-01-12 12:35:59 其他开发

linux 内核中的 schedule()+switch_to() 函数实际上是如何工作的?

我试图了解 linux 内核中的调度过程实际上是如何工作的.我的问题不是关于调度算法.它是关于函数 schedule() 和 switch_to() 是如何工作的. 我会试着解释一下.我看到了: 当进程用完时间片时,标志 need_resched 由 scheduler_tick() 设置.内核检查标志,看到它已设置,并调用 schedule()(与问题 1 相关)切换到新进程.这个标 ..
发布时间:2022-01-04 22:37:07 其他开发

双向链表创建期间的上下文切换

莫里斯·巴赫 (Maurice Bach) 的《Unix 操作系统的设计》中有一个例子这提到了双向链表如何可能由于以下原因被破坏创建期间的上下文切换.(他继续说,通过在代码的关键区域提高处理器级别可以防止这种情况发生,但我无法理解他试图首先显示问题的推理)他包含的示例代码如下如下: 结构队列{} *bp, *bp1;bp1 ->forp = bp ->为;bp1 ->备份 = bp;bp ->f ..
发布时间:2022-01-01 18:33:09 其他开发

使用 Zend Action Helper ContextSwitch 创建自定义 JSON 响应对象

我通常会在响应正文中附加一个编码的 json 对象,但是现在我遇到了需要使用 ContextSwitch 操作助手的情况. 我有一个 Zend_Form 需要三个不同的响应上下文: html - 将表单呈现为普通的 html在布局内. html-partial - 呈现的 ajax“get"请求只是表单为 html. json - 返回的 ajax“post"请求任何形式验证错误消 ..
发布时间:2021-12-29 15:41:32 PHP

线程上下文切换 Vs.进程上下文切换

谁能告诉我在这两种情况下到底做了什么?他们每个人的主要成本是多少? 解决方案 线程切换和进程切换的主要区别在于,线程切换时虚拟内存空间保持不变,进程切换时不转变.这两种类型都涉及将控制权移交给操作系统内核以执行上下文切换.切入和切出 OS 内核的过程以及切出寄存器的成本是执行上下文切换的最大固定成本. 一个更模糊的代价是上下文切换与处理器缓存机制混乱.基本上,当您进行上下文切换时,处 ..
发布时间:2021-12-06 11:57:15 其他开发

处理器处理中断的速度有多快

我正在研究中断.所以大多数架构都是中断驱动的,如果一切都是中断驱动的,处理器处理所有这些的速度有多快.例如,当按下键盘上的某个键时,它会创建一个中断,要求内核寻找新字符的缓冲区,在这种情况下,处理器可以提供多快的服务,并且在放置中断时,处理器需要切换到内核空间,这在上下文切换方面成本很高.所以我假设,即使在所有这些之后,如果处理器具有良好的性能,那么我只能假设两次击键之间的时间就计算机速度而言是很 ..

我的线程可以帮助OS决定何时进行上下文切换吗?

我正在使用C ++在Linux上开发一个线程应用程序,该应用程序试图做到实时,对心跳进行操作或尽可能接近它. 在实践中,我发现操作系统正在换出线程,并在关闭线程时导致长达十分之一秒的延迟,从而导致心跳不正常. 我的线程是否可以向操作系统提示现在是上下文切换的好时机?我可以在心跳结束后立即拨打此电话,从而将因上下文切换不及时而导致的延迟降到最低. 解决方案 很难说出您所遇到的主要 ..
发布时间:2021-05-29 22:40:32 服务器开发

硬件与软件在上下文切换中的作用

我已经阅读了几本流行的OS教科书中有关上下文切换期间发生的情况的描述.尽管以下引用的内容( Tanenbaum )最接近.我有几个疑问.每个选项均以粗体突出显示,并在下面进行详细说明. 假定发生磁盘中断时用户进程3正在运行. 用户进程3的程序计数器,程序状态字以及通常一个或多个寄存器被中断硬件压入(当前)堆栈. 然后计算机跳至该地址在中断向量中指定.那就是所有硬件所做的.从这里开始,取决于软 ..
发布时间:2021-05-13 20:25:43 其他开发

从中断返回的地方

我已经阅读(并研究了)有关中断处理的信息. 我总是不明白的是,我们如何知道从中断处理程序返回到(PC/IP)的位置. 据我了解: 中断是由设备(例如键盘)引起的 相关的处理程序称为-在运行过程中.即,不执行到OS的上下文切换. 中断处理程序完成,并将控制权传递回正在运行的应用程序. 上面描述的过程是我对中断处理的理解,发生在当前正在运行的过程的上下文中.因此,它类似于方法调用, ..

Process.Start()不在同一用户下生成新进程

我总是给人一种印象,当您以(domain 的身份运行进程时,使用 Process.Start(),它将使用相同的凭据- mydomain\myuser 来启动此新过程。 我遇到的问题是我的 Process.Start()调用似乎正在SYSTEM帐户下创建一个进程,这导致了我的权限问题在已启动的进程中(由于其工作原因,该进程必须在管理员帐户下运行)。如果它改变了-我正在Windows安装程序中 ..
发布时间:2020-10-11 03:52:33 C#/.NET

Win32:代码块的原子执行

我有两个系统调用GetSystemTime()和GetThreadTimes(),它们需要计算给定Win32线程的CPU利用率. 为了准确起见,我需要确保GetSystemTime()和GetThreadTimes()都是原子执行的;也就是说,在对GetSystemTime()和&的调用之间不应存在上下文切换. GetThreadTimes(). 原因是我偶尔会获得超过100%的百分比 ..
发布时间:2020-09-13 19:45:33 其他开发

最简单的工具来测量Linux中C程序缓存的命中率/未命中率和cpu时间?

我正在用C编写一个小程序,我想衡量它的性能. 我想看看它在处理器中运行了多少时间,以及它造成了多少次高速缓存命中+未命中.关于上下文切换和内存使用的信息也将很高兴. 程序执行不到一秒钟. 我喜欢/proc/[pid]/stat的信息,但是我不知道程序死/被杀死后如何查看. 有什么想法吗? 编辑:我认为Valgrind会增加很多开销.这就是为什么我想要一个始终可用的简单 ..

当线程可能切换内核时,如何正确使用TSX-NI(HLE和RTM)?

英特尔的事务同步扩展(TSX-NI)似乎是基于每个CPU的。 这同时适用于 _InterlockedXxx_HLE {Acquire,Release} 硬件锁定清除功能(HLE),以及 _xbegin / _xend / etc。受限事务存储(RTM)功能。 在多核系统上使用这些功能的“正确”方法是什么? 鉴于其正确性保证,我认为我只需要担心此处的性能。 所以,我应该如何构 ..
发布时间:2020-06-04 19:12:03 其他开发

上下文切换到安全模式(arm信任区)的成本是多少

我试图了解在arm的可信(安全)模式和非安全模式之间来回切换的成本. 从不安全的世界过渡到安全的世界究竟需要发生什么?我知道需要设置ns位(基于某些特殊指令?),页表需要刷新和更新(?),处理器缓存要刷新和更新.还有什么需要发生的吗? 处理器缓存:它们是分段且共享的缓存,还是每种模式都使用了整个缓存?这决定了转换的成本. RAM:必须对它进行“分区",并且两种模式都必须使用.因此 ..
发布时间:2020-05-21 19:07:37 其他开发

从内核模式返回到用户模式

我对Unix内核中的模式切换的理解有些困惑.我在这里提供我的理解,并打开以进行讨论/更正. 从用户模式转换到内核模式时,处理器在每个进程用户堆栈和每个进程内核堆栈之间进行切换.然后,每个进程用户堆栈段选择器和堆栈指针存储在内核堆栈中,然后eip指令指针(用户模式下的返回地址)和其他硬件寄存器被压入内核堆栈 当内核必须返回用户模式时,trapret代码会将存储在内核堆栈中的所有值弹出回到 ..

存储和检索过程控制块

在执行进程时,将 PCB 的内容(在内核内存空间中?)加载到CPU寄存器以及状态寄存器,内核堆栈指针,用户堆栈指针等. 当上下文切换到另一个过程时,当前的“上下文"被存储回PCB中,并切换到新的PCB. 现在,当内核希望将该PCB重新带回“上下文"时,它如何找到现在在内存中的PCB?哪些信息可以帮助内核找到内存中的PCB? 解决方案 查找处理器可用性是计划中的工作,然后仅发生上 ..

系统调用开销

我刚刚开始研究系统调用. 我想知道在进行系统调用时导致开销的原因. 例如, 如果我们考虑使用getpid(),则在对getpid()进行系统调用时,我的猜测是,如果控件当前在子进程中,则必须进行上下文切换以进入父进程以获取pid.这会增加开销吗? 另外,当调用getpid()时,将有一些元数据在用户空间边界上转移并进入和退出内核,那么在用户空间和内核之间的不断切换也会引起一些开销吗? ..