• 2019-2020-1 20175221 20175225 20175226 实验三 实时系统


    2019-2020-1 20175221 20175225 20175226 实验三 实时系统

    实验要求

    任务一

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

    任务二

    • 使用多线程实现wc服务器并使用同步互斥机制保证计数正确
    • 上方提交代码
    • 下方提交测试
    • 对比单线程版本的性能,并分析原因

    任务三

    • 交叉编译多线程版本服务器并部署到实验箱中
    • PC机作客户端测试wc服务器
    • 提交测试截图

    实验步骤

    任务一

    • 先使用man wc了解wc命令的功能与用法
    • 在了解了各参数的作用后,对 test1.txt 和 test2.txt 分别试验 wc wc -w功能
    • 根据wc的说明,-w对应单词统计数,其中字的定义是“空白、跳格或换行字符分隔的字符串”,而非单词数。譬如test3.txt中我输入了14个单词,使用-w参数只返回了13
    • 故我设计两种统计统计单词的程序,主要区别是统计每个单词的标准不同
    • wc -w:' ',' ',' ',' '作为分隔符
    • 单词统计:' ',' ',' ',' ','!','"','?','.',',','(',')',':',';','-'。
    • 用socket编程实现

    任务二

    • 先用man命令了解线程的创建
    • 得知在多线程编译的过程中需要加上 -lpthread,因为pthread库不是Linux系统默认的库,连接时需要使用静态库libpthread.a,所以在线程函数在编译时,需要使用“-lpthread”链接库函数。
    • 用socket编程实现多线程
    • 多个客户端一起传文件给服务器
    • 对比单线程的版本的性能,分析原因:

    • 单线程容易实现,但是一次只允许一个客户端连接。
    • 多线程复杂,但是一次允许多个客户端,工作效率更高。
    • 单线程保证单用户的安全性,多线程保证任务的高效性。

    任务三

    • 虚拟机ping超级终端:

    • 超级终端ping虚拟机:

    • 配置 /etc/exports: 

    •  sudo vim /etc/exports 

    • 在文件末添加

    • 再使用权限更新命令 sudo /etc/init.d/nfs-kernel-server restart 重启服务

    • 实验的最后部分映射没有完成,会在弄明白失败原因后继续补充。

    实验中的问题及解决过程

    • 问题1:
    • 在进行任务2时,没有连接成功
    • 问题1解决过程:
    • 检查发现,是自己粗心忘记先打开服务端。随后再运行客户端即可。
    • 问题2:
    • 问题2解决过程:
    • 在编译服务端的时候,加上-lpthread来连接库函数即可

     码云链接

    参考资料

  • 相关阅读:
    论文参考文献
    Spatial Transformer Networks
    python实现两个升序链表合并
    ImportError: cannot import name 'PILLOW_VERSION'
    交叉熵与KL散度
    windows环境下面安装neo4j出错记录
    在vue项目中引入JQuery
    Vue在windows的环境配置
    js动态修改Easyui元素不生效,EasyUI动态渲染解析解决方案
    java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException报错的原因
  • 原文地址:https://www.cnblogs.com/zxja/p/11881489.html
Copyright © 2020-2023  润新知