ABSTRACT
C applications, in particular those using operating system level services, frequently comprise multiple crosscutting concerns: network protocols and security are typical examples of such concerns. While these concerns can partially be addressed during design and implementation of an application, they frequently become an issue at runtime, e.g., to avoid server downtime. A deployed network protocol might not be efficient enough and may thus need to be replaced. Buffer overflows might be discovered that imply critical breaches in the security model of an application. A prefetching strategy may be required to enhance performance.While aspect-oriented programming seems attractive in this context, none of the current aspect systems is expressive and efficient enough to address such concerns. This paper presents a new aspect system to provide a solution to this problem. While efficiency considerations have played an important part in the design of the aspect language, the language allows aspects to be expressed more concisely than previous approaches. In particular, it allows aspect programmers to quantify over sequences of execution points as well as over accesses through variable aliases. We show how the former can be used to modularize the replacement of network protocols and the latter to prevent buffer overflows. We also present an implementation of the language as an extension of Arachne, a dynamic weaver for C applications. Finally, we present performance evaluations supporting that Arachne is fast enough to extend high performance applications, such as the Squid web cache.
- R. A. Åberg, J. L. Lawall, M. Südholt, G. Muller, and A.-F. L. Meur. On the automatic evolution of an os kernel using temporal logic and AOP. In Proceedings of Automated Software Engineering (ASE'03), pages 196--204. IEEE, 2003.]]Google ScholarDigital Library
- American National Standards Institute. ANSI/ISO/IEC 9899-1999: Programming Languages --- C. American National Standards Institute, 1430 Broadway, New York, NY 10018, USA, 1999.]]Google Scholar
- J. H. Andrews. Process-algebraic foundations of aspect-oriented programming. In Proceedings of the 3rd International Conference on Metalevel Architectures and Separation of Crosscutting Concerns, volume 2192 of LNCS. Springer Verlag, Sept. 2001.]] Google ScholarDigital Library
- M. Arlitt and T. Jin. A workload characterization study of the 1998 world cup web site. IEEE Network, 14(3):30-37, May 2000.]] Google ScholarDigital Library
- U. Aßmann and A. Ludwig. Aspect weaving by graph rewriting. In U. W. Eisenecker and K. Czarnecki, editors, Generative Component-based Software Engineering (GCSE), Erfurt, Oct. 1999.]]Google Scholar
- CERT - Carnegie Mellon University. Vulnerability note vu#613459, Feb. 2002. published on line: http://www.kb.cert.org/vuls/id/613459.]]Google Scholar
- H. Chen and P. Mohapatra. Catp: A context-aware transportation protocol for http. In International Workshop on New Advances in Web Servers and Proxy Technologies Held with ICDCS, 2003.]] Google ScholarDigital Library
- S. Chiba and K. Nakagawa. Josh: An open AspectJ-like language. In Proceedings of the third international conference on Aspect-oriented software development, pages 102-111. ACM Press, Mar. 2004.]] Google ScholarDigital Library
- K.-I. Chinen and S. Yamaguchi. An interactive prefetching proxy server for improvement of WWW latency. In Seventh Annual Conference of the Internet Society (INET'97), Kuala Lumpur, June 1997.]]Google Scholar
- I. Cidon, A. Gupta, R. Rom, and C. Schuba. Hybrid tcp-udp transport for web traffic. In Proceedings of the 18th IEEE International Performance, Computing, and Communications Conference (IPCCC'99), pages 177--184, Feb. 1990.]]Google Scholar
- S. Clowes. Injectso: Modifying and spying on running processes under linux. In Black hat briefings, 2001.]]Google Scholar
- Y. Coady, G. Kiczales, M. Feeley, and G. Smolyn. Using AspectC to improve the modularity of Path-Specific customization in operating system code. In V. Gruhn, editor, Proc. of the Joint 8th European Software Engeneering Conference and 9th ACM SIGSOFT Symposium on the Foundation of Software Engeneering (ESEC/FSE-01), volume 26, 5 of SOFTWARE ENGINEERING NOTES, pages 88--98, New York, Sept. 10-14 2001. ACM Press.]] Google ScholarDigital Library
- K. de Volder. Aspect-oriented logic meta programming. In P. Cointe, editor, Meta-Level Architectures and Reflection, 2nd International Conference on Reflection, volume 1616 of LNCS, pages 250--272. Springer Verlag, 1999.]] Google Scholar
- R. Douence, P. Fradet, and M. Südholt. A framework for the detection and resolution of aspect interactions. In Proceedings of the ACM SIGPLAN/SIGSOFT Conference on Generative Programming and Component Engineering (GPCE'02), volume 2487 of LLNCS, pages 173--188. Springer-Verlag, Oct. 2002.]] Google ScholarDigital Library
- R. Douence, O. Motelet, and M. Südholt. A formal definition of crosscuts. In Proceedings of the 3rd International Conference on Metalevel Architectures and Separation of Crosscutting Concerns, volume 2192 of LNCS, pages 170--186. Springer Verlag, Sept. 2001.]] Google ScholarDigital Library
- E. Hilsdale and J. Hugunin. Advice weaving in aspectj. In Proceedings of the 3rd international conference on Aspect-oriented software development, pages 26--35. ACM Press, 2004.]] Google ScholarDigital Library
- J. K. Hollingsworth, B. P. Miller, M. J. R. Goncalves, O. Naim, Z. Xu, and L. Zheng. MDL: A language and compiler for dynamic program instrumentation. In IEEE Conference on Parallel Architectures and Compilation Techniques (PACT), pages 201--213, Nov. 1997.]] Google ScholarDigital Library
- Intel Corporation. IA-32 Intel Architecture Software Developer's Manual. Intel Corporation, 2001.]]Google Scholar
- V. Issarny, M. Banâtre, B. Charpiot, and J.-M. Menaud. Quality of service and electronic newspaper: The Etel solution. Lecture Notes in Computer Science, 1752:472--496, 2000.]] Google ScholarDigital Library
- J. Jaffar, S. Michaylov, P. J. Stuckey, and R. H. C. Yap. The clp(r) language and system. ACM Trans. Program. Lang. Syst., 14(3):339--395, 1992.]] Google ScholarDigital Library
- JasCo home page. http://ssel.vub.ac.be/jasco/.]]Google Scholar
- R. Jones and P. Kelly. Backwards-compatible bounds checking for arrays and pointers in c programs. In M. Kamkar, editor, Proceedings of the Third International Workshop on Automatic Debugging, volume 2, pages 13--26, May 1997.]]Google Scholar
- A. D. Keromytis. "Patch on Demand" Saves Even More Time? IEEE Computer, 37(8):94--96, 2004.]] Google ScholarDigital Library
- G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Akşit and S. Matsuoka, editors, Proceedings European Conference on Object-Oriented Programming, volume 1241, pages 220--242. Jyväskylä, Finland, June 1997.]]Google Scholar
- K. J. Lieberherr, J. Palm, and R. Sundaram. Expressiveness and complexity of crosscut languages. Technical Report NU-CCIS-04-10, Northeastern University, Sept. 2004.]]Google Scholar
- H. Masuhara and K. Kawauchi. Dataflow pointcut in aspect-oriented programming. In First Asian Symposium on Programming Languages and Systems (APLAS'03), 2003.]]Google ScholarCross Ref
- R. J. Moore. Dynamic probes and generalised kernel hooks interface for Linux. In USENIX, editor, Proceedings of the 4th Annual Linux Showcase and Conference, Atlanta, October 10-14, 2000, Atlanta, Georgia, USA, Berkeley, CA, USA, 2000. USENIX.]] Google ScholarDigital Library
- A. Popovici, G. Alonso, and T. Gross. Just-in-time aspects: efficient dynamic weaving for Java. In Proceedings of the 2nd international conference on Aspect-oriented software development, pages 100--109, Boston, Massachusetts, Mar. 2003. ACM Press.]] Google ScholarDigital Library
- M. Rabinovich and H. Wang. DHTTP: An efficient and cache-friendly transfer protocol for web traffic. In INFOCOM, pages 1597--1606, 2001.]]Google ScholarCross Ref
- A. Rousskov and D. Wessels. High-performance benchmarking with Web Polygraph. Software Practice and Experience, 34(2):187--211, Feb. 2004.]] Google ScholarDigital Library
- O. Ruwase and M. S. Lam. A practical dynamic buffer overflow detector. In Proceedings of the 11th Annual Network and Distributed System Security Symposium. Internet Society, Feb. 2004.]]Google Scholar
- M. Ségura-Devillechaise, J.-M. Menaud, G. Muller, and J. Lawall. Web cache prefetching as an aspect: Towards a dynamic-weaving based solution. In Proceedings of the 2nd international conference on Aspect-oriented software development, pages 110--119, Boston, MA, USA, Mar. 2003. ACM Press.]] Google ScholarDigital Library
- O. Spinczyk, A. Gal, and W. Schroeder-Preikschat. AspectC++: an aspect-oriented extension to the C++ programming language. In Proceedings of the Fortieth International Conference on Tools Pacific, pages 53--60. Australian Computer Society, Inc., 2002.]] Google ScholarDigital Library
- A. Srivastava and A. Edwards. Vulcan: Binary transformation in a distributed environment. Microsoft Research Tech. Rpt. MSR-TR-2001-50, 2001.]]Google Scholar
- U. S. L. System Unix. System V Application Binary Interface Intel 386 Architecture Processor Supplement. Prentice Hall Trade, 1994.]]Google Scholar
- D. Wessels. Squid: The Definitive Guide. O'Reilly and Associates, Jan. 2004.]] Google ScholarDigital Library
- J. Wilander and M. Kamkar. A comparison of publicly available tools for dynamic buffer overflow prevention. In Proceedings of the 10th Network and Distributed System Security Symposium, pages 149-162, San Diego, California, February 2003.]]Google Scholar
Recommendations
An expressive aspect language for system applications with arachne
Transactions on Aspect-Oriented Software Development ISecurity, networking and prefetching are typical examples of concerns which crosscut system-level C applications. While a careful design can help to address these concerns, they frequently become an issue at runtime, especially if avoiding server ...
An aspect-oriented framework for operating system evolution
SAC '10: Proceedings of the 2010 ACM Symposium on Applied ComputingThis paper presents an aspect-oriented framework which enables dynamically weaving aspects into operating system in order to adjust its functionalities during system operation. The framework is designed based on the notion of dynamic aspect weaving in ...
An expressive stateful aspect language
Stateful aspects can react to the trace of a program execution; they can support modular implementations of several crosscutting concerns like error detection, security, event handling, and debugging. However, most proposed stateful aspect languages ...
Comments