Resource allocation graph: shows state of system to see if there is deadlock or not
process pointing to resource = wants, resource pointing to process = owned by
No cycles in RAG = no deadlock
if cycles in RAG and only one instance per resource = deadlock
if RAG has cycle but several instances per resource then there may yet be hope
no deadlock as P2 will finish
Amdahl's law = how much performance gain is achievable by parralleling. max relative speed up - old execution time / optimised execution time . (base 'improvement' factor before optimisation = 1)
deriving Amdahl: total execution time = time for serial + time for paralisable. ergo p = t - s. p can be split by cores so newP = p/cores = (t - s)/c. The k serialisable optimisation factor also slims down s by k so t(k,n) = s/k + p/n
L improvement bound is ratio of old time over better time = total time / optimised serial + divided parallelisable = the factors x the ratio of time their respective parts were taking of the total
if there was no serialisable part (100%) parrallelisable, the increase in performance would be linear
strongly connected = just all connected, terminal = no outside connections
stm = software transactional memory
data parrallellism = the data not the actions are protected
transaction handling: a transaction symbolises a unit of work that is processed in a reliable, independent way by the database
reliable = allow correct recovery from failures
stm = a pattern to achieve data parallelism
stm flow: identify data needed in memory and log. take copy. change copy. commit copy atomically to memory, discard and retry if fail
stm stilll has issues with starvation, fairness and ensuring an end result