In a distributed system, objects may migrate from one node to another for a variety of reasons. T... more In a distributed system, objects may migrate from one node to another for a variety of reasons. The new location may provide a more suitable computational environment, it may offer cheaper resources, or it may have data needed by the agent to satisfy its goals. The ...
We present our results obtained from applying well known optimizations to Java bytecodes. We surv... more We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.
We present our results obtained from applying well known optimizations to Java bytecodes. We surv... more We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.
ABSTRACT This document is the reference manual for version 2.0 of the Universal Stub Compiler (US... more ABSTRACT This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and the USC Inference Tool (USIT). USC 2.0 is a nearly complete re-implementation with some changes to the syntax of the USC language and the USC and USIT program interface. USC 2.0 is not backwardly compatible with the previous version of USC. USC is a stub compiler that generates stubs that perform many data conversion operations. USC is flexible and can be used in situations where previously only manual code generation was possible. USC generated code is up to 20 times faster than code generated by traditional argument marshaling schemes such as ASN.1 and Sun XDR. USIT is a small tool that takes C typedefs and generates those typedefs with USC annotations for the native byte order and alignment for the compiler and host architecture it is run on.
In this thesis, we introduce a new technique to automate the verification of mobile code. Using d... more In this thesis, we introduce a new technique to automate the verification of mobile code. Using dataflow analysis techniques, the verifier can check whether data passed between trusted software components is illegally modified by untrusted mobile code. We show that this analysis is powerful enough to make significant guarantees about whether the program will access system resources safely. Furthermore, by rendering the verification transparent to the user, the security system is not vulnerable to human error, or dependent on the user's technical abilities. Other verification techniques do not share these advantages. We describe what requirements enable this analysis, explore its limitations, and present prototype software that implements the idea.
Mobile objects have gained a lot of attention in research and industry in the recent past, but th... more Mobile objects have gained a lot of attention in research and industry in the recent past, but they also have a long history. Security is one of the key requirements of mobile objects, and one of the most researched characteristics related to mobility. Resource management has been somewhat neglected in the past, but it is being increasingly addressed, in both the context of security and QoS. In this paper we place a few systems supporting mobile objects in perspective based upon how they address security and resource management. We start with the theoretical model of Actors that supports concurrent mobile objects in a programming environment. Then we describe task migration for the Mach microkernel, a case of mobile objects supported by an operating system. Using the OMG MASIF standard as an example, we then analyze middleware support for mobile objects. Mobile Objects and Agents (MOA) system, is an example of middleware level support based on Java.The active networks projec...
This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and th... more This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and the USC Inference Tool (USIT). USC 2.0 is a nearly complete re-implementation with some changes to the syntax of the USC language and the USC and USIT program interface. USC 2.0 is not backwardly compatible with the previous version of USC. USC is a stub compiler that generates stubs that perform many data conversion operations. USC is flexible and can be used in situations where previously only manual code generation was possible. USC generated code is up to 20 times faster than code generated by traditional argument marshaling schemes such as ASN.1 and Sun XDR. USIT is a small tool that takes C typedefs and generates those typedefs with USC annotations for the native byte order and alignment for the compiler and host architecture it is run on.
In this thesis, we introduce a new technique to automate the veri cation of mobile code. Using da... more In this thesis, we introduce a new technique to automate the veri cation of mobile code. Using data ow analysis techniques, the veri er can check whether data passed between trusted software components is illegally modi ed by untrusted mobile code. We show that this analysis is powerful enough to make signi cant guarantees about whether the program will access system resources safely. Furthermore, by rendering the veri cation transparent to the user, the security system is not vulnerable to human error, or dependent on the user's technical abilities. Other veri cation techniques do not share these advantages. We describe what requirements enable this analysis, explore its limitations, and present prototype software that implements the idea.
Denial-of-Service (DoS) might only be an annoyance while browsing the Web. In the emerging breed ... more Denial-of-Service (DoS) might only be an annoyance while browsing the Web. In the emerging breed of mission-critical Internet systems, however, service guarantees are mandatory and DoS attacks can be fatal. Increasingly, such systems are being built in Java, for which vulnerability to DoS attacks is inherent in the JavaSoft Java Virtual Machine (JVM) specification. For instance, objects with different levels of trust are required to withdraw memory from a unique heap; furthermore, their threads must compete for CPU cycles with scheduling and synchronization policies that are undefined. In this paper, we describe JVM extensions and new APIs for partitioning memory and CPU resources among untrusted, mutually suspicious applications coexisting within the same JVM. Non-interference properties apply to a new formulation of name-space that includes: exclusive access to a resource budget, an API to negotiate such a budget, real-time thread control, an independent garbage collector, and the...
Fast packet classiication|that is, the determination of the destination of a network packet|is of... more Fast packet classiication|that is, the determination of the destination of a network packet|is of fundamental importance in high-performance network systems. Additionally, for exibility reasons, it is desirable to allow applications to use their own high-level protocols where appropriate. Taken together, this demands a mechanism that permits the speciication of protocols in a simple, exible, and modular way without sacriicing performance. This paper describes APF, a language for specifying packet classiiers. The simple declarative syntax of this language makes it easy to specify even fairly complex packet structures in a clean and modular way, thereby improving reliability and maintainability. It also eeects a clean separation between the speciication of packet classiiers and their implementations, thereby making it possible to choose from a variety of implementations with diierent performance tradeoos. In particular, as our experimental results illustrate, it can be compiled to eec...
Mobile objects have gained a lot of attention in research and industry in the recent past, but th... more Mobile objects have gained a lot of attention in research and industry in the recent past, but they also have a long history. Security is one of the key requirements of mobile objects, and one of the most researched characteristics related to mobility. Resource management has been somewhat neglected in the past, but it is being increasingly addressed, in both the context of security and QoS. In this paper we place a few systems supporting mobile objects in perspective based upon how they address security and resource management.
In a distributed system, objects may migrate from one node to another for a variety of reasons. T... more In a distributed system, objects may migrate from one node to another for a variety of reasons. The new location may provide a more suitable computational environment, it may offer cheaper resources, or it may have data needed by the agent to satisfy its goals. The ...
We present our results obtained from applying well known optimizations to Java bytecodes. We surv... more We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.
We present our results obtained from applying well known optimizations to Java bytecodes. We surv... more We present our results obtained from applying well known optimizations to Java bytecodes. We survey the optimizations implemented thus far, which include peephole optimizations, jump redundancy eliminations, and common subexpression elimination. The transformations are each analyzed according to several criteria. We measure the impact each has on reducing a program's execution time and size, the frequency by which the optimizations can be applied, and the extra compile time incurred. Together, these results quantify the overall effectiveness of employing classical optimizations on bytecodes. Our experiments were conducted on a representative set of public domain Java programs which were compiled using Sun's JDK 1.0.2. All transformations were applied to bytecodes with no access to their original source.
ABSTRACT This document is the reference manual for version 2.0 of the Universal Stub Compiler (US... more ABSTRACT This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and the USC Inference Tool (USIT). USC 2.0 is a nearly complete re-implementation with some changes to the syntax of the USC language and the USC and USIT program interface. USC 2.0 is not backwardly compatible with the previous version of USC. USC is a stub compiler that generates stubs that perform many data conversion operations. USC is flexible and can be used in situations where previously only manual code generation was possible. USC generated code is up to 20 times faster than code generated by traditional argument marshaling schemes such as ASN.1 and Sun XDR. USIT is a small tool that takes C typedefs and generates those typedefs with USC annotations for the native byte order and alignment for the compiler and host architecture it is run on.
In this thesis, we introduce a new technique to automate the verification of mobile code. Using d... more In this thesis, we introduce a new technique to automate the verification of mobile code. Using dataflow analysis techniques, the verifier can check whether data passed between trusted software components is illegally modified by untrusted mobile code. We show that this analysis is powerful enough to make significant guarantees about whether the program will access system resources safely. Furthermore, by rendering the verification transparent to the user, the security system is not vulnerable to human error, or dependent on the user's technical abilities. Other verification techniques do not share these advantages. We describe what requirements enable this analysis, explore its limitations, and present prototype software that implements the idea.
Mobile objects have gained a lot of attention in research and industry in the recent past, but th... more Mobile objects have gained a lot of attention in research and industry in the recent past, but they also have a long history. Security is one of the key requirements of mobile objects, and one of the most researched characteristics related to mobility. Resource management has been somewhat neglected in the past, but it is being increasingly addressed, in both the context of security and QoS. In this paper we place a few systems supporting mobile objects in perspective based upon how they address security and resource management. We start with the theoretical model of Actors that supports concurrent mobile objects in a programming environment. Then we describe task migration for the Mach microkernel, a case of mobile objects supported by an operating system. Using the OMG MASIF standard as an example, we then analyze middleware support for mobile objects. Mobile Objects and Agents (MOA) system, is an example of middleware level support based on Java.The active networks projec...
This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and th... more This document is the reference manual for version 2.0 of the Universal Stub Compiler (USC) and the USC Inference Tool (USIT). USC 2.0 is a nearly complete re-implementation with some changes to the syntax of the USC language and the USC and USIT program interface. USC 2.0 is not backwardly compatible with the previous version of USC. USC is a stub compiler that generates stubs that perform many data conversion operations. USC is flexible and can be used in situations where previously only manual code generation was possible. USC generated code is up to 20 times faster than code generated by traditional argument marshaling schemes such as ASN.1 and Sun XDR. USIT is a small tool that takes C typedefs and generates those typedefs with USC annotations for the native byte order and alignment for the compiler and host architecture it is run on.
In this thesis, we introduce a new technique to automate the veri cation of mobile code. Using da... more In this thesis, we introduce a new technique to automate the veri cation of mobile code. Using data ow analysis techniques, the veri er can check whether data passed between trusted software components is illegally modi ed by untrusted mobile code. We show that this analysis is powerful enough to make signi cant guarantees about whether the program will access system resources safely. Furthermore, by rendering the veri cation transparent to the user, the security system is not vulnerable to human error, or dependent on the user's technical abilities. Other veri cation techniques do not share these advantages. We describe what requirements enable this analysis, explore its limitations, and present prototype software that implements the idea.
Denial-of-Service (DoS) might only be an annoyance while browsing the Web. In the emerging breed ... more Denial-of-Service (DoS) might only be an annoyance while browsing the Web. In the emerging breed of mission-critical Internet systems, however, service guarantees are mandatory and DoS attacks can be fatal. Increasingly, such systems are being built in Java, for which vulnerability to DoS attacks is inherent in the JavaSoft Java Virtual Machine (JVM) specification. For instance, objects with different levels of trust are required to withdraw memory from a unique heap; furthermore, their threads must compete for CPU cycles with scheduling and synchronization policies that are undefined. In this paper, we describe JVM extensions and new APIs for partitioning memory and CPU resources among untrusted, mutually suspicious applications coexisting within the same JVM. Non-interference properties apply to a new formulation of name-space that includes: exclusive access to a resource budget, an API to negotiate such a budget, real-time thread control, an independent garbage collector, and the...
Fast packet classiication|that is, the determination of the destination of a network packet|is of... more Fast packet classiication|that is, the determination of the destination of a network packet|is of fundamental importance in high-performance network systems. Additionally, for exibility reasons, it is desirable to allow applications to use their own high-level protocols where appropriate. Taken together, this demands a mechanism that permits the speciication of protocols in a simple, exible, and modular way without sacriicing performance. This paper describes APF, a language for specifying packet classiiers. The simple declarative syntax of this language makes it easy to specify even fairly complex packet structures in a clean and modular way, thereby improving reliability and maintainability. It also eeects a clean separation between the speciication of packet classiiers and their implementations, thereby making it possible to choose from a variety of implementations with diierent performance tradeoos. In particular, as our experimental results illustrate, it can be compiled to eec...
Mobile objects have gained a lot of attention in research and industry in the recent past, but th... more Mobile objects have gained a lot of attention in research and industry in the recent past, but they also have a long history. Security is one of the key requirements of mobile objects, and one of the most researched characteristics related to mobility. Resource management has been somewhat neglected in the past, but it is being increasingly addressed, in both the context of security and QoS. In this paper we place a few systems supporting mobile objects in perspective based upon how they address security and resource management.
Uploads