北京电子科技学院(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)串行端口程序设计

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

 

实验感想

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