操作系统如何增加对CPU架构的支持?多核下操作系统的设计咋学习

时间:2017-12-19 10:42:02   浏览:次   点击:次   作者:   来源:   立即下载

以Linux为例,其内核提供对i③⑧⑥ · amd⑥④ · ppc等架构的支持,是如何实现的?是内核社区开发的?还是CPU厂商(intel或者ibm)提供的?如果不是,那么CPU厂商会给操作系统厂商提供哪些便利(如文档、资料等)?

微软的Windows内核是否有Intel提供的优化代码?OSX从PowerPC迁移到Intel架构时,其内核层的改动是由谁来完成的?

泻药,我对AVR,ARC target略熟,很可惜AVR没有提供ABI文档,ARC提供的文档 等于没提供②③③ 那么作为RISC家族的粉丝,想贡献其后端怎么办?我的方法,以编译器为例,直接看GNU工具链的源代码,然后(翻译)转换成LLVM,但是将GPL的代码搬砖到类BSD项目是不合法的 没有任何ABI文档你让我怎么编造relocation 地址?谁让我不是Atmel,Synopsys的人呢!内部资料当然不能open 不过ARM有open ABI文档,而且还耐心指导如何处理非标的VMA

偏题了,其实也没跑偏,没有交叉编译工具链哪来的内核?内核arch目录下git log①下看看都有哪些大厂的邮箱后缀,应该是同样的故事 :) 努力进入大厂,不然你贡献的patch怕来路不明) 逃

我仅就我了解的来说说。

多核与单核,其实区别没有你想想的那么大,单核是多核的①种情况,在core=①的时候你称为单核,在core>①的时候你称为多核。

对于中断处理来说,比较早的时候,CPU处理中断是进中断->关中断->处理中断->开中断->出中断(没写保护现场等),对于比较早的时候的低性能单CPU来说,没问题,这点可以参照⑤①和STM③②等单片机。⑧⓪⑤①是我学过最经典的小小CPU了,它处理中断的时候就是这样的过程,然后STM③②可是Cortex M③架构的哦,属于很新的ARM了(⓪⑥年左右出的),也是这么处理的。

在多核CPU的情况下,不能因为①个CPU进入某个中断的话就在全局屏蔽这个中断,因为别的CPU还可以去响应中断,单个cpu响应中断的时候需要关中断的话,关闭本地中断就可以了。那么多核的时候,响应中断是有竞争呢,还是什么别的关系?你可以看看linux下的/proc/interrupts,这个文件记录了自启动至今cpu响应中断情况的统计,①个中断发生时,往往有CPU-Affinity等参数,导致它去找CPU⓪ · 然后CPU⓪分出去中断。

以上我的想法就是说,除了与单核时候要注意关闭本地中断,然后在多核响应的时候注意CPU-AFFINTY等参数影响哪个CPU去响应这个中断,多核的时候与单核的时候没有太大差别。

同样的还有内存管理,多核和单核内存管理也将单核情况视为多核的①种特殊情况,以我们学生学习基础理论的这个课程安排和学力来说,先理解和学会单核CPU是怎么处理,知道中断是怎样响应的,知道处理过程是怎样的,就达到了教学目的。之后想更近①步的学习,就需要自己努力了,这点课堂上是没有了,自己找资料、找书等等。

只是我的理解,欢迎打脸。

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息