2019-2020-1 20175234 20175205 20175217 实验三 实时系统

目录

2019-2020-1 20175234 20175205 20175217 实验三 实时系统


小组成员 20175205 20175217 20175234


任务一

  • 实验要求
学习使用Linux命令wc(1)
基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
客户端传一个文本文件给服务器
服务器返加文本文件中的单词数
  • 实验步骤
    • 使用man wc学习wc的使用,并尝试使用。
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统
      可发现 wc -l +文件打印出文件中行数,wc -c +文件统计字节数,wc -w +文件 统计字数,wc -m+文件统计单词个数。
    • 尝试 代码实现wc功能
    • 测试截图
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统

    • 尝试 代码实现wc功能


任务二

  • 实验要求
使用多线程实现wc服务器并使用同步互斥机制保证计数正确
  • 实验步骤
    • 使用man -k thread |grep creat学习多线程的创建,找打需要学习的pthread_create
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统

    • 测试截图
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统


任务三

交叉编译多线程版本服务器并部署到实验箱中
PC机作客户端测试wc服务器
  • 实验步骤
    • 在虚拟机中,使用arm-none-linux-gnuenbi-gcc对程序进行交叉编译
    • NFC挂载,配置/etc/exports,即输入sudo vim /etc/exports
    • 在文件/etc/exports中末尾添加一行/home/linux/linux中文件名*(rw,sync,no_root_squash,no_subtree_check)
    • 重启服务,即在终端输入sudo /etc/init.d/nfs-kernel-server restart
    • 在超级终端中用mkdir //arm_1
    • 在超级终端中运行mount -t nfs -o nolock 192.168.0.230(宿主机IP):/home/linux/linux中文件名/ arm_1通过NFS把宿主机中的linux文件映射到目标机中的“/arm_1
    • 超级终端中运行cd /arm_1文件并运行
    • 超级终端中运行 ./armserver

    • 测试截图
      2019-2020-1 20175234 20175205 20175217  实验三 实时系统


遇到的问题

  • 问题一: 硬件问题

    • 1 连接数据线后,接口显示已连接,但超级终端呈不可操作状态;
    • 2 更换实验箱后,发现虚拟机间可以ping通,超级终端自己可ping通自己。但超级终端与外界无法ping通。

    • 解决措施
      经尝试、分析得出结论,上述问题是硬件问题导致,数次更换实验箱后解决了上述问题。

  • 问题二 :挂载失败,mount 语句出错
    • 解决措施
      发现是在/etc/exports文件中的修改出现错误,应将文件最后一行改为/home/你的Ubuntu中的文件名 *(rw,sync,no_root_squash,no_subtree_check)。
      然后使用mount命令时用该使用命令: mount -t nfs -o nolock 192.168.0.230:/home/linux/你的文件名 /在超级终端新建的文件名

码云链接

参考资料


上一篇:2019-2020-1 20175221 20175225 20175226 实验三 实时系统


下一篇:2019-2020-1 20175218 实验三 并发程序