\newcommand{\etalchar}[1]{$^{#1}$}
\begin{thebibliography}{SATG{\etalchar{+}}09}

\bibitem[aCB08]{SETIatHOME2008}
University at~California~Berkeley.
\newblock {SETI}@{HOME}.
\newblock Available: \url{http://setiathome.berkeley.edu/} [Viewed January 31,
  2008], December 2008.

\bibitem[ACMS03]{Arcangeli03}
Andrea Arcangeli, Mingming Cao, Paul~E. McKenney, and Dipankar Sarma.
\newblock Using read-copy update techniques for {System V IPC} in the {Linux}
  2.5 kernel.
\newblock In {\em Proceedings of the 2003 USENIX Annual Technical Conference
  (FREENIX Track)}, pages 297--310. USENIX Association, June 2003.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf}
  [Viewed November 21, 2007].

\bibitem[Adv02]{AMDOpteron02}
Advanced Micro Devices.
\newblock {\em AMD x86-64 Architecture Programmer's Manual Volumes 1-5}, 2002.

\bibitem[Adv07]{AMDOpteron:2:2007}
Advanced Micro Devices.
\newblock {\em AMD x86-64 Architecture Programmer's Manual Volume 2: System
  Programming}, 2007.

\bibitem[Ale79]{Alexander79}
Christopher Alexander.
\newblock {\em The Timeless Way of Building}.
\newblock Oxford University Press, New York, 1979.

\bibitem[Amd67]{GeneAmdahl1967AmdahlsLaw}
Gene Amdahl.
\newblock Validity of the single processor approach to achieving large-scale
  computing capabilities.
\newblock In {\em AFIPS Conference Proceedings}, pages 483--485, Washington,
  DC, USA, 1967. IEEE Computer Society.

\bibitem[ARM10]{ARMv7A:2010}
ARM Limited.
\newblock {\em ARM Architecture Reference Manual: ARMv7-A and ARMv7-R Edition},
  2010.

\bibitem[ATS09]{Ali-Reza-Adl-Tabatabai2009CppTM}
Ali-Reza Adl-Tabatabai and Tatiana Shpeisman.
\newblock Draft specification of transactional language constructs for c++.
\newblock
  http://research.sun.com/scalable/pubs/C++-transactional-constructs-1.0.pdf,
  August 2009.

\bibitem[BA01]{Bonwick01slab}
Jeff Bonwick and Jonathan Adams.
\newblock Magazines and vmem: Extending the slab allocator to many {CPUs} and
  arbitrary resources.
\newblock In {\em {USENIX} Annual Technical Conference, General Track 2001},
  pages 15--33, 2001.

\bibitem[BC05]{BovetCesati2005}
Daniel Bovet and Marco Cesati.
\newblock {\em Understanding the Linux Kernel}.
\newblock O'Reilly Media, Inc., third edition, 2005.

\bibitem[BHS07]{BuschmannHenneySchmidt2007v4Textbook}
Frank Buschmann, Kevlin Henney, and Douglas~C. Schmidt.
\newblock {\em Pattern-Oriented Software Architecture Volume 4: A Pattern
  Language for Distributed Computing}.
\newblock Wiley, Chichester, West Sussex, England, 2007.

\bibitem[BK85]{Beck85}
Bob Beck and Bob Kasten.
\newblock {VLSI} assist in building a multiprocessor {UNIX} system.
\newblock In {\em USENIX Conference Proceedings}, pages 255--275, Portland, OR,
  June 1985. USENIX Association.

\bibitem[BLM05]{Blundell2005DebunkTM}
C.~Blundell, E.~C. Lewis, and M.~Martin.
\newblock Deconstructing transactional semantics: The subtleties of atomicity.
\newblock In {\em Annual Workshop on Duplicating, Deconstructing, and Debunking
  (WDDD)}, June 2005.
\newblock Available:
  \url{http://www.cis.upenn.edu/acg/papers/wddd05_atomic_semantics.pdf} [Viewed
  June 4, 2009].

\bibitem[BLM06]{Blundell2006TMdeadlock}
C.~Blundell, E.~C. Lewis, and M.~Martin.
\newblock Subtleties of transactional memory and atomicity semantics.
\newblock {\em Computer Architecture Letters}, 5(2), 2006.
\newblock Available:
  \url{http://www.cis.upenn.edu/acg/papers/cal06_atomic_semantics.pdf} [Viewed
  June 4, 2009].

\bibitem[Boe09]{HansJBoehm2009HOTPAR}
Hans-J. Boehm.
\newblock Transactional memory should be an implementation technique, not a
  programming interface.
\newblock In {\em HOTPAR 2009}, page~6, Berkeley, CA, USA, March 2009.
\newblock Available:
  \url{http://www.usenix.org/event/hotpar09/tech/full_papers/boehm/boehm.pdf}
  [Viewed May 24, 2009].

\bibitem[But97]{Butenhof1997pthreads}
David Butenhof.
\newblock {\em Programming with {POSIX} Threads}.
\newblock Addison-Wesley, Boston, MA, USA, 1997.

\bibitem[Cor06]{JonathanCorbet2006lockdep}
Jonathan Corbet.
\newblock The kernel lock validator.
\newblock Available: \url{http://lwn.net/Articles/185666/} [Viewed: March 26,
  2010], May 2006.

\bibitem[Cor08]{CorbetLWN}
Jonathan Corbet.
\newblock Linux weekly news.
\newblock Available: \url{http://lwn.net/} [Viewed November 26, 2008], November
  2008.

\bibitem[CRKH05]{CorbetRubiniKroahHartman}
Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman.
\newblock {\em Linux Device Drivers}.
\newblock O'Reilly Media, Inc., third edition, 2005.

\bibitem[CSG99]{DavidECuller1999}
David~E. Culler, Jaswinder~Pal Singh, and Anoop Gupta.
\newblock {\em Parallel Computer Architecture: a Hardware/Software Approach}.
\newblock Morgan Kaufman, 1999.

\bibitem[DCW{\etalchar{+}}11]{LukeDalessandro:2011:ASPLOS:HybridNOrecSTM:deque}
Luke Dalessandro, Francois Carouge, Sean White, Yossi Lev, Mark Moir,
  Michael~L. Scott, and Michael~F. Spear.
\newblock Hybrid norec: A case study in the effectiveness of best effort
  hardware transactional memory.
\newblock In {\em Proceedings of the 16th International Conference on
  Architectural Support for Programming Languages and Operating Systems
  (ASPLOS)}, ASPLOS '11, pages ???--???, New York, NY, USA, 2011. ACM.

\bibitem[Des09]{MathieuDesnoyers2009URCU}
Mathieu Desnoyers.
\newblock [{RFC} git tree] userspace {RCU} (urcu) for {Linux}.
\newblock Available: \url{http://lkml.org/lkml/2009/2/5/572}
  \url{http://lttng.org/urcu} [Viewed February 20, 2009], February 2009.

\bibitem[Dij71]{Dijkstra1971HOoSP}
Edsger~W. Dijkstra.
\newblock Hierarchical ordering of sequential processes.
\newblock {\em Acta Informatica}, 1(2):115--138, 1971.
\newblock Available:
  \url{http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD310.PDF} [Viewed January
  13, 2008].

\bibitem[DLM{\etalchar{+}}10]{DavidDice:2010:SCA:HTM:deque}
Dave Dice, Yossi Lev, Virendra~J. Marathe, Mark Moir, Dan Nussbaum, and Marek
  Oleszewski.
\newblock Simplifying concurrent algorithms by exploiting hardware
  transactional memory.
\newblock In {\em Proceedings of the 22nd ACM symposium on Parallelism in
  algorithms and architectures}, SPAA '10, pages 325--334, New York, NY, USA,
  2010. ACM.

\bibitem[DLMN09]{DaveDice2009ASPLOSRockHTM}
Dave Dice, Yossi Lev, Mark Moir, and Dan Nussbaum.
\newblock Early experience with a commericial hardware transactional memory
  implementation.
\newblock In {\em Fourteenth International Conference on Architectural Support
  for Programming Languages and Operating Systems (ASPLOS '09)}, pages
  157--168, Washington, DC, USA, March 2009.
\newblock Available:
  \url{http://research.sun.com/scalable/pubs/ASPLOS2009-RockHTM.pdf} [Viewed
  February 4, 2009].

\bibitem[Dov90]{Dove90}
Ken~F. Dove.
\newblock A high capacity {TCP/IP} in parallel {STREAMS}.
\newblock In {\em UKUUG Conference Proceedings}, London, June 1990.

\bibitem[DSS06]{DaveDice2006DISC}
Dave Dice, Ori Shalev, and Nir Shavit.
\newblock Transactional locking {II}.
\newblock In {\em Proc. International Symposium on Distributed Computing}.
  Springer Verlag, 2006.
\newblock Available:
  \url{http://www.springerlink.com/content/5688h5q0w72r54x0/} [Viewed March 10,
  2008].

\bibitem[EGCD03]{ElGhazawi2003UPC}
T.~A. El-Ghazawi, W.~W. Carlson, and J.~M. Draper.
\newblock {UPC} language specifications v1.1.
\newblock Available: \url{http://upc.gwu.edu} [Viewed September 19, 2008], May
  2003.

\bibitem[Eng68]{DouglasEngelbart1968}
Douglas Engelbart.
\newblock The demo.
\newblock Available:
  \url{http://video.google.com/videoplay?docid=-8734787622017763097} [Viewed
  November 28, 2008], December 1968.

\bibitem[ENS05]{RyanEccles2005HPCSNovice}
Ryan Eccles, Blair Nonneck, and Deborah~A. Stacey.
\newblock Exploring parallel programming knowledge in the novice.
\newblock In {\em HPCS '05: Proceedings of the 19th International Symposium on
  High Performance Computing Systems and Applications}, pages 97--102,
  Washington, DC, USA, 2005. IEEE Computer Society.

\bibitem[ES05]{RyanEccles2006HPCSNoviceNeeds}
Ryan Eccles and Deborah~A. Stacey.
\newblock Understanding the parallel programmer.
\newblock In {\em HPCS '05: Proceedings of the 19th International Symposium on
  High Performance Computing Systems and Applications}, pages 156--160,
  Washington, DC, USA, 2005. IEEE Computer Society.

\bibitem[Gar90]{Garg90}
Arun Garg.
\newblock Parallel {STREAMS}: a multi-processor implementation.
\newblock In {\em USENIX Conference Proceedings}, pages 163--176, Berkeley CA,
  February 1990. USENIX Association.

\bibitem[Gar07]{BryanGardiner2007}
Bryan Gardiner.
\newblock Idf: Gordon moore predicts end of moore's law (again).
\newblock Available:
  \url{http://blog.wired.com/business/2007/09/idf-gordon-mo-1.html} [Viewed:
  November 28, 2008], September 2007.

\bibitem[GC96]{Cheriton96a}
Michael Greenwald and David~R. Cheriton.
\newblock The synergy between non-blocking synchronization and operating system
  structure.
\newblock In {\em Proceedings of the Second Symposium on Operating Systems
  Design and Implementation}, pages 123--136, Seattle, WA, October 1996. USENIX
  Association.

\bibitem[Gha95]{Gharachorloo95}
Kourosh Gharachorloo.
\newblock Memory consistency models for shared-memory multiprocessors.
\newblock Technical Report CSL-TR-95-685, Computer Systems Laboratory,
  Departments of Electrical Engineering and Computer Science, Stanford
  University, Stanford, CA, December 1995.
\newblock Available:
  \url{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-9.pdf} [Viewed:
  October 11, 2004].

\bibitem[GHJV95]{GOF95}
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.
\newblock {\em Design Patterns: Elements of Reusable Object-Oriented Software}.
\newblock Addison-Wesley, 1995.

\bibitem[GKAS99]{Gamsa99}
Ben Gamsa, Orran Krieger, Jonathan Appavoo, and Michael Stumm.
\newblock Tornado: Maximizing locality and concurrency in a shared memory
  multiprocessor operating system.
\newblock In {\em {Proceedings of the 3\textsuperscript{rd} Symposium on
  Operating System Design and Implementation}}, pages 87--100, New Orleans, LA,
  February 1999.
\newblock Available:
  \url{http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf} [Viewed
  August 30, 2006].

\bibitem[GMTW08]{DinakarGuniguntala2008IBMSysJ}
D.~Guniguntala, P.~E. McKenney, J.~Triplett, and J.~Walpole.
\newblock The read-copy-update mechanism for supporting real-time applications
  on shared-memory multiprocessor systems with {Linux}.
\newblock {\em IBM Systems Journal}, 47(2):221--236, May 2008.
\newblock Available:
  \url{http://www.research.ibm.com/journal/sj/472/guniguntala.pdf} [Viewed
  April 24, 2008].

\bibitem[GPB{\etalchar{+}}07]{Goetz2007Textbook}
Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug
  Lea.
\newblock {\em Java: Concurrency in Practice}.
\newblock Addison Wesley, Upper Saddle River, NJ, USA, 2007.

\bibitem[Gra02]{JimGray2002SmokingHairyGolfBalls}
Jim Gray.
\newblock Super-servers: Commodity computer clusters pose a software challenge.
\newblock Available:
  \url{http://research.microsoft.com/en-us/um/people/gray/papers/superservers(%
4t_computers).doc} [Viewed: June 23, 2004], April 2002.

\bibitem[Gri00]{ScottGriffen2000}
Scott Griffen.
\newblock Internet pioneers: Doug englebart.
\newblock Available: \url{http://www.ibiblio.org/pioneers/englebart.html}
  [Viewed November 28, 2008], May 2000.

\bibitem[Gro01]{TheOpenGroup1997SUS}
The~Open Group.
\newblock Single {UNIX} specification.
\newblock \url{http://www.opengroup.org/onlinepubs/007908799/index.html}, July
  2001.

\bibitem[Gro07]{DanGrossman2007TMGCAnalogy}
Dan Grossman.
\newblock The transactional memory / garbage collection analogy.
\newblock In {\em {OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN
  conference on Object oriented programming systems and applications}}, pages
  695--706, New York, NY, USA, October 2007. ACM.
\newblock Available:
  \url{http://www.cs.washington.edu/homes/djg/papers/analogy_oopsla07.pdf}
  [Viewed December 19, 2008].

\bibitem[HCS{\etalchar{+}}05]{LorinHochstein2005SC}
Lorin Hochstein, Jeff Carver, Forrest Shull, Sima Asgari, and Victor Basili.
\newblock Parallel programmer productivity: A case study of novice parallel
  programmers.
\newblock In {\em SC '05: Proceedings of the 2005 ACM/IEEE conference on
  Supercomputing}, page~35, Washington, DC, USA, 2005. IEEE Computer Society.

\bibitem[Her90]{MauriceHerlihy90a}
Maurice~P. Herlihy.
\newblock A methodology for implementing highly concurrent data structures.
\newblock In {\em Proceedings of the 2nd ACM SIGPLAN Symposium on Principles
  and Practice of Parallel Programming}, pages 197--206, March 1990.

\bibitem[Her05]{MauriceHerlihy2005-TM-manifesto.pldi}
Maurice Herlihy.
\newblock The transactional manifesto: software engineering and non-blocking
  synchronization.
\newblock In {\em PLDI '05: Proceedings of the 2005 ACM SIGPLAN conference on
  Programming language design and implementation}, pages 280--280, New York,
  NY, USA, 2005. ACM Press.

\bibitem[HM93]{Herlihy93a}
Maurice Herlihy and J.~Eliot~B. Moss.
\newblock Transactional memory: Architectural support for lock-free data
  structures.
\newblock {\em The 20\textsuperscript{th} Annual International Symposium on
  Computer Architecture}, pages 289--300, May 1993.

\bibitem[HMB06]{ThomasEHart2006a}
Thomas~E. Hart, Paul~E. McKenney, and Angela~Demke Brown.
\newblock Making lockless synchronization fast: Performance implications of
  memory reclamation.
\newblock In {\em 20\textsuperscript{th} {IEEE} International Parallel and
  Distributed Processing Symposium}, Rhodes, Greece, April 2006.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} [Viewed April
  28, 2008].

\bibitem[Hol03]{Holzmann03a}
Gerard~J. Holzmann.
\newblock {\em The {Spin} Model Checker: Primer and Reference Manual}.
\newblock Addison-Wesley, 2003.

\bibitem[HP95]{Hennessy95a}
John~L. Hennessy and David~A. Patterson.
\newblock {\em Computer Architecture: A Quantitative Approach}.
\newblock Morgan Kaufman, 1995.

\bibitem[HS08]{HerlihyShavit2008Textbook}
Maurice Herlihy and Nir Shavit.
\newblock {\em The Art of Multiprocessor Programming}.
\newblock Morgan Kaufmann, Burlington, MA, USA, 2008.

\bibitem[HW92]{WilsonCHsieh92a}
Wilson~C. Hsieh and William~E. Weihl.
\newblock Scalable reader-writer locks for parallel systems.
\newblock In {\em Proceedings of the 6\textsuperscript{th} International
  Parallel Processing Symposium}, pages 216--230, Beverly Hills, CA, USA, March
  1992.

\bibitem[{IBM}94]{PowerPC94}
{IBM Microelectronics and Motorola}.
\newblock {\em PowerPC Microprocessor Family: The Programming Environments},
  1994.

\bibitem[Inm85]{Inman85}
Jack Inman.
\newblock Implementing loosely coupled functions on tightly coupled engines.
\newblock In {\em USENIX Conference Proceedings}, pages 277--298, Portland, OR,
  June 1985. USENIX Association.

\bibitem[{Int}92]{DIS9075SQL92}
{International Standards Organization}.
\newblock {\em Information Technology - Database Language {SQL}}.
\newblock ISO, 1992.
\newblock Available:
  \url{http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt} [Viewed
  September 19, 2008].

\bibitem[{Int}02a]{IntelItanium02v3}
{Intel Corporation}.
\newblock {\em Intel Itanium Architecture Software Developer's Manual Volume 3:
  Instruction Set Reference}, 2002.

\bibitem[{Int}02b]{IntelItanium02v2}
{Intel Corporation}.
\newblock {\em Intel Itanium Architecture Software Developer's Manual Volume 3:
  System Architecture}, 2002.

\bibitem[{Int}04a]{IntelXeonV2b-96a}
{Intel Corporation}.
\newblock {\em IA-32 Intel Architecture Software Developer's Manual Volume 2B:
  Instruction Set Reference, N-Z}, 2004.
\newblock Available:
  \url{ftp://download.intel.com/design/Pentium4/manuals/25366714.pdf} [Viewed:
  February 16, 2005].

\bibitem[{Int}04b]{IntelXeonV3-96a}
{Intel Corporation}.
\newblock {\em IA-32 Intel Architecture Software Developer's Manual Volume 3:
  System Programming Guide}, 2004.
\newblock Available:
  \url{ftp://download.intel.com/design/Pentium4/manuals/25366814.pdf} [Viewed:
  February 16, 2005].

\bibitem[{Int}04c]{IBMzSeries04a}
{International Business Machines Corporation}.
\newblock {z/Architecture} principles of operation.
\newblock Available:
  \url{http://publibz.boulder.ibm.com/epubs/pdf/dz9zr003.pdf} [Viewed: February
  16, 2005], May 2004.

\bibitem[{Int}07]{Intelx86MemoryOrdering2007}
{Intel Corporation}.
\newblock {\em Intel 64 Architecture Memory Ordering White Paper}, 2007.
\newblock Available:
  \url{http://developer.intel.com/products/processor/manuals/318147.pdf}
  [Viewed: September 7, 2007].

\bibitem[{Int}09]{Intel64IA32v3A2009}
{Intel Corporation}.
\newblock {\em Intel 64 and IA-32 Architectures Software Developer’s Manual,
  Volume 3A: System Programming Guide, Part 1}, 2009.
\newblock Available:
  \url{http://download.intel.com/design/processor/manuals/253668.pdf} [Viewed:
  November 8, 2009].

\bibitem[Jia08]{LaiJiangshan2008NewClassicAlgorithm}
Lai Jiangshan.
\newblock [{RFC}][{PATCH}] rcu classic: new algorithm for callbacks-processing.
\newblock Available: \url{http://lkml.org/lkml/2008/6/2/539} [Viewed December
  10, 2008], June 2008.

\bibitem[Kan96]{GerryKane96a}
Gerry Kane.
\newblock {\em {PA-RISC} 2.0 Architecture}.
\newblock Hewlett-Packard Professional Books, 1996.

\bibitem[KL80]{Kung80}
H.~T. Kung and Q.~Lehman.
\newblock Concurrent maintenance of binary search trees.
\newblock {\em ACM Transactions on Database Systems}, 5(3):354--382, September
  1980.
\newblock Available:
  \url{http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,} [Viewed December
  3, 2007].

\bibitem[Kni08]{JohnKnickerbocker2008:3DI}
John~U. Knickerbocker.
\newblock {3D} chip technology.
\newblock {\em IBM Journal of Research and Development}, 52(6), November 2008.
\newblock Available: \url{http://www.research.ibm.com/journal/rd52-6.html}
  [Viewed: January 1, 2009].

\bibitem[Knu73]{Knuth73}
Donald Knuth.
\newblock {\em The Art of Computer Programming}.
\newblock Addison-Wesley, 1973.

\bibitem[Lea97]{DougLea1997Textbook}
Doug Lea.
\newblock {\em Concurrent Programming in Java: Design Principles and Patterns}.
\newblock Addison Wesley Longman, Reading, MA, USA, 1997.

\bibitem[LLO09]{YossiLev2009SNZIrwlock}
Yossi Lev, Victor Luchangco, and Marek Olszewski.
\newblock Scalable reader-writer locks.
\newblock In {\em SPAA '09: Proceedings of the twenty-first annual symposium on
  Parallelism in algorithms and architectures}, pages 101--110, New York, NY,
  USA, 2009. ACM.

\bibitem[Lom77]{DBLomet1977SIGSOFT}
D.~B. Lomet.
\newblock Process structuring, synchronization, and recovery using atomic
  actions.
\newblock {\em SIGSOFT Softw. Eng. Notes}, 2(2):128--137, 1977.
\newblock Available: \url{http://portal.acm.org/citation.cfm?id=808319#}
  [Viewed June 27, 2008].

\bibitem[Lov05]{RobertLove2005}
Robert Love.
\newblock {\em Linux Kernel Development}.
\newblock Novell Press, second edition, 2005.

\bibitem[LS86]{LaninShasha1986TSM}
Vladimir Lanin and Dennis Shasha.
\newblock A symmetric concurrent b-tree algorithm.
\newblock In {\em ACM '86: Proceedings of 1986 ACM Fall joint computer
  conference}, pages 380--389, Los Alamitos, CA, USA, 1986. IEEE Computer
  Society Press.

\bibitem[LSH02]{MichaelLyons02a}
Michael Lyons, Ed~Silha, and Bill Hay.
\newblock {PowerPC} storage model and {AIX} programming.
\newblock Available:
  \url{http://www-106.ibm.com/developerworks/eserver/articles/powerpc.html}
  [Viewed: January 31, 2005], August 2002.

\bibitem[Mas92]{HMassalinPhD}
H.~Massalin.
\newblock {\em Synthesis: An Efficient Implementation of Fundamental Operating
  System Services}.
\newblock PhD thesis, Columbia University, New York, NY, 1992.

\bibitem[McK96]{McKenney95b}
Paul~E. McKenney.
\newblock {\em Pattern Languages of Program Design}, volume~2, chapter 31:
  Selecting Locking Designs for Parallel Programs, pages 501--531.
\newblock Addison-Wesley, June 1996.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/scalability/paper/mutexdesignpat.pdf}
  [Viewed February 17, 2005].

\bibitem[McK03]{McKenney03a}
Paul~E. McKenney.
\newblock Using {RCU} in the {Linux} 2.5 kernel.
\newblock {\em Linux Journal}, 1(114):18--26, October 2003.
\newblock Available: \url{http://www.linuxjournal.com/article/6993} [Viewed
  November 14, 2007].

\bibitem[McK04]{PaulEdwardMcKenneyPhD}
Paul~E. McKenney.
\newblock {\em Exploiting Deferred Destruction: An Analysis of Read-Copy-Update
  Techniques in Operating System Kernels}.
\newblock PhD thesis, OGI School of Science and Engineering at Oregon Health
  and Sciences University, 2004.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
  [Viewed October 15, 2004].

\bibitem[McK05a]{PaulMcKenney2005i}
Paul~E. McKenney.
\newblock Memory ordering in modern microprocessors, part {I}.
\newblock {\em Linux Journal}, 1(136):52--57, August 2005.
\newblock Available: \url{http://www.linuxjournal.com/article/8211}
  \url{http://www.rdrop.com/users/paulmck/scalability/paper/ordering.2007.09.1%
9a.pdf} [Viewed November 30, 2007].

\bibitem[McK05b]{PaulMcKenney2005j}
Paul~E. McKenney.
\newblock Memory ordering in modern microprocessors, part {II}.
\newblock {\em Linux Journal}, 1(137):78--82, September 2005.
\newblock Available: \url{http://www.linuxjournal.com/article/8212}
  \url{http://www.rdrop.com/users/paulmck/scalability/paper/ordering.2007.09.1%
9a.pdf} [Viewed November 30, 2007].

\bibitem[McK05c]{PaulMcKenney2005d}
Paul~E. McKenney.
\newblock Re: [fwd: Re: [patch] real-time preemption,
  -rt-2.6.13-rc4-v0.7.52-01].
\newblock Available: \url{http://lkml.org/lkml/2005/8/8/108} [Viewed March 14,
  2006], August 2005.

\bibitem[McK06]{PaulEMcKenney2006c}
Paul~E. McKenney.
\newblock Sleepable {RCU}.
\newblock Available: \url{http://lwn.net/Articles/202847/} Revised:
  \url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} [Viewed
  August 21, 2006], October 2006.

\bibitem[McK07a]{PaulEMcKenney2007PreemptibleRCU}
Paul~E. McKenney.
\newblock The design of preemptible read-copy-update.
\newblock Available: \url{http://lwn.net/Articles/253651/} [Viewed October 25,
  2007], October 2007.

\bibitem[McK07b]{PaulMcKenney2007QRCUpatch}
Paul~E. McKenney.
\newblock {[PATCH]} {QRCU} with lockless fastpath.
\newblock Available: \url{http://lkml.org/lkml/2007/2/25/18} [Viewed March 27,
  2008], February 2007.

\bibitem[McK07c]{PaulEMcKenney2007PreemptibleRCUPatch}
Paul~E. McKenney.
\newblock [patch rfc 0/9] {RCU}: Preemptible {RCU}.
\newblock Available: \url{http://lkml.org/lkml/2007/9/10/213} [Viewed October
  25, 2007], September 2007.

\bibitem[McK07d]{PaulEMcKenney2007BoostRCU}
Paul~E. McKenney.
\newblock Priority-boosting {RCU} read-side critical sections.
\newblock Available: \url{http://lwn.net/Articles/220677/} Revised:
  \url{http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf}
  [Viewed September 7, 2007], February 2007.

\bibitem[McK07e]{PaulEMcKenney2007rcubarrier}
Paul~E. McKenney.
\newblock {RCU} and unloadable modules.
\newblock Available: \url{http://lwn.net/Articles/217484/} [Viewed November 22,
  2007], January 2007.

\bibitem[McK07f]{PaulEMcKenney2007QRCUspin}
Paul~E. McKenney.
\newblock Using {Promela} and {Spin} to verify parallel algorithms.
\newblock Available: \url{http://lwn.net/Articles/243851/} [Viewed September 8,
  2007], August 2007.

\bibitem[McK07g]{PaulEMcKenney2007whatisRCU}
Paul~E. McKenney.
\newblock What is {RCU}?
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/whatisRCU.html} [Viewed July 6,
  2007], 07 2007.

\bibitem[McK08a]{PaulEMcKenney2008HierarchicalRCU}
Paul~E. McKenney.
\newblock Hierarchical {RCU}.
\newblock Available: \url{http://lwn.net/Articles/305782/} [Viewed November 6,
  2008], November 2008.

\bibitem[McK08b]{PaulEMcKenney2008WhatIsRCUAPI}
Paul~E. McKenney.
\newblock {RCU} part 3: the {RCU} {API}.
\newblock Available: \url{http://lwn.net/Articles/264090/} [Viewed January 10,
  2008], January 2008.

\bibitem[McK08c]{PaulEMcKenney2008WhatIsRCUUsage}
Paul~E. McKenney.
\newblock What is {RCU}? part 2: Usage.
\newblock Available: \url{http://lwn.net/Articles/263130/} [Viewed January 4,
  2008], January 2008.

\bibitem[McK09a]{PaulEMcKenney2009BloatwatchRCU}
Paul~E. McKenney.
\newblock Re: [patch fyi] rcu: the bloatwatch edition.
\newblock Available: \url{http://lkml.org/lkml/2009/1/14/449} [Viewed January
  15, 2009], January 2009.

\bibitem[McK09b]{PaulEMcKenney2009TMeverywhere}
Paul~E. McKenney.
\newblock Transactional memory everywhere?
\newblock
  \url{http://paulmck.livejournal.com/tag/transactional%20memory%20everywhere},
  September 2009.

\bibitem[MD92]{McKenney92b}
Paul~E. McKenney and Ken~F. Dove.
\newblock Efficient demultiplexing of incoming tcp packets.
\newblock In {\em SIGCOMM '92, Proceedings of the Conference on Communications
  Architecture \& Protocols}, pages 269--279, Baltimore, MD, August 1992.
  Association for Computing Machinery.

\bibitem[{Mel}06]{CSIRACUniversityMelbourne}
{Melbourne School of Engineering}.
\newblock {CSIRAC}.
\newblock Available: \url{http://www.csse.unimelb.edu.au/dept/about/csirac/}
  [Viewed: December 7, 2008], 2006.

\bibitem[Met99]{PanagiotisMetaxas1999PDCS}
Panagiotis~Takis Metaxas.
\newblock Fast dithering on a data-parallel computer.
\newblock In {\em Proceedings of the IASTED International Conference on
  Parallel and Distributed Computing and Systems}, pages 570--576, Cambridge,
  MA, USA, 1999. IASTED.

\bibitem[MG92]{McKenney92a}
Paul~E. McKenney and Gary Graunke.
\newblock Efficient buffer allocation on shared-memory multiprocessors.
\newblock In {\em IEEE Workshop on the Architecture and Implementation of High
  Performance Communication Subsystems}, pages 194--199, Tucson, AZ, February
  1992. The Institute of Electrical and Electronics Engineers, Inc.

\bibitem[MGM{\etalchar{+}}09]{PaulEMcKenney2009ProgrammingHard}
Paul~E. McKenney, Manish Gupta, Maged~M. Michael, Phil Howard, Joshua Triplett,
  and Jonathan Walpole.
\newblock Is parallel programming hard, and if so, why?
\newblock Technical Report TR-09-02, Portland State University, Portland, OR,
  USA, February 2009.
\newblock Available: \url{http://www.cs.pdx.edu/pdfs/tr0902.pdf} [Viewed
  February 19, 2009].

\bibitem[Mic04]{MagedMichael04a}
Maged~M. Michael.
\newblock Hazard pointers: Safe memory reclamation for lock-free objects.
\newblock {\em IEEE Transactions on Parallel and Distributed Systems},
  15(6):491--504, June 2004.

\bibitem[MK88]{McKusick88}
Marshall~Kirk McKusick and Michael~J. Karels.
\newblock Design of a general purpose memory allocator for the {4.3BSD} {UNIX}
  kernel.
\newblock In {\em USENIX Conference Proceedings}, Berkeley CA, June 1988.

\bibitem[MM00]{Molnar00a}
Ingo Molnar and David~S. Miller.
\newblock brlock.
\newblock Available:
  \url{http://www.tm.kernel.org/pub/linux/kernel/v2.3/patch-html/patch-2.3.49/%
linux_include_linux_brlock.h.html} [Viewed September 3, 2004], March 2000.

\bibitem[MMW07]{McKenney2007PLOSTM}
Paul~E. McKenney, Maged Michael, and Jonathan Walpole.
\newblock Why the grass may not be greener on the other side: A comparison of
  locking vs. transactional memory.
\newblock In {\em Programming Languages and Operating Systems}, pages 1--5, New
  York, NY, USA, October 2007. ACM SIGOPS.

\bibitem[Mol05]{IngoMolnar05a}
Ingo Molnar.
\newblock Index of /pub/linux/kernel/projects/rt.
\newblock Available: \url{http://www.kernel.org/pub/linux/kernel/projects/rt/}
  [Viewed February 15, 2005], February 2005.

\bibitem[Moo03]{GordonMoore03a}
Gordon Moore.
\newblock No exponential is forever--but we can delay forever.
\newblock In {\em IBM Academy of Technology 2003 Annual Meeting}, San
  Francisco, CA, October 2003.

\bibitem[MPA{\etalchar{+}}06]{WikipediaRCU}
Paul~E. McKenney, Chris Purcell, Algae, Ben Schumin, Gaius Cornelius, Qwertyus,
  Neil Conway, Sbw, Blainster, Canis Rufus, Zoicon5, Anome, and Hal Eisen.
\newblock Read-copy update.
\newblock Available: \url{http://en.wikipedia.org/wiki/Read-copy-update}
  [Viewed August 21, 2006], July 2006.

\bibitem[{MPI}08]{MPIForum2008}
{MPI Forum}.
\newblock Message passing interface forum.
\newblock Available: \url{http://www.mpi-forum.org/} [Viewed September 9,
  2008], September 2008.

\bibitem[MR08]{PaulEMcKenney2008dynticksRCU}
Paul~E. McKenney and Steven Rostedt.
\newblock Integrating and validating dynticks and preemptable rcu.
\newblock Available: \url{http://lwn.net/Articles/279077/} [Viewed April 24,
  2008], April 2008.

\bibitem[MS93]{McKenney93}
Paul~E. McKenney and Jack Slingwine.
\newblock Efficient kernel memory allocation on shared-memory multiprocessors.
\newblock In {\em USENIX Conference Proceedings}, pages 295--306, Berkeley CA,
  February 1993. USENIX Association.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/scalability/paper/mpalloc.pdf}
  [Viewed January 30, 2005].

\bibitem[MS98]{McKenney98}
Paul~E. McKenney and John~D. Slingwine.
\newblock Read-copy update: Using execution history to solve concurrency
  problems.
\newblock In {\em {Parallel and Distributed Computing and Systems}}, pages
  509--518, Las Vegas, NV, October 1998.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf} [Viewed
  December 3, 2007].

\bibitem[MS05]{PaulMcKenney05b}
Paul~E. McKenney and Dipankar Sarma.
\newblock Towards hard realtime response from the {Linux} kernel on {SMP}
  hardware.
\newblock In {\em linux.conf.au 2005}, Canberra, Australia, April 2005.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf}
  [Viewed May 13, 2005].

\bibitem[MS08]{MySQL2008}
{MySQL AB} and {Sun Microsystems}.
\newblock {MySQL Downloads}.
\newblock Available: \url{http://dev.mysql.com/downloads/} [Viewed November 26,
  2008], November 2008.

\bibitem[MS09]{PaulEMcKenneyN2745r2009}
Paul~E. McKenney and Raul Silvera.
\newblock Example power implementation for c/c++ memory model.
\newblock Available:
  \url{http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2009.02.27a%
.html} [Viewed: April 5, 2009], February 2009.

\bibitem[MSK01]{McKenney01e}
Paul~E. McKenney, Jack Slingwine, and Phil Krueger.
\newblock Experience with an efficient parallel kernel memory allocator.
\newblock {\em Software -- Practice and Experience}, 31(3):235--257, March
  2001.

\bibitem[MSM05]{Mattson2005Textbook}
Timothy~G. Mattson, Beverly~A. Sanders, and Berna~L. Massingill.
\newblock {\em Patterns for Parallel Programming}.
\newblock Addison Wesley, Boston, MA, USA, 2005.

\bibitem[MSMB06]{PaulEMcKenney2006b}
Paul~E. McKenney, Dipankar Sarma, Ingo Molnar, and Suparna Bhattacharya.
\newblock Extending {RCU} for realtime and embedded workloads.
\newblock In {\em {Ottawa Linux Symposium}}, pages v2 123--138, July 2006.
\newblock Available:
  \url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
  \url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} [Viewed
  January 1, 2007].

\bibitem[MSS04]{McKenney04a}
Paul~E. McKenney, Dipankar Sarma, and Maneesh Soni.
\newblock Scaling dcache with {RCU}.
\newblock {\em Linux Journal}, 1(118):38--46, January 2004.
\newblock Available: \url{http://www.linuxjournal.com/node/7124} [Viewed
  December 26, 2010].

\bibitem[MT01]{Martinez01a}
Jose~F. Martinez and Josep Torrellas.
\newblock Speculative locks for concurrent execution of critical sections in
  shared-memory multiprocessors.
\newblock In {\em Workshop on Memory Performance Issues, International
  Symposium on Computer Architecture}, Gothenburg, Sweden, June 2001.
\newblock Available:
  \url{http://iacoma.cs.uiuc.edu/iacoma-papers/wmpi_locks.pdf} [Viewed June 23,
  2004].

\bibitem[{Mus}04]{CSIRACMuseumVictoria}
{Museum Victoria Australia}.
\newblock {CSIRAC}: {Australia's} first computer.
\newblock Available: \url{http://museumvictoria.com.au/CSIRAC/} [Viewed:
  December 7, 2008], 2004.

\bibitem[MW07]{PaulEMcKenney2007WhatIsRCUFundamentally}
Paul~E. McKenney and Jonathan Walpole.
\newblock What is {RCU}, fundamentally?
\newblock Available: \url{http://lwn.net/Articles/262464/} [Viewed December 27,
  2007], December 2007.

\bibitem[Nes06a]{OlegNesterov2006QRCU}
Oleg Nesterov.
\newblock Re: [patch] cpufreq: mark {\tt cpufreq\_tsc()} as {\tt
  core\_initcall\_sync}.
\newblock Available: \url{http://lkml.org/lkml/2006/11/19/69} [Viewed May 28,
  2007], November 2006.

\bibitem[Nes06b]{OlegNesterov2006aQRCU}
Oleg Nesterov.
\newblock Re: [rfc, patch 1/2] qrcu: {"quick"} srcu implementation.
\newblock Available: \url{http://lkml.org/lkml/2006/11/29/330} [Viewed November
  26, 2008], November 2006.

\bibitem[ONH{\etalchar{+}}96]{Olukotun96}
Kunle Olukotun, Basem~A. Nayfeh, Lance Hammond, Ken Wilson, and Kunyung Chang.
\newblock The case for a single-chip multiprocessor.
\newblock In {\em ASPLOS VII}, October 1996.

\bibitem[{Ope}97]{OpenGroup1997pthreads}
{Open Group}.
\newblock The single {UNIX} specification, version 2: Threads.
\newblock Available:
  \url{http://www.opengroup.org/onlinepubs/007908799/xsh/threads.html} [Viewed
  September 19, 2008], 1997.

\bibitem[{Pos}08]{PostgreSQL2008}
{PostgreSQL Global Development Group}.
\newblock {PostgreSQL}.
\newblock Available: \url{http://www.postgresql.org/} [Viewed November 26,
  2008], November 2008.

\bibitem[PW07]{DonaldEPorter2007TRANSACT}
Donald~E. Porter and Emmett Witchel.
\newblock Lessons from large transactional systems.
\newblock Personal communication
  <20071214220521.GA5721@olive-green.cs.utexas.edu>, December 2007.

\bibitem[Rei07]{Reinders2007Textbook}
James Reinders.
\newblock {\em {Intel} {Threading} {Building} {Blocks}}.
\newblock O'Reilly, Sebastopol, CA, USA, 2007.

\bibitem[RG01]{Rajwar01a}
Ravi Rajwar and James~R. Goodman.
\newblock Speculative lock elision: Enabling highly concurrent multithreaded
  execution.
\newblock In {\em Proceedings of the 34\textsuperscript{th} Annual ACM/IEEE
  International Symposium on Microarchitecture}, pages 294--305, Austin, TX,
  December 2001. The Institute of Electrical and Electronics Engineers, Inc.

\bibitem[RHP{\etalchar{+}}07]{ChistopherJRossbach2007a}
Chistopher~J. Rossbach, Owen~S. Hofmann, Donald~E. Porter, Hany~E. Ramadan,
  Aditya Bhandari, and Emmett Witchel.
\newblock {TxLinux}: Using and managing hardware transactional memory in an
  operating system.
\newblock In {\em SOSP'07: Twenty-First ACM Symposium on Operating Systems
  Principles}. ACM SIGOPS, October 2007.
\newblock Available: \url{http://www.sosp2007.org/papers/sosp056-rossbach.pdf}
  [Viewed October 21, 2007].

\bibitem[SATG{\etalchar{+}}09]{TatianaShpeisman2009CppTM}
Tatiana Shpeisman, Ali-Reza Adl-Tabatabai, Robert Geva, Yang Ni, and Adam Welc.
\newblock Towards transactional memory semantics for c++.
\newblock In {\em SPAA '09: Proceedings of the twenty-first annual symposium on
  Parallelism in algorithms and architectures}, pages 49--58, New York, NY,
  USA, 2009. ACM.

\bibitem[Sco06]{MichaelScott2006Textbook}
Michael Scott.
\newblock {\em Programming Language Pragmatics}.
\newblock Morgan Kaufmann, Burlington, MA, USA, 2006.

\bibitem[Sew]{PeterSewell2010weakmemory}
Peter Sewell.
\newblock The semantics of multiprocessor programs.
\newblock Available: \url{http://www.cl.cam.ac.uk/~pes20/weakmemory/} [Viewed:
  June 7, 2010].

\bibitem[SMS08]{SpearMichaelScott2008InevitableSTM}
Michael Spear, Maged Michael, and Michael Scott.
\newblock Inevitability mechanisms for software transactional memory.
\newblock In {\em {3\textsuperscript{rd} ACM SIGPLAN Workshop on Transactional
  Computing}}, New York, NY, USA, February 2008. ACM.
\newblock Available:
  \url{http://www.cs.rochester.edu/u/scott/papers/2008_TRANSACT_inevitability.%
pdf} [Viewed January 10, 2009].

\bibitem[SPA94]{SPARC94}
SPARC International.
\newblock {\em The {SPARC} Architecture Manual}, 1994.

\bibitem[Spr01]{Spraul01}
Manfred Spraul.
\newblock Re: {RFC:} patch to allow lock-free traversal of lists with
  insertion.
\newblock Available:
  \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2}
  [Viewed June 23, 2004], October 2001.

\bibitem[Spr08a]{ManfredSpraul2008dyntickIRQNMI}
Manfred Spraul.
\newblock Re: [{RFC}, {PATCH}] v4 scalable classic {RCU} implementation.
\newblock Available: \url{http://lkml.org/lkml/2008/9/6/86} [Viewed December 8,
  2008], September 2008.

\bibitem[Spr08b]{ManfredSpraul2008StateMachineRCU}
Manfred Spraul.
\newblock [{RFC}, {PATCH}] state machine based rcu.
\newblock Available: \url{http://lkml.org/lkml/2008/8/21/336} [Viewed December
  8, 2008], August 2008.

\bibitem[SS94]{DuaneSzafron1994PEMPDS}
Duane Szafron and Jonathan Schaeffer.
\newblock Experimentally assessing the usability of parallel programming
  systems.
\newblock In {\em IFIP WG10.3 Programming Environments for Massively Parallel
  Distributed Systems}, pages 19.1--19.7, 1994.

\bibitem[SSHT93]{JMStone93}
Janice~S. Stone, Harold~S. Stone, Philip Heidelberger, and John Turek.
\newblock Multiple reservations and the {Oklahoma} update.
\newblock {\em {IEEE} Parallel and Distributed Technology Systems and
  Applications}, 1(4):58--71, November 1993.

\bibitem[SSRB00]{SchmidtStalRohnertBuschmann2000v2Textbook}
Douglas~C. Schmidt, Michael Stal, Hans Rohnert, and Frank Buschmann.
\newblock {\em Pattern-Oriented Software Architecture Volume 2: Patterns for
  Concurrent and Networked Objects}.
\newblock Wiley, Chichester, West Sussex, England, 2000.

\bibitem[ST87]{Snaman87}
William~E. Snaman and David~W. Thiel.
\newblock The {VAX/VMS} distributed lock manager.
\newblock {\em Digital Technical Journal}, 5:29--44, September 1987.

\bibitem[ST95]{Shavit95}
Nir Shavit and Dan Touitou.
\newblock Software transactional memory.
\newblock In {\em Proceedings of the 14\textsuperscript{th} Annual {ACM}
  Symposium on Principles of Distributed Computing}, pages 204--213, Ottawa,
  Ontario, Canada, August 1995.

\bibitem[Ste92]{WRichardStevens1992}
W.~Richard Stevens.
\newblock {\em Advanced Programming in the {UNIX} Environment}.
\newblock Addison Wesley, 1992.

\bibitem[Sut08]{HerbSutter2008EffectiveConcurrency}
Herb Sutter.
\newblock Effective concurrency.
\newblock Series in Dr. Dobbs Journal, 2008.

\bibitem[SW95]{ALPHA95}
Richard~L. Sites and Richard~T. Witek.
\newblock {\em Alpha {AXP} Architecture}.
\newblock Digital Press, second edition, 1995.

\bibitem[{The}08]{OpenMPI2008}
{The Open MPI Project}.
\newblock {MySQL Downloads}.
\newblock Available: \url{http://www.open-mpi.org/software/} [Viewed November
  26, 2008], November 2008.

\bibitem[Tor01]{LinusTorvalds2001a}
Linus Torvalds.
\newblock {Re:} {[Lse-tech]} {Re:} {RFC:} patch to allow lock-free traversal of
  lists with insertion.
\newblock Available: \url{http://lkml.org/lkml/2001/10/13/105} [Viewed August
  21, 2004], October 2001.

\bibitem[Tor03]{Torvalds2.6kernel}
Linus Torvalds.
\newblock Linux 2.6.
\newblock Available: \url{ftp://kernel.org/pub/linux/kernel/v2.6} [Viewed June
  23, 2004], August 2003.

\bibitem[{Tra}01]{TPC}
{Transaction Processing Performance Council}.
\newblock {TPC}.
\newblock Available: \url{http://www.tpc.org/} [Viewed December 7, 2008], 2001.

\bibitem[UoC08]{BOINC2008}
Berkeley University~of California.
\newblock {BOINC}: compute for science.
\newblock Available: \url{http://boinc.berkeley.edu/} [Viewed January 31,
  2008], October 2008.

\bibitem[VGS08]{Volos2008TRANSACT}
Haris Volos, Neelam Goyal, and Michael~M. Swift.
\newblock Pathological interaction of locks with transactional memory.
\newblock In {\em 3rd ACM SIGPLAN Workshop on Transactional Computing}, New
  York, NY, USA, February 2008. ACM.
\newblock Available:
  \url{http://www.cs.wisc.edu/multifacet/papers/transact08_txlock.pdf} [Viewed
  September 7, 2009].

\bibitem[Vog09]{WernerVogels:2009:EventuallyConsistent}
Werner Vogels.
\newblock Eventually consistent.
\newblock {\em Commun. ACM}, 52:40--44, January 2009.

\bibitem[{Wik}08]{z80Wikipedia}
{Wikipedia}.
\newblock {Zilog Z80}.
\newblock Available: \url{http://en.wikipedia.org/wiki/Z80} [Viewed: December
  7, 2008], 2008.

\end{thebibliography}
