Practical Java Card bytecode compression 1

Size: px
Start display at page:

Download "Practical Java Card bytecode compression 1"

Transcription

1 RENPAR 14 / ASF / SYMPA Practical Java Card bytecode compression 1 Gabriel Bizzotto Gilles Grimaud LIFL, Universite de Lille 1 Gemplus Research Lab bizzotto@dea.lifl.fr grimaud@lifl.fr Abstract Our work concerns bytecode compression on an embedded, tiny and safe environment, and more specifically JAVA CARDS. [2] and [4] propose a way to compress java card bytecode into a format executable in an ultra light embedded system, using macro-packing. Our implementation, improved with new specifical algorithms, allows a better compress rate (up to 32%). In a smart card having 32kB EEPROM, up to 10kB can be freed, it is enough to store some applets. The execution of macro-packed programs is very simple and the code overhead in the operating system and in the virtual machine is very small. Unfortunately, the compression process is not feasible in a tiny embedded system. We propose a distribution of the compression process called Compression-Carrying Code or simply CCC. This distribution maintains the Java Card 2.11 compatibility [11], and allows a trusted, just-in-time compression by the embedded bytecode loader. Keywords Smartcard, Java Card, CCC, macro-packing, bytecode compression. 1. JAVA CARD Bytecode compression : state of the art 1.1. Why compressing JAVA CARD bytecode using macro-packing? In a smart card, all kinds of memory (RAM, EEPROM 2 and ROM 3 ) can be directly addressed by the CPU. This hardware property allows the operating system to run bytecoded programs in place, in storage, persistent memory, without any loading step. Programs compressed using Lempel-Ziv [12], Huffman [6] or JAVA dedicated algorithm [8, 1] have to be decompressed to be understandable by the JAVA CARD virtual machine. This unpacking step is not feasible in a smart card, due to the amount of RAM needed for unpacking (at least one basic bloc for stream-based decompression) and the time spent to store the uncompressed program (writing one 64 bytes page from RAM to EEPROM hangs the system for cycles) That s why we focus on bytecode macro-packing [2, 4] which is able to produce executable code without preliminary unpacking Macro-packing general working ABCABCDEFDEFABCABC XXYYXX X :ABCY:DEF Compressed bytecode Macroblob Figure 1: Example of macro-packing on an arbitrary instruction set. Compiled programs often contain series of instructions that appear several times. Some compilers are able to detect and to factorize these patterns into a single subroutine. Every occurrence of these patterns This work was supported by a grant from Gemplus Research Labs, and was performed within the Gemplus Research Labs. Non volatile memory. Read Only Memory.

2 is replaced by a call to the pattern and therefore the program is smaller. In the case of JAVA, patterns are not replaced by JUMPs or JSRs or calls but by a new proprietary instruction of the virtual machine. The JAVA CARD 2.11 specification [11] lets holes in the instruction set. Indeed one instruction is coded on 1 byte but not all of the 256 possible instructions are used. Instructions 185 to 253 (included) are neither specified nor reserved. These free instructions can be transformed into macro-instructions Limitations of the macro-packing The macro-packing of JAVA binaries described in [2] is constrained. The parameters to take in account for implementing macro-packing in JAVA CARD are not the same as for standard compression. Instructions forbidden in a macro A label must not be part of a macro, TRY/CATCH zones edges, which are considered as labelled, must not either. Control flow breaking instructions (JUMP, INVOKE, SWITCH, JSR,... ) are forbidden in macros, some constant pool references too. A macro can not contain a macro-instruction. Nevertheless some of these instructions can be used in a macro according to a specific JCVM 4 implementation. System code overhead The main loop of the JAVA CARD virtual machine has to be modified to perform the execution of a macro when it reads a non-standard unknown instruction. The code overhead is less than 2kB. The onboard applet loader/compressor/verifier described in section 3.1 (page 4) will take 7kB of native code. All this system code overhead concerns the ROM, it is the less critical memory of the smart card, however it must be taken in account to evaluate the benefit of implementing the compression in a smart card. Execution slow down The execution of macro-packed JAVA CARD bytecode will be slower than standard programs because of the JAVA CARD virtual machine main loop modification. The slow down measured by the IRISA in [2] is between 2% and 30%, however the 15% compress rate announced in that article could be profitable although. The next section presents different ways to use macro-packing in the real world, and for each the advantages and disadvantages. 2. Practical impact of the JCVM architecture on bytecode compression The figure 2 shows the actual building line of JAVA CARD programs. Compiling Converting [Proof] Sending Off-card - Cap file Loading [Proof check] Linking Virtual machine On-card Figure 2: Building line of JAVA CARD programs as it is used today The standard JCVM architecture After being compiled by a JAVA compiler, programs have to be converted from the JAVA Class file format to the JAVA CARD Cap file format. A safety proof can be added to the Cap file format [7]. The Cap file is sent to the card and written in EEPROM. Before performing the link step, the card may check the proof to ensure that the program is safe. The linker transforms the Cap file before storing it in EEPROM. The bytecode compression is an additional step. Where and when could it be done? JAVA CARD Virtual Machine.

