2019-2020-1 20175227张雪莹《信息安全系统设计基础》实验三 《并发程序》

2019-2020-1 20175227张雪莹《信息安全系统设计基础》

实验三 《并发程序》

实验报告封面

  • 课程:信息安全系统设计基础 班级:1752班 姓名:张雪莹 学号:20175227
  • 指导教师:娄嘉鹏 实验日期:2019年11月18日
  • 实验时间:--- 实验序号:三
  • 实验题目:并发程序

实验步骤

  • 任务一
    • 要求:
      • 学习使用Linux命令wc(1)
      • 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
      • 客户端传一个文本文件给服务器
      • 服务器返加文本文件中的单词数
      • 上方提交代码
      • 附件提交测试截图,至少要测试附件中的两个文件
      • wc命令

  • 功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
  • 格式:wc [选项] 文件
  • 参数:
    • -c:统计字节数
    • -l:统计行数
    • -m:统计字符数
    • -w:统计字数
    • -L:打印最长行的长度
    • -help:显示帮助信息
  • 实现
  • 运行示例

  • 任务二
    • 要求:
      • 使用多线程实现wc服务器并使用同步互斥机制保证计数正确
      • 上方提交代码
      • 下方提交测试
      • 对比单线程版本的性能,并分析原因
    • 原理
      • 同步:指线程之间所具有的一种制约关系。
      • 互斥:对于共享的进程系统资源,在各单个线程访问时的排它性
    • 实现:
    • 注意:
      • 多线程编译有所差别,需要利用gcc XXX.c -lpthread -o XXXX进行编译。
    • 运行示例:

  • 思考题:对比单线程的版本的性能,并分析原因——

    • 答:单线程比较稳定易于实现,运行稳定。而多线程由于创建和切换的开销,采用多线程可能不会提高程序的执行速度,反而会降低速度,但是对于频繁IO操作的程序,多线程可以有效的并发。
  • 任务三

    • 要求:
      • 交叉编译多线程版本服务器并部署到实验箱中
      • PC机作客户端测试wc服务器
      • 提交测试截图
    • 实现:
      • 按照实验一的环境配置将PC连接到实验箱,要求是两个虚拟机和实验箱能互相ping通。

  • 在ubuntu终端中输入
/usr/local/toolchain/toolchain-4.3.2/bin/arm-none-linux-gnueabi-gcc server.c -o armserver
/usr/local/toolchain/toolchain-4.3.2/bin/arm-none-linux-gnueabi-gcc client.c -o armclient

进行交叉编译

遇到的问题及解决方法

  • 问题1:无法在超级终端中运行server.c和client.c

  • 问题1解决方法:怀疑是实验箱的硬件问题,更换两台实验箱后仍然无法解决该问题,建议学校可以对这批设备进行检修。

posted @ 2019-11-18 19:27  20175227  阅读(155)  评论(0编辑  收藏  举报