Events Can Make Sense

Tame is a new event-based system for managing concurrency in network applications. Code written with Tame abstractions does not suffer from the "stack-ripping" problem associated with other event libraries. Like threaded code, tamed code uses standard control flow, automatically-managed local variables, and modular interfaces between callers and callees. Tame's implementation consists of C++ libraries and a source-to-source translator; no platform-specific support or compiler modifications are required, and Tame induces little runtime overhead. Experience with Tame in real-world systems, including a popular commercial Web site, suggests it is easy to adopt and deploy.

[1]  B. Ramkumar,et al.  Portable checkpointing for heterogeneous architectures , 1997, Proceedings of IEEE 27th International Symposium on Fault Tolerant Computing.

[2]  G. L. Davies Teaching concurrent programming with Pascal-FC , 1990, SGCS.

[3]  John R. Douceur,et al.  Cooperative Task Management without Manual Stack Management or, Event-driven Programming is Not the Opposite of Threaded Programming , 2002 .

[4]  David Mazières,et al.  A Toolkit for User-Level File Systems , 2001, USENIX Annual Technical Conference, General Track.

[5]  Michael Walfish,et al.  DDoS defense by offense , 2006, TOCS.

[6]  Eric A. Brewer,et al.  USENIX Association Proceedings of HotOS IX : The 9 th Workshop on Hot Topics in Operating Systems , 2003 .

[7]  Roger M. Needham,et al.  On the duality of operating system structures , 1979, OPSR.

[8]  Ralf S. Engelschall Portable Multithreading-The Signal Stack Trick for User-Space Thread Creation , 2000, USENIX Annual Technical Conference, General Track.

[9]  Robert Morris,et al.  Chord: A scalable peer-to-peer lookup service for internet applications , 2001, SIGCOMM 2001.

[10]  Tim Brecht,et al.  accept()able Strategies for Improving Web Server Performance , 2004, USENIX ATC, General Track.

[11]  Maxwell N. Krohn,et al.  Building Secure High-Performance Web Services with OKWS , 2004, USENIX Annual Technical Conference, General Track.

[12]  湯浅 太一,et al.  Common Lisp(パネル討論会) , 1986 .

[13]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[14]  Jonathan Lemon Kqueue - A Generic and Scalable Event Notification Facility , 2001, USENIX Annual Technical Conference, FREENIX Track.

[15]  Robert Tappan Morris,et al.  OverCite: A Distributed, Cooperative CiteSeer , 2006, NSDI.

[16]  John H. Reppy,et al.  CML: A higher concurrent language , 1991, PLDI '91.

[17]  David E. Culler,et al.  Ninja: A Framework for Network Services , 2002, USENIX Annual Technical Conference, General Track.

[18]  David R. Cheriton,et al.  Comparing the performance of web server architectures , 2007, EuroSys '07.

[19]  David Mazières,et al.  Separating key management from file system security , 1999, SOSP.

[20]  Michael Goldsmith,et al.  Programming in occam 2 , 1985, Prentice Hall international series in computer science.

[21]  Chandramohan A. Thekkath,et al.  Frangipani: a scalable distributed file system , 1997, SOSP.

[22]  Eddie Kohler,et al.  Making Events Less Slippery with eel , 2005, HotOS.

[23]  Brent Callaghan,et al.  NFS Version 3 Protocol Specification , 1995, RFC.

[24]  Robert Tappan Morris,et al.  Multiprocessor Support for Event-Driven Programs , 2003, USENIX Annual Technical Conference, General Track.

[25]  Marvin Theimer,et al.  Cooperative Task Management Without Manual Stack Management , 2002, USENIX Annual Technical Conference, General Track.

[26]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[27]  George C. Necula,et al.  Capriccio: scalable threads for internet services , 2003, SOSP '03.

[28]  Steve Vandebogart,et al.  Make Least Privilege a Right (Not a Privilege) , 2005, HotOS.

[29]  David Mazières,et al.  Democratizing Content Publication with Coral , 2004, NSDI.

[30]  Gerald Jay Sussman,et al.  An Interpreter for Extended Lambda Calculus , 1975 .

[31]  Vivek S. Pai,et al.  Proceedings of the General Track: 2004 Usenix Annual Technical Conference Making the " Box " Transparent: System Call Performance as a First-class Result , 2022 .

[32]  David G. Andersen,et al.  An Architecture for Internet Data Transfer , 2006, NSDI.

[33]  Niels Provos,et al.  A Virtual Honeypot Framework , 2004, USENIX Security Symposium.

[34]  Siddhartha Annapureddy,et al.  Shark: scaling file servers via cooperative caching , 2005, NSDI.

[35]  Peng Li,et al.  Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives , 2007, PLDI '07.

[36]  Koen Claessen,et al.  A poor man's concurrency monad , 1999, Journal of Functional Programming.

[37]  Geraint Jones Programming in occam , 1986, Prentice Hall International Series in Computer Science.

[38]  Ulrich Drepper,et al.  The Native POSIX Thread Library for Linux , 2002 .

[39]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[40]  David B. Skillicorn,et al.  Models and languages for parallel computation , 1998, CSUR.

[41]  David R. Karger,et al.  Wide-area cooperative storage with CFS , 2001, SOSP.

[42]  David E. Culler,et al.  SEDA: an architecture for well-conditioned, scalable internet services , 2001, SOSP.

[43]  KyoungSoo Park,et al.  Connection Conditioning: Architecture-Independent Support for Simple, Robust Servers , 2006, NSDI.

[44]  Muneeb Ali,et al.  Protothreads: simplifying event-driven programming of memory-constrained embedded systems , 2006, SenSys '06.