共享资源:可以被一个或以上的任务使用的资源。所以使用共享资源的时候,可以人为的制造队列,访问共享资源的时候先申请信号量(加锁)!!!。得到允许之后才可以使用共享资源。
共享资源也导致了并行和串行编码的巨大不同!!
共享内存:
在多核处理器中,一般三级缓存以及内存是多个cpu所共享的。
eg:
c语言中,假设声明静态变量a,那么就会在共享的内存中开辟一个地址进行存放.由于存储在共享内存中,所以其他的一些程序也可以对a的指进行操作。为了保证a的值的一致性,当一个cpu对其值进行操作时,需要通知使用到a的其他的cpu,这样就实现了不同的cpu之间的通信,保证数据的一致性。
优化: 核心与核心之间通过内存进行数据交换。但是如编程过程中经常使用共享内存,那么,不同cpu之间为了保证数据的一致性,便需要通信,这样一来,便降低了运行的速度等。另一个角度想,可以通过减少核心之间的通信(共享资源的减少使用。进而提高速度,实现优化)
分布式内存
可以通过网络的方式,将处于不同机器上的cpu和内存进行联通,这样,不同cpu之间的通信便是使用网络连接的方式。