Linux实验二报告

北京电子科技学院(BESTI)

              

课程:信息安全系统设计基础                     班级: 201352         

姓名:池彬宁 贺邦

学号:20135212 20135208

成绩:             指导教师:   娄嘉鹏                     实验日期:2015.11.17

实验密级:         预习程度:                               实验时间:15:30~18:20

仪器组次:          必修/选修:必修                        实验序号:2

实验名称:多线程应用程序设计 、串行端口程序设计                           

实验目的与要求:

1.了解多线程程序设计的基本原理。

2.学习pthread库函数的使用。

3.了解在Linux环境下串行程序设计的基本方法。

4.掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。

5.学习使用多线程来完成串口的收发处理。

                

实验仪器:

名称

型号

数量

ARM开发板

UP-NETARM2410-CL

1

PC

Windows Xp

1

 

实验步骤

实验2.2

  1.  路径配置,工具包导入等见实验一,这里不做详细说明。

  2.  阅读源代码及编译应用程序

    进入02_pthread所在目录,运行make产生pthread可执行文件

   3.  到超级终端,进入/host目录运行pthread 结果如下。

 

实验2.3

  1. 路径配置,工具包导入等见实验一,这里不做详细说明。
  2. 进入03_tty所在目录,运行make产生term可执行文件
  3. 到超级终端窗口,进入/host目录,进入03_tty所在目录,运行term.

 

实验原理

1)多线程应用程序设计

实验代码实现的是生产者、消费者之间的关系,它们共用同一段缓存区,生产者可以向内写入数据,消费者也可以从中读出数据。一个首要的问题是如何判定是生产者执行写还是消费者执行读?

方法是,首先获取一个互斥锁,有这个锁在就能保证只能进行两种行为中的一种,而不能同时进行。然后针对写入或者读出能够顺利进行,要先判断缓存区的情况,如果缓存区满则不能写入,缓存区空则不能读出。

而在实验过程中,首先先在redhat虚拟机中编译运行,然后利用NFS将可执行文件映射到arm机上即可。Arm机的配置和映射和实验1相同,需要注意的就是路径不能一味按照指导书来,而是要按照自己实际的路径去写。

(2)串行端口程序设计

这个就是区分两个线程,发送线程和接收线程,然后在主函数里完成打开串口设备、终端属性设置等等。因为已经给了代码和指导书,理解起来就相对简单,这个实验就是帮助我们熟悉串行端口的一系列设置和代码实现,比较不好理解的就是之前没有遇见过的头文件和函数,针对解释详细查看即可。

 

实验感想

  本次实验是第一次实验的延续与拓展,在实验的终端配置阶段的操作明显比在做实验一的时候熟练多了,有的甚至可以不需要查看指导书即可完成,并且实验一所遇到的问题也没有再犯,事实证明经验是积累的。

 

转载于:https://www.cnblogs.com/L1nke/p/4992758.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404671.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] 在react中什么是合成事件?有什么用?

[react] 在react中什么是合成事件?有什么用? 是一个跨浏览器原生事件包装器。 它具有与浏览器原生事件相同的接口,包括 stopPropagation() 和 preventDefault() ,除了事件在所有浏览器中他们工作方式都相同。 个人简介 我是歌谣…

重学数据结构007——二叉查找树

之前的博客中提到过,我学习采用的参考书是《数据结构与算法分析——C语言描述》。这门书的组织安排与国内广泛实用的教材《数据结构——C语言版》比较不同。这本书描述了一些树和二叉树的概念,举例讲解了什么是树的三种遍历之后,就开始重点讲…

无线网卡共享Internet访问到电脑有线接口注意事项

一、共享网卡访问 网卡属性--共享--以太网 Note: 观察有线以太网的IPv4是否有Internet访问权限。Note:配置IPv4的NDS与无线网卡WLAN的属性一致。 二、有线网卡配置 Note:连接到有线网卡上的外接设备需要配置IP地址为192.168.137.xxx,处于同…

Nginx 多进程连接请求/事件分发流程分析

Nginx使用多进程的方法进行任务处理,每个worker进程只有一个线程,单线程循环处理全部监听的事件。本文重点分析一下多进程间的负载均衡问题以及Nginx多进程事件处理流程,方便大家自己写程序的时候借鉴。 一、监听建立流程 整个建立监听socket…

[react] useState和this.state的区别是什么?

[react] useState和this.state的区别是什么? useState内部基于 useReducer 实现,方法返回 state 本身以及一个修改 state 的方法。 通过 setXXX 修改数据,不会和 setState 一样进行对象属性合并,会直接覆盖。Hooks 函数组件中&a…

h264检测是I帧还是P帧

From: http://blog.csdn.net/zgyulongfei/article/details/7558031 今天在网上找了一些资料,知道了如何检测h264中的帧类型,在这里记录下来。 首先,贴出nal单元类型定义(图从《新一代视频压缩编码标准H.264》摘录)&am…

