抢占式多任务处理和协作式任务处理

1.协作式任务处理

意思是说一个任务得到了 CPU 时间,除非它自己放弃使用 CPU ,否则将完全霸占 CPU ,所以任务之间需要协作使用一段时间的 CPU ,放弃使用,其它的任务也如此,才能保证系统的正常运行。如果有一个任务死锁,则系统也同样死锁。

2.抢占式任务处理

总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务。如果有一个任务死锁,系统仍能正常运行。
抢占式多任务处理是将同时进行的各项任务,依照重要程度来排定优先顺序。具有最高优先级的线程就是当前正在运行的那个线程。驻留在CPU内正在运行的线程会在什么时候中止呢?一是属于它的时间片已经到期,二是加入了另一个优先级更高的线程。通过不断从一个线程到另一个线程的切换和线程的迅速执行给人的感觉是线程的执行是同时进行的。线程并非随时需要运行,经常发生的情况是某个线程需要等待用户的输入,另一个线程的信息或等待I/O请求,否则便无法执行下去。有些线程也许本来就处于挂起状态。
这就意味着当一个程序完成一项非常耗时的工作时,Windows允许用户将控制权切换到其他程序上。这本是一件非常棒的设计,但这种抢占式多任务模式未必总是会按照你期望的方式去工作。例如,假如你的程序处理某条特定消息需要花费1~2分钟的时间,的确,在这期间,用户可以切换到其他程序,但是此时用户无法对你的程序做任何操作,这时候用户就会开始抱怨了,马勒戈壁,这程序怎么卡得更妈蛋一样……所以,一定要注意,不要在处理某条消息上耗费太大的时间,这样的用户体验会很差!

3.抢占式任务系统

在抢占式多任务系统中,操作系统必须具有从任何一个运行的程序上取走控制权和使另一个程序获得控制权的能力。一个抢占式系统下运行的应用程序不用担心独占系统,因为系统会合理地给每个运行的任务分配时间块。将这种系统称做抢占式系统是因为它不管在所给时间块内会发生什么事,都抢占运行程序的控制权。Window 95及之后的Windows版本,OS/2和UNIX都是抢占式系统。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,176评论 0 23
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 3,826评论 0 5
  • 1. 简介 用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线...
    love丁酥酥阅读 3,553评论 0 6
  • 吾生也晚矣,1963年。 1963年是中国人口增长最多的一年,900多万。这是一个峰值,此前是三年困难时期,此后,...
    就砚旋研墨阅读 561评论 3 2