多核OS中的OS堆和OS堆栈

时间:2014-04-14 05:14:39

标签: operating-system x86 arm multicore

我正在编写一个小的smp内核,现在我正在添加对第二个内核的支持。 以下是一些正在出现的问题

a)我相信每个核心都有自己的堆栈,并且在lds文件中定义

b)我相信每个核心都有自己的堆(对于malloc),并且在lds文件中定义

c)常见的数据结构应该放在bss部分

d)对于每个cpu变量,每个核心的_per_cpu_area要在lds文件中设置,寄存器说r0总是指向每个cpu部分

e)锁定核心以获得bss部分的帮助

这些假设是否正确? 请验证或提出任何问题

2 个答案:

答案 0 :(得分:1)

Functions have stacks,
Processes have heaps,
   where they all shared by those nasty threads...
Only zero initialized data goes into BSS,
   and you should see Linux's per_cpu...

答案 1 :(得分:0)

假设有一个先发制人的多任务:

  

a)我相信每个核心都有自己的堆栈,并且具有be   在lds文件中定义

核心没有堆栈,它们有堆栈指针,可以在线程上下文更改时进行交换。线程有堆栈。

  

b)我相信每个核心都有自己的堆(对于malloc)   在lds文件中定义

核心没有堆积。流程有很多。

  

c)常见的数据结构应该放在bss部分

也许,取决于只读。

  

d)对于每个cpu变量,要设置每个核心的_per_cpu_area   lds文件和寄存器说r0总是指向每个cpu部分

CPU通常没有变量,除非你的意思是硬件寄存器,而你似乎并不是这样。

  

e)锁定核心以获得bss部分的帮助

核心没有bss部分。应用程序有bss部分。如果多个线程可以访问它们,那么bss中的Vars可能需要锁定,无论是一个核心还是更多核心。

你需要谷歌/阅读有关操作系统操作的更多信息 - 你有些事情比较困惑。