- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级程序设计课程
2013~2014年度 第1学期
院系: 计算机学院
学号: 2111205002
姓名:
任课教师: 成绩评定:
完成日期:201年 1 月 8 日
1.多核体系结构
多线程与多核编程
多核、多处理器系统中的每颗处理器(每个核),同时间内可以执行各自不同的进程(或线程)。一颗单线程能力的处理器(一个核)只能执行一个进程,双核处理器就能够同时执行两个不同的进程(或线程),四核就可以同时不同的四个进程(或线程)。倘若是执行不支持多线程的程序,那么每颗处理器内的多线程功效就无从发挥。硬件条件已经具备,但作为人机交互的操作系统和应用软件需要研究它的并行化方法,最大限度挖掘系统的整体性能。
2.1进程概念: 进程是操作系统结构的基础;是一个正在执行的程序,是计算机中正在运行的程序实例,是可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。
进程为应用程序的运行实例,是应用程序的一次动态执行。我们可以简单地理解为:它是操作系统当前运行的执行程序。
对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。
2.2多线程的概念
线程(thread)是进程上下文(context)中执行的代码序列,是进程中的一个实体,是被系统独立调度和分派的基本单位 ,又被称为轻量级进程(light weight process)
在支持多线程的系统中,进程成为资源分配和保护的实体,而线程是被调度执行的基本单元。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程的状态:
就绪(ready):线程等待可用的处理器。
运行(running):线程正在被执行。
阻塞(blocked):线程正在等待某个事件的发生(比如I/O的完成,试图加锁一个被上锁的互斥量)。
终止(terminated):线程从起始函数中返回或者调用pthread_exit。
2.3进程与线程的关系
程序在操作系统中作为进程方式存在、获取资源、运行。
在一个进程内,线程可以创建其它线程。每个线程有各自的栈(stack)。
一个进程内所有的线程共享代码段和数据段。
进程
对于在一个进程内的线程:一个线程对共享的系统资源进行修改,在这个进程内的其它线程也可以见到这种修改。进程内的多个线程可以对同一个内存单元进行读和写操作,所以必须要采取显式同步机制。 在同一个进程的地址空间下,线程间的通信消耗更小。
一个进程内的线程示例
2.4线程的同步与互斥
由于线程共享同一进程的内存空间,多个线程可能需要同时访问同一个数据。如果没有正确的保护措施,对共享数据的访问会造成数据的不一致和错误。
全局变量是线程间通信最常用的手段,然而却容易造成访问冲突。
常用的同步机制:
互斥(mutual exclusion)
条件同步(condition synchronization)
线程的本地存储(thread local storage, tls)
互斥是指对于共享的操作系统资源(广义的资源,譬如全局变量),在各线程访问时的排它性。
临界区(critical section)
锁(lock)/互斥量(mutex)
信号量(semaphore)
同步是指线程间的一种制约关系,一个线程的执行依赖另一个线程的消息。当它没有得到消息时应等待,直到消息到达时被唤醒。
事件(event)
信号量(semaphore)
如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。
关于临界区的使用,有下列注意点:
虽然临界区同步速度很快,但却只能用来同步本进程内的线程,而不可用来同步多个进程中的线程。
每个共享资源使用一个CRITICAL_SECTION变量;
不要长时间运行关键代码段,当一个关键代码段长时间运行时,其他线程就会进入等待状态,这会降低应用程序的运行性能;
如果需要同时访问多个资源,则可能连续调用EnterCriticalSection;
Critical Section不是OS核心对象,如果进入临界区的线程
您可能关注的文档
最近下载
- 海尔精密空调样册20230310.pdf
- 长沙理工大学大学物理练习册答案(全解)平台原因,预览不清楚,下载后保证可以清楚的阅读.pdf VIP
- 六味和正早餐糊手册内容定稿.pdf VIP
- 主变压器安装监理实施细则.doc VIP
- 海尔水冷磁悬浮样册20241109.pdf
- 安徽—夏凯月—课件—直线的倾斜角与斜率.pptx VIP
- 中级茶艺师操作技能考核评分记录表(20200810075301).pdf VIP
- 中级茶艺师操作技能考核评分学习记录标准表格格.docx VIP
- 中级茶艺师操作技能考核评分记录表.docx VIP
- 中考生物总复习 七上 第1单元 第5章 生物的分类和鉴别教材考点梳理课件 冀教版.pptx VIP
文档评论(0)