多核处理器的性能如何比单核处理器更好?

时间:2014-06-05 07:34:03

标签: java multithreading process

我正在阅读java中的并发性,我遇到了许多有趣的事情。 请帮助我了解多核处理器的工作情况。

来自官方文档

  

计算机系统通常具有许多活动进程和线程。这个   即使在只有一个执行核心的系统中也是如此   因此在任何给定时刻只有一个线程实际执行。   处理和共享单个核心的处理时间   线程通过称为时间切片的操作系统功能。

     

计算机系统变得越来越普遍   多处理器或具有多个执行核心的处理器。这个   大大增强了系统的并发执行能力   进程和线程 - 但即使简单也可以实现并发   系统,没有多个处理器或执行核心。

首先,根据我的理解,进程有自己的内存空间 在具有单核的系统中,使用时间分片在进程之间共享存储空间。

所以

  1. 在多核心处理器中,不需要时间切片吗?
  2. 多核系统中的不同核心上运行不同的进程吗?
  3. 有点抽象:多核系统究竟有多快?

2 个答案:

答案 0 :(得分:3)

1)时间切片仍然发生在多核系统上。假设您在四核上运行了20个进程(加上操作系统本身) - 操作系统仍然需要安排21个进程才能在4个核心上运行。

2)单线程进程一次只能在一个核心上运行。但这并不意味着它会在相同的核心上运行直到它退出。操作系统可能会给他一个时间片来在Core 1上运行,暂停它,然后在Core 2上给它另一个时间片。据我所知,操作系统将避免在核心之间移动进程,但这可能仍会发生

3)嗯,你有多个处理器一次工作。就像4个建筑商一样,建造房屋的速度比单独建造房屋要快。但这并不意味着他们将建造它的速度提高了4倍 - 每个建造者都会有与队友合作和沟通的开销,所以4个建造者可能会建造房子3,也许是3.5倍。很像4核与1核。

答案 1 :(得分:1)

想象一下像Gmail这样的Web服务,您可以在其中发送Ajax的请求,例如以字母" L"开头的搜索电子邮件,这是异步调用,这意味着在您执行期间发送该请求(您的一个核心)正在处理该通信,但另一个可以继续在网页中导航。所以基本上允许你在paralel同时做两个CPU进程并且不必共享CPU时间,这确实更快。 创建多核处理器的原因之一基本上是程序语言中的异步。