1 什么是并发(处理)
并发处理指的是系统可以在同一时刻执行多个处理任务;在单核的系统中,硬件中断服务可导致并发的执行,但实际上CPU仍是串行执行,所以在单核系统中并非是意义上的并行处理;而在目前SMP系统中,由于具备多核芯片,所以SMP系统才是真正支持并发处理。
2 并发导致的竞态问题
系统支持并发处理,这就意味着系统的共享资源可能会在同一时刻被多个程序访问或者操作;这种情况下就会导致资源竞态问题。假设有一个共享指针变量ptr和A、B线程,A、B线程都会判断ptr是否为空指针,如果为空,则将该指针指向相关地址;如果恰好A、B线程同时对ptr进行判断,都认为ptr会空值,都对ptr进行赋值,那么将极有可能产生一个错误的结果并且该结果将是很难预见的。
目前计算机已是(1-3GHz/每核)的处理能力了,所以多核计算机在单位时间内产生的竞态问题也会变得相当频繁。
3 如何处理竞态
对竞态问题的处理,实际上就是对共享资源的处理。对共享资源只要实现对其串行化地访问或操作,就可解决竞态问题。在linux内核中,已实现多种机制来解决竞态问题,这些机制有信号量/互斥信号、自旋锁、读/写锁、原子操作等等
后面章节将会讲解各机制的使用。
转载请注明出处:
add358.blog.chinaunix.net
阅读(1552) | 评论(0) | 转发(0) |