嵌入式Linux应用开发教程第六章 嵌入式Linux多任务编程.ppt

嵌入式Linux应用开发教程第六章 嵌入式Linux多任务编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.3.5 共享内存 共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝 为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间 进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。 由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等 * 6.3.5 共享内存 共享内存原理示意图 * 6.3.5 共享内存 共享内存实现的步骤: 创建共享内存,这里用到的函数是shmget,也就是从内存中获得一段共享内存区域 映射共享内存,也就是把这段创建的共享内存映射到具体的进程空间中去,这里使用的函数是shmat 到这里,就可以使用这段共享内存了,也就是可以使用不带缓冲的I/O读写命令对其进行操作 撤销映射的操作,其函数为shmdt * 6.3.5 共享内存 shmget函数语法: * 6.3.5 共享内存 shmat函数语法: * 6.3.5 共享内存 shmdt函数语法: * 6.3.6 消息队列 消息队列就是一些消息的列表。用户可以在消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。 * 6.3.6 消息队列 消息队列的实现包括创建或打开消息队列、添加消息、读取消息和控制消息队列这四种操作 创建或打开消息队列使用的函数是msgget,这里创建的消息队列的数量会受到系统消息队列数量的限制 添加消息使用的函数是msgsnd函数,它把消息添加到已打开的消息队列末尾 读取消息使用的函数是msgrcv,它把消息从消息队列中取走,与FIFO不同的是,这里可以指定取走某一条消息 控制消息队列使用的函数是msgctl,它可以完成多项功能。 * 6.3.6 消息队列 msgget函数语法: * 6.3.6 消息队列 msgsnd函数语法: * 6.3.6 消息队列 msgrcv函数语法: * 6.2.2 Linux守护进程 守护进程出错处理 syslog是Linux中的系统日志管理服务,通过守护进程syslogd来维护。该守护进程在启动时会读一个配置文件“/etc/syslog.conf”。该文件决定了不同种类的消息会发送向何处。例如,紧急消息可被送向系统管理员并在控制台上显示,而警告消息则可被记录到一个文件中。 该机制提供了3个syslog相关函数,分别为openlog()、syslog()和closelog()。openlog()函数用于打开系统日志服务的一个连接;syslog()函数是用于向日志文件中写入消息,在这里可以规定消息的优先级、消息输出格式等;closelog()函数是用于关闭系统日志服务的连接。 * 6.2.2 Linux守护进程 syslog相关函数格式 所需头文件 #include syslog.h 函数原型 void openlog (char *ident, int option , int facility) 函数传入值 ident 要向每个消息加入的字符串,通常为程序的名称 option LOG_CONS:如果消息无法送到系统日志服务,则直接输出到系统控制终端 LOG_NDELAY:立即打开系统日志服务的连接。在正常情况下,直接发送到第一条消息时才打开连接 LOG_PERROR:将消息也同时送到stderr上 LOG_PID:在每条消息中包含进程的PID 函数传入值 facility: 指定程序发送 的消息类型 LOG_AUTHPRIV:安全/授权讯息 LOG_CRON:时间守护进程(cron及at) LOG_DAEMON:其他系统守护进程 LOG_KERN:内核信息 LOG_LOCAL[0~7]:保留 LOG_LPR:行打印机子系统 LOG_MAIL:邮件子系统 LOG_NEWS:新闻子系统 LOG_SYSLOG:syslogd内部所产生的信息 LOG_USER:一般使用者等级讯息 LOG_UUCP:UUCP子系统 * syslog相关函数格式 所需头文件 #include syslog.h 函数原型 void syslog(int priority, char *format, ...) 函数传入值 priority:指定消息的重要性 LOG_EMERG:系统无法使用 LOG_ALERT:需要立即采取措施 LOG_CRIT:有重要情况发生 LOG_ERR:有错误发生 LOG_WARNING:有警告发生 LOG_NOTICE:正常情况,但也是重要情况 LOG_INFO:信息消息 LOG_DEBUG:调试信息 format 以字符串指针

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档