协作多线程和抢占多线程

1. 多任务

在计算中,多任务是一种多个任务(也称之为进程)共享处理资源(如CPU)的方法。在多任务操作系统上,例如Windows XP,您可以同时运行多个应用程序。多任务实质是指操作系统在每个计算任务间快速切换,以致于看上去不同的应用似乎在同时执行多项操作。

当CPU时钟频率稳步提高时,不仅应用程序的运行速率可以更快,而且操作系统在应用间的切换速率也更快。这样就提供了更好的整体性能——一台计算机可以同时发生多项操作,每项应用可以更快速地运行。

2. 单核

对于拥有单个CPU核的计算机,任意时刻只能运行一项任务,这也意味着CPU主动地执行该任务的指令。多任务通过调度(Scheduling)哪一项任务在哪一时刻运行以及何时切换到另一项任务,解决了这一问题。



3. 多核

当运行于多核系统时,多任务操作系统可以真正地并发执行多项任务。针对不同的任务,多个计算引擎独立地工作。

例如,在一个双核系统,有四项应用,如文字处理、电子邮件、网页浏览和防病毒软件,每项应用可以同时访问一个独立的处理器核。您可以在检查电子邮件的同时输入一封文档,真正实现多任务,从而改善应用的整体性能。



操作系统通过在独立的CPU核之间划分不同的应用或进程,从而更有效地执行多项应用。该计算机可以将工作任务分摊化——每个核在管理和切换原先一半数量的应用任务,并提供更好的整体吞吐量与性能。实际上,这些应用任务是并行地执行的。


4. 多线程

多线程将多任务的思想拓展到应用,因此,您可以将单个应用中的特定步骤进一步分解成一个个线程,每个线程可以并行运行。操作系统不仅在不同的应用任务间分配处理时间,而且在一项应用的每个线程间分配处理时间。



操作系统是以抢占式多任务的方式来处理应用与其它任务的。
什么是协作式线程,什么是抢占式线程呢?
协作式线程 模型允许线程自己决定什么时候放弃处理器来等待其他的线程。程序开发员可以精确地决定某个线程何时会被其他线程挂起,允许它们与对方有效地合作。缺点在于某些恶意或是写的不好的线程会消耗所有可获得的CPU时间,导致其他线程“饥饿”。
 
抢占式线程 该模型中操作系统可以在任何时间任何时候打断线程。通常会在它运行了一段时间就是所谓的一个时间片后才打断它。这样的结果自然是没有线程能够不公平地长时间霸占处理器。然而,随时可能打断线程就会给程序开发员带来其他的麻烦。同样适用办公室的例子,假设某个职员抢在另一个人前适用复印机,但是打印工作在未完成的时候离开,另一人接着使用复印机,该复印机上可能就会有先前的那位职员留下的资料。抢占式线程模型要求线程正确的共享资源。协作式模型却要求线程共享执行时间。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值