免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1766 | 回复: 8
打印 上一主题 下一主题

求助:APIC 有什么好的参考资料吗?中文…… [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-06 11:00 |只看该作者 |倒序浏览
我是个学生,最近要做这样一个作业:
------------------------------------------------------------------------------------------------------------------------
具体内容和要求:
        通过实现多核之间的高效通信,从而在操作系统一级支持多核应用。在系统看来多核上的每个处理核和多个单核处理器没有太大分别,因为都是相对独立的处理单元。APIC提供IPI(inter processors interrupt)中断,可以实现多核之间的异步通信,从而可以使得原来只能在一个核上的程序可以将自己的部分工作转移到其他核进行处理。这个试验主要是想让大家了解底层通信的机制的原理。
要求:
        (1)设计实现一个自定义系统中断,系统中断不需要很繁琐,可以向/var/log/messages输出一些信息。
        (2)使用APIC提供的接口使用在上一步自己设计的系统中断
        (3)将上述工作制定成模块插入到linux系统中
---------------------------------------------------------------------------------------------------------------------
虽然我对Linux内核已经有了一些初步的了解,但是对于这个,我是丈二的和尚摸不头一样死活不开窍。这个APIC到底是什么呢?谁能告诉我应该从哪着手吗?推荐些参考资料也行,谢谢了!!!
cwtkang@gmail.com,这是我邮箱,望各位大侠帮帮我!!!!

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
2 [报告]
发表于 2009-05-06 12:36 |只看该作者
我对apic有一定的了解,主要是参考intel技术手册!

论坛徽章:
0
3 [报告]
发表于 2009-05-06 14:53 |只看该作者

回复 #2 liujunwei1234 的帖子

那大虾认为我要做完那个作业应该怎么着手呢?

论坛徽章:
0
4 [报告]
发表于 2009-05-07 14:38 |只看该作者
原帖由 cwtkang 于 2009-5-6 11:00 发表
我是个学生,最近要做这样一个作业:
------------------------------------------------------------------------------------------------------------------------
具体内容和要求:
        通过实现多核之间的 ...

我认为我自己写的是目前最好的中文参考资料
http://linux.chinaunix.net/bbs/v ... d=996409&extra=

论坛徽章:
0
5 [报告]
发表于 2009-05-21 15:20 |只看该作者

回复 #4 zx_wing 的帖子

我用加载内核模块的方法注册系统中断,但是我找到的资料都是Linux2.4下的,可我们的电脑现在都是Linux2.6的,根本就不能成功,哎~~~郁闷呀,大虾能给下指导么?

论坛徽章:
0
6 [报告]
发表于 2009-05-21 16:02 |只看该作者
原帖由 cwtkang 于 2009-5-21 15:20 发表
我用加载内核模块的方法注册系统中断,但是我找到的资料都是Linux2.4下的,可我们的电脑现在都是Linux2.6的,根本就不能成功,哎~~~郁闷呀,大虾能给下指导么?


>>我现在还是没有解决这个问题,现在急死了。我碰上的问题是:
>>1、我一直系统中断注册失败,好可怜
我不知道你是怎么注册的。从你的需求来看,不能用request_irq,因为你实际上是想注册一个用软件触发的假中断。

>>2、我不知道该怎么发一个IPI中断,现在知道的是在APIC.h中有一个函数能往那个Interrupt Command Register (ICR)寄存器写入东西就可以自动引发IPI中断了,但我不知道这个函数是什么,大虾能告诉我么?最后给个测试用例>>参考下,谢谢啦~~~
用IPI是个好办法。 你先把IPI的原理搞懂,然后跟着内核抄。
首先是设置IPI,抄下面这个函数:
apic_intr_init() -->set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
然后grep一下LOCAL_TIMER_VECTOR看看IPI是怎么发的,你会看到类似:
send_IPI_mask(mask, LOCAL_TIMER_VECTOR);
就可以找到内核关于IPI的接口在ipi.c中,再grep看别人怎么用这些函数的。
总的来说就是抄。
注意的是自己加一个IPI要选一个内核没使用的vector,可以参考irq_vectors.h,这里面定义了内核使用到的VECTOR

>>我实在是不行了,这个的东西看了半个多月了,说是很简单,可我根本就不知道该怎么办呀,郁闷了都……
>>请大虾救我,万分感激!!!

论坛徽章:
0
7 [报告]
发表于 2009-05-21 18:46 |只看该作者

回复 #6 zx_wing 的帖子

谢谢,我再看看,不过request_irq确实是硬件中断,那软件中断应该怎么注册呢?

论坛徽章:
0
8 [报告]
发表于 2009-05-21 19:06 |只看该作者
原帖由 cwtkang 于 2009-5-21 18:46 发表
谢谢,我再看看,不过request_irq确实是硬件中断,那软件中断应该怎么注册呢?

尽管你可以做到,但linux中没有机制注册你所说的软件中断

论坛徽章:
0
9 [报告]
发表于 2009-05-21 20:21 |只看该作者

回复 #8 zx_wing 的帖子

晕……那我要作好这个作业应该怎么办呢?好奇怪呀……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP