作者Lordaeron (Terry)
站内Programming
标题Re: [问题] 程式在多核心架构下执行
时间Fri Sep 7 02:21:53 2007
※ 引述《freesamael (烧卖)》之铭言:
: ※ 引述《bookmarket (bookmarket)》之铭言:
: : 请问一下,现在应用程式或者系统程式怎麽跑在多核心架构下呢
: : 譬如说,现在有A、B两个cpu,
: : 现在有两个程式要执行分别是game和一个应用程式如word
: : 那麽这两个程式是怎麽执行呢
: : 是由A cpu执行game,b cpu跑word吗
: : 还是说另一种情况
: : game的程式中,有某一段程式码(code area S)可以独立出来执行
: : 那这样game就分成两边跑
: : A cpu跑word,而B cpu跑 code area S吗
: : 还是说上述说的情况都不是呢?
: : 麻烦各位指点一下
: : 谢谢
: 这是由作业系统的排程器决定的。不同作业系统的设计目标不同,所以排程器的设计
: 也会有差别,可能是以公平性为优先,也可能以回应时间为优先做设计。实际执行的
: 情况和当时的执行绪数量、执行绪优先权都有关系。
: 我手边这本作业系统的书上说 Windows 2000 的多处理器排程方式是有 N 个处理器
: 的时候,拥有最高等级优先权的 N-1 个执行绪会使用 N-1 个处理器,剩下那些相对
: 低优先权的执行绪共享 1 个处理器。
: 对程式设计师而言,要有效利用多处理器/多核心处理器的方式就是将程式写成 Multi-
: threading/Multiprocessing。在 Unix/Linux 上标准的作法就是透过 pthread(Multi-
: threading) 或是 fork(multiprocessing)。不过 fork 比较消耗资源,因为它会复制
: 整只程式,相对於 pthread 付出代价大很多。
: 最近这几年还有一个看起来满有前景的 OpenMP API 可以用来做 parallel programming。
: OpenMP 因为能使用在 Unix/Linux 也能用在 WindowsNT,而且使用上比较简单,因此
: 渐渐受到欢迎。Intel C/C++ Compiler 已经支援 OpenMP 很长一段时间,VC++ 2005
: 也支援 OpenMP 2.0,GCC 则是从 4.2.1 开始支援 OpenMP 2.5。
不是用了OpenMP 就代表你就可以增加效能, 多核CPU 就使用比较多.
能不能使用OpenMP 还是以问题为主, 另外当然是你对问题的拆解及资料结构的
拆解, 不然你要是整天Lock 来Lock 去, 也就是白搭了.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.157.179
1F:推 freesamael:大家都地震都还上ptt认真回文呢XD 220.135.82.153 09/07 02:28