gpt4 book ai didi

c - ARM Cortex A9 双核(Linux 或 VxWorks)上的多线程

转载 作者:行者123 更新时间:2023-11-30 16:44:17 25 4
gpt4 key购买 nike

我正在研究双核(特别是在嵌入式系统中)如何发挥作用。我想比较两个目标:一个具有 ARM Cortex-A9 (925 MHz) 双核,另一个具有 ARM Cortex-A8 单核。我有一些想法(请参见下文),但我不确定,我会使用双核功能:

   My questions are: 

1-如何在不同的内核上执行多个线程(没有OpenMP,因为它在我的目标上不起作用,并且与VxWorks不兼容)

2-内核如何在具有共享内存的双核上执行代码:如何为全局变量和静态变量分配堆栈、堆、内存?3-是否可以添加 cflags以指示 CPU 核心数量,以便我们能够使用双核功能。4-内核如何处理双核上的程序执行(具有大量线程)。

  Some tests to compare two architecture regarding OS and Dual core / single core  

Dual core VS single core:

创建三个线程来执行一些例程并依赖于彼此的结果(如矩阵乘法)。然后测量一次双核和单核所花费的时间(没有openMP怎么可能)

   Ping pong:

一个进程向另一个进程发送消息。两个进程重复地来回传递消息。我们应该调查每种架构所花费的时间如何随着消息大小的变化而变化。

   One to all: 

等级为 0 的进程向程序中的所有其他进程发送相同的消息,然后从所有其他进程接收相同长度的消息。所花费的时间如何随消息大小和进程数量变化?

最佳答案

简短的回答。仅限 Linux:

<小时/>

how to execute several threads on different cores

使用多个进程,或在单个进程中使用 pthread。

<小时/>

How the kernel execute code on dual core with shared memory: how it allocate stack, heap, memory for global variable and static ones?

在Linux中,它们都属于进程。 (不过,您可以使用 __thread 关键字声明线程局部变量。)

换句话说,如果一个线程分配了一些内存,那么该内存立即对同一进程中的所有其他线程可见。即使该线程退出,内存也不会发生任何变化。其他线程稍后释放内存是完全正常的。

每个线程都有自己的堆栈,默认情况下该堆栈相当大。 (对于 pthreads,使用指定较小堆栈大小的 pthread_attr_t 可以轻松控制这一点。)

一般来说,在内核端,单线程和多线程进程之间的内存处理或程序执行没有区别。 (当然,用户空间代码需要正确使用内存和线程;内核不会试图阻止愚蠢的用户空间代码向自己开枪,根本。)

<小时/>

Is it possible to add C-flags in order to indicate number of CPU cores so we will be able to use dual core features.

是的,例如通过检查 /proc/cpuinfo 伪文件。

但是,将此类详细信息留给系统管理员更为常见。 Apache 等服务允许管理员在配置文件或命令行中配置号码。甚至 make 也支持 -j JOBS 参数,允许多个编译任务并行运行。

我非常热情地建议您忘记任何检测魔法,而是让用户指定使用的线程数。 (如果您坚持,您可以默认使用检测魔法,但前提是用户/管理员没有给您任何有关要使用的线程数的提示。)

还可以为每个线程设置 CPU 掩码,指定线程可以运行的核心集。除了在基准测试中这样做更多的是为了可重复性,或者在旨在占用机器上所有资源的专用进程中,这种情况非常罕见。

<小时/>

How the kernel handle program execution (with a lot of threads) on dual core.

与处理大量并发进程的方式完全相同。

有一些控制(控制组内容、CPU 掩码),也许还有资源核算,在同一进程中的单独进程和线程之间的处理方式不同,但一般而言,单个进程中的单独线程的执行方式与单独的进程是。

关于c - ARM Cortex A9 双核(Linux 或 VxWorks)上的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com