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

  • 相关阅读:
    FZU 2112 并查集、欧拉通路
    HDU 5686 斐波那契数列、Java求大数
    Codeforces 675C Money Transfers 思维题
    HDU 5687 字典树插入查找删除
    HDU 1532 最大流模板题
    HDU 5384 字典树、AC自动机
    山科第三届校赛总结
    HDU 2222 AC自动机模板题
    HDU 3911 线段树区间合并、异或取反操作
    CodeForces 615B Longtail Hedgehog
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/11884480.html
Copyright © 2011-2022 走看看