昨天去面试,面试官问了一些vxworks操作系统的问题,现总结如下,以备以后使用:
1. 消息队列已满,现在往消息队列写东西会怎么样?
消息队列写函数msgQSend函数,有个参数,等待时间,0表示不等待,-1表示阻塞任务;消息队列满了,msgQSend会返回error, 编程者可以根据情况选择是丢失数据还是阻塞任务或者等待一段时间后丢失数据;
注:在设计任务时,应该会考虑到这种情况,建议开大一些消息队列或者提高处理消息队列数据的任务优先级,到达收发平衡!
2. LogMsg有什么优缺点?
优点: 可重入,能在中断服务程序里面使用;设置日志文件方便;将打印信息发送到消息队列让logTask任务进行处理;
缺点: logTask任务优先级很高,logMsg太频繁,会导致任务上下文切换太快,导致系统实时性降低;
不建议在任务中使用logMSg;
3. 列举几个任务之间通信的方式;
信号量,消息队列,环形缓冲,队列(共享内存),管道,socket等,信号和事件,本人在工作很少用到,所以只是提了一下,具体怎么样,不会;
4. 管道和消息队列的区别?
消息队列分别有先进先出和优先级类型,能够单独的阻塞任务;
管道属于虚拟串口,能够使用串口的基本操作函数接口,open,read write,close等,最主要的是管道可以和IO口,socket等一起用select进行监控,这对处理从多个接口来的数据,是个不错的选择,一个任务可以监控好多个端口;
5. vxworks 5.5 协议栈 有哪些bug?
我说我对网络知识有些了解,但是对于这个协议栈了解的还不多,所以这个问题不会;以后得多使用这个协议栈。
6. zbuf接口有没有用过?
没有用过,对这个不了解,用过BSD的socket接口,相对的,这个接口更普遍;
7. 中断函数的关闭接口函数是什么?
intDisable, 个人建议对接口函数还是查找帮助文档的好;
大概就这些个问题了,回答的肯定有不全面的,希望通过查看帮助文档和工作,能够更深入的李理解!