Approaches to Capturing Java Threads State

Size: px
Start display at page:

Download "Approaches to Capturing Java Threads State"

Transcription

1 Approaches to Capturing Java Threads State Abstract This paper describes a range of approaches to capturing the state of Java threads. The capture and restoration of Java threads state have two main purposes: to make Java applications mobile and to make them persistent. We compare different approaches, give a preliminary evaluation and describe our ongoing work in this area. 1 Introduction The Java Virtual Machine (JVM) [Lindholm96] provides the abstraction of a homogeneous environment, and the Java Development Kit (JDK) [Sun99] provides many tools which help developing applications, such as object serialization that captures the state of an object and dynamic class loading that captures a Java code. However, Java does not provide any service for capturing execution (thread) state. A mechanism for the capture/restoration of Java threads state might be used in order to implement mobile applications or persistent applications. We first give a brief overview of the structure of the state of a Java thread, and then describe several approaches to providing a service for capturing/restoring a thread state: on top of the JVM, by extending the JVM and its Java interpreter, or by extending the JVM without modifying the interpreter. 2 Description of the state of a Java thread The state of a Java thread, which is internal to the JVM (not visible by Java applications), consists of: the Java stack, organized in blocks called frames and associated with the Java methods currently being executed by the thread. A frame contains a table of the local variables of the associated method, an operand stack containing the values of the partial results of the method, and some registers like the pc (program counter) which points to the Java byte code instruction currently being interpreted, the code, i.e. the set of Java classes that include a Java method currently being executed by the thread; these classes are referenced by the frames of the Java stack, and the data, including the values of the local variables and the partial results of the Java methods currently being executed by the thread. 3 First approach: On top of the JVM 3.1 Objectives and Design principles The objective of this technique is to extract the state of a thread from the code of the underlying application. This is done by pre-processing the source code of the application in order to insert checkpoints and 1

2 Java statements which back up the thread state in a backup Java object. The inserted statements are used to build a backup objet that evolves with the execution and contains information relative to the methods currently being executed by the thread, the last checkpoint in each method, and the state of the local variables of each method. At snapshot time, the application just uses the backup object. Using the backup object, the thread state is restored to the value saved at snapshot time. This restoration operation requires a partial re-execution of the application in order to rebuild the Java stack frames and to update the methods local variables. Finally, the restored execution is resumed. 3.2 Discussion This technique is used in the Wasp mobile agent platform [Fünfrocken98]. The main motivation of this approach is that it is portable on all JVMs. We have installed and evaluated the Wasp mobile agent platform. Here are the results of some preliminary measurements performed on the JDK 1.1.3, on Sparc hardware running Solaris 2.5 [Bouchenak99a]. We first noticed that the average cost of a thread state capture/restoration operation is 25 ms which is quite significant. As the capture of the state is done during the execution of the application, the capture operation, at snapshot time, is virtually free. But the restoration of a state requires a partial re-execution of the Java application and accounts for the major part of the cost. We also noticed that the use of this capture mechanism induces a factor of the order of 130 on application execution time; this is due to the execution of the statements inserted into the application source code. 4 Second approach : Extending the JVM and its Java interpreter 4.1 Objectives and Design principles The objective of this technique is to extract the state of a Java thread from the JVM by extending it. The principle of this extraction is to copy the state in a Java object (called ThreadState in this paper). The capture of a thread state consists in building a ThreadState object that reflects the current state of the thread. This is done by parsing the Java stack of the thread and saving the information relative to the thread state (section 2) in the ThreadState object. The Java stack is represented in the JVM by a native C structure. To make the capture mechanism portable on heterogeneous machines, each value on the stack is translated from the native format to a portable (Java) format. This translation requires the knowledge of the types of the values. But the local variable tables and operand stacks on the Java stack do not provide any information about the types of the values they contain: a four bytes word might represent a Java reference as well as an int value or a float value. So the problem is to determine the types of the values on the Java stack. The byte code instructions are typed and each instruction is applied to a particular type: the istore instruction stores an int value in the current local variable table, the aload instruction loads a Java reference on the current operand stack, etc. When interpreting a byte code instruction, it is possible to know the type of a value stored in 2

3 a local variable table or an operand stack. So the Java interpreter is extended in order to build a type stack parallel to the Java stack, which evolves with thread execution and contains the types of the values on the Java stack. Therefore, when capturing a thread state, the types of the values are given by the type stack and these values can be translated from a native (non typed) format to a portable format. The restoration of a Java thread state starts first with the creation of a new thread and then the initialization of its state with the information contained in a ThreadState object, relative to the code, the data and the Java stack. Finally, the execution of the new thread starts at the point at which the previous execution was interrupted. 4.2 Discussion Our implementation We have implemented a mechanism that follows this approach and performs the capture/restoration of Java threads state. The objective of our project was to add a new service to the JDK, provided through a Java class. On the one hand, this service can be combined with other Java services like object serialization or dynamic class loading in order to implement higher level services like thread migration or thread persistence; on the other hand, higher level services can be adapted to applications needs by specializing object serialization and class loading. Our mechanism was implemented within the JDK [Sun99]. The interface of the provided service is briefly described in Figure 1. The ThreadState class specifies a Java object that describes the state of a Java thread. The ThreadStateManagement class provides two methods: capture, which captures the state of the current Java thread and stores it in a ThreadState object; and restore, which creates a new thread, initializes it with a given thread state and starts it. public final class ThreadStateManagement { /* Captures the state of the current Java thread and returns it as a ThreadState object. */ public static ThreadState capture(); /* Creates a new Java thread, initializes it with the threadst state and starts its execution. */ public static Thread restore(threadstate threadst); } Figure 1: Interface of our Java thread state capture/restoration service We have done some preliminary experiments with our mechanism, like thread migration, remote thread cloning and thread persistence. A description of these experiments can be found in [Bouchenak99a] Sumatra/D Agents The JVM extension technique has also been used to implement the Sumatra [Ranganathan97] and the D Agents [Gray99] mobile agent platforms, which provide strong migration for their agents. For the Ara mobile agent platform [Peine97], which supports agents written in Tcl and C/C++, an integration of Java agents, following a similar approach, is underway. From a functional point of view, the difference between the Sumatra/D Agents platforms and our 3

4 implementation is that they provide a complete distributed system with a mobility service for their agents while we provide a new service for the JDK, a service that can be combined with other Java services and used to implement either mobility or persistence. Note that our service provides the internal state of a thread and does not manage its external state, i.e. resources like files or communication channels. So when implementing thread migration or thread persistence on top of our service, such resources should be managed according to applications needs. We also notice that the JVM extension approach requires modified JVM, which is detrimental to the portability on other Java platforms. We performed some preliminary measurements of the cost of our mechanism [Bouchenak99a]. We now compare our results with those of the Wasp platform. We first noticed that with our mechanism, the average cost of a thread state capture/restoration operation is 7 ms, which compares favorably with the 25 ms induced by Wasp s mechanism. This performance difference is due to the fact that our mechanism was integrated into the JVM while Wasp s mechanism was implemented on top of the virtual machine. We also noticed that due to the extension of the Java interpreter, the use of our capture mechanism by an application induces a factor of 10 on application execution time. This overhead is an order of magnitude less than that induced by Wasp s mechanism, but it is still large. The approach described in section 5 aims at eliminating this overhead. 5 Third approach: Extending the JVM without modifying its Java interpreter 5.1 Objectives and Design principles The above discussion has identified two sources of overhead for a Java thread capture and restoration service: the cost of the mechanism itself, which can be reduced by extending the JVM, the overhead induced on the execution of the application, which can be eliminated if the Java interpreter is not modified. The idea of the third approach is to extend the JVM without modifying the Java interpreter, thus attempting to reduce both sources of additional costs. With this approach, the capture and the restoration of the state of a thread are performed in the same way as the technique described in section 4. And by leaving the interpreter unmodified, no execution overhead is incurred. However, the problem to be solved is to recognize the types of the values on the thread s Java stack. Like in the second approach (section 4), a type stack parallel to the Java stack of a thread and containing the types of the values on the Java stack must be built. But unlike the second approach, the construction of the type stack associated with a Java stack is not performed during the execution of the application but at state capture time, which does not require the interpreter to be modified. Since the byte code instructions are typed, the principle of the solution is to guess which byte code instructions were used to push the values onto the Java stack (in the local variable tables and operand stacks). For each frame on the Java stack, the pc value points to the last instruction executed by the thread in the 4

5 corresponding method. Since the code of this method is known, parsing the instructions until the last instruction executed by the thread in the method allows the types of the local values to be recognized. While parsing the code from the first instruction of the method to the instruction pointed by the pc, three instruction kinds may be found: An instruction that recognizes a type. Such an instruction may a) push a value onto the operand stack: the corresponding type is pushed onto the type stack; or b) pop a value from the operand stack: the corresponding type is popped from the type stack; or c) read/write a value from/to a local variable: the corresponding type is assigned to the corresponding variable in the type stack. Then the next instruction is processed. A branch instruction. With such an instruction, parsing the code might not be sequential. The following instruction might be the next instruction or an instruction pointed by a branch address, depending on the address of the last instruction executed by the thread, the branch address and the address of the current branch instruction [Bouchenak99b]. There are many kinds of branch instructions: unconditional branch like the goto instruction, conditional branch with two choices like if instructions and conditional branch with many choices (many branch addresses) like the switch instruction. Other instruction. In this case, nothing is done and the next instruction is processed. 5.2 Discussion We do not know of any implementation of the above technique to capturing/restoring Java threads state. Our own implementation is in progress; it provides the interface described in Figure 1. We are currently in the process of validating a first version. Here is our prediction for the performance of this mechanism. First, this technique should not induce any overhead on applications performance because the capture of a thread state is performed only at capture time: nothing is done during the application s execution like in the first approach (statements inserted in the application code) or the second approach (Java interpreter extended). Then, with this mechanism, the cost of a capture/restoration operation should be, on the one hand, lower than the cost of the same operation with the first technique because the first technique is implemented on top of the JVM while the proposed one is implemented within the JVM. On the other hand, the cost of a capture/restoration operation should be higher than its equivalent with the second technique because the proposed technique performs an additional processing during the capture: parsing the code to recognize the types of the values. 6 Summary and future directions We have reported on several approaches to capturing/restoring Java threads state. Two observations concerning the design of a Java thread state capture/restoration service are important: The JVM extension approach reduces the additional costs induced by a capture/restoration service. With a JVM extension approach, either the Java interpreter is extended and this induces an overhead on application performance; or the Java interpreter is not modified and there is no overhead on application 5

