小编lis*_*reg的帖子

完全公平调度程序(CFS):长时间运行进程的vruntime

如果自创建流程以来计算了vruntime,那么如果这个流程与新创建的处理器绑定流程竞争,那么这个流程怎么会得到处理器呢?

正如我所读到的那样,规则很简单:选择最左边的叶子,这是一个运行时最低的进程.

谢谢!

linux scheduler linux-kernel cfs

7
推荐指数
1
解决办法
1530
查看次数

在 ARM 上加载和存储重新排序

我不是 ARM 专家,但至少在某些 ARM 架构上不会对这些存储和加载进行重新排序吗?

  atomic<int> atomic_var; 
  int nonAtomic_var;
  int nonAtomic_var2;

  void foo()
  {       
          atomic_var.store(111, memory_order_relaxed);
          atomic_var.store(222, memory_order_relaxed);
  }

  void bar()
  {       
          nonAtomic_var = atomic_var.load(memory_order_relaxed);
          nonAtomic_var2 = atomic_var.load(memory_order_relaxed);
  }
Run Code Online (Sandbox Code Playgroud)

我没有成功地让编译器在它们之间放置内存屏障。

我试过如下(在 x64 上):

$ arm-linux-gnueabi-g++ -mcpu=cortex-a9 -std=c++11 -S -O1 test.cpp
Run Code Online (Sandbox Code Playgroud)

我有:

_Z3foov:
          .fnstart
  .LFB331:
          @ args = 0, pretend = 0, frame = 0
          @ frame_needed = 0, uses_anonymous_args = 0
          @ link register save eliminated.
          movw    r3, #:lower16:.LANCHOR0
          movt    r3, #:upper16:.LANCHOR0
          mov     r2, #111
          str     r2, [r3]
          mov     r2, …
Run Code Online (Sandbox Code Playgroud)

c++ arm memory-model memory-barriers stdatomic

5
推荐指数
1
解决办法
843
查看次数

--unresolved-symbols=ignore-in-shared-libs 和 --allow-shlib-undefined 标志有什么区别

以下链接器 (ld) 标志之间有什么区别:

--unresolved-symbols=ignore-in-shared-libs

--allow-shlib-未定义

?

作为跟进,此命名法中未解析的符号和未定义的符号之间有什么区别?

linker elf ld

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

在Git rebase期间使用什么算法?

我找不到任何关于Git如何在内部制作rebase的解释.虽然,我没有考虑消息来源.:)

最常见的答案是在基础提交上应用补丁但不是真的.无法将补丁正确应用于(可能)完全更改的文件.还提到了三向合并,但没有确切地说实际上合并了什么.

谢谢

git

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

在 Vulkan 的 Acquire-Present 场景中使用信号量“同步”渲染通道布局转换

所以有这个官方示例https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples#combined-graphicspresent-queue

\n\n
/* Only need a dependency coming in to ensure that the first\n   layout transition happens at the right time.\n   Second external dependency is implied by having a different\n   finalLayout and subpass layout. */\nVkSubpassDependency dependency = {\n    .srcSubpass = VK_SUBPASS_EXTERNAL,\n    .dstSubpass = 0,\n    // .srcStageMask needs to be a part of pWaitDstStageMask in the WSI semaphore.\n    .srcStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,\n    .dstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,\n    .srcAccessMask = 0,\n    .dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,\n    .dependencyFlags = 0};\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人可以向我提供规范中的相关部分,这些部分结合了保证(构成推理链),即在发出队列的等待信号量(获取的图像)信号之前,这种依赖关系布局转换才会发生?

\n\n

特别是我找不到如何解释这种“同一阶段对其自身的依赖性”。

\n\n

要明确的是。我发现了很多与此相关的地方。我已经阅读文档一个多月了,但我正在努力寻找它们的连贯性。 …

synchronization memory-model vulkan

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

为什么AT&T jmp * bar用SIB字节组装成机器代码?指令中没有使用寄存器

我在x86机器上有以下绝对间接跳转指令:

ff 24 25 30 10 60 00

产生于:

jmp *bar

但是我在解码它的第二个和第三个字节时遇到了麻烦。

第二个应该是Mod R / M字段。因此它翻译为:

00 100 100

含义:

00 -没有位移的内存(但是它具有恒定的地址,这不是“位移”吗?)

100(12月4日)-扩展操作。代码(FF / 4 => JMP r / m32)

100-?? SIB?但是该指令中没有使用寄存器


PS一些上下文:

Breakpoint 4, test () at test.s:13
13              jmp     *bar
(gdb) disassemble /r
Dump of assembler code for function test:
   0x000000000040051b <+0>:     c7 04 25 30 10 60 00 2f 05 40 00        movl   $0x40052f,0x601030
=> 0x0000000000400526 <+11>:    ff 24 25 30 10 60 00    jmpq …
Run Code Online (Sandbox Code Playgroud)

assembly x86-64 gnu-assembler att

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