经典排序算法 - 鸡尾酒排序Cocktail sort

经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [2 3 4 5 1] 第三步迭代,4 < 5不换 [2 3 4 5 1] 第四步迭代,5 > 1…

[react] 举例说明在react中怎么使用样式

[react] 举例说明在react中怎么使用样式 all in js 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

C#之out和ref区别

out与ref的区别总结&#xff1a;1.两者都是通过引用来传递。2.两者都按地址传递的&#xff0c;使用后都将改变原来参数的数值。3.属性不是变量&#xff0c;因此不能作为 out或ref 参数传递。4.若要使用 ref 或 out,方法定义和调用方法都必须显式使用 out、ref 关键字。5.rel可以…

一次ssh登录不成功的解决经历

一、列出解决过程中所有报错信息 ssh connection refused port 22Stopped OpenBSD Secure Shell server. Failed to start OpenBSD Secure Shell server.OpenSSL version mismatch. Built against 1010104f, you have 101000cf Unable to fetch some archives, maybe run apt-…

IOS自动化打包介绍

摘要 随着苹果手持设备用户的不断增加&#xff0c;ios应用也增长迅速&#xff0c;同时随着iphone被越狱越来越多的app 的渠道也不断增多&#xff0c;为各个渠道打包成了一件费时费力的工作&#xff0c;本文提供一种比较智能的打包方式来减少其带来的各种不便。 TAG Ios打包&…

I帧和IDR帧区别

From: http://blog.csdn.net/skygray/article/details/6223358 I 帧和 IDR 帧的区别&#xff1a; IDR 帧属于 I 帧。解码器收到 IDR frame 时&#xff0c;将所有的参考帧队列丢弃 &#xff08;用x264_reference_reset 函数实现——在 encoder.c 文件中&#xff09; 。这点是所…

HDU 3486 Interviewe RMQ

题意&#xff1a; 将\(n\)个数分成\(m\)段相邻区间&#xff0c;每段区间的长度为\(\left \lfloor \frac{n}{m} \right \rfloor\)&#xff0c;从每段区间选一个最大值&#xff0c;要让所有的最大值之和大于\(k\)。求最小的\(m\)。 分析&#xff1a; 预处理RMQ&#xff0c;维护区…

[react] 举例说明useState

[react] 举例说明useState import { useState } from react; const [count, setCount] useState(0); function Demo() {const doAdd1 () > {setCount(prevCount 1);};const doAdd2 () > {setCount(prevCount > prevCount 1);};return <><h1>{count}…

win10 vscode 无法激活python 虚拟环境的解决办法

一、powershell中 python创建虚拟环境无法激活 二、管理员模式运行powershell&#xff0c;执行策略更改&#xff1a; Set-ExecutionPolicy RemoteSigned&#xff0c;输入y 三、vscode再次激活&#xff1a; .\flask-venv\Scripts\activate 激活成功。 四、退出虚拟环境&#x…

客户端获取游客IP,获取客户地理信息,展示地图

参考自&#xff1a;http://www.cnblogs.com/phphuaibei/archive/2011/09/08/2171903.html 三维地图&#xff0c;目前只有都市圈和E都市有提供。 Google街景可以在浏览器安装google earth插件后显示。转载于:https://blog.51cto.com/icersummer/724481

vscode 升级过后自带的四种终端

一、版本 二、终端 自带了四种默认配置终端&#xff0c;删除以前Edit in settings.json的“terminal.integrated.shell.windows”字段。 四种默认终端&#xff1a; powershellwslcmdjavaScript Debug Terminal

[react] 使用ES6的class定义的组件不支持mixins了,那用什么可以替代呢?

[react] 使用ES6的class定义的组件不支持mixins了&#xff0c;那用什么可以替代呢&#xff1f; HOC 高阶组件是一个以组件为参数并返回一个新组件的函数。HOC 运行你重用代码、逻辑和引导抽象。最常见的可能是 Redux 的 connect 函数。除了简单分享工具库和简单的组合&#xf…

接口委托实现

1 TFMDesign class(TFMBase, IDataSetOperator)2 public3 //注意名称要不一样,重新定义保存方法4 procedure IDataSetOperator.DoApplyUpdates ApplyUpdates;5 6 //重写保存方法7 procedure ApplyUpdates; stdcall;8 9 //接口用对象10 property …

2015第19本:异类--不一样的成功启示录

一位移民加拿大的高中同学在2012年回国探亲&#xff0c;聚会时曾推荐了《异类--不一样的成功启示录》这本书&#xff0c;英文书名叫《Outliers - the story of success》&#xff0c;一直没有系统地看完。在整理Omnifocus的读书列表时又发现了此书&#xff0c;还是趁这个机会把…