亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? design

?? File system using stacked.
??
字號:
# $Id: Design,v 1.1.1.1 2004/08/19 23:53:56 gopalan Exp $Synchronization in the Locking SubsystemThis is a document that describes how we implemented fine-grain lockingin the lock manager (that is, locking on a hash bucket level instead oflocking the entire region).  We found that the increase in concurrencywas not sufficient to warrant the increase in complexity or the additionalcost of performing each lock operation.  Therefore, we don't use thisany more.  Should we have to do fine-grain locking in a future release,this would be a reasonable starting point.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=1. Data structures=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=The lock manager maintains 3 different structures:Objects (__db_lockobj):	Describes an object that is locked.  When used with DB, this consists	of a __db_ilock (a file identifier and a page number).Lockers (__db_locker):	Identifies a specific locker ID and maintains the head of a list of	locks held by a locker (for using during transaction commit/abort).Locks (__db_lock):	Describes a particular object lock held on behalf of a particular	locker id.Objects and Lockers reference Locks.These structures are organized via two synchronized hash tables.  Eachhash table consists of two physical arrays: the array of actual hashbuckets and an array of mutexes so we can lock individual buckets, ratherthan the whole table.One hash table contains Objects and the other hash table contains Lockers.Objects contain two lists of locks, waiters and holders: holders currentlyhold a lock on the Object, waiters are lock waiting to be granted.Lockers are a single linked list that connects the Locks held on behalfof the specific locker ID.In the diagram below:Locker ID #1 holds a lock on Object #1 (L1) and Object #2 (L5), and iswaiting on a lock on Object #1 (L3).Locker ID #2 holds a lock on Object #1 (L2) and is waiting on a lock forObject #2 (L7).Locker ID #3 is waiting for a lock on Object #2 (L6).	OBJECT                   -----------------------	HASH                     |                     |                             ----|-------------        |	________    _______  |   |   ________ |        |	|	|-->| O1  |--|---|-->|  O2  | |        |	|_______|   |_____|  |   |   |______| V        |	|	|    W  H--->L1->L2   W  H--->L5       |	holders	|_______|    |       |   |    |                V	|	|    ------->L3  \    ------->L6------>L7	waiters	|_______|           /     \            \	.	.          /       \            \	.	.          |        \            \	.	.          |         \            -----------	|_______|          |          --------------        |	|	|      ____|____                ___|_____  _|______	|_______|      |       |                |       |  |      |	|	|      | LID1  |                |  LID2 |  | LID3 |	|_______|      |_______|                |_______|  |______|			   ^                        ^        ^			   |                        |        |			___|________________________|________|___	       LOCKER	|    |    |    |    |    |    |    |    |	       HASH	|    |    |    |    |    |    |    |    |			|    |    |    |    |    |    |    |    |			|____|____|____|____|____|____|____|____|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=2. Synchronization=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=There are four types of mutexes in the subsystem.Object mutexes;	These map one-to-one to each bucket in the Object hash table.	Holding a mutex on an Object bucket secures all the Objects in	that bucket as well as the Lock structures linked from those	Objects.  All fields in the Locks EXCEPT the Locker links (the	links that attach Locks by Locker ID) are protected by these	mutexes.Locker mutexes:	These map one-to-one to each bucket in the Locker hash table.	Holding a mutex on a Locker bucket secures the Locker structures	and the Locker links in the Locks.Memory mutex:	This mutex allows calls to allocate/free memory, i.e. calls to	__db_shalloc and __db_shalloc_free, as well as manipulation of	the Object, Locker and Lock free lists.Region mutex:	This mutex is currently only used to protect the locker ids.	It may also be needed later to provide exclusive access to	the region for deadlock detection.Creating or removing a Lock requires locking both the Object lock and theLocker lock (and eventually the shalloc lock to return the item to thefree list).The locking hierarchy is as follows:	The Region mutex may never be acquired after any other mutex.	The Object mutex may be acquired after the Region mutex.	The Locker mutex may be acquired after the Region and Object	mutexes.	The Memory mutex may be acquired after any mutex.So, if both and Object mutex and a Locker mutex are going to be acquired,the Object mutex must be acquired first.The Memory mutex may be acquired after any other mutex, but no other mutexescan be acquired once the Memory mutex is held.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=3. The algorithms:=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=The locking subsystem supports four basic operations:	Get a Lock (lock_get)	Release a Lock (lock_put)	Release all the Locks on a specific Object (lock_vec)	Release all the Locks for a specific Locker (lock_vec)Get a lock:	Acquire Object bucket mutex.	Acquire Locker bucket mutex.	Acquire Memory mutex.	If the Object does not exist		Take an Object off the freelist.	If the Locker doesn't exist		Take a Locker off the freelist.	Take a Lock off the free list.	Release Memory mutex.	Add Lock to the Object list.	Add Lock to the Locker list.	Release Locker bucket mutex	If the lock cannot be granted		Release Object bucket mutex		Acquire lock mutex (blocks)		Acquire Object bucket mutex		If lock acquisition did not succeed (e.g, deadlock)			Acquire Locker bucket mutex			If locker should be destroyed				Remove locker from hash table				Acquire Memory mutex				Return locker to free list				Release Memory mutex			Release Locker bucket mutex			If object should be released				Acquire Memory mutex				Return object to free list				Release Memory mutex	Release Object bucket mutexRelease a lock:	Acquire Object bucket mutex.		(Requires that we be able to find the Object hash bucket		without looking inside the Lock itself.)	If releasing a single lock and the user provided generation number	doesn't match the Lock's generation number, the Lock has been reused	and we return failure.	Enter lock_put_internal:		if the Lock is still on the Object's lists:			Increment Lock's generation number.			Remove Lock from the Object's list (NULL link fields).			Promote locks for the Object.		Enter locker_list_removal			Acquire Locker bucket mutex.			If Locker doesn't exist:				Release Locker bucket mutex				Release Object bucket mutex				Return error.			Else if Locker marked as deleted:				dont_release = TRUE			Else				Remove Lock from Locker list.				If Locker has no more locks					Remove Locker from table.					Acquire Memory mutex.					Return Locker to free list					Release Memory mutex			Release Locker bucket mutex.		Exit locker_list_removal		If (!dont_release)			Acquire Memory mutex			Return Lock to free list			Release Memory mutex	Exit lock_put_internal	Release Object bucket mutexRelease all the Locks on a specific Object (lock_vec, DB_PUT_ALL_OBJ):	Acquire Object bucket mutex.	For each lock on the waiter list:		lock_put_internal	For each lock on the holder list:		lock_put_internal	Release Object bucket mutex.Release all the Locks for a specific Locker (lock_vec, DB_PUT_ALL):	Acquire Locker bucket mutex.	Mark Locker deleted.	Release Locker mutex.	For each lock on the Locker's list:		Remove from locker's list			(The lock could get put back on the free list in			lock_put and then could get reallocated and the			act of setting its locker links could clobber us.)		Perform "Release a Lock" above: skip locker_list_removal.	Acquire Locker bucket mutex.	Remove Locker	Release Locker mutex.	Acquire Memory mutex	Return Locker to free list	Release Memory mutexDeadlock detection (lock_detect):	For each bucket in Object table		Acquire the Object bucket mutex.		create waitsfor	For each bucket in Object table		Release the Object mutex.=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=FAQ:=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=Q: Why do you need generation numbers?A: If a lock has been released due to a transaction abort (potentially in a   different process), and then lock is released by a thread of control   unaware of the abort, the lock might have potentially been re-allocated   to a different object.  The generation numbers detect this problem.   Note, we assume that reads/writes of lock generation numbers are atomic,   if they are not, it is theoretically possible that a re-allocated lock   could be mistaken for another lock.Q: Why is is safe to walk the Locker list without holding any mutexes at   all?A: Locks are created with both the Object and Locker bucket mutexes held.   Once created, they removed in two ways:   a) when a specific Lock is released, in which case, the Object and   Locker bucket mutexes are again held, and   b) when all Locks for a specific Locker Id is released.   In case b), the Locker bucket mutex is held while the Locker chain is   marked as "destroyed", which blocks any further access to the Locker   chain.  Then, each individual Object bucket mutex is acquired when each   individual Lock is removed.Q: What are the implications of doing fine grain locking?A: Since we no longer globally lock the entire region, lock_vec will no   longer be atomic.  We still execute the items in a lock_vec in order,   so things like lock-coupling still work, but you can't make any   guarantees about atomicity.Q: How do I configure for FINE_GRAIN locking?A: We currently do not support any automatic configuration for FINE_GRAIN   locking.  When we do, will need to document that atomicity discussion   listed above (it is bug-report #553).

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国产精品免费| 国产成人精品在线看| 色综合天天综合| 久久久久久久性| 国产二区国产一区在线观看| 日韩电影在线观看网站| 日本韩国欧美三级| 亚洲综合视频在线观看| 欧美乱熟臀69xxxxxx| 亚洲电影一区二区| 日韩你懂的电影在线观看| 国产专区欧美精品| 亚洲欧美另类久久久精品| 欧美图片一区二区三区| 强制捆绑调教一区二区| 久久伊人蜜桃av一区二区| 成人app在线观看| 天天综合日日夜夜精品| 久久久久久久久久久久久久久99| 成人午夜av在线| 亚洲国产成人tv| 26uuu色噜噜精品一区二区| 99九九99九九九视频精品| 日韩经典中文字幕一区| 中文字幕精品综合| 欧美久久久久久蜜桃| 国产精品系列在线播放| 亚洲国产日韩精品| 国产精品白丝在线| 日韩一区二区三区视频在线| 国产jizzjizz一区二区| 日本欧美韩国一区三区| 国产日韩av一区二区| 欧美一区二区高清| 99久久精品国产观看| 美女一区二区视频| 亚洲va欧美va人人爽午夜| 欧美国产精品专区| 国产午夜亚洲精品羞羞网站| 欧美三级资源在线| 色综合天天性综合| 国产精品66部| 国产精品18久久久久久久久久久久 | 国产原创一区二区| 免费成人在线影院| 日韩国产成人精品| 亚洲男帅同性gay1069| 欧美v日韩v国产v| 欧美一级视频精品观看| 欧美日韩一区 二区 三区 久久精品| 国产成人精品一区二区三区四区| 人人狠狠综合久久亚洲| 日日摸夜夜添夜夜添亚洲女人| 一区二区三区国产| 亚洲成在线观看| 青青草成人在线观看| 蜜臀精品久久久久久蜜臀| 奇米一区二区三区av| 久久国产福利国产秒拍| 国产麻豆精品theporn| 国产91精品欧美| 欧美无乱码久久久免费午夜一区| 欧洲精品视频在线观看| 欧美日韩国产美女| 精品国产精品网麻豆系列| 久久精品一级爱片| 亚洲午夜免费视频| 日韩1区2区3区| av中文字幕一区| 亚洲色图在线播放| 蜜臀av一区二区在线观看| 麻豆精品一区二区综合av| 成人一级片网址| 欧美成人官网二区| 亚洲福利一二三区| 欧美一区二区三区视频在线 | 色国产精品一区在线观看| 日韩一区二区在线看| 国产精品成人网| 久草热8精品视频在线观看| 成人午夜在线免费| 日韩欧美不卡在线观看视频| 亚洲日韩欧美一区二区在线| 免费看欧美女人艹b| 欧美制服丝袜第一页| 亚洲欧美自拍偷拍色图| 国内精品伊人久久久久影院对白| 91福利在线播放| 中文字幕av不卡| 懂色av噜噜一区二区三区av| 欧美一区二区国产| 轻轻草成人在线| 欧美一级精品在线| 亚洲不卡av一区二区三区| 日本高清视频一区二区| 亚洲欧美激情视频在线观看一区二区三区| 久久国产乱子精品免费女| 7777精品伊人久久久大香线蕉 | 看片的网站亚洲| 欧美日韩三级一区| 亚洲综合成人在线视频| 日本精品一区二区三区四区的功能| 国产精品女主播在线观看| av色综合久久天堂av综合| 综合色中文字幕| 欧美影院午夜播放| 日韩不卡手机在线v区| 精品久久五月天| 成人一区在线看| 亚洲一区国产视频| 日韩一区二区在线看片| 国产一区二区在线观看免费| 久久看人人爽人人| 99久久国产免费看| 亚洲va欧美va国产va天堂影院| 日韩午夜在线影院| 99re在线精品| 九九视频精品免费| 悠悠色在线精品| 26uuu精品一区二区三区四区在线| 国产·精品毛片| 午夜精品久久久| 中文字幕在线一区| 欧美精品777| 91免费观看国产| 蜜桃视频第一区免费观看| 最新热久久免费视频| 日韩欧美激情一区| 国产91富婆露脸刺激对白| 精品国产污污免费网站入口 | 欧美日韩你懂的| 国产一区二区三区四区五区入口| 国产精品看片你懂得| 欧美精品高清视频| 国产激情一区二区三区桃花岛亚洲| 最近日韩中文字幕| 精品欧美久久久| 91精品办公室少妇高潮对白| 久草热8精品视频在线观看| 亚洲一区在线看| 亚洲国产精品成人综合色在线婷婷| 在线中文字幕不卡| av中文字幕不卡| 国产麻豆精品视频| 国产一区久久久| 精品在线播放午夜| 日韩**一区毛片| 日韩主播视频在线| 亚洲国产另类av| 亚洲精品日韩一| 日韩无一区二区| 日韩一区二区三区免费观看| 91丨九色丨蝌蚪丨老版| 国产91精品免费| 成人网男人的天堂| 国产成人免费在线视频| 久久国产精品72免费观看| 青青青伊人色综合久久| 亚洲国产精品精华液网站| 国产精品久久久久久久第一福利| 国产欧美精品在线观看| 久久九九久久九九| 国产日韩欧美综合在线| 国产精品久久网站| 亚洲欧美另类在线| 丝袜美腿亚洲综合| 美国十次了思思久久精品导航| 麻豆免费精品视频| 国产一区 二区 三区一级| 成人精品电影在线观看| 色婷婷国产精品久久包臀| 成人av网站免费观看| 欧美精品一区二区精品网| 久久精品欧美日韩| 2023国产一二三区日本精品2022| 久久综合九色欧美综合狠狠| 亚洲一区二区三区爽爽爽爽爽 | 国产成人在线免费| 精品久久久久久无| 欧美国产日本韩| 福利电影一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 国产精品自在在线| 精品国产乱码久久久久久久| 奇米亚洲午夜久久精品| 91精品国产综合久久久久久久 | 国产经典欧美精品| 国产欧美日韩另类视频免费观看| 九一久久久久久| 久久久久国产精品麻豆| 国产精品一卡二| 欧美大片顶级少妇| 国产激情偷乱视频一区二区三区| 国产午夜精品福利| 日本道免费精品一区二区三区| 国产欧美一区二区在线| 色呦呦日韩精品| 欧美aaa在线| 日韩限制级电影在线观看| 国内成+人亚洲+欧美+综合在线|