问题标签 [context-switch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Linux 中的上下文切换内核进程
考虑过程 keventd。它在内核模式下度过了所有生命周期。现在,据我所知,Linux 在进程从内核模式切换到用户模式时检查上下文切换是否到期,据我所知,keventd 永远不会从内核模式切换到用户模式,那么,如何Linux内核会知道何时关闭它吗?
operating-system - 用户进程如何在不经过上下文切换的情况下执行系统调用?
当用户进程执行系统调用时,会调用内核进程。现在这不会导致上下文切换吗?由于内核进程不同于用户进程。或者我说内核例程(由系统调用调用)和用户进程属于同一个进程是错误的吗?
process - 系统调用和上下文切换
我很抱歉在已经问过这个问题时问这个问题,但我无法从他们那里得到澄清。所以我问以下相关问题来了解系统调用(模式切换)和上下文切换之间的区别
为什么说系统调用不需要上下文切换,而调用过程的上下文必须保存然后重新加载。是不是因为根据上下文切换的定义,必须切换到另一个进程。
当进行系统调用时,内核在“用户上下文”中执行是什么意思。
系统调用不需要上下文切换,但它取决于操作系统,并且在系统调用期间可能会发生上下文切换。我想知道在系统调用时发生上下文切换的情况下会发生什么。有什么例子吗?
linux - 编写系统调用来计算进程的上下文切换
我必须进行系统调用来计算进程的自愿和非自愿上下文切换。我已经知道向 linux 内核添加新系统调用的步骤,但我不知道应该从哪里开始使用上下文切换功能。任何的想法?
calling-convention - 调用约定会影响上下文切换吗?
我的调用约定用于进行上下文切换是否重要。如在 AMD64 中,前 4 个参数通过寄存器或其他方式传递。
上下文切换系统是否需要担心这些细节?
operating-system - 从中断返回到哪里
我已经阅读(并研究过)有关中断处理的信息。
我一直无法理解的是,我们如何知道从中断处理程序返回到(PC / IP)的位置。
据我了解:
- 中断是由设备引起的(比如键盘)
- 相关的处理程序被调用 - 在正在运行的进程下。也就是说,不执行到 OS 的上下文切换。
- 中断处理程序完成,并将控制权交还给正在运行的应用程序。
上面描述的过程,这是我对中断处理的理解,发生在当前运行进程的上下文中。所以它类似于方法调用,而不是上下文切换。
然而,由于我们实际上并没有调用中断处理程序,所以我们没有机会将当前 IP 推入堆栈。
那么我们如何知道从中断中跳回的位置。我很困惑。
将不胜感激任何解释,包括简单地指向一个好的 pdf/ppt 专门解决这个问题的单行词。
[我通常指的是Linux和C代码下的上述过程-但欢迎所有好的答案]
semaphore - 等待/信号(信号量)实现伪代码如何“工作”?
如果block(thread)
停止 athread
执行,它如何、在何处以及何时返回?
哪个线程在 ? 之后启用中断Wait()
?在另一个线程调用之前thread
,被调用的block()
不应该返回wakeup(thread)
!
- 但是其他线程如何运行?
- 线程切换到底发生在哪里?
operating-system - 存储和检索过程控制块
当一个进程在执行时,PCB的内容(在内核内存空间?)被加载到CPU寄存器,状态寄存器,内核堆栈指针,用户堆栈指针等。
当上下文切换到另一个进程时,当前的“上下文”被存储回 PCB 中,并切换到新的 PCB。
现在当内核想把这块PCB带回“上下文”时,它如何找到现在在内存中的这块PCB?哪些信息有助于内核找到内存中的 PCB?
gcc - 使用 arm 内联汇编的上下文切换
我有另一个关于上下文切换的内联汇编指令的问题。此代码可能有效,但我不确定 100%,所以我将此代码提交给 stackoverflow 的专家;-)
我正在为 arm7TDMI 使用 gcc(无优化)进行编译。在某些时候,代码必须进行上下文切换。
当我检查编译的代码时,我得到了这个结果:
在我之前编写此代码的人写道“我们必须保存 lr”,但在编译的代码中,我没有看到任何 lr 被保存的痕迹。
我认为代码可能错误的原因是程序在进入重置异常之前运行了一段时间,并且代码执行的最后一件事是上下文切换......
memory-management - 为新进程查找页表和页目录(上下文切换后)
当发生进程切换,必须使用新进程的页表和页目录时,内核从哪里得知新进程的页目录位置?
我知道新进程的页面目录存储在物理内存中。但是内核怎么知道在哪里找到它呢?