当OpenVOS系统生成日志消息(包括所有类型:硬件、安全、系统错误等)时,这些消息会被发送到syserr分区,并触发事件通知。名为TheOverseer的进程正等待该事件,同时还监听着大量其他事件。
为处理此事件,监视器会从分区读取消息并将其存储在用户堆中。随后将消息写入模块控制台终端,写入指定日志,最后从用户堆中删除。若两次写入操作中有任何一次失败,消息将保留在用户堆中以便后续重试。
分区大小有限制。用户堆内仅能容纳固定数量的日志消息。若任一区域发生溢出、指定日志文件被其他进程锁定写入,或控制台终端故障,系统将设置标志位。此时现有消息将被覆盖,监视器将向syserr_log日志和控制台输出**Log Messages Lost**(日志消息丢失)提示。
监视器需要完成大量任务,包括进程的创建与销毁、send_message类型的通信流量处理等,这些操作可能耗费大量时间和处理资源。若该进程处于繁忙状态,则无法频繁处理syserr事件机制,可能导致syserr事件溢出。
任何导致大量消息涌入syserr分区的模块事件(例如:同时停止大量进程、用户应用程序向syserr写入数据等)都可能造成该分区满溢。因此,我们不建议用户应用程序使用syserr_log机制来保存站点特定的日志信息。用户应用程序应采用自有机制来管理应用程序专属的日志信息。
