一些总结
多核下的数据修改及数据同步
修改:(承接上面多核读取结束后,CPU A对数据进行了修改)
1.CPU A进行Local write,修改变量z=2,此时要将其cache line的状态修改为M(修改),并通知有缓存了z变量的CPU,此处即CPU B。
2.CPU B需要将本地cache 中的z设置为I(无效)
3.CPU A对变量z进行赋值
同步:(涉及两种情况:其它CPU,如CPU B此时要读取z,或者CPU B此时要读取并修改z)
CPU B此时要读取z
1.CPU B发出读取z的指令(Remote read)
2.CPU A在写总线上嗅探到这个读请求以后,先将Cache Line里修改过的数据回(Write Back)到Memory中,然后在内存总线上放一份Cache Line的拷贝作为应答。
3.将自身的Cache Line的状态修改为Shared,由此产生的结果是CPU A与CPU B里对应的Cache Line的状态都为Shared。
//////////////////////////////////////////
中断(interrupt)
CPU 微处理器有一个中断信号位, 在每个CPU时钟周期的末尾, CPU会去检测那个中断信号位是否有中断信号到达, 如果有, 则会根据中断优先级决定是否要暂停当前执行的指令, 转而去执行处理中断的指令。(其实就是 CPU 层级的 while 轮询)
时钟中断( Clock Interrupt )
一个硬件时钟会每隔一段(很短)的时间就产生一个中断信号发送给 CPU,CPU 在响应这个中断时, 就会去执行操作系统内核的指令, 继而将 CPU 的控制权转移给了操作系统内核, 可以由操作系统内核决定下一个要被执行的指令。
系统调用(system call)
system call 是操作系统提供给应用程序的接口。用户通过调用 systemcall 来完成那些需要操作系统内核进行的操作, 例如硬盘, 网络接口设备的读写等