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

  • 相关阅读:
    特殊json处理
    css3
    居中定位
    微信支付
    vue 封装cookie,请求,登录拦截,接口拦截
    vue中axios的封装(简易版拦截,get,post
    JS的Event Loop
    JS模块化
    JS的排序算法
    时间复杂度 空间复杂度
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/11884480.html
Copyright © 2020-2023  润新知