6 performance but an additional cost on the service itself. We have experimented the implementation of the first technique proposed by the Wasp project and given a preliminary evaluation of this technique. We have implemented, evaluated and experimented the second technique. And we propose an implementation of the third technique that we are currently validating on the Java 2 SDK (formerly JDK 1.2). We have compared our implementations to their peers in the Java mobile agents area; and an experimentation and performance comparison with the D Agents platform is planned. We are also investigating the related work in order to compare our work with those achieved in the Java persistence area. Bibliography [Bouchenak99a] S. Bouchenak. Pickling threads state in the Java system. Third European Research Seminar on Advances in Distributed Systems (ERSADS 99), Madeira Island, Portugal, April [Bouchenak99b] S. Bouchenak. Java threads : thread state Capture/Restoration. [Fünfrocken98] S. Fünfrocken. Transparent Migration of Java-based Mobile Agents (Capturing and Reestablishing the State of Java Programs). Proceedings of Second International Workshop Mobile Agents 98 (MA 98), Stuttgart, Allemagne, September [Gray99] R. Gray. D Agents. Dartmouth College. [Lindholm96] T. Lindholm et F. Yellin. Java Virtual Machine Specification. Addison Wesley, [Peine97] H. Peine and T. Stolpmann. The Architecture of the Ara Platform for Mobile Agents. 1 st International Workshop on Mobile Agents (MA 97), Berlin, Germany, April [Ranganathan97] M. Ranganathan, A. Acharya, S. D. Sharma et J. Saltz. Network-aware Mobile Programs. Proceedings of the USENIX Annual Technical Conference, Anaheim, California, [Sun99] Sun Microsystems. Overview Of Java Platform Product Family, Sun Microsystems. 6

Abstract. Keywords: mobility, persistence, migration, checkpointing, recovery, thread, JVM

Abstract. Keywords: mobility, persistence, migration, checkpointing, recovery, thread, JVM Making Java Applications Mobile or Persistent Sara Bouchenak 1 SIRAC Laboratory (INPG-INRIA-UJF) INRIA Rhône-Alpes, 655 av. de l Europe, 38330 Montbonnot St Martin, France. Sara.Bouchenak@inria.fr Abstract

More information

Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence

Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence SOFTWARE PRACTICE AND EXPERIENCE Softw. Pract. Exper. 2000; 00:1 7 [Version: 2002/09/23 v2.2] Experiences Implementing Efficient Java Thread Serialization, Mobility and Persistence S. Bouchenak, D. Hagimont,

More information

Techniques for Implementing Efficient Java Thread Serialization

Techniques for Implementing Efficient Java Thread Serialization Techniques for Implementing Efficient Java Thread Serialization Sara Bouchenak Swiss Federal Inst. of Technology IC / IIF / LABOS / INN 315 CH-1015 Lausanne, Switzerland Sara.Bouchenak@epfl.ch Daniel Hagimont

More information

Migration Transparency in a Mobile Agent Based Computational Grid

Migration Transparency in a Mobile Agent Based Computational Grid Migration Transparency in a Mobile Agent Based Computational Grid RAFAEL FERNANDES LOPES and FRANCISCO JOSÉ DA SILVA E SILVA Departamento de Informática Universidade Federal do Maranhão, UFMA Av dos Portugueses,

More information

A grid middleware for distributed Java computing with MPI binding and process migration supports

A grid middleware for distributed Java computing with MPI binding and process migration supports Title A grid middleware for distributed Java computing with MPI binding and process migration supports Author(s) Chen, L; Wang, CL; Lau, FCM Citation Journal Of Computer Science And Technology, 2003, v.

More information

Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture

Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture Australian Computer Science Communications, Vol.21, No.4, 1999, Springer-Verlag Singapore Parallelism of Java Bytecode Programs and a Java ILP Processor Architecture Kenji Watanabe and Yamin Li Graduate

More information

Interaction of JVM with x86, Sparc and MIPS

Interaction of JVM with x86, Sparc and MIPS Interaction of JVM with x86, Sparc and MIPS Sasikanth Avancha, Dipanjan Chakraborty, Dhiral Gada, Tapan Kamdar {savanc1, dchakr1, dgada1, kamdar}@cs.umbc.edu Department of Computer Science and Electrical

More information

Transparent Migration of Mobile Agents Using the Java Platform Debugger Architecture

Transparent Migration of Mobile Agents Using the Java Platform Debugger Architecture Transparent Migration of Mobile Agents Using the Java Platform Debugger Architecture Torsten Illmann, Tilman Krueger, Frank Kargl, and Michael Weber University of Ulm, Dep. of Media Computer Science, 89069

More information

Creating and Running Mobile Agents with XJ DOME

Creating and Running Mobile Agents with XJ DOME Creating and Running Mobile Agents with XJ DOME Kirill Bolshakov, Andrei Borshchev, Alex Filippoff, Yuri Karpov, and Victor Roudakov Distributed Computing & Networking Dept. St.Petersburg Technical University

More information

Compiling Techniques

Compiling Techniques Lecture 10: Introduction to 10 November 2015 Coursework: Block and Procedure Table of contents Introduction 1 Introduction Overview Java Virtual Machine Frames and Function Call 2 JVM Types and Mnemonics

More information

A Mechanism for Runtime Evolution of Objects

A Mechanism for Runtime Evolution of Objects A Mechanism for Runtime Evolution of Objects Yasuhiro Sugiyama Department of Computer Science Nihon University Koriyama, Japan sugiyama@ce.nihon-u.ac.jp 1. Runtime Version Management of Objects for Software

More information

CSc 453 Interpreters & Interpretation

CSc 453 Interpreters & Interpretation CSc 453 Interpreters & Interpretation Saumya Debray The University of Arizona Tucson Interpreters An interpreter is a program that executes another program. An interpreter implements a virtual machine,

More information

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario An Introduction to Multicodes Ben Stephenson Department of Computer Science University of Western Ontario ben@csd csd.uwo.ca Outline Java Virtual Machine Background The Current State of the Multicode Art

More information

High-Level Language VMs

High-Level Language VMs High-Level Language VMs Outline Motivation What is the need for HLL VMs? How are these different from System or Process VMs? Approach to HLL VMs Evolutionary history Pascal P-code Object oriented HLL VMs

More information

Using implicit fitness functions for genetic algorithm-based agent scheduling

Using implicit fitness functions for genetic algorithm-based agent scheduling Using implicit fitness functions for genetic algorithm-based agent scheduling Sankaran Prashanth, Daniel Andresen Department of Computing and Information Sciences Kansas State University Manhattan, KS

More information

CORE SEMANTICS FOR PUBLIC ONTOLOGIES

CORE SEMANTICS FOR PUBLIC ONTOLOGIES AFRL-IF-RS-TR-2005-301 Final Technical Report August 2005 CORE SEMANTICS FOR PUBLIC ONTOLOGIES University of West Florida Sponsored by Defense Advanced Research Projects Agency DARPA Order No. K537 APPROVED

More information

Parsing Scheme (+ (* 2 3) 1) * 1

Parsing Scheme (+ (* 2 3) 1) * 1 Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes

More information

JVM Continuations. Lukas Stadler. Johannes Kepler University Linz, Austria

JVM Continuations. Lukas Stadler. Johannes Kepler University Linz, Austria JVM Continuations Lukas Stadler Johannes Kepler University Linz, Austria Agenda Continuations Uses for continuations Common implementation techniques Our lazy approach Implementation Summary Continuations

More information

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace Project there are a couple of 3 person teams regroup or see me or forever hold your peace a new drop with new type checking is coming using it is optional 1 Compiler Architecture source code Now we jump

More information

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1 CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines

More information

Genetic Programming in the Wild:

Genetic Programming in the Wild: Genetic Programming in the Wild: and orlovm, sipper@cs.bgu.ac.il Department of Computer Science Ben-Gurion University, Israel GECCO 2009, July 8 12 Montréal, Québec, Canada 1 / 46 GP: Programs or Representations?

More information

Data Sheet: Storage Management Veritas Storage Foundation for Oracle RAC from Symantec Manageability and availability for Oracle RAC databases

Data Sheet: Storage Management Veritas Storage Foundation for Oracle RAC from Symantec Manageability and availability for Oracle RAC databases Manageability and availability for Oracle RAC databases Overview Veritas Storage Foundation for Oracle RAC from Symantec offers a proven solution to help customers implement and manage highly available

More information

Supported Operating Environment. Java Support

Supported Operating Environment. Java Support Supported Operating Environment Java Support 9/10/2018 Java Support Find information about supported versions of Java across all products. eservices eservices Knowledge Manager (Legacy) Knowledge Manager

More information

A Quantitative Evaluation of the Contribution of Native Code to Java Workloads

A Quantitative Evaluation of the Contribution of Native Code to Java Workloads A Quantitative Evaluation of the Contribution of Native Code to Java Workloads Walter Binder University of Lugano Switzerland walter.binder@unisi.ch Jarle Hulaas, Philippe Moret EPFL Switzerland {jarle.hulaas,philippe.moret}@epfl.ch

More information

02 B The Java Virtual Machine

02 B The Java Virtual Machine 02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual

More information

EXECUTION CONTEXT MIGRATION WITHIN A STANDARD JAVA VIRTUAL MACHINE ENVIRONMENT

EXECUTION CONTEXT MIGRATION WITHIN A STANDARD JAVA VIRTUAL MACHINE ENVIRONMENT EXECUTION CONTEXT MIGRATION WITHIN A STANDARD JAVA VIRTUAL MACHINE ENVIRONMENT ANDREW DORMAN Supervisor: DR. CASPAR RYAN Honours Thesis School of Computer Science and Information Technology RMIT University

More information

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

Untyped Memory in the Java Virtual Machine

Untyped Memory in the Java Virtual Machine Untyped Memory in the Java Virtual Machine Andreas Gal and Michael Franz University of California, Irvine {gal,franz}@uci.edu Christian W. Probst Technical University of Denmark probst@imm.dtu.dk July

More information

TRIREME Commander: Managing Simulink Simulations And Large Datasets In Java

TRIREME Commander: Managing Simulink Simulations And Large Datasets In Java TRIREME Commander: Managing Simulink Simulations And Large Datasets In Java Andrew Newell Electronic Warfare & Radar Division, Defence Science and Technology Organisation andrew.newell@dsto.defence.gov.au

More information

Java Internals. Frank Yellin Tim Lindholm JavaSoft

Java Internals. Frank Yellin Tim Lindholm JavaSoft Java Internals Frank Yellin Tim Lindholm JavaSoft About This Talk The JavaSoft implementation of the Java Virtual Machine (JDK 1.0.2) Some companies have tweaked our implementation Alternative implementations

More information

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017 Introduction to Java Lecture 1 COP 3252 Summer 2017 May 16, 2017 The Java Language Java is a programming language that evolved from C++ Both are object-oriented They both have much of the same syntax Began

More information

Portable Resource Control in Java The J-SEAL2 Approach

Portable Resource Control in Java The J-SEAL2 Approach Portable Resource Control in Java The J-SEAL2 Approach Walter Binder w.binder@coco.co.at CoCo Software Engineering GmbH Austria Jarle Hulaas Jarle.Hulaas@cui.unige.ch Alex Villazón Alex.Villazon@cui.unige.ch

More information

Portable Smart Messages for Ubiquitous Java-enabled Devices

Portable Smart Messages for Ubiquitous Java-enabled Devices Portable s for Ubiquitous Java-enabled Devices Nishkam Ravi, Cristian Borcea, Porlin Kang, and Liviu Iftode Department of Computer Science, Rutgers University {nravi, borcea, kangp, iftode@cs.rutgers.edu

More information

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE 1 SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ Java Programming Language Java Introduced in 1995 Object-oriented programming

More information

User Interface Techniques for Mobile Agents

User Interface Techniques for Mobile Agents User Interface Techniques for Mobile Agents Matthias Grimm Mohammad-Reza Tazari Matthias Finke Computer Graphics Center (ZGDV) e.v. Fraunhoferstr. 5, 64283 Darmstadt, Germany {Matthias.Grimm, Saied.Tazari,

More information

Topics Power tends to corrupt; absolute power corrupts absolutely. Computer Organization CS Data Representation

Topics Power tends to corrupt; absolute power corrupts absolutely. Computer Organization CS Data Representation Computer Organization CS 231-01 Data Representation Dr. William H. Robinson November 12, 2004 Topics Power tends to corrupt; absolute power corrupts absolutely. Lord Acton British historian, late 19 th

More information

Types of Virtualization. Types of virtualization

Types of Virtualization. Types of virtualization Types of Virtualization Emulation VM emulates/simulates complete hardware Unmodified guest OS for a different PC can be run Bochs, VirtualPC for Mac, QEMU Full/native Virtualization VM simulates enough

More information

Run-time Program Management. Hwansoo Han

Run-time Program Management. Hwansoo Han Run-time Program Management Hwansoo Han Run-time System Run-time system refers to Set of libraries needed for correct operation of language implementation Some parts obtain all the information from subroutine

More information

CSCE 314 Programming Languages

CSCE 314 Programming Languages CSCE 314 Programming Languages! JVM Dr. Hyunyoung Lee 1 Java Virtual Machine and Java The Java Virtual Machine (JVM) is a stack-based abstract computing machine. JVM was designed to support Java -- Some

More information

Serialisation based approach for processes strong mobility

Serialisation based approach for processes strong mobility ICTA 7, April 12-14, Hammamet, Tunisia Serialisation based approach for processes strong mobility Soumaya Marzouk Maher Ben Jemaa Mohamed Jmaiel ReDCAD Laboratory, National School of Engineers of Sfax

More information

Q.1 Explain Computer s Basic Elements

Q.1 Explain Computer s Basic Elements Q.1 Explain Computer s Basic Elements Ans. At a top level, a computer consists of processor, memory, and I/O components, with one or more modules of each type. These components are interconnected in some

More information

Lecture 1: Overview of Java

Lecture 1: Overview of Java Lecture 1: Overview of Java What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++ Designed for easy Web/Internet applications Widespread

More information

Per-Thread Batch Queues For Multithreaded Programs

Per-Thread Batch Queues For Multithreaded Programs Per-Thread Batch Queues For Multithreaded Programs Tri Nguyen, M.S. Robert Chun, Ph.D. Computer Science Department San Jose State University San Jose, California 95192 Abstract Sharing resources leads

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #23 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 23 Lecture #23 1 Slide 1 Java: History Spring 1990 April 1991: Naughton, Gosling and Sheridan (

More information

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line A SIMPLE JAVA PROGRAM Class Declaration The Main Line INDEX The Line Contains Three Keywords The Output Line COMMENTS Single Line Comment Multiline Comment Documentation Comment TYPE CASTING Implicit Type

More information

AdJava Automatic Distribution of Java Applications

AdJava Automatic Distribution of Java Applications AdJava Automatic Distribution of Java Applications Mohammad M. Fuad and Michael J. Oudshoorn Department of Computer Science University of Adelaide Adelaide 5005, South Australia {Fuad, Michael}@cs.adelaide.edu.au

More information

MetaVM: A Transparent Distributed Object System Supported by Runtime Compiler

MetaVM: A Transparent Distributed Object System Supported by Runtime Compiler MetaVM: A Transparent Distributed Object System Supported by Runtime Compiler Kazuyuki Shudo Yoichi Muraoka School of Science and Engineering Waseda University Okubo 3-4-1, Shinjuku-ku, Tokyo 169-8555,

More information

Java Virtual Machine

Java Virtual Machine Evaluation of Java Thread Performance on Two Dierent Multithreaded Kernels Yan Gu B. S. Lee Wentong Cai School of Applied Science Nanyang Technological University Singapore 639798 guyan@cais.ntu.edu.sg,

More information

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 4, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts

More information

Administration CS 412/413. Why build a compiler? Compilers. Architectural independence. Source-to-source translator

Administration CS 412/413. Why build a compiler? Compilers. Architectural independence. Source-to-source translator CS 412/413 Introduction to Compilers and Translators Andrew Myers Cornell University Administration Design reports due Friday Current demo schedule on web page send mail with preferred times if you haven

More information

Lecture 7: February 10

Lecture 7: February 10 CMPSCI 677 Operating Systems Spring 2016 Lecture 7: February 10 Lecturer: Prashant Shenoy Scribe: Tao Sun 7.1 Server Design Issues 7.1.1 Server Design There are two types of server design choices: Iterative

More information

A Type System for Object Initialization In the Java TM Bytecode Language

A Type System for Object Initialization In the Java TM Bytecode Language Electronic Notes in Theoretical Computer Science 10 (1998) URL: http://www.elsevier.nl/locate/entcs/volume10.html 7 pages A Type System for Object Initialization In the Java TM Bytecode Language Stephen

More information

Agenda. Threads. Single and Multi-threaded Processes. What is Thread. CSCI 444/544 Operating Systems Fall 2008

Agenda. Threads. Single and Multi-threaded Processes. What is Thread. CSCI 444/544 Operating Systems Fall 2008 Agenda Threads CSCI 444/544 Operating Systems Fall 2008 Thread concept Thread vs process Thread implementation - user-level - kernel-level - hybrid Inter-process (inter-thread) communication What is Thread

More information

Monitoring System for Distributed Java Applications

Monitoring System for Distributed Java Applications Monitoring System for Distributed Java Applications W lodzimierz Funika 1, Marian Bubak 1,2, and Marcin Smȩtek 1 1 Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland 2 Academic

More information

Operating System Services

Operating System Services CSE325 Principles of Operating Systems Operating System Services David Duggan dduggan@sandia.gov January 22, 2013 Reading Assignment 3 Chapter 3, due 01/29 1/23/13 CSE325 - OS Services 2 What Categories

More information

Mechanized Operational Semantics

Mechanized Operational Semantics Mechanized Operational Semantics J Strother Moore Department of Computer Sciences University of Texas at Austin Marktoberdorf Summer School 2008 (Lecture 2: An Operational Semantics) 1 M1 An M1 state consists

More information

Final Exam. 12 December 2018, 120 minutes, 26 questions, 100 points

Final Exam. 12 December 2018, 120 minutes, 26 questions, 100 points Name: CS520 Final Exam 12 December 2018, 120 minutes, 26 questions, 100 points The exam is closed book and notes. Please keep all electronic devices turned off and out of reach. Note that a question may

More information

JAM 16: The Instruction Set & Sample Programs

JAM 16: The Instruction Set & Sample Programs JAM 16: The Instruction Set & Sample Programs Copyright Peter M. Kogge CSE Dept. Univ. of Notre Dame Jan. 8, 1999, modified 4/4/01 Revised to 16 bits: Dec. 5, 2007 JAM 16: 1 Java Terms Java: A simple,

More information

Java On Steroids: Sun s High-Performance Java Implementation. History

Java On Steroids: Sun s High-Performance Java Implementation. History Java On Steroids: Sun s High-Performance Java Implementation Urs Hölzle Lars Bak Steffen Grarup Robert Griesemer Srdjan Mitrovic Sun Microsystems History First Java implementations: interpreters compact

More information

Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved

Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved C5 Micro-Kernel: Real-Time Services for Embedded and Linux Systems Copyright 2003- Jaluna SA. All rights reserved. JL/TR-03-31.0.1 1 Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview

More information

Java and C II. CSE 351 Spring Instructor: Ruth Anderson

Java and C II. CSE 351 Spring Instructor: Ruth Anderson Java and C II CSE 351 Spring 2017 Instructor: Ruth Anderson Teaching Assistants: Dylan Johnson Kevin Bi Linxing Preston Jiang Cody Ohlsen Yufang Sun Joshua Curtis Administrivia Lab 5 Due TONIGHT! Fri 6/2

More information

For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to

For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. Contents at a Glance About the Author...xi

More information

CS2110 Fall 2011 Lecture 25. Under the Hood: The Java Virtual Machine, Part II

CS2110 Fall 2011 Lecture 25. Under the Hood: The Java Virtual Machine, Part II CS2110 Fall 2011 Lecture 25 Under the Hood: The Java Virtual Machine, Part II 1 Java program last time Java compiler Java bytecode (.class files) Compile for platform with JIT Interpret with JVM run native

More information

CS420: Operating Systems

CS420: Operating Systems Threads James Moscola Department of Physical Sciences York College of Pennsylvania Based on Operating System Concepts, 9th Edition by Silberschatz, Galvin, Gagne Threads A thread is a basic unit of processing

More information

Designing secure agents with 0.0. technologies for user's mobility

Designing secure agents with 0.0. technologies for user's mobility 9 Designing secure agents with 0.0. technologies for user's mobility David Carlier RD2P - Recherche & Diveloppement Dossier Portable CHR Calmette, 59037 Lille Cidex - France tel: +33 2044 6046, fax: +332044

More information

Operating System: Chap2 OS Structure. National Tsing-Hua University 2016, Fall Semester

Operating System: Chap2 OS Structure. National Tsing-Hua University 2016, Fall Semester Operating System: Chap2 OS Structure National Tsing-Hua University 2016, Fall Semester Outline OS Services OS-Application Interface OS Structure Chapter2 OS-Structure Operating System Concepts NTHU LSA

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

Veritas InfoScale Enterprise for Oracle Real Application Clusters (RAC)

Veritas InfoScale Enterprise for Oracle Real Application Clusters (RAC) Veritas InfoScale Enterprise for Oracle Real Application Clusters (RAC) Manageability and availability for Oracle RAC databases Overview Veritas InfoScale Enterprise for Oracle Real Application Clusters

More information

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters : A flexible and efficient dispatch technique for virtual machine interpreters Marc Berndl Benjamin Vitale Mathew Zaleski Angela Demke Brown Research supported by IBM CAS, NSERC, CITO 1 Interpreter performance

More information

Veritas Storage Foundation for Oracle RAC from Symantec

Veritas Storage Foundation for Oracle RAC from Symantec Veritas Storage Foundation for Oracle RAC from Symantec Manageability, performance and availability for Oracle RAC databases Data Sheet: Storage Management Overviewview offers a proven solution to help

More information

NetBeans IDE Field Guide

NetBeans IDE Field Guide NetBeans IDE Field Guide Copyright 2004 Sun Microsystems, Inc. All rights reserved. Debugging Java Applications Table of Contents Starting a Debugging Session...2 Debugger Windows...3 Attaching the Debugger

More information

Problem with Scanning an Infix Expression

Problem with Scanning an Infix Expression Operator Notation Consider the infix expression (X Y) + (W U), with parentheses added to make the evaluation order perfectly obvious. This is an arithmetic expression written in standard form, called infix

More information

Bluetooth Scatternet Application. Sun Code for Freedom

Bluetooth Scatternet Application. Sun Code for Freedom Bluetooth Scatternet Application Sun Code for Freedom Submitted for Code For Freedom Contest 2009 By Ravi D Suvarna Ananth V Sandeep Jain Index Topic Page No. 1. Introduction ---------------------------------------------

More information

Operating- System Structures

Operating- System Structures Operating- System Structures 2 CHAPTER Practice Exercises 2.1 What is the purpose of system calls? Answer: System calls allow user-level processes to request services of the operating system. 2.2 What

More information

Implementing Probes for J2EE Cluster Monitoring

Implementing Probes for J2EE Cluster Monitoring Implementing s for J2EE Cluster Monitoring Emmanuel Cecchet, Hazem Elmeleegy, Oussama Layaida, Vivien Quéma LSR-IMAG Laboratory (CNRS, INPG, UJF) - INRIA INRIA Rhône-Alpes, 655 av. de l Europe, 38334 Saint-Ismier

More information

Distributed Systems Principles and Paradigms

Distributed Systems Principles and Paradigms Distributed Systems Principles and Paradigms Chapter 03 (version February 11, 2008) Maarten van Steen Vrije Universiteit Amsterdam, Faculty of Science Dept. Mathematics and Computer Science Room R4.20.

More information

Chapter 5. A Closer Look at Instruction Set Architectures

Chapter 5. A Closer Look at Instruction Set Architectures Chapter 5 A Closer Look at Instruction Set Architectures Chapter 5 Objectives Understand the factors involved in instruction set architecture design. Gain familiarity with memory addressing modes. Understand

More information

Topics. Structured Computer Organization. Assembly language. IJVM instruction set. Mic-1 simulator programming

Topics. Structured Computer Organization. Assembly language. IJVM instruction set. Mic-1 simulator programming Topics Assembly language IJVM instruction set Mic-1 simulator programming http://www.ontko.com/mic1/ Available in 2 nd floor PC lab S/W found in directory C:\mic1 1 Structured Computer Organization 2 Block

More information

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats

Chapter 5. A Closer Look at Instruction Set Architectures. Chapter 5 Objectives. 5.1 Introduction. 5.2 Instruction Formats Chapter 5 Objectives Chapter 5 A Closer Look at Instruction Set Architectures Understand the factors involved in instruction set architecture design. Gain familiarity with memory addressing modes. Understand

More information

Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points

Final Exam. 11 May 2018, 120 minutes, 26 questions, 100 points Name: CS520 Final Exam 11 May 2018, 120 minutes, 26 questions, 100 points The exam is closed book and notes. Please keep all electronic devices turned off and out of reach. Note that a question may require

More information

Outline. Introduction to Java. What Is Java? History. Java 2 Platform. Java 2 Platform Standard Edition. Introduction Java 2 Platform

Outline. Introduction to Java. What Is Java? History. Java 2 Platform. Java 2 Platform Standard Edition. Introduction Java 2 Platform Outline Introduction to Java Introduction Java 2 Platform CS 3300 Object-Oriented Concepts Introduction to Java 2 What Is Java? History Characteristics of Java History James Gosling at Sun Microsystems

More information

Performance Analysis of Java Communications with and without CORBA

Performance Analysis of Java Communications with and without CORBA Performance Analysis of Java Communications with and without CORBA Victor Giddings victor.giddings@ois.com 3 Objective Interface Systems, Inc. Purpose Analyze performance of various Java-based distribution

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2017 Lecture 27 Virtualization Slides based on Various sources 1 1 Virtualization Why we need virtualization? The concepts and

More information

An Approach to Heterogeneous Process State Capture / Recovery to Achieve Minimum Performance Overhead During Normal Execution

An Approach to Heterogeneous Process State Capture / Recovery to Achieve Minimum Performance Overhead During Normal Execution An Approach to Heterogeneous Process State Capture / Recovery to Achieve Minimum Performance Overhead During Normal Execution Prashanth P. Bungale +, Swaroop Sridhar + Department of Computer Science The

More information

Distributed Systems Operation System Support

Distributed Systems Operation System Support Hajussüsteemid MTAT.08.009 Distributed Systems Operation System Support slides are adopted from: lecture: Operating System(OS) support (years 2016, 2017) book: Distributed Systems: Concepts and Design,

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Java platform. Applets and applications. Java programming language: facilities and foundation. Memory management

More information

Performance Impact of Multithreaded Java Server Applications

Performance Impact of Multithreaded Java Server Applications Performance Impact of Multithreaded Java Server Applications Yue Luo, Lizy K. John Laboratory of Computer Architecture ECE Department University of Texas at Austin 1/2/01 1 Outline Motivation VolanoMark

More information

Today. Instance Method Dispatch. Instance Method Dispatch. Instance Method Dispatch 11/29/11. today. last time

Today. Instance Method Dispatch. Instance Method Dispatch. Instance Method Dispatch 11/29/11. today. last time CS2110 Fall 2011 Lecture 25 Java program last time Java compiler Java bytecode (.class files) Compile for platform with JIT Interpret with JVM Under the Hood: The Java Virtual Machine, Part II 1 run native

More information

VIProf: A Vertically Integrated Full-System Profiler

VIProf: A Vertically Integrated Full-System Profiler VIProf: A Vertically Integrated Full-System Profiler NGS Workshop, April 2007 Hussam Mousa Chandra Krintz Lamia Youseff Rich Wolski RACELab Research Dynamic software adaptation As program behavior or resource

More information

The von Neumann Architecture. IT 3123 Hardware and Software Concepts. The Instruction Cycle. Registers. LMC Executes a Store.

The von Neumann Architecture. IT 3123 Hardware and Software Concepts. The Instruction Cycle. Registers. LMC Executes a Store. IT 3123 Hardware and Software Concepts February 11 and Memory II Copyright 2005 by Bob Brown The von Neumann Architecture 00 01 02 03 PC IR Control Unit Command Memory ALU 96 97 98 99 Notice: This session

More information

CHAPTER 5 A Closer Look at Instruction Set Architectures

CHAPTER 5 A Closer Look at Instruction Set Architectures CHAPTER 5 A Closer Look at Instruction Set Architectures 5.1 Introduction 293 5.2 Instruction Formats 293 5.2.1 Design Decisions for Instruction Sets 294 5.2.2 Little versus Big Endian 295 5.2.3 Internal

More information

Memory Space Representation for Heterogeneous Network Process Migration

Memory Space Representation for Heterogeneous Network Process Migration Memory Space Representation for Heterogeneous Network Process Migration Kasidit Chanchio Xian-He Sun Department of Computer Science Louisiana State University Baton Rouge, LA 70803-4020 sun@bit.csc.lsu.edu

More information

Knowledge- Based System CORBA ORB

Knowledge- Based System CORBA ORB The Role of Network Trac Statistics in Devising Object Migration Policies Ivan Marsic and Kanth S.L. Jonnalagadda CAIP Center, Rutgers University Piscataway, NJ 08855{1390 fmarsic,kanthg@caip.rutgers.edu

More information

Zing Vision. Answering your toughest production Java performance questions

Zing Vision. Answering your toughest production Java performance questions Zing Vision Answering your toughest production Java performance questions Outline What is Zing Vision? Where does Zing Vision fit in your Java environment? Key features How it works Using ZVRobot Q & A

More information

2 Introduction to Java. Introduction to Programming 1 1

2 Introduction to Java. Introduction to Programming 1 1 2 Introduction to Java Introduction to Programming 1 1 Objectives At the end of the lesson, the student should be able to: Describe the features of Java technology such as the Java virtual machine, garbage

More information

JiST: Java in Simulation Time

JiST: Java in Simulation Time JiST: Java in Simulation Time Transparent Parallel and Optimistic Execution of Discrete Event Simulations (PDES) of Mobile Ad hoc Networks (MANETs) Rimon Barr barr@cs.cornell.edu Wireless Network Lab Cornell

More information

On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine

On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine Hitoshi Oi The University of Aizu June 16, 2005 Languages, Compilers, and Tools for Embedded Systems (LCTES

More information

231 Spring Final Exam Name:

231 Spring Final Exam Name: 231 Spring 2010 -- Final Exam Name: No calculators. Matching. Indicate the letter of the best description. (1 pt. each) 1. address 2. object code 3. condition code 4. byte 5. ASCII 6. local variable 7..global

More information

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Compiler Theory. (Semantic Analysis and Run-Time Environments) Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful

More information

Using Tcl Mobile Agents for Monitoring Distributed Computations

Using Tcl Mobile Agents for Monitoring Distributed Computations Using Tcl Mobile Agents for Monitoring Distributed Computations Dilyana Staneva, Emil Atanasov Abstract: Agents, integrating code and data mobility, can be used as building blocks for structuring distributed

More information