多进程与进程间通信.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多进程与进程间通信

电子信息学院 实验报告书 课程名:《嵌入式系统的应用 》 题 目: 实验六 多进程与进程间通信实验 实验类别 【验证】 班 级: BX0802 学 号: 19 姓 名: 彭俊刚 6.1 实验目的 学习和掌握 Linux 下的多进程和进程间通信的基本原理和基本编程方法。 6.2 实验设备 硬件:硬件:EduKit2410 系统,Embest JTAG 仿真器,PC 机; 软件:Windows 下的cygwin 开发环境。 6.3 实验内容 编写 Linux 下多进程程序并实现进程间通信。 6.4 实验原理 进程是正在执行的程序的实例,也是Linux 的基本调度单位。Linux 内核使用进程来控制CPU 以及其他的系统资源。 1、 Linux 下的多进程 在 Linux 系统中,用户创建一个新进程的方法可以调用系统调用fork。调用fork 的进程称为父进程,而新创建的进程叫做子进程。系统调用的语法格式: pid = fork(); 在从系统调用fork 中返回时,两个进程除了返回值pid 不同外,具有完全一样的用户级上下文。在子进程中,pid 的值为零。在系统启动时由核心内部地创建的进程0 是唯一不通过系统调用fork 而创建的进程。核心为系统调用 fork 完成下列操作: 1)为新进程在进程表中分配一个空项。 2)为子进程赋一个唯一的进程标识号(PID)。 3)做一个父进程上下文的逻辑副本。由于进程的某些部分,如正文区,可能被几个进程所共享,所以核心有时只要增加某个区的引用数即可,而不是真的将该区拷贝到一个新的内存物理区。 4)增加与该进程相关联的文件表和索引节点表的引用数。 5)对父进程返回子进程的进程号,对子进程返回零。 2、 Linux 下的进程间通信 进程间通信(Interprocess Communication, IPC)有多种形式:管道、信号、共享内存、信号灯和信息队列等。 1) 管道 管道有两种类型:无名管道和有名管道。有名管道通常称为 FIFO(即First In,First Out,先入先出)。无名管道不会在文件系统中出现,并且只能在相关的、有共同父进程的进程之间使用;FIFO 具有管道的所有功能,并且存在于文件系统,更加持久稳定,并且能在无关联的进程间通信。无论无名管道或有名管道,数据流只有一个方向。 2) 信号 信号是比较复杂的一种通信方式,用于通知接受进程有某种事件发生。进程也可以发送信号给进程本身。 信号是由相同或不同的进程向一个进程传递的事件,用于通知接受进程有某种事件发生,进程还可发送信号给进程本身。 3) 共享内存 共享内存是由内核出于在多个进程间交换信息的目的而留出的一块内存空间,多个进程共享该内存空间,如果一个进程更新了其中的数据,那么其他进程立即会看到更新。 4) 消息队列 信息队列是一个消息的链接列表,消息都保存在内核中,进程通过一种和共享内存区使用的标识符同种类的标识符标识消息。有相应权限的进程可向队列中添加消息和读取消息。消息队列克服了管道信号承载量少的缺点。 5) 信号量 信号量实际上是一个整数,主要作为进程间以及同一进程不同线程间的同步手段。其用法与加锁机制非常类似,它实际上是一个整数,多个进程间可以通过加减信号量对资源进行协调操作。 6.5 实验步骤 1. 准备实验环境 使用 EduKit2410 目标板附带的串口线连接目标板上UART0 和PC 机串口COMx; 使用 EduKit2410 目标板附带的交叉网线连接目标板NET1 和PC 机网络接口。 2. 串口/网络设置 在 PC 机上运行Windows 附件中自带的超级终端串口通信程序(波特率115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。 在 PC 机上运行TFTP 服务器tftpd32.exe 选择工作目录为/home/app。 3. 实验操作过程 1)运行cygwin,进入多进程实验程序所在目录。执行以下命令编译链接测试程序: $ source /tmp/edukit-2410/set_env_linux.sh ?? Linux 编译环境变量设置 $ cd $WORKDIR/examples/0301_test-process/ $ make clean $ make install ?? 同时拷贝执行文件到调试目录 2)下载测试程序 编译好测试程序后,启动目标板的 Linux 操作系统,通过以太网使用tf

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档