北邮嵌入式系统设计实验-实验报告

北邮嵌入式系统设计实验-实验报告

ID:27644454

大小:572.39 KB

页数:26页

时间:2018-12-05

北邮嵌入式系统设计实验-实验报告_第1页
北邮嵌入式系统设计实验-实验报告_第2页
北邮嵌入式系统设计实验-实验报告_第3页
北邮嵌入式系统设计实验-实验报告_第4页
北邮嵌入式系统设计实验-实验报告_第5页
资源描述:

《北邮嵌入式系统设计实验-实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、嵌入式实验报告学院:XXX班级:XXX学号:XXX姓名:XXX成员:XXX基础知识部分1.多线程实验本章主要讲解线程的概念和线程间的同步方式。实验一主要介绍线程的概念和线程的创建,实验二、实验三、实验四分别介绍了信号量、互斥锁、条件变量的作用和使用。1.1线程的介绍线程,有时被称力轻量级进程(LightweightProcess,LWP),是程序执行流的最小单元。线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行屮的程序的调度单位。在单个程序屮同时运行多个线程完成不同的工作,称为多线程。线程是允

2、许应用程序并发执行多个任务的一种机制,是程序运行后的任务处理单元,也是SylixOS操作系统任务调度的最小单元。在多核CPU中,同时可以有多个线程在执行,实现真正意义上的并行处理。线程入口函数是一个能够完成特定任务的函数,因此线程入口函数的编写上与普通函数没有太多区别。线程的创建函数如下:intpthread一create(pthread_t♦thread,^constpthread_attr_tvoid*(*start_routine)(void*)rvoid★arg)•创建线程失败,函数返回非0的错误代码,成功返回0;•'threadpthreadj类型的缓

3、冲区,保存一个线程的线程ID;•*attr设置线程属性,设置为NULL标识创建的新线程使用默认属性;•*(*start_routine)线程入口函数函数名•*arg向所创建线程传入的参数1.2信号量的概念信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号S;—旦该关键代码段完成了,那么该线程必须释放信号M:。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。信号量是一个在进程和线程中都可以使用的同步机制。信号量类似于一个通知,某

4、个线程发出一个通知,等待此通知的线程收到通知后,会执行预先设置的工作。当接收通知的线程没有收到通知前,会处于阻塞状态。信号S可以连续发送多次,处理线程同样也会处理多次。信号实质是一个计数器,信号量发送一次,计数值增加1,信号量每获取一次,U•数值就减1,当计数值为0时,等待信号量线程阻塞。等待信号量过程屮,还可以设置等待时间,超过设定时间,等待信号量的线程就不会继续等待,而是继续执行后续任务。1.3互斥锁在编程中,引入了对象互斥锁的概念,来保证共亨数据操作的完整性。每个对象都对应于一个可称为"互斥锁"的标记,这个标记用來保证在任一时刻,只能有一个线程访问该对象。

5、互斥锁是避免在同一时间共享资源被多个线程同时访问。互斥锁在使用时类似一把锁,在访问共享资源前对其上锁,在访问完成后,将此资源解锁以便其他线程可以访问。任何试图访问已经被上锁资源的的线程都会被阻塞,直至访问的资源被解锁。如果该资源解锁时有多个试图访问资源的线程被阻塞,那么只有一个线程会被唤醒访W共享资源,SylixOS唤醒原则采用基于优先级的判断,优先级高的优先被唤醒。1.4条件变量条件变量是利用线程间共亨的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起:另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的

6、使用总是和一个互斥锁结合在一起。互斥锁能够解决多线程屮访问资源冲突的问题,其状态非常简单,只有上锁和解锁两种状态。当线程之间有其他需要同步的条件时,使用互斥锁会十分不方便。比如将线程设罝为等待某一个条件满足后开始工作,这个吋候使用互斥锁,只能频繁的查询该状态,这样会宝贵的CPU资源。这时使川条件变量是一个更合适的解决方案。条件变量能够给多个线程提供一个会合的场所,条件变量与互斥锁一起使用,允许线程以无竞争的方式等待特定的条件发生。条件变量本身需要使用互斥锁保护,在改变条件变M之前需要使用互斥锁对其上锁。1.5信号量与互斥锁的区别信号量强调的是线程(或进程)间的同

7、步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号y:告诉别的线程,别的线程再进行某些动作。当信号:w:为节值信号量时,也可以完成一个资源的互斥访问。互斥锁(又名互斥量)强调的是资源的访m互斥:互斥锁是川在多线程多任务互斥的,一个线程占川了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对企局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号fi会同时使用的”也就是说,信号量不一定是锁定某一个资源,而是流程上的概念,比如:有A,B两个线程,B线程要等A线程完成某一任务以后再进行自己下

8、囬的步骤,这个任务并不一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。