《计算机硬件与软件》2.2.6处理机管理_线程.ppt

《计算机硬件与软件》2.2.6处理机管理_线程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.2.6 线 程 传统的进程有两个墓本属性:可拥有资源的独立单位,可独立调度和分配的签本单位 由于在进程的创建、撤稍和切换中,系统必须为之付出较大的时空开销,因此在系统中设置的进程救目不宜过多.进程切换的频率不宜太高.这就限制了井发程度的提高,引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的落本单位,进程作为独立分配资源的单位。 用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。 线程可创建另一个线程,同一个进程中的多个线程可并发执行。线程也具有就绪、运行和阻塞三种基本状态。 由于线程具有许多传统进程所具有的特性,故称为“轻型进程( Light-Weight Process):传统进程称为“重型进程”(Heavy-Weight Process ) 。 3.3.6 记录型信号量解决 理发师问题 记录型信号量解决理发师问题 * 2.2.6 线 程 1 线程的基本概念 为使程序能并发执行,系统还必须进行以下的一系列操作。 1) 创建进程 2) 撤消进程 3) 进程切换  2. 线程的属性 轻型实体。 (2) 独立调度和分派的基本单位。 (3) 可并发执行。 (4) 共享进程资源。 3. 线程的状态 (1) 状态参数。 在OS中的每一个线程都可以利用线程标识符和一组状态参数进行描述。状态参数通常有这样几项: ① 寄存器状态, 它包括程序计数器PC和堆栈指针中的内容; ② 堆栈, 在堆栈中通常保存有局部变量和返回地址; ③ 线程运行状态, 用于描述线程正处于何种运行状态; ④ 优先级, 描述线程执行的优先程度; ⑤ 线程专有存储器, 用于保存线程自己的局部变量拷贝; ⑥ 信号屏蔽, 即对某些信号加以屏蔽。 (2) 线程运行状态。 如同传统的进程一样,在各线程之间也存在着共享资源和相互合作的制约关系,致使线程在运行时也具有间断性。 相应地,线程在运行时,也具有下述三种基本状态:① 执行状态,表示线程正获得处理机而运行;② 就绪状态, 指线程已具备了各种执行条件,一旦获得CPU便可执行的状态;③ 阻塞状态,指线程在执行中因某事件而受阻,处于暂停执行时的状态。 4. 线程的创建和终止 在多线程OS环境下,应用程序在启动时,通常仅有一个线程在执行,该线程被人们称为“初始化线程”。它可根据需要再去创建若干个线程。在创建新线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程创建函数执行完后,将返回一个线程标识符供以后使用。 终止线程的方式有两种:一种是在线程完成了自己的工作后自愿退出;另一种是线程在运行中出现错误或由于某种原因而被其它线程强行终止。 5. 多线程OS中的进程 在多线程OS中,进程是作为拥有系统资源的基本单位,通常的进程都包含多个线程并为它们提供资源,但此时的进程就不再作为一个执行的实体。 多线程OS中的进程有以下属性: (1) 作为系统资源分配的单位。 (2) 可包括多个线程。 (3) 进程不是一个可执行的实体。 2.7.2 线程间的同步和通信 1. 互斥锁(mutex) 互斥锁是一种比较简单的、用于实现进程间对资源互斥访问的机制。由于操作互斥锁的时间和空间开锁都较低, 因而较适合于高频度使用的关键共享数据和程序段。互斥锁可以有两种状态, 即开锁(unlock)和关锁(lock)状态。 相应地,可用两条命令(函数)对互斥锁进行操作。其中的关锁lock操作用于将mutex关上,开锁操作unlock则用于打开mutex。 2. 条件变量 每一个条件变量通常都与一个互斥锁一起使用,亦即,在创建一个互斥锁时便联系着一个条件变量。单纯的互斥锁用于短期锁定,主要是用来保证对临界区的互斥进入。而条件变量则用于线程的长期等待, 直至所等待的资源成为可用的。 线程首先对mutex执行关锁操作,若成功便进入临界区,然后查找用于描述资源状态的数据结构,以了解资源的情况。 只要发现所需资源R正处于忙碌状态,线程便转为等待状态, 并对mutex执行开锁操作后,等待该资源被释放; 若资源处于空闲状态,表明线程可以使用该资源,于是将该资源设置为忙碌状态,再对mutex执行开锁操作。 下面给出了对上

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档