首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多核操作系统中的操作系统堆和操作系统堆栈

多核操作系统中的操作系统堆和操作系统堆栈
EN

Stack Overflow用户
提问于 2014-04-14 13:14:39
回答 2查看 219关注 0票数 0

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

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

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

c)公共数据结构应该放在bss部分

d)对于每个cpu变量,将在lds文件中设置每个核心的_per_cpu_area和一个寄存器,例如r0将始终指向每个cpu段。

e) bss部分中需要帮助的跨核心锁定

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

EN

回答 2

Stack Overflow用户

发布于 2014-04-14 15:12:34

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-04-14 21:42:18

假设一个抢占式多任务处理机:

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

内核没有堆栈,它们有堆栈指针,这些指针在线程上下文变化时交换。线程有堆栈。

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

内核没有堆。进程有堆。

c)公共数据结构应该放在bss部分

可能,取决于是否为只读。

d)对于每个cpu变量,将在lds文件中设置每个内核的_per_cpu_area和一个寄存器,例如r0将始终指向每个cpu段。

CPU通常没有变量,除非你指的是硬件寄存器,看起来你没有。

e)跨核心的锁定将在bss部分中得到帮助

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

你需要Google/阅读更多关于操作系统操作的信息--你对一些事情相当困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23052426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档