|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
1.缘起
跟着SMP(SymmetricalMulti-Processing)架构的盛行和epoll类体系挪用对非堵塞fd监督的撑持,高功能服务器真个开辟已可以完成CPU盘算和IO的分别。为了充实发扬CPU的盘算才能,服务器真个计划必需要只管削减线程切换。引发线程切换最主要的缘故原由之一就是对mutex和semaphor等锁的利用。本文从盘算机系统架构、操纵体系的撑持和mutex的完成完全剖析Linux用户空间mutex的完成,剖析的源码版本是glib-2.3.4和kernel-2.6.8。
2.系统布局和指令的撑持
在UP(uniprocessor)架构下,从用户空间的角度看,中止打断了程序的一般实行。操纵体系在处置完中止以后,前往用户空间的之前,从头调剂体系中的线程实行。因为CPU是在实行汇编指令停止后呼应中止,那末单条汇编指令的实行就是原子的。
在SMP下,因为存在CPULocalCache和每一个CPU的指令周期分歧,单条汇编指令的实行不会是原子的。X86SMP供应了一个lock指令前缀,使得某些汇编指令的实行是原子的。看以下x86_64系统布局的汇编代码,来自glibc。
Intel |
|