4. Dynamic Linking. Summary. DLL structure ECOM
|
|
- Egbert Foster
- 6 years ago
- Views:
Transcription
1 4. Dynamic Linking Overview Implementation techniques Plugins Managing memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 1
2 Motivation Several applications use the same code; no need to include it in all applications separately Application-specific tailoring in cases where similar functions are needed (plugins) Smaller compilations and deliveries; smaller upgrades Flexible composition Enables focused testing Scoping of system management (smallest unit addressed in e.g. build or release management) Work allocation 2
3 Dynamically linked libraries Before loading After loading Single application file Multiple files that are loaded dynamically 3
4 Release Definition with DLLs First action to take in the beginning of the development of a new (or enhanced) system Defines all the necessary elements for a complete system Enables early toolchain development as well as decomposition of the system into different subsystems Test of the build system Some parts can be left open for future extensions (plugins) 4
5 Required Implementation Facilities Dynamic capabilities for Loading Unloading Selection if several possibilities exist Copy in processes own memory vs. in-place execution Data must be instantiated in any case Restrictions All code should not be active all the time; memory related problems (e.g. fragmentation) if numerous loading of libraries of different sizes 5
6 Static and Dynamic DLLs Static DLL (Commonly) Instantiated at application startup Resides in the memory until the application terminates Dynamic DLL (often referred to as a plugin) Loaded and unloaded whenever needed E.g. different plugin for different messaging types ( /sms/mms) 6
7 Challenges Fragmentation of the system into an unmanageable collection of DLLs Versioning Number of allowed configurations Number of accidentally created configurations Fractal-like use of plugins Benefits of application-specific DLLs? Interface compatibility when market requirements force to change hardware characteristics Platform continuity by freezing the interface for some period of time 7
8 Content and goals Overview Implementation techniques Plugins Managing memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 8
9 Implementing DLLs DLL Code External interface Code Code 9
10 Option 1: Offset based Calls APP DLL (support for plugins) Code LIB Ordinal Code Code 10
11 Option 2: Using Method Signatures DLL methodx() methody(int i, j) methodz(string myname) External interface Code Code Code 11
12 Comparison Offset based linking is more efficient (no need to look for the method) more error-prone (what happens when somebody adds a new method?) Signature based linking is more natural (one can call methods from different libraries with ease) more memory hungry (signatures must be saved somewhere) 12
13 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 13
14 Plugin Principle No plugins loaded Plugin P2 loaded Plugin P2 unloaded and P1 loaded Application Plugin interface Application P2 Application P1 P1 P2 P3 Plugin implementations P1 P3 Plugin implementations 14 P2 P3 Plugin implementations
15 Abstract Factory as Implementation mechanism Client <<interface>> AbsFactory <<interface>> AbsDLLA operax operay <<interface>> AbsDLLB operbx operby CreateProductA CreateProductB ConcDLLA1 ConcDLLA2 ConcDLLB1 ConcDLLB2 ConcFactory1 CreateDLLA CreateDLLB ConcFactory2 CreateDLLA CreateDLLB 15
16 Infrastructure and implementation level concerns Loading and unloading framework Resolution Searching and selecting the right plugin Policy for registering and removing of plugins to enable dynamic creation of new (or improved) features Who should be able to do this? Compatibility issues Plugin use can also introduce side-effects E.g. Response to a message 16
17 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 17
18 Principles 1. Always use the simplest structure you really need! 2. Make all DLLs (and DLL developers) responsible for the memory they allocate Needed for realistically defining a release and its resource consumption in any case! 3. When in doubt, consider what will eventually happen at the level of implementation Desk exercise to get the first estimate Running real code as soon as possible to get more realistic figures on actual performance 18
19 Merging software and data elements as the last resort Merging packages and DLLs Reduces overhead of referring to the methods of the packages/dlls Flattening hierarchies Reduces the number of identifiers, reduces the number of virtual function tables Embedding objects Alters the layout of the data structure 19
20 Example: Embedded Pointers next object ref next object object next object ref next object object next object ref object next object 20
21 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 21
22 Rules of Thumb for DLL Creation Shareable component Variation or management point Several different implementations (or alternatives) Test process requirements Testing needs a concrete subject Automated testing with binary deliveries End product of an organizational unit Release management can be eased if compilations are not to be managed as a part of it Black-box subcontracting 22
23 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 23
24 Mobile Java and DLLs All class files can be considered as more or less similar to DLLs Linking is a built-in feature at class level Performed automatically for a complete class -> Smaller classes have certain advantages Class memory overhead -> Larger classes have certain advantages No support for plugins due to CLDC restrictions More capable mobile systems can include also support for plugins; not a technical impossibility in mobile setting 24
25 Average Class File Content (CLDC library classes) Measurements by Hartikainen (Java application and library memory consumption, MSc thesis, Tampere U of Tech, 2005): Metadata 45.4% (about half is debug info) Strings 34.8% Bytecode 19.1% Class field data 0.4% Instance field data 0.4% 25
26 Effect of compression and different application structures Format 14 classes 1 class No compression No compression, obfuscated JAR Jar Obfuscated Pack Pack.gz
27 Effect of compression and library structures Format Size (bytes) Classes JAR Pack Pack.gz tar.gz JXE
28 Library Considerations Prelinking of most commonly used standard libraries Only interface must be visible Internals can be implemented as e.g. a part of the virtual machine Uses more memory, but linking/loading becomes easier Structure considerations JARring class by class cannot benefit from recurring constructs (e.g. constructors in every class) 28
29 Also programmer actions matter! public void push(object e) { ensurecapasity(); // Check slots count elements[size++] = e; } public Object pop() { if (size == 0) throw new EmptyStackException(); return elements[--size]; } Ok? 29
30 Object stack size Stack Objects stored in Stack 30
31 Leaking Abstraction Objects stored in Vector but not in Stack size Stack/Vector Objects stored in Stack 31
32 Upgrade public Object pop() { if (size == 0) throw new EmptyStackException(); Object result = elements[--size]; elements[size] = null; return result; } 32
33 Rules of Thumb for Mobile Java Avoid small classes Avoid dependencies Select size when relevant and manage vector/string usage Consider using array vs. using vector Use stringbuffer when possible Manage class and object structure Generate less garbage Consider obfuscation Handle array initialization 33
34 Example 1 static final int SIZE = 2000; private void arrayimp() { numbers = new int[size]; for (int i = 0; i < SIZE; i++) { numbers[i] = i; } } private void vectorimp() { numberv = new Vector(SIZE); for (int i = 0; i < SIZE; i++) { numberv.addelement(new Integer(i)); } } private void vectorimpsimple() { numberv2 = new Vector(); // Default size for (int i = 0; i < SIZE; i++) { numberv2.addelement(new Integer(i)); } } 34
35 Results ArrayImp (minimal overhead) Bytes: 8016 Objects: 1 VectorImp (integers wrapped to objects) Bytes: Objects: 2002 VectorImpSimple (failures in guessing the size) Bytes: Objects: 2010 [Hartikainen: Java application and library memory consumption, TUT, 2005] 35
36 Example 2 static final int AMOUNT = 100; public void usestring() { String s = ; for(int i = 0; i < AMOUNT; i++) { s = s + a ; } } public void usestringbuffer() { String s = ; StringBuffer sb = new StringBuffer(AMOUNT); for(int i = 0; i < AMOUNT; i++) { sb = sb.append( a ); } s = sb.tostring(); } 36
37 Results UseString (simplest) Bytes: Objects: 450 UseStringBuffer (optimized) Bytes: 304 Objects: 5 [Hartikainen: Java application and library memory consumption, TUT, 2005] 37
38 Example 3 A sample application consisting of 14 classes was refactored into a form where only 1 calss was used without altering the behavior 14 classes: class: 7467 [Hartikainen: Java application and library memory consumption, TUT, 2005] 38
39 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 39
40 Offset-based linking APP DLL (support for plugins) Code LIB Ordinal Code Code 40
41 Expressed in Code with Macros (IMPORT_C, EXPORT_C) class CQAEng : public CBase { public: IMPORT_C static CQAEng* NewL();... protected: CQAEng();... }; EXPORT_C CQAEng * CQAEng::NewL() { CQAEng* self = new (ELeave) CQAEng; CleanupStack::PushL(self); self->constructl(); CleanupStack::Pop(); return self; } CQAEng::CQAEng() { iquestion = 0; ianswer = 0; iused = EFalse; } 41
42 Managing Binary Compatibility Absolute Do not change the size of a class object Do not remove anything accessible Do not rearrange accessible class member data Do not rearrange the ordinal of exported functions Do no re-order virtual functions Do not modify documented semantics of API Do not remove const Do not change from pass by value to pass by reference, or vice versa Future-proof Do not inline functions Do not expose public or protected member data Allow object initialization to leave Override virtual functions that are expected to be overridden in the future Provide spare member data 42
43 Programmer Options API extensions Private internals of a class can be modified Access specification can be relaxed Pointers can be substituted with references and vice versa Names of exported non-virtual functions can be modified Input can be widened and output can be narrowed Specifier const can be applied 43
44 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 44
45 ECOM Framework Interface client NewL Interface (CCryptoIF) REComSession::CreateImplementationL Implements ECOM Framework Implementation (CCryptoSW) Implementation (CCryptoSW) Resolves and instantiates 45
46 ECOM Interface Requirements Abstract class with a set of one or more pure virtual functions Provides one or more factory functions to allow the client to instantiate an interface implementation object Provides means for clients to release it (e.g. destructor, Release, Close,...) TUid data member, which is used internally to identify an implementation instance for cleanup purposes 46
47 Content and goals Overview Implementation techniques Plugins Managing DLL memory consumption Using DLLs Mobile Java implementation Symbian OS implementation DLL structure ECOM Summary 47
48 Summary Dynamically linked libraries offer a way to save memory, as code can be shared by several units It is also possible to use DLLs to management purposes (e.g. release definition and management) Linking can be based on e.g. method signatures (Java) or offset (Symbian OS) Plugins are special DLLs that can be dynamically loaded and unloaded Common interface Implementation for the interface Framework for loading the interface 48
Dynamically Linked Libraries DLL. Juha JärvensivuJ
Dynamically Linked Libraries DLL Juha JärvensivuJ Content and goals Overview Implementation techniques Plugins Managing memory consumption Using DLLs Mobile Java implementation Symbian OS implementation
More informationMemory Management.
Memory Management juha.jarvensivu@tut.fi Content and goals Basics of memory usage in mobile devices Static and dynamic allocation Managing memory organization Memory management in Mobile Java Memory management
More information2. Memory Management
2. Memory Management Basics of memory usage in mobile devices Static and dynamic allocation Managing memory organization Memory management in Symbian OS Memory management in Mobile Java Summary 1 Rationale
More information2. Memory Management. Rationale. Memory. Program and Stack. Example. Activation. Dynamic allocation. devices
2. Memory Management Rationale Memory usage is a tangling concern in mobile devices All programs use memory In order to reduce costs, only limited amount of memory available in mobile devices Also power
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationEliminating Memory Leaks in Symbian OS C++ Projects
Eliminating Memory Leaks in Symbian OS C++ Projects John Pagonis, Symbian Developer Network, January 2005 In Symbian OS, the programming framework, in debug mode, makes sure memory allocations are tracked
More informationQUIZ on Ch.5. Why is it sometimes not a good idea to place the private part of the interface in a header file?
QUIZ on Ch.5 Why is it sometimes not a good idea to place the private part of the interface in a header file? Example projects where we don t want the implementation visible to the client programmer: The
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationWritten by John Bell for CS 342, Spring 2018
Advanced OO Concepts Written by John Bell for CS 342, Spring 2018 Based on chapter 3 of The Object-Oriented Thought Process by Matt Weisfeld, with additional material from other sources. Constructors Constructors
More informationC++ Inheritance and Encapsulation
C++ Inheritance and Encapsulation Private and Protected members Inheritance Type Public Inheritance Private Inheritance Protected Inheritance Special method inheritance 1 Private Members Private members
More informationSERIOUS ABOUT SOFTWARE. Qt Core features. Timo Strömmer, May 26,
SERIOUS ABOUT SOFTWARE Qt Core features Timo Strömmer, May 26, 2010 1 Contents C++ refresher Core features Object model Signals & slots Event loop Shared data Strings Containers Private implementation
More information1 Shyam sir JAVA Notes
1 Shyam sir JAVA Notes 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write
More informationBinding and Storage. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill
Binding and Storage Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. What s
More informationCpt S 122 Data Structures. Course Review Midterm Exam # 2
Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm
More informationC++ Programming: Polymorphism
C++ Programming: Polymorphism 2018 년도 2 학기 Instructor: Young-guk Ha Dept. of Computer Science & Engineering Contents Run-time binding in C++ Abstract base classes Run-time type identification 2 Function
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 11 October 3, 2018 CPSC 427, Lecture 11, October 3, 2018 1/24 Copying and Assignment Custody of Objects Move Semantics CPSC 427, Lecture
More informationVIRTUAL FUNCTIONS Chapter 10
1 VIRTUAL FUNCTIONS Chapter 10 OBJECTIVES Polymorphism in C++ Pointers to derived classes Important point on inheritance Introduction to virtual functions Virtual destructors More about virtual functions
More informationCSC 1600 Memory Layout for Unix Processes"
CSC 16 Memory Layout for Unix Processes" 1 Lecture Goals" Behind the scenes of running a program" Code, executable, and process" Memory layout for UNIX processes, and relationship to C" : code and constant
More informationScope. COMP 524: Programming Language Concepts Björn B. Brandenburg. The University of North Carolina at Chapel Hill
Scope Björn B. Brandenburg The University of North Carolina at Chapel Hill Based in part on slides and notes by S. Olivier, A. Block, N. Fisher, F. Hernandez-Campos, and D. Stotts. Referencing Environment
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 12 October 10, 2016 CPSC 427, Lecture 12 1/27 Uses of Pointers Custody of Objects Move Semantics CPSC 427, Lecture 12 2/27 Uses of Pointers
More informationQUIZ. Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed?
QUIZ Write the following for the class Bar: Default constructor Constructor Copy-constructor Overloaded assignment oper. Is a destructor needed? Or Foo(x), depending on how we want the initialization
More informationC++\CLI. Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017
C++\CLI Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017 Comparison of Object Models Standard C++ Object Model All objects share a rich memory model: Static, stack, and heap Rich object life-time
More informationQUIZ Friends class Y;
QUIZ Friends class Y; Is a forward declaration neeed here? QUIZ Friends QUIZ Friends - CONCLUSION Forward (a.k.a. incomplete) declarations are needed only when we declare member functions as friends. They
More informationCPS 506 Comparative Programming Languages. Programming Language
CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support
More informationCOP 3330 Final Exam Review
COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time
More information7. Concurrency. Motivation Infrastructure Faking concurrency Mobile Java implementation Symbian OS implementation. Maemo implementation Summary
7. Concurrency Motivation Infrastructure Faking concurrency Mobile Java implementation Symbian OS implementation Threads Active objects Maemo implementation Summary 1 Motivation Mobile devices are fundamentally
More informationData Abstraction. Hwansoo Han
Data Abstraction Hwansoo Han Data Abstraction Data abstraction s roots can be found in Simula67 An abstract data type (ADT) is defined In terms of the operations that it supports (i.e., that can be performed
More informationAnd Even More and More C++ Fundamentals of Computer Science
And Even More and More C++ Fundamentals of Computer Science Outline C++ Classes Special Members Friendship Classes are an expanded version of data structures (structs) Like structs, the hold data members
More informationFun facts about recursion
Outline examples of recursion principles of recursion review: recursive linked list methods binary search more examples of recursion problem solving using recursion 1 Fun facts about recursion every loop
More informationCompiling Java For High Performance on Servers
Compiling Java For High Performance on Servers Ken Kennedy Center for Research on Parallel Computation Rice University Goal: Achieve high performance without sacrificing language compatibility and portability.
More informationLecture 03 Bits, Bytes and Data Types
Lecture 03 Bits, Bytes and Data Types Computer Languages A computer language is a language that is used to communicate with a machine. Like all languages, computer languages have syntax (form) and semantics
More informationProgramming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module
More informationAssumptions. History
Assumptions A Brief Introduction to Java for C++ Programmers: Part 1 ENGI 5895: Software Design Faculty of Engineering & Applied Science Memorial University of Newfoundland You already know C++ You understand
More informationCSCI-1200 Data Structures Fall 2011 Lecture 24 Garbage Collection & Smart Pointers
CSCI-1200 Data Structures Fall 2011 Lecture 24 Garbage Collection & Smart Pointers Review from Lecture 23 Basic exception mechanisms: try/throw/catch Functions & exceptions, constructors & exceptions Today
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationCSCI-1200 Data Structures Spring 2017 Lecture 27 Garbage Collection & Smart Pointers
CSCI-1200 Data Structures Spring 2017 Lecture 27 Garbage Collection & Smart Pointers Announcements Please fill out your course evaluations! Those of you interested in becoming an undergraduate mentor for
More informationObject Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia
Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing
More informationInstantiation of Template class
Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double
More informationSingleton, Factory Method, Abstract Factory, Named Constructor. Using one or more base classes to hide details from the client
Idioms & Design Patterns Creational Introduction to Design Patterns Patterns and idioms can be grouped roughly into: Creational Patterns and idioms Singleton, Factory Method, Abstract Factory, Named Constructor
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationMotivation was to facilitate development of systems software, especially OS development.
A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.
More informationG52CPP C++ Programming Lecture 10. Dr Jason Atkin
G52CPP C++ Programming Lecture 10 Dr Jason Atkin 1 Last lecture Constructors Default constructor needs no parameters Default parameters Inline functions Like safe macros in some ways Function definitions
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level
More informationAtelier Java - J1. Marwan Burelle. EPITA Première Année Cycle Ingénieur.
marwan.burelle@lse.epita.fr http://wiki-prog.kh405.net Plan 1 2 Plan 3 4 Plan 1 2 3 4 A Bit of History JAVA was created in 1991 by James Gosling of SUN. The first public implementation (v1.0) in 1995.
More informationC++ for System Developers with Design Pattern
C++ for System Developers with Design Pattern Introduction: This course introduces the C++ language for use on real time and embedded applications. The first part of the course focuses on the language
More informationC++: Const Function Overloading Constructors and Destructors Enumerations Assertions
C++: Const Function Overloading Constructors and Destructors Enumerations Assertions Const const float pi=3.14159; const int* pheight; // defines pointer to // constant int value cannot be changed // pointer
More informationEngine Support System. asyrani.com
Engine Support System asyrani.com A game engine is a complex piece of software consisting of many interacting subsystems. When the engine first starts up, each subsystem must be configured and initialized
More informationVector and Free Store (Pointers and Memory Allocation)
DM560 Introduction to Programming in C++ Vector and Free Store (Pointers and Memory Allocation) Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark [Based on slides
More informationCSE 504: Compiler Design. Runtime Environments
Runtime Environments Pradipta De pradipta.de@sunykorea.ac.kr Current Topic Procedure Abstractions Mechanisms to manage procedures and procedure calls from compiler s perspective Runtime Environment Choices
More informationAgenda. 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 informationCertified Core Java Developer VS-1036
VS-1036 1. LANGUAGE FUNDAMENTALS The Java language's programming paradigm is implementation and improvement of Object Oriented Programming (OOP) concepts. The Java language has its own rules, syntax, structure
More informationContents. Chapter 1 Overview of the JavaScript C Engine...1. Chapter 2 JavaScript API Reference...23
Contents Chapter 1 Overview of the JavaScript C Engine...1 Supported Versions of JavaScript...1 How Do You Use the Engine?...2 How Does the Engine Relate to Applications?...2 Building the Engine...6 What
More informationIBS Software Services Technical Interview Questions. Q1. What is the difference between declaration and definition?
IBS Software Services Technical Interview Questions Q1. What is the difference between declaration and definition? The declaration tells the compiler that at some later point we plan to present the definition
More information/* Copyright 2012 Robert C. Ilardi
/ Copyright 2012 Robert C. Ilardi Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
More informationImplementing Subprograms
Implementing Subprograms 1 Topics The General Semantics of Calls and Returns Implementing Simple Subprograms Implementing Subprograms with Stack-Dynamic Local Variables Nested Subprograms Blocks Implementing
More informationOBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe
OBJECT ORIENTED PROGRAMMING USING C++ CSCI 5448- Object Oriented Analysis and Design By Manali Torpe Fundamentals of OOP Class Object Encapsulation Abstraction Inheritance Polymorphism Reusability C++
More informationCSE 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 informationC++ (Non for C Programmer) (BT307) 40 Hours
C++ (Non for C Programmer) (BT307) 40 Hours Overview C++ is undoubtedly one of the most widely used programming language for implementing object-oriented systems. The C++ language is based on the popular
More informationEND TERM EXAMINATION
END TERM EXAMINATION THIRD SEMESTER [BCA] DECEMBER 2007 Paper Code: BCA 209 Subject: Object Oriented Programming Time: 3 hours Maximum Marks: 75 Note: Attempt all questions. Internal choice is indicated.
More informationObjects Managing a Resource
Objects Managing a Resource 1 What is a Resource Respects Release/Acquire protocol files (open/close) memory allocation (allocate/free) locks (acquire/release). 2 What is a Resource Objects when constructed,
More informationGEA 2017, Week 4. February 21, 2017
GEA 2017, Week 4 February 21, 2017 1. Problem 1 After debugging the program through GDB, we can see that an allocated memory buffer has been freed twice. At the time foo(...) gets called in the main function,
More informationA program execution is memory safe so long as memory access errors never occur:
A program execution is memory safe so long as memory access errors never occur: Buffer overflows, null pointer dereference, use after free, use of uninitialized memory, illegal free Memory safety categories
More informationInheritance, Polymorphism and the Object Memory Model
Inheritance, Polymorphism and the Object Memory Model 1 how objects are stored in memory at runtime? compiler - operations such as access to a member of an object are compiled runtime - implementation
More informationCS 231 Data Structures and Algorithms, Fall 2016
CS 231 Data Structures and Algorithms, Fall 2016 Dr. Bruce A. Maxwell Department of Computer Science Colby College Course Description Focuses on the common structures used to store data and the standard
More informationCSC 210, Exam Two Section February 1999
Problem Possible Score 1 12 2 16 3 18 4 14 5 20 6 20 Total 100 CSC 210, Exam Two Section 004 7 February 1999 Name Unity/Eos ID (a) The exam contains 5 pages and 6 problems. Make sure your exam is complete.
More informationOverview of Eclipse Lectures. Module Road Map
Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring Lecture 2 5. Debugging 6. Testing with JUnit 7. Version Control with CVS 1 Module
More informationCS11 Introduction to C++ Fall Lecture 7
CS11 Introduction to C++ Fall 2012-2013 Lecture 7 Computer Strategy Game n Want to write a turn-based strategy game for the computer n Need different kinds of units for the game Different capabilities,
More informationObject oriented programming. Encapsulation. Polymorphism. Inheritance OOP
OOP Object oriented programming Polymorphism Encapsulation Inheritance OOP Class concepts Classes can contain: Constants Delegates Events Fields Constructors Destructors Properties Methods Nested classes
More informationSABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine p. 1
SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine David Bélanger dbelan2@cs.mcgill.ca Sable Research Group McGill University Montreal, QC January 28, 2004 SABLEJIT: A Retargetable
More information(12-1) OOP: Polymorphism in C++ D & D Chapter 12. Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University
(12-1) OOP: Polymorphism in C++ D & D Chapter 12 Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University Key Concepts Polymorphism virtual functions Virtual function tables
More informationOOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.
OOPS Viva Questions 1. What is OOPS? OOPS is abbreviated as Object Oriented Programming system in which programs are considered as a collection of objects. Each object is nothing but an instance of a class.
More informationExpert C++/CLI:.NET for Visual C++ Programmers
Expert C++/CLI:.NET for Visual C++ Programmers Marcus Heege Contents About the Author About the Technical Reviewer Acknowledgments xiii xv xvii CHAPTER 1 Why C++/CLI? 1 Extending C++ with.net Features
More informationCpt S 122 Data Structures. Course Review FINAL. Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University
Cpt S 122 Data Structures Course Review FINAL Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Final When: Wednesday (12/12) 1:00 pm -3:00 pm Where: In Class
More informationa process may be swapped in and out of main memory such that it occupies different regions
Virtual Memory Characteristics of Paging and Segmentation A process may be broken up into pieces (pages or segments) that do not need to be located contiguously in main memory Memory references are dynamically
More informationLanguage Translation. Compilation vs. interpretation. Compilation diagram. Step 1: compile. Step 2: run. compiler. Compiled program. program.
Language Translation Compilation vs. interpretation Compilation diagram Step 1: compile program compiler Compiled program Step 2: run input Compiled program output Language Translation compilation is translation
More information20 Most Important Java Programming Interview Questions. Powered by
20 Most Important Java Programming Interview Questions Powered by 1. What's the difference between an interface and an abstract class? An abstract class is a class that is only partially implemented by
More information<Insert Picture Here> Symmetric multilanguage VM architecture: Running Java and JavaScript in Shared Environment on a Mobile Phone
Symmetric multilanguage VM architecture: Running Java and JavaScript in Shared Environment on a Mobile Phone Oleg Pliss Pavel Petroshenko Agenda Introduction to Monty JVM Motivation
More informationHigh-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 informationExample: Count of Points
Example: Count of Points 1 class Point { 2... 3 private static int numofpoints = 0; 4 5 Point() { 6 numofpoints++; 7 } 8 9 Point(int x, int y) { 10 this(); // calling the constructor with no input argument;
More informationIntroducing C++ to Java Programmers
Introducing C++ to Java Programmers by Kip Irvine updated 2/27/2003 1 Philosophy of C++ Bjarne Stroustrup invented C++ in the early 1980's at Bell Laboratories First called "C with classes" Design Goals:
More informationInheritance. OOP components. Another Example. Is a Vs Has a. Virtual Destructor rule. Virtual Functions 4/13/2017
OOP components For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 Data Abstraction Information Hiding, ADTs Encapsulation Type Extensibility Operator Overloading
More informationThe goal of the Pangaea project, as we stated it in the introduction, was to show that
Chapter 5 Conclusions This chapter serves two purposes. We will summarize and critically evaluate the achievements of the Pangaea project in section 5.1. Based on this, we will then open up our perspective
More information6 Architecture of C++ programs
6 Architecture of C++ programs 1 Preview managing memory and other resources "resource acquisition is initialization" (RAII) using std::auto_ptr and other smart pointers safe construction of an object
More information(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days
Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented
More informationEMBEDDED SYSTEMS PROGRAMMING OO Basics
EMBEDDED SYSTEMS PROGRAMMING 2014-15 OO Basics CLASS, METHOD, OBJECT... Class: abstract description of a concept Object: concrete realization of a concept. An object is an instance of a class Members Method:
More informationOutline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring
Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,
More informationADT: Design & Implementation
CPSC 250 Data Structures ADT: Design & Implementation Dr. Yingwu Zhu Abstract Data Type (ADT) ADT = data items + operations on the data Design of ADT Determine data members & operations Implementation
More informationMemory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008
Dynamic Storage Allocation CS 44: Operating Systems Spring 2 Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need to grow or shrink. Dynamic
More informationObject-Oriented Languages and Object-Oriented Design. Ghezzi&Jazayeri: OO Languages 1
Object-Oriented Languages and Object-Oriented Design Ghezzi&Jazayeri: OO Languages 1 What is an OO language? In Ada and Modula 2 one can define objects encapsulate a data structure and relevant operations
More informationAnnouncements. Lecture 05a Header Classes. Midterm Format. Midterm Questions. More Midterm Stuff 9/19/17. Memory Management Strategy #0 (Review)
Announcements Lecture 05a Sept. 19 th, 2017 9/19/17 CS253 Fall 2017 Bruce Draper 1 Quiz #4 due today (before class) PA1/2 Grading: If something is wrong with your code, you get sympathy PA3 is due today
More informationToday. 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 informationCreating the C++ auto_ptr<> utility for Symbian OS
Creating the C++ auto_ptr utility for Symbian OS Sander van der Wal Revision 1.0, Aug 2002 Introduction Before becoming a Symbian OS C++ developer, Sander van der Wal worked with Pascal as a systems
More informationObject-Oriented Programming
Object-Oriented Programming 1. What is object-oriented programming (OOP)? OOP is a technique to develop logical modules, such as classes that contain properties, methods, fields, and events. An object
More informationIntroduction to C++ Part II. Søren Debois. Department of Theoretical Computer Science IT University of Copenhagen. September 12th, 2005
Introduction to C++ Part II Søren Debois Department of Theoretical Computer Science IT University of Copenhagen September 12th, 2005 Søren Debois (Theory, ITU) Introduction to C++ September 12th, 2005
More informationWhat is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Singleton Pattern Mar. 13, 2007 What is it? If you need to make sure that there can be one and only one instance of a class. For example,
More informationToday s Big Adventure
Today s Big Adventure - How to name and refer to things that don t exist yet - How to merge separate name spaces into a cohesive whole Readings - man a.out & elf on a Solaris machine - run nm or objdump
More informationPart III. Advanced C ++
Part III Advanced C ++ topics Philip Blakely (LSC) Advanced C++ 66 / 119 References The following are highly regarded books. They are fairly in-depth, and I haven t read them in their entirity. However,
More informationG52CPP C++ Programming Lecture 7. Dr Jason Atkin
G52CPP C++ Programming Lecture 7 Dr Jason Atkin 1 This lecture classes (and C++ structs) Member functions inline functions 2 Last lecture: predict the sizes 3 #pragma pack(1) #include struct A
More informationCS105 C++ Lecture 7. More on Classes, Inheritance
CS105 C++ Lecture 7 More on Classes, Inheritance " Operator Overloading Global vs Member Functions Difference: member functions already have this as an argument implicitly, global has to take another parameter.
More information