Topic: concurrency control by monitors
Topic: critical regions
Topic: database implementation
Topic: database transactions
Topic: deadlocks
Topic: lock-free concurrency
Topic: optimistic update for concurrency control
Topic: race conditions
Topic: updating information in a distributed system
| |
Summary
Locking is the primary method for updating shared data. If you acquire a lock, then you can guarantee that no other process is reading and updating the information at the same time. Read and write operations may be locked. A monitor prevents concurrent use of a shared resource.
Database systems use locks to implement transactions and two-phase commit.
Locking may lead to deadlocks and livelock. Not locking may lead to race conditions and inconsistent data. (cbb 8/06)
Subtopic: locking and concurrency
Quote: for concurrency, locking data is more fundamental than multi-tasking [»stroB_1994]
| Subtopic: lock as ownership
Quote: holding a lock implies ownership of the data [»stefM1_1987]
| Subtopic: lock as reservation
Quote: use thread lock reservations for faster locking without atomic operations; needs one bit and a shared word of the object header [»kawaK11_2002]
| Quote: use floor-passing or reservations to avoid conflicting updates to a shared window [»sariS10_1985]
| Quote: avoid conflicting updates by graying out screen items that are in use [»stefM1_1987]
| Subtopic: lock allocation
Quote: automatic lock allocation by instrumentation and 0-1 integer linear programming; use with Autolocker [»emmiM1_2007]
| Subtopic: release lock
Quote: use destructors to release a lock for exclusive access to data; simpler, more reliable, handles exceptions
| Subtopic: redundant locking
Quote: use 'confine' and 'restrict' to track lock state; removed spurious type errors in 138 of 152 device driver modules [»aikeA6_2003]
| Subtopic: file-level commit
Quote: Helix uses two-phase commit and file sets to implement transactions (large-scale atomic actions) [»fridM5_1985]
| Quote: if a Helix application program succeeds, its file set is committed [»fridM5_1985]
| Quote: a commit (snapshot) in Helix colors all blocks red; must write them to new addresses [»fridM5_1985]
| Quote: while Unix does not have user-level locks, it has internal locks for maintaining the logical consistency of the file system [»ritcDM7_1978a]
| Subtopic: powerfail reliability
Quote: commitment works well in Helix; no shut-down command is provided; take down file servers by pressing reset or turning off [»fridM5_1985]
| Quote: if a Helix application program fails, all resources in its file set are released
| Subtopic: write vs. read
Quote: Guava has non-exclusive read locks and exclusive update locks; better than Java's synchronized methods [»bacoDF10_2000]
| Quote: Helix access mode consists of type (read, write) and a lock (copy, original, exclusive);
| Quote: a Helix object can have one committable instance, i.e., write-original or write-exclusive access mode; other modes allow sharing and concurrency [»fridM5_1985]
| Subtopic: avoid global locks
Quote: SDD-1 does not require that every transaction use global locking to update data [»bernPA5_1978]
| Quote: since a monitor locks an entire data structure, PORTAL has resources to lock individual data items; i.e., semaphores [»schiR4_1980]
| Quote: instructions for lock manipulation are expensive, compound atomic operations; e.g., compare and swap [»kawaK11_2002]
|
Related Topics
Topic: concurrency control by monitors (24 items)
Topic: critical regions (58 items)
Topic: database implementation (18 items)
Topic: database transactions (27 items)
Topic: deadlocks (21 items)
Topic: lock-free concurrency (8 items)
Topic: optimistic update for concurrency control (35 items)
Topic: race conditions (33 items)
Topic: updating information in a distributed system (50 items)
|