求问percpu相关理解
对于percpu这种同步机制,我的大致理解是每个cpu都有一个副本,这样可以每个cpu之间不干扰。
对此,我有几个问题:
1.同一个变量会在不同cpu上有不同副本,那这些副本直接需要同步么?怎么同步?(还是说这个变量只会在一个cpu上使用?万一有多个cpu运行同一段代码?)
2.有些资料上说percpu不提供对异步函数访问的保护,因此在同一个CPU上还要另外的同步原语的协作。对于这句话理解不是很清楚。用percpu的时候会禁止内核抢占,所以其实内核线程是不会发生冲突的?(对这个被保护的变量)再者,就算上用户线程上在单cpu上的操作,这个percpu本身就和异步函数在单个cpu上操作不在一个层面上吧?percpu是保护多cpu的