标签: context-switch

存储和检索过程控制块

当一个进程执行时,PCB的内容(在内核内存空间?)被加载到CPU寄存器,状态寄存器,内核堆栈指针,用户堆栈指针等.

当存在上下文切换到另一个进程时,当前的"上下文"被存储回PCB并且切换到新PCB.

现在,当内核想要将这块PCB带回"上下文"时,它如何找到这块现在在内存中的PCB呢?什么信息可以帮助内核找到内存中的PCB?

operating-system scheduling context-switch process-control

4
推荐指数
1
解决办法
7500
查看次数

什么时候CPU的舍入模式可以改变?

在一些文章中,他们建议使用fistp指令以快速方式转换float-> integer.这取决于CPU的当前舍入模式,因此您必须进行设置.

但是这个舍入模式是否可以在程序运行期间被其他程序更改?通过操作系统?

更糟糕的是,这是一种可能的情况(伪代码)吗?

set_rounding_mode(ROUND_TRUNCATE);
/* process gets switched out and other process sets the rounding mode to round */
int x = round_with_fistp(0.6);
printf("%d\n", x); // prints 1
Run Code Online (Sandbox Code Playgroud)

c floating-point x86 context-switch

4
推荐指数
1
解决办法
402
查看次数

GCC:在每条指令后强制执行函数调用(用于多线程测试)?

我正在尝试在我的程序中测试一个相当线程敏感的区域,并且想知道是否有一种方法可以强制gcc在每次发出的指令后插入一个调用,以便我可以手动屈服于另一个线程?

谢谢,罗伯特

c multithreading gcc synchronization context-switch

3
推荐指数
1
解决办法
276
查看次数

来自多个进程的线程是否实际同时运行

在具有2个物理x86/amd64处理器(P0 + P1)的Windows操作系统中,运行2个进程(A + B),每个进程有两个线程(T0 + T1),是否可能(甚至常见)看到以下内容:

P0:A:T0 在同一时间运行 P1:B:T0

然后,1(或是2?)上下文切换(es?)

P0:B:T1 在同一时间运行 P1:A:T1

简而言之,我想知道 - 在多处理器机器上 - 操作系统是否可以随时从任何进程调度任何线程,无论其他进程的其他线程是否已在运行.

编辑: 为了澄清愚蠢的例子,假设进程A的线程A:T0与处理器P0(和A:T1到P1)具有亲和性,而进程B的线程B:T0与处理器P1具有亲和性(和B:T1到P0) ).这些处理器是核心还是套接字可能无关紧要.

是否存在流程上下文切换的一流概念?Perfmon在Thread对象下显示上下文切换,但在Process对象下没有任何内容.

windows multithreading process context-switch

3
推荐指数
1
解决办法
1211
查看次数

是否必须有一个模式开关才能有资格作为上下文切换?

-是否有是一个模式开关即从user modekernel mode为了被称为一个动作context switch

language-agnostic operating-system process context-switch

3
推荐指数
2
解决办法
4067
查看次数

为什么sys时间为0?

当我这样做时$(time sleep 1),我得到了:

real    0m1.001s
user    0m0.000s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

我不确定为什么sys时间是0,所以nanosleep从用户空间调用?

此外,实时是否等于上下文切换时间+实际睡眠时间(1s)?

linux time kernel sleep context-switch

3
推荐指数
1
解决办法
128
查看次数

CPU在X86上从内核模式切换到用户模式:何时以及如何?

CPU何时以及如何从内核模式切换到用户模式在X86上:它到底是做什么用的?它是如何实现这种转变的?

context-switch linux-kernel

3
推荐指数
1
解决办法
1241
查看次数

上下文切换时间 - RTOS和处理器的角色

RTOS是否起主要作用或处理器在确定上下文切换时间方面起主要作用?在确定上下文切换时间时,这两个主要参与者之间的份额百分比是多少.

任何人都可以告诉uC/OS-II RTOS吗?

embedded operating-system rtos context-switch multitasking

2
推荐指数
1
解决办法
2436
查看次数

为什么在子例程调用中没有完整的上下文保存?

在子例程调用中,我们保存了PC的内容,以便重新启动我们的调用例程。但是,如果被调用的子例程更改了通用寄存器的值,会发生什么?如果必须访问存储在寄存器中的旧值,它不会对调用子例程造成任何问题吗?

assembly call cpu-registers context-switch subroutine

2
推荐指数
1
解决办法
321
查看次数

上下文切换 - makecontext和swapcontext在这里工作(OSX)

我对上下文切换很开心.我已将示例代码复制到文件 http://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html

我为OSX定义了宏_XOPEN_SOURCE.

#define _XOPEN_SOURCE 
#include <stdio.h>
#include <ucontext.h>


static ucontext_t ctx[3];


static void
f1 (void)
{
    puts("start f1");
    swapcontext(&ctx[1], &ctx[2]);
    puts("finish f1");
}


static void
f2 (void)
{
    puts("start f2");
    swapcontext(&ctx[2], &ctx[1]);
    puts("finish f2");
}


int
main (void)
{
    char st1[8192];
    char st2[8192];


    getcontext(&ctx[1]);
    ctx[1].uc_stack.ss_sp = st1;
    ctx[1].uc_stack.ss_size = sizeof st1;
    ctx[1].uc_link = &ctx[0];
    makecontext(&ctx[1], f1, 0);


    getcontext(&ctx[2]);
    ctx[2].uc_stack.ss_sp = st2;
    ctx[2].uc_stack.ss_size = sizeof st2;
    ctx[2].uc_link = &ctx[1];
    makecontext(&ctx[2], f2, 0);


    swapcontext(&ctx[0], &ctx[2]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我建造它

gcc -o …

c macos context-switch ucontext

2
推荐指数
1
解决办法
1099
查看次数