发布于 2012-03-04 15:46:21
31楼
之前曾经听西门子的内部人员流传过一个关于Alarm_8p的机制框图,其中最为有特点的是Alarm_8p会占用“系统资源”。
在AS侧经常提到所谓的“系统资源”,在我的理解力,所谓的系统资源其实就是内存的分配问题。占用内存,就是占用了系统资源,除此之外还能有什么资源可用呢。
Alarm_8p占用系统资源做什么呢?
我猜测,就两个作用,一个是存储,一个是通道。
OS的报警控件中经常会出现日期时间上带删除线的,这说明该条消息产生时没能及时上传到OS运行系统中。而OS运行系统获取这个消息时,其已经没有了时间戳,所以运行系统就自作主张将当前的时间赋给了它,但为了区分期间,上面带上了删除线(以上言论来自西门子热线,非本人杜撰,呵呵)
OS运行系统没有开,消息产生了,而且之后还可以报告给OS,那么CPU肯定存储了,而且是不带时间标签地存储。要存储,alarm_8p自己没法存的,只能靠内存——即所谓的系统资源了。
说它是通道,主要是考虑alarm_8p和OS的alarm logging之间的联系。一个很简单的问题,alarm_8p上的一个信号变化了,要触发报警,为什么OS上对应的消息就会显示出来?中间的查询靠的是什么?
肯定是报警条目的ID,那alarm_8p能知道这个ID吗?
看看alarm_8p的背景DB吧,能看到这个ID号就奇怪了!
一种推测就是通过SDB来将这个信息告诉了CPU,然后CPU分配了很多的通道。所谓的通道无非也就是几个字节来表征状态而已。每个alarm_8p通道,都会有这个通道,有消息产生了,就通过这个通道来告知OS。而OS通过"NRMS7PMC.NLL"来解开并触发消息。
当然了,系统资源自然还需要考虑到上传信息所占用的通讯资源,这个就是所谓的communication job的一个构成内容了。