3 2.2. On-card : embedded analyzer/compressor The macro-packer would be too big, complex and slow to work on a smart card : is the number of instructions in the applet to com- the pattern detection complexity is, press (up to 18500) ; the memory amount needed to compress with an acceptable speed and efficiency is unacceptable in a smart card ; the bytecode analyzer/compressor itself is too big to be stored on a smart card ; the compressor would often write in EEPROM, used as extra RAM, slowing down the process and stressing the EEPROM; after the bytecode analysis and the construction of the set of patterns, the selection of the best subset of patterns has a exponential complexity, simpler algorithms exist but are less efficient. RAM needs and complexity forbid an embedded execution of the analyzer/compressor on a smart card, and even if a practicable implementation is written, its size in ROM would not be recovered by the space saved by the compression External Macro-Packing usage If the bytecode analyzer/compressor is placed... Before the converter, the compressor would compress the Class file. This is not possible because of the converter. We do not write it and it checks the validity of the class file. If we modify the class file, the converter will refuse to work. Before the proof generator, the compressor would compress the Cap file. The proof generator would have to create a proof for a non-standard bytecode. After the proof generator, the embedded proof verifier will not be able to make the link between the proof (giving information on non-compressed bytecode) and the compressed bytecode. Compressing JAVA CARD bytecode off-card involves manifestly some problems. More, compressing an applet off-card breaks the JAVA CARD 2.11 compatibility due to the non standard macro-instructions added inside the bytecode. J. Ernst proposes in [3] a way to produce compact code on a native (non-java) executable file format. It could be a valid way to compress, indeed no macro-instruction is added in the bytecode, instead, subroutines are used. This way, the JAVA CARD 2.11 compatibility is not broken, the verifier can process the proof, and the virtual machine does not have to be modified. But it can not be used on Cap files, because : we do not produce the JAVA compiler. In the case studied by J. Ernst in [3], the compiler produces a highly compressible binary ; usage of JSR and GOTO (JAVA CARD instructions) for the macro-packing is too limited because of the verifier rules (jumps over a method area are forbidden) [10]; 3. Our solution We propose a solution feasible in a tiny embedded system and compliant with the JAVA CARD 2.11 specification. The process is split into 2 steps. The figure 3 shows the building line improved with the compression steps. First, the bytecode analysis is done off-card and information about how to compress is added to the Cap file. So all the complexity, RAM need and slow process are carried out by an off-card powerful device. This analyzer provides binaries in a special form called Compression-Carrying Code, or simply CCC. Second, the compression, the transformation of the bytecode, is done on-card thanks to code annotations received with the Cap file. This way, the Cap file respects the JAVA CARD 2.11 specification. This 2-steps compression process does not modify any other step of the building line.

4 RENPAR 14 / ASF / SYMPA Compiling Converting [Proof] Analyzing Sending Off-card : Cap + compress component Loading [Proof check] Linking Compressing Virtual machine On-card Figure 3: Building line of JAVA CARD programs including the two steps of the compression process. If an applet containing code annotations produced at step 1 is sent to a smart card that does not support the CCC technology, the compress component will be simply ignored and the applet will be loaded as any other JCVM Architecture The analyzer Our analyze step consists in the detection of the repetitive bytecode portions (patterns) in the bytecode of the Cap file. Once all the patterns are found, the 69 most interesting are selected (the JAVA CARD instruction set lets 69 unused instructions [11]). When a good 5 set of patterns is selected, the analyzer creates code annotations : the compress component. These annotations are sent with the applet in a custom component (the Cap file format defines 11 standard components and lets users add 116 additional components, their format is not specified and the user can send anything to the card). The compress component format is designed to be compact to minimize the amount of information to send to the card (in the case of an applet sent to a mobile phone via the GSM 6 network, this custom component have to be little). The Loader/Compressor The compress component is structured to allow an embedded just in time compression : the compression can be done in one pass on the bytecode. Moreover, it is designed to be easily verifiable in order to make the embedded compressor able to ensure the safety of a compressed program. The on-card verifiability of the compress component is mandatory to be consistent with the security policy inherent in smart cards. The following section deals with security in the compression process. When the applet loader has verified the proof, performed the link step and verified the compress component, the embedded compressor can use it to perform the macro-packing. The compression process consists in replacing all the occurrences of every pattern by the corresponding macro-instruction, and in storing every macro in a macroblob, out of the methods body Verification and security Because the compress component is created out of the card by an unknown generator, it is not trusted. The embedded compressor modifies the bytecode in the way specified by the compress component. So it is necessary to ensure that the compressed program is safe. Before the compression, the applet is verified by the smart card, using any technique (for example a proof-check [9]). To ensure that the compressed applet is safe too, we just need to prove that the virtual machine executes exactly the same instructions by when interpreting the compressed applet or the original applet. The verification of the custom component can be performed separately for each pattern occurrence (that are going to be replaced by a macro-instruction). The information given by the compress component on every pattern occurence has to verify some constraints : it must start in the body of a method and end in the body of the same method ; only the first instruction (the first byte) of the bytecode zone can be a label (in this case, the macroinstruction replacing the pattern occurrence will be a label) ; The complexity of finding the optimal set of patterns is exponential, so we use heuristics to find just a good one. Global System for Mobile communications.

5 the pattern occurrence must not contain any control flow breaking instruction (GOTO, SWITCH, INVOKE, JSR... ) ; the pattern occurrence must contain exactly the same bytes as the code zone stored in the macroblob. These checks ensure that the compressed applet s bytecode has exactly the same semantics, which is trusted thanks to the verifier (the proof checker). The embedded compressor/verifier has the same behavior as the proof checker with hostile applets : they are rejected. The embedded compressor/verifier has to know the offset of every label before starting the compression process, in order to be able to verify that a pattern occurrences do not contain any label. More, it has to relocate the bytecode during the compression process. Bytecode portions are shifted whenever a macroinstruction replaces a pattern occurrence, so some branch instructions have to be updated. One pass on the bytecode is necessary to build the label table before starting the compression, unless it is provided by the proof checker, which has built it. That is a technical improvement of the JAVA CARD bytecode, the next section describes a strategy improvement Alternative strategy : global macros Our experiments show that some patterns have a general purpose. We consider them as global macros, because any applet or package can contain these patterns. These patterns contain only simple stack operations like PUSH, DUP, ADD... In these macros, instructions taking in parameter constant pool entries are forbidden because a constant pool entry is local to an applet, whereas global macros are not. Instead of being redefined in every applet sent to the card, these patterns could be hard-coded in the JAVA CARD virtual machine, in assembly language (instead of JAVA) and in ROM (instead of EEPROM). This would make the compressed programs faster than the others, because several iterations of the main loop of the virtual machine are suppressed when executing a macro-instruction. Moreover, the compression process could be fully embedded. Indeed, the repetitive patterns are already known and stored in ROM when an applet is sent to the smart card. This makes the complexity of the pattern detection become in instead of (with the size in bytes of the applet, up to 18500, and the count of macros stored in ROM, up to 69). The macroblob is stored in ROM instead of EEPROM. So we could expect a better compress rate by using global macros than by using standard macros. But the results shows that it is not true, because the patterns are more constrained. Our experiments show that each kind of applet uses a specifical set of macros. To improve the compress rate of this technique, we can benefit from the fact the macros are stored in ROM ( cheap memory). Multiple sets of macros could be stored in ROM, one by kind of applet the smart card may receive. For example, a set of macros could be defined for GSM applets, and another one for banking applets. In this case, the compress component just have to specify which set of patterns the compressor should use. We may mix the technique of global macros with the standard macros to profit by both techniques advantages. 4. Experiments We present here the estimated compress rates obtained with our solution on a benchmark set of applets. We have tested 37 applets, with : 50% of GSM applets, containing less than 1kB of bytecode ; 25% of banking applets, containing from 1kB to 5kB of bytecode ; 25% of applications, containing more than 5kB of bytecode Compress rate The compress rate obtained with standard macro-packing is up to 32%. The compress rate obtained using only the global macros for a faster execution of compressed programs is up to 18%. This rate is measured only on the bytecode, not on the entire Cap File, which contains metadata for describing the applet.

6 4.2. The compress component The compress component, in the basic way we implemented it, represents on the average 30% of the size of the Cap file. It is a basic implementation because we do not use a feature of its structure. So 30% is a maximum and it can be reduced in future implementations. The size of the compress component has an impact on the cost of sending an applet (in the case of an applet sent via the GSM network), on the time necessary to send the applet, and on the time spent by the card to load the applet Impact of macro-packing on the JCVM speed According to the IRISA in [2], using standard macros (as described in section 1.2, page 1), slows down the execution of compressed programs from 2 to 30%. But our solution with the global macros improvement makes the execution of compressed programs faster than the execution of standard programs. In the case of global macros, we expect a speed up of the execution of a macro-instruction of at least 22% (depending on the virtual machine implementation), regarding the execution of a standard instruction. Because the main loop of the virtual machine does not have to be modified (instructions are just added to the interpreter), the speed up is real. Global macros Conclusion In this paper, we have shown a new compression approach to allow backward compatibility in macropacking. The compression process is split into 2 steps. The first one, off-card, analyzes the applet and creates code annotations. The second one, on-card, processes the code annotations and produces the compressed bytecode. Our technique can be integrated in a safe virtual machine. The onboard process checks key rules to ensure the consistency of the compressed bytecode. Finally bytecode compression is possible in tiny devices like smart cards thanks to a distribution of the analysis complexity on an untrusted powerful device. The virtual machine safety does not depend on the analysis process but on the embedded compressor. Bibliography 1. BRADLEY, Q., HORSPOOL, R. N., AND VITEK, J. JAZZ : An efficient compressed format for Java archive files. In IBM Centre for Advanced Studies Conference (CASCON 98) (november 1998), pp CLAUSEN, L. R., SCHULTZ, U. P., CONSEL, C., AND MULLER, G. Java Bytecode Compression Low-End for Embedded Systems. In ACM Transactions on Programming Languages and Systems (TOPLAS 00) Volume 22, No. 3 (may 2000). 3. ERNST, J., EVANS, W., FRASER, C. W., LUCCO, S., AND PROEBSTING, T. A. Code Compression. ACM SIGPLAN 97 Conference on Programming Language Design and Implementation (PLDI) 32, 5 (15-18 June 1997), EVAN, D. R. Compact Java Binaries for Embedded Systems. In Proceedings of the 9 th NRC/IBM Centre for Advanced Studies Conference (CASCON 99) (november 1999), S. A. MacKay and J. H. Johnson., Eds. 5. HORSPOOL, R. N., AND CORLESS, J. Tailored Compression of Java Class Files. Software Practice and Experience 28, 12 (1998), HUFFMAN, D. A. A method for the construction of minimum redundancy codes. Proceedings of the Institute of Electronics and Radio Engineers 40 (1952), NECULA, G. C., AND LEE, P. Safe Kernel Extensions Without Run-Time Checking. In the 2 nd USENIX of Symposium on Operating System Design and Implementation (OSDI 96) (Seattle, Washington, October 1996), USENIX Assoc., pp PUGH, W. Compressing Java Class Files. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 99) (may ), pp ROSE, E., AND ROSE, K. H. Lightweight Bytecode Verification. In Formal Underpinnings of Java, OOPSLA 98 Workshop (Vancouver, Canada, october 1998). 10. STRK, R. F., AND SCHMID, J. Java bytecode verification is not possible. 11. SUN MICROSYSTEMS. Java Card 2.11 virtual machine specification, may ZIV, J., AND LEMPEL, A. A Universal Algorithm for Sequential Data Compression. IEEE Transactions on Information Theory IT 23, 3 (1977),

Compressing Java Class files

Compressing Java Class files Compressing Java Class files 1999 ACM SIGPLAN Conference on Programming Language Design and Implementation William Pugh Dept. of Computer Science Univ. of Maryland Java Class files Compiled Java source

More information

An Approach to the Generation of High-Assurance Java Card Applets

An Approach to the Generation of High-Assurance Java Card Applets An Approach to the Generation of High-Assurance Java Card Applets Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

More information

Heap Compression for Memory-Constrained Java

Heap Compression for Memory-Constrained Java Heap Compression for Memory-Constrained Java CSE Department, PSU G. Chen M. Kandemir N. Vijaykrishnan M. J. Irwin Sun Microsystems B. Mathiske M. Wolczko OOPSLA 03 October 26-30 2003 Overview PROBLEM:

More information

Ahead of time deployment in ROM of a Java-OS

Ahead of time deployment in ROM of a Java-OS Ahead of time deployment in ROM of a Java-OS Kévin Marquet, Alexandre Courbot, Gilles Grimaud, David Simplot-Ryl To cite this version: Kévin Marquet, Alexandre Courbot, Gilles Grimaud, David Simplot-Ryl.

More information

Code Compression for DSP

Code Compression for DSP Code for DSP Charles Lefurgy and Trevor Mudge {lefurgy,tnm}@eecs.umich.edu EECS Department, University of Michigan 1301 Beal Ave., Ann Arbor, MI 48109-2122 http://www.eecs.umich.edu/~tnm/compress Abstract

More information

Smart Card Operating Systems Overview and Trends

Smart Card Operating Systems Overview and Trends Smart Card Operating Systems Overview and Trends Pierre.Paradinas@gemplus.com Gemplus Labs Smart card A piece of plastic with a chip that contains: CPU, memories and programs SC is your personal information

More information

Memory Management. Reading: Silberschatz chapter 9 Reading: Stallings. chapter 7 EEL 358

Memory Management. Reading: Silberschatz chapter 9 Reading: Stallings. chapter 7 EEL 358 Memory Management Reading: Silberschatz chapter 9 Reading: Stallings chapter 7 1 Outline Background Issues in Memory Management Logical Vs Physical address, MMU Dynamic Loading Memory Partitioning Placement

More information

Security-by-Contract for Open Multi-Application Smart Cards

Security-by-Contract for Open Multi-Application Smart Cards Security-by-Contract for Open Multi-Application Smart Cards O.Gadyatskaya, F. Massacci (University of Trento) B. Chetali, Q.-H. Nguyen (Trusted Labs, Gemalto) e-smart 2011 September 21-23, Sophia-Antipolis

More information

1 Introduction One of the contributions of Java is in its bytecode verier, which checks type safety of bytecode for JVM (Java Virtual Machine) prior t

1 Introduction One of the contributions of Java is in its bytecode verier, which checks type safety of bytecode for JVM (Java Virtual Machine) prior t On a New Method for Dataow Analysis of Java Virtual Machine Subroutines Masami Hagiya Department of Information Science, Graduate School of Science, University of Tokyo hagiyais.s.u-tokyo.ac.jp Abstract

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

CS399 New Beginnings. Jonathan Walpole

CS399 New Beginnings. Jonathan Walpole CS399 New Beginnings Jonathan Walpole Memory Management Memory Management Memory a linear array of bytes - Holds O.S. and programs (processes) - Each cell (byte) is named by a unique memory address Recall,

More information

Generation of Fast Interpreters for Huffman Compressed Bytecode

Generation of Fast Interpreters for Huffman Compressed Bytecode Generation of Fast Interpreters for Huffman Compressed Bytecode Mario Latendresse Northrop Grumman IT/ Technology Advancement Group FNMOC/U.S. Navy 7 Grace Hopper, Monterey, CA, USA mario.latendresse.ca@metnet.navy.mil

More information

Memory Management Basics

Memory Management Basics Memory Management Basics 1 Basic Memory Management Concepts Address spaces! Physical address space The address space supported by the hardware Ø Starting at address 0, going to address MAX sys! MAX sys!!

More information

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY AFRL-IF-RS-TR-2002-61 Final Technical Report April 2002 COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY Kestrel Institute Sponsored by Defense Advanced Research Projects Agency DARPA Order

More information

Programs that must run at or

Programs that must run at or BY WILLIAM S. EVANS AND CHRISTOPHER W. FRASER GRAMMAR-BASED COMPRESSION OF INTERPRETED CODE Automatically designing and implementing compact interpretable bytecodes. Programs that must run at or near top

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

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

Impact of Java Compressed Heap on Mobile/Wireless Communication

Impact of Java Compressed Heap on Mobile/Wireless Communication Impact of Java Compressed Heap on Mobile/Wireless Communication Mayumi KATO and Chia-Tien Dan Lo Department of Computer Science University of Texas at San Antonio San Antonio, Texas 78249-667 fmayumik,

More information

CS4215 Programming Language Implementation

CS4215 Programming Language Implementation CS4215 Programming Language Implementation You have 45 minutes to complete the exam. Use a B2 pencil to fill up the provided MCQ form. Leave Section A blank. Fill up Sections B and C. After finishing,

More information

Towards a Resilient Operating System for Wireless Sensor Networks

Towards a Resilient Operating System for Wireless Sensor Networks Towards a Resilient Operating System for Wireless Sensor Networks Hyoseung Kim Hojung Cha Yonsei University, Korea 2006. 6. 1. Hyoseung Kim hskim@cs.yonsei.ac.kr Motivation (1) Problems: Application errors

More information

A Bytecode Interpreter for Secure Program Execution in Untrusted Main Memory

A Bytecode Interpreter for Secure Program Execution in Untrusted Main Memory A Bytecode Interpreter for Secure Program Execution in Untrusted Main Memory Maximilian Seitzer, Michael Gruhn, Tilo Müller Friedrich Alexander Universität Erlangen-Nürnberg https://www1.cs.fau.de Introduction

More information

Chapter 9 Memory Management

Chapter 9 Memory Management Contents 1. Introduction 2. Computer-System Structures 3. Operating-System Structures 4. Processes 5. Threads 6. CPU Scheduling 7. Process Synchronization 8. Deadlocks 9. Memory Management 10. Virtual

More information

Improving Mobile Program Performance Through the Use of a Hybrid Intermediate Representation

Improving Mobile Program Performance Through the Use of a Hybrid Intermediate Representation Improving Mobile Program Performance Through the Use of a Hybrid Intermediate Representation Chandra Krintz Computer Science Department University of California, Santa Barbara Abstract We present a novel

More information

Space-efficient Executable Program Representations for Embedded Microprocessors

Space-efficient Executable Program Representations for Embedded Microprocessors Space-efficient Executable Program Representations for Embedded Microprocessors by Charles Robert Lefurgy A thesis proposal submitted in partial fulfillment of the requirements for the degree of Doctor

More information

Memory: Overview. CS439: Principles of Computer Systems February 26, 2018

Memory: Overview. CS439: Principles of Computer Systems February 26, 2018 Memory: Overview CS439: Principles of Computer Systems February 26, 2018 Where We Are In the Course Just finished: Processes & Threads CPU Scheduling Synchronization Next: Memory Management Virtual Memory

More information

15 Sharing Main Memory Segmentation and Paging

15 Sharing Main Memory Segmentation and Paging Operating Systems 58 15 Sharing Main Memory Segmentation and Paging Readings for this topic: Anderson/Dahlin Chapter 8 9; Siberschatz/Galvin Chapter 8 9 Simple uniprogramming with a single segment per

More information

16 Sharing Main Memory Segmentation and Paging

16 Sharing Main Memory Segmentation and Paging Operating Systems 64 16 Sharing Main Memory Segmentation and Paging Readings for this topic: Anderson/Dahlin Chapter 8 9; Siberschatz/Galvin Chapter 8 9 Simple uniprogramming with a single segment per

More information

Code Compression for DSP

Code Compression for DSP Code for DSP CSE-TR-380-98 Charles Lefurgy and Trevor Mudge {lefurgy,tnm}@eecs.umich.edu EECS Department, University of Michigan 1301 Beal Ave., Ann Arbor, MI 48109-2122 http://www.eecs.umich.edu/~tnm/compress

More information

Integrated Java Bytecode Verification

Integrated Java Bytecode Verification Electronic Notes in Theoretical Computer Science 131 (2005) 27 38 www.elsevier.com/locate/entcs Integrated Java Bytecode Verification Andreas Gal, Christian W. Probst, Michael Franz 1 Donald Bren School

More information

Addresses in the source program are generally symbolic. A compiler will typically bind these symbolic addresses to re-locatable addresses.

Addresses in the source program are generally symbolic. A compiler will typically bind these symbolic addresses to re-locatable addresses. 1 Memory Management Address Binding The normal procedures is to select one of the processes in the input queue and to load that process into memory. As the process executed, it accesses instructions and

More information

JOP: A Java Optimized Processor for Embedded Real-Time Systems. Martin Schoeberl

JOP: A Java Optimized Processor for Embedded Real-Time Systems. Martin Schoeberl JOP: A Java Optimized Processor for Embedded Real-Time Systems Martin Schoeberl JOP Research Targets Java processor Time-predictable architecture Small design Working solution (FPGA) JOP Overview 2 Overview

More information

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS

PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Objective PRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILERS Explain what is meant by compiler. Explain how the compiler works. Describe various analysis of the source program. Describe the

More information

Adam Chlipala University of California, Berkeley ICFP 2006

Adam Chlipala University of California, Berkeley ICFP 2006 Modular Development of Certified Program Verifiers with a Proof Assistant Adam Chlipala University of California, Berkeley ICFP 2006 1 Who Watches the Watcher? Program Verifier Might want to ensure: Memory

More information

Parallelizing Inline Data Reduction Operations for Primary Storage Systems

Parallelizing Inline Data Reduction Operations for Primary Storage Systems Parallelizing Inline Data Reduction Operations for Primary Storage Systems Jeonghyeon Ma ( ) and Chanik Park Department of Computer Science and Engineering, POSTECH, Pohang, South Korea {doitnow0415,cipark}@postech.ac.kr

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

Contiki a Lightweight and Flexible Operating System for Tiny Networked Sensors

Contiki a Lightweight and Flexible Operating System for Tiny Networked Sensors Contiki a Lightweight and Flexible Operating System for Tiny Networked Sensors Adam Dunkels, Björn Grönvall, Thiemo Voigt Swedish Institute of Computer Science IEEE EmNetS-I, 16 November 2004 Sensor OS

More information

When Java technology burst onto the Internet scene in 1995,

When Java technology burst onto the Internet scene in 1995, MOBILE CODE SECURITY SECURE JAVA CLASS LOADING The class loading mechanism, LI GONG Sun Microsystems central to Java, plays a key role in JDK 1.2 by enabling When Java technology burst onto the Internet

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

Offloading Java to Graphics Processors

Offloading Java to Graphics Processors Offloading Java to Graphics Processors Peter Calvert (prc33@cam.ac.uk) University of Cambridge, Computer Laboratory Abstract Massively-parallel graphics processors have the potential to offer high performance

More information

Language Techniques for Provably Safe Mobile Code

Language Techniques for Provably Safe Mobile Code Language Techniques for Provably Safe Mobile Code Frank Pfenning Carnegie Mellon University Distinguished Lecture Series Computing and Information Sciences Kansas State University October 27, 2000 Acknowledgments:

More information

Efficient Software Based Fault Isolation. Software Extensibility

Efficient Software Based Fault Isolation. Software Extensibility Efficient Software Based Fault Isolation Robert Wahbe, Steven Lucco Thomas E. Anderson, Susan L. Graham Software Extensibility Operating Systems Kernel modules Device drivers Unix vnodes Application Software

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

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008 Distributed Systems Theory 4. Remote Procedure Call October 17, 2008 Client-server model vs. RPC Client-server: building everything around I/O all communication built in send/receive distributed computing

More information

More Efficient Network Class Loading through Bundling

More Efficient Network Class Loading through Bundling More Efficient Network Class Loading through Bundling David Hovemeyer and William Pugh Department of Computer Science University of Maryland daveho@cs.umd.edu, pugh@cs.umd.edu Abstract In this paper, we

More information

3. Memory Management

3. Memory Management Principles of Operating Systems CS 446/646 3. Memory Management René Doursat Department of Computer Science & Engineering University of Nevada, Reno Spring 2006 Principles of Operating Systems CS 446/646

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 Programming

Introduction to Java Programming Introduction to Java Programming Lecture 1 CGS 3416 Spring 2017 1/9/2017 Main Components of a computer CPU - Central Processing Unit: The brain of the computer ISA - Instruction Set Architecture: the specific

More information

About the Authors... iii Introduction... xvii. Chapter 1: System Software... 1

About the Authors... iii Introduction... xvii. Chapter 1: System Software... 1 Table of Contents About the Authors... iii Introduction... xvii Chapter 1: System Software... 1 1.1 Concept of System Software... 2 Types of Software Programs... 2 Software Programs and the Computing Machine...

More information

Executing Legacy Applications on a Java Operating System

Executing Legacy Applications on a Java Operating System Executing Legacy Applications on a Java Operating System Andreas Gal, Michael Yang, Christian Probst, and Michael Franz University of California, Irvine {gal,mlyang,probst,franz}@uci.edu May 30, 2004 Abstract

More information

CSc 520 Principles of Programming Languages

CSc 520 Principles of Programming Languages CSc 520 Principles of Programming Languages 44: Interpreters Christian Collberg collberg@cs.arizona.edu Department of Computer Science University of Arizona Copyright c 2005 Christian Collberg [1] Compiler

More information

12: Memory Management

12: Memory Management 12: Memory Management Mark Handley Address Binding Program goes through multiple steps from compilation to execution. At some stage, addresses in the program must be bound to physical memory addresses:

More information

Evaluation of a High Performance Code Compression Method

Evaluation of a High Performance Code Compression Method Evaluation of a High Performance Code Compression Method Charles Lefurgy, Eva Piccininni, and Trevor Mudge Advanced Computer Architecture Laboratory Electrical Engineering and Computer Science Dept. The

More information

ECE 598 Advanced Operating Systems Lecture 10

ECE 598 Advanced Operating Systems Lecture 10 ECE 598 Advanced Operating Systems Lecture 10 Vince Weaver http://www.eece.maine.edu/~vweaver vincent.weaver@maine.edu 17 February 2015 Announcements Homework #1 and #2 grades, HW#3 Coming soon 1 Various

More information

Intermediate Representations

Intermediate Representations Intermediate Representations Intermediate Representations (EaC Chaper 5) Source Code Front End IR Middle End IR Back End Target Code Front end - produces an intermediate representation (IR) Middle end

More information

Code Compression for RISC Processors with Variable Length Instruction Encoding

Code Compression for RISC Processors with Variable Length Instruction Encoding Code Compression for RISC Processors with Variable Length Instruction Encoding S. S. Gupta, D. Das, S.K. Panda, R. Kumar and P. P. Chakrabarty Department of Computer Science & Engineering Indian Institute

More information

UNIT -1 1.1 OVERVIEW OF LANGUAGE PROCESSING SYSTEM 1.2 Preprocessor A preprocessor produce input to compilers. They may perform the following functions. 1. Macro processing: A preprocessor may allow a

More information

Speculative Parallelization Technology s only constant is CHANGE. Devarshi Ghoshal Sreesudhan

Speculative Parallelization Technology s only constant is CHANGE. Devarshi Ghoshal Sreesudhan Speculative Parallelization Technology s only constant is CHANGE Devarshi Ghoshal Sreesudhan Agenda Moore s law What is speculation? What is parallelization? Amdahl s law Communication between parallely

More information

Lossless Compression using Efficient Encoding of Bitmasks

Lossless Compression using Efficient Encoding of Bitmasks Lossless Compression using Efficient Encoding of Bitmasks Chetan Murthy and Prabhat Mishra Department of Computer and Information Science and Engineering University of Florida, Gainesville, FL 326, USA

More information

Outline. Proof Carrying Code. Hardware Trojan Threat. Why Compromise HDL Code?

Outline. Proof Carrying Code. Hardware Trojan Threat. Why Compromise HDL Code? Outline Proof Carrying Code Mohammad Tehranipoor ECE6095: Hardware Security & Trust University of Connecticut ECE Department Hardware IP Verification Hardware PCC Background Software PCC Description Software

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

IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA. Terence Parr University of San Francisco Java VM Language Summit 2009

IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA. Terence Parr University of San Francisco Java VM Language Summit 2009 IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA Terence Parr University of San Francisco Java VM Language Summit 2009 ISSUES Generated method size in parsers Why I need DFA in my parsers Implementing DFA

More information

CSc 453. Compilers and Systems Software. 18 : Interpreters. Department of Computer Science University of Arizona. Kinds of Interpreters

CSc 453. Compilers and Systems Software. 18 : Interpreters. Department of Computer Science University of Arizona. Kinds of Interpreters CSc 453 Compiler source Lexer tokens Parser AST Compilers and Systems Software 18 : Interpreters VM Code Gen IR Interm. Code Gen AST Semantic Analyser Department of Computer Science University of Arizona

More information

Identification and Verification of Security Relevant Functions in Embedded Systems Based on Source Code Annotations and Assertions

Identification and Verification of Security Relevant Functions in Embedded Systems Based on Source Code Annotations and Assertions Identification and Verification of Security Relevant Functions in Embedded Systems Based on Source Code Annotations and Assertions Johannes Loinig 1, Christian Steger 1, Reinhold Weiss 1, and Ernst Haselsteiner

More information

Smart Card ICs. Dr. Kaushik Saha. STMicroelectronics. CSME 2002 (Chandigarh, India) STMicroelectronics

Smart Card ICs. Dr. Kaushik Saha. STMicroelectronics. CSME 2002 (Chandigarh, India) STMicroelectronics Smart Card ICs Dr. Kaushik Saha STMicroelectronics CSME 2002 (Chandigarh, India) STMicroelectronics ST Products & Solutions Agenda Smart cards market overview Issues in the Smartcard Business ST Solutions

More information

Reconfigurable Architecture Requirements for Co-Designed Virtual Machines

Reconfigurable Architecture Requirements for Co-Designed Virtual Machines Reconfigurable Architecture Requirements for Co-Designed Virtual Machines Kenneth B. Kent University of New Brunswick Faculty of Computer Science Fredericton, New Brunswick, Canada ken@unb.ca Micaela Serra

More information

Module 5a: Introduction To Memory System (MAIN MEMORY)

Module 5a: Introduction To Memory System (MAIN MEMORY) Module 5a: Introduction To Memory System (MAIN MEMORY) R E F E R E N C E S : S T A L L I N G S, C O M P U T E R O R G A N I Z A T I O N A N D A R C H I T E C T U R E M O R R I S M A N O, C O M P U T E

More information

COMPUTER SCIENCE 4500 OPERATING SYSTEMS

COMPUTER SCIENCE 4500 OPERATING SYSTEMS Last update: 3/28/2017 COMPUTER SCIENCE 4500 OPERATING SYSTEMS 2017 Stanley Wileman Module 9: Memory Management Part 1 In This Module 2! Memory management functions! Types of memory and typical uses! Simple

More information

Register Reassignment for Mixed-width ISAs is an NP-Complete Problem

Register Reassignment for Mixed-width ISAs is an NP-Complete Problem Register Reassignment for Mixed-width ISAs is an NP-Complete Problem Bor-Yeh Shen, Wei Chung Hsu, and Wuu Yang Institute of Computer Science and Engineering, National Chiao Tung University, Taiwan, R.O.C.

More information

To Zip or not to Zip. Effective Resource Usage for Real-Time Compression

To Zip or not to Zip. Effective Resource Usage for Real-Time Compression To Zip or not to Zip Effective Resource Usage for Real-Time Compression Danny Harnik, Oded Margalit, Ronen Kat, Dmitry Sotnikov, Avishay Traeger IBM Research - Haifa Our scope Real-Time Compression Compression

More information

A Bit of History. Program Mem Data Memory. CPU (Central Processing Unit) I/O (Input/Output) Von Neumann Architecture. CPU (Central Processing Unit)

A Bit of History. Program Mem Data Memory. CPU (Central Processing Unit) I/O (Input/Output) Von Neumann Architecture. CPU (Central Processing Unit) Memory COncepts Address Contents Memory is divided into addressable units, each with an address (like an array with indices) Addressable units are usually larger than a bit, typically 8, 16, 32, or 64

More information

Final Exam Review. CPSC 457, Spring 2016 June 29-30, M. Reza Zakerinasab Department of Computer Science, University of Calgary

Final Exam Review. CPSC 457, Spring 2016 June 29-30, M. Reza Zakerinasab Department of Computer Science, University of Calgary Final Exam Review CPSC 457, Spring 2016 June 29-30, 2015 M. Reza Zakerinasab Department of Computer Science, University of Calgary Final Exam Components Final Exam: Monday July 4, 2016 @ 8 am in ICT 121

More information

Operating Systems (2INC0) 2017/18

Operating Systems (2INC0) 2017/18 Operating Systems (2INC0) 2017/18 Memory Management (09) Dr. Courtesy of Dr. I. Radovanovic, Dr. R. Mak (figures from Bic & Shaw) System Architecture and Networking Group Agenda Reminder: OS & resources

More information

Load-Time Security Certification for Real Smart-Cards

Load-Time Security Certification for Real Smart-Cards Load-Time Security Certification for Real Smart-Cards Olga Gadyatskaya joint work with F.Massacci, E.Lostal (University of Trento, Italy) Evaluation by B. Chetali, Q-H. Nguyen TrustedLabs/Gemalto (FR)

More information

Concurrency Control with Java and Relational Databases

Concurrency Control with Java and Relational Databases Concurrency Control with Java and Relational Databases Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Recife, PE, Brazil scbs,phmb @cin.ufpe.br Abstract As web based

More information

Testing Exceptions with Enforcer

Testing Exceptions with Enforcer Testing Exceptions with Enforcer Cyrille Artho February 23, 2010 National Institute of Advanced Industrial Science and Technology (AIST), Research Center for Information Security (RCIS) Abstract Java library

More information

Virtual Machines and Dynamic Translation: Implementing ISAs in Software

Virtual Machines and Dynamic Translation: Implementing ISAs in Software Virtual Machines and Dynamic Translation: Implementing ISAs in Software Krste Asanovic Laboratory for Computer Science Massachusetts Institute of Technology Software Applications How is a software application

More information

Requirements and Issues of V**s for Mobile Terminals

Requirements and Issues of V**s for Mobile Terminals Requirements and Issues of V**s for Mobile Terminals Workshop on the Future of Virtual Execution Environments Armonk, NY, USA 15-17.09.2004 Kari Systä Nokia Research Center 1 NOKIA Presentation_Name.PPT

More information

Introduction to Proof-Carrying Code

Introduction to Proof-Carrying Code Introduction to Proof-Carrying Code Soonho Kong Programming Research Lab. Seoul National University soon@ropas.snu.ac.kr 7 August 2009 ROPAS Show & Tell Proof-Carrying Code Code Code Producer Code Consumer

More information

Intermediate Representations

Intermediate Representations COMP 506 Rice University Spring 2018 Intermediate Representations source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students

More information

Basic Compression Library

Basic Compression Library Basic Compression Library Manual API version 1.2 July 22, 2006 c 2003-2006 Marcus Geelnard Summary This document describes the algorithms used in the Basic Compression Library, and how to use the library

More information

On-The-Fly Metadata Stripping For Embedded Java Operating Systems

On-The-Fly Metadata Stripping For Embedded Java Operating Systems On-The-Fly Metadata Stripping For Embedded Java Operating Systems Christophe Rippert, Damien Deville, Gilles Grimaud To cite this version: Christophe Rippert, Damien Deville, Gilles Grimaud. On-The-Fly

More information

6 - Main Memory EECE 315 (101) ECE UBC 2013 W2

6 - Main Memory EECE 315 (101) ECE UBC 2013 W2 6 - Main Memory EECE 315 (101) ECE UBC 2013 W2 Acknowledgement: This set of slides is partly based on the PPTs provided by the Wiley s companion website (including textbook images, when not explicitly

More information

An Introduction to Software Engineering. David Greenstein Monta Vista High School

An Introduction to Software Engineering. David Greenstein Monta Vista High School An Introduction to Software Engineering David Greenstein Monta Vista High School Software Today Software Development Pre-1970 s - Emphasis on efficiency Compact, fast algorithms on machines with limited

More information

UNIT III MEMORY MANAGEMENT

UNIT III MEMORY MANAGEMENT UNIT III MEMORY MANAGEMENT TOPICS TO BE COVERED 3.1 Memory management 3.2 Contiguous allocation i Partitioned memory allocation ii Fixed & variable partitioning iii Swapping iv Relocation v Protection

More information

Program Partitioning - A Framework for Combining Static and Dynamic Analysis

Program Partitioning - A Framework for Combining Static and Dynamic Analysis Program Partitioning - A Framework for Combining Static and Dynamic Analysis Pankaj Jalote, Vipindeep V, Taranbir Singh, Prateek Jain Department of Computer Science and Engineering Indian Institute of

More information

WIND RIVER DIAB COMPILER

WIND RIVER DIAB COMPILER AN INTEL COMPANY WIND RIVER DIAB COMPILER Boost application performance, reduce memory footprint, and produce high-quality, standards-compliant object code for embedded systems with Wind River Diab Compiler.

More information

Specification of a transacted memory for smart cards in Java and JML

Specification of a transacted memory for smart cards in Java and JML Specification of a transacted memory for smart cards in Java and JML Erik Poll University of Nijmegen, NL Pieter Hartel Eduard de Jong Joint work with University of Twente Sun Microsystems Transacted Memory

More information

Analysis of Parallelization Effects on Textual Data Compression

Analysis of Parallelization Effects on Textual Data Compression Analysis of Parallelization Effects on Textual Data GORAN MARTINOVIC, CASLAV LIVADA, DRAGO ZAGAR Faculty of Electrical Engineering Josip Juraj Strossmayer University of Osijek Kneza Trpimira 2b, 31000

More information

Full file at

Full file at Import Settings: Base Settings: Brownstone Default Highest Answer Letter: D Multiple Keywords in Same Paragraph: No Chapter: Chapter 2 Multiple Choice 1. A is an example of a systems program. A) command

More information

Using Adaptive Optimization Techniques To Teach Mobile Java Computing

Using Adaptive Optimization Techniques To Teach Mobile Java Computing Using Adaptive Optimization Techniques To Teach Mobile Java Computing Chandra Krintz Computer Science Department University of California, Santa Barbara Abstract Dynamic, adaptive optimization is quickly

More information

Cache Performance and Memory Management: From Absolute Addresses to Demand Paging. Cache Performance

Cache Performance and Memory Management: From Absolute Addresses to Demand Paging. Cache Performance 6.823, L11--1 Cache Performance and Memory Management: From Absolute Addresses to Demand Paging Asanovic Laboratory for Computer Science M.I.T. http://www.csg.lcs.mit.edu/6.823 Cache Performance 6.823,

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

Preview. Memory Management

Preview. Memory Management Preview Memory Management With Mono-Process With Multi-Processes Multi-process with Fixed Partitions Modeling Multiprogramming Swapping Memory Management with Bitmaps Memory Management with Free-List Virtual

More information

Separating Access Control Policy, Enforcement, and Functionality in Extensible Systems. Robert Grimm University of Washington

Separating Access Control Policy, Enforcement, and Functionality in Extensible Systems. Robert Grimm University of Washington Separating Access Control Policy, Enforcement, and Functionality in Extensible Systems Robert Grimm University of Washington Extensions Added to running system Interact through low-latency interfaces Form

More information

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano

Building a Runnable Program and Code Improvement. Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program and Code Improvement Dario Marasco, Greg Klepic, Tess DiStefano Building a Runnable Program Review Front end code Source code analysis Syntax tree Back end code Target code

More information

Chapter 3 - Memory Management

Chapter 3 - Memory Management Chapter 3 - Memory Management Luis Tarrataca luis.tarrataca@gmail.com CEFET-RJ L. Tarrataca Chapter 3 - Memory Management 1 / 222 1 A Memory Abstraction: Address Spaces The Notion of an Address Space Swapping

More information

Compilers. Intermediate representations and code generation. Yannis Smaragdakis, U. Athens (original slides by Sam

Compilers. Intermediate representations and code generation. Yannis Smaragdakis, U. Athens (original slides by Sam Compilers Intermediate representations and code generation Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Today Intermediate representations and code generation Scanner Parser Semantic

More information

Using Adaptive Optimization Techniques To Teach Mobile Java Computing

Using Adaptive Optimization Techniques To Teach Mobile Java Computing Using Adaptive Optimization Techniques To Teach Mobile Java Computing Chandra Krintz Computer Science Department University of California, Santa Barbara Abstract Abstract. Dynamic, adaptive optimization

More information

Introduction to Scientific Computing

Introduction to Scientific Computing Introduction to Scientific Computing Dr Hanno Rein Last updated: October 12, 2018 1 Computers A computer is a machine which can perform a set of calculations. The purpose of this course is to give you

More information

Chapter 9 Memory Management Main Memory Operating system concepts. Sixth Edition. Silberschatz, Galvin, and Gagne 8.1

Chapter 9 Memory Management Main Memory Operating system concepts. Sixth Edition. Silberschatz, Galvin, and Gagne 8.1 Chapter 9 Memory Management Main Memory Operating system concepts. Sixth Edition. Silberschatz, Galvin, and Gagne 8.1 Chapter 9: Memory Management Background Swapping Contiguous Memory Allocation Segmentation

More information