关于enqueue的一些认识
[@more@]关于enqueue的一些认识
我也谈谈自己的想法:请大家批评指正
1、enqueue是实现lock的一个机制,之所以这样说,是因为相对于latch。
2、对于每一个资源就有一个Resource Structure相对应。而且每一个资源有且不只一个Resource Structure和它对应,因为同一个资源,会有不同的类型的锁,例如表就有TM和TX类型。
3、Resource Structure和Lock Structures只是enqueue物理实现的形式,
4、Lock Structures是和回话有关系,当一个会话发出访问资源的请求的话,就会提出一个Lock Structures。
5、Resource Structure和Lock Structures之间的关系主要是在于当多个Lock Structures同时请求一个Resource的时候,就会根据lock之间的兼容性来“排队”,就是通过holding、wait、convert来实现。
6、所有的Resource Structure组成一个Resource table,系统会根据资源名进行hash来确定这个Resource Structure存放的位置,并能够快速索引。这时候会有一个叫做hash bucket一个存放空间的产生,在这个空间内部Resource Structure的存放是一直chain链式的存放。系统在查找一个资源的时候,会通过根据资源名进行hash算法找到应该存放在那个bucket中,然后在这个bucket链式上一个一个查找资源(这里是不是顺序查找???),如果到头还没有找到的话,就在这个bucket上新建一个Resource Structure。(是不是同一类型的,我搞不太清楚,我认为应该是所有类型的组成一个唯一的表,为什么这样说,因为这个表是通过hash来进行检索的,而检索的产生源头是有资源名,这样就可以将所有的资源放到一个表中,还有利于系统的管理。)
7、在访问Resource table的时候,是通过一个latch来管理,因为这是串行的访问机制,所有会产生latch等待事件。enqueue hash chains latch
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-907895/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/222350/viewspace-907895/