2019-2020-1 20175234 20175205 20175217 实验三 实时系统
##2019-2020-1 20175234 20175205 20175217 实验三 实时系统
小组成员 20175205 20175217 20175234
[TOC]
###任务一
- 实验要求
学习使用Linux命令wc(1)
基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
客户端传一个文本文件给服务器
服务器返加文本文件中的单词数
- 实验步骤
- 使用
man wc
学习wc的使用,并尝试使用。
- 使用
可发现 wc -l +文件
打印出文件中行数, wc -c +文件
统计字节数, wc -w +文件
统计字数, wc -m+文件
统计单词个数。
- 尝试 代码实现
wc
功能 - 测试截图
- 尝试 代码实现
wc
功能
###任务二
- 实验要求
使用多线程实现wc服务器并使用同步互斥机制保证计数正确
- 实验步骤
- 使用
man -k thread |grep creat
学习多线程的创建,找打需要学习的pthread_create
- 使用
- 测试截图
###任务三
交叉编译多线程版本服务器并部署到实验箱中
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
测试截图
###遇到的问题
问题一: 硬件问题
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/你的文件名 /在超级终端新建的文件名
- 解决措施
###码云链接
###参考资料