Constructing Component-Based Extension Interfaces in Legacy Systems Code Gilles Muller École des Mines de Nantes Julia Lawall DIKU, University of Copenhagen.

Slides:



Advertisements
Similar presentations
What is Test Director? Test Director is a test management tool
Advertisements

INTRODUCTION TO SIMULATION WITH OMNET++ José Daniel García Sánchez ARCOS Group – University Carlos III of Madrid.
Use Case Diagrams Damian Gordon.
Identifying, Modifying, Creating, and Removing Monitor Rules for SOC Ricardo Contreras Andrea Zisman
Ensuring Operating System Kernel Integrity with OSck By Owen S. Hofmann Alan M. Dunn Sangman Kim Indrajit Roy Emmett Witchel Kent State University College.
Microkernels How to build a dependable, modular and secure operating system?
Visual Web Information Extraction With Lixto Robert Baumgartner Sergio Flesca Georg Gottlob.
Scheduler Activations Effective Kernel Support for the User-Level Management of Parallelism.
1 Building with Assurance CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute May 10, 2004.
Home: Phones OFF Please Unix Kernel Parminder Singh Kang Home:
Lock Inference for Systems Software John Regehr Alastair Reid University of Utah March 17, 2003.
1 Software Testing and Quality Assurance Lecture 15 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
Illinois Institute of Technology
Memory Management 1 CS502 Spring 2006 Memory Management CS-502 Spring 2006.
CS-3013 & CS-502, Summer 2006 Memory Management1 CS-3013 & CS-502 Summer 2006.
Karlstad University Computer Science Design Contracts and Error Management Design Contracts and Errors A Software Development Strategy (anpassad för PUMA)
November 18, 2004 Embedded System Design Flow Arkadeb Ghosal Alessandro Pinto Daniele Gasperini Alberto Sangiovanni-Vincentelli
1 Software Requirements Specification Lecture 14.
System Analysis and Design
1 FM Overview of Adaptation. 2 FM RAPIDware: Component-Based Design of Adaptive and Dependable Middleware Project Investigators: Philip McKinley, Kurt.
Introduction to Software Testing
Software Testing & Strategies
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Module CC3002 Post Implementation Issues Lecture for Week 6 AY 2013 Spring.
Software Testing Life Cycle
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Yu SunUniversity of Alabama at Birmingham PAR Works Jeff Gray University of Alabama Montpellier, France July 3rd, 2013 This research is supported.
Introduction Overview Static analysis Memory analysis Kernel integrity checking Implementation and evaluation Limitations and future work Conclusions.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
1 Abstracting the Content of System Call Traces Waseem Fadel Abdelwahab Hamou-Lhadj Department of Electrical and Computer Engineering Concordia University.
Page 1 On the Automatic Evolution of an OS Kernel using Temporal Logic and AOP Julia L. Lawall DIKU, University of Copenhagen Joint work with: Rickard.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
Language Design for Implementing Process Scheduling Hierarchies Julia L. Lawall DIKU, University of Copenhagen Gilles Muller, Hervé Duchesne Ecole des.
Designing and Debugging Batch and Interactive COBOL Programs Chapter 5.
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
(Business) Process Centric Exchanges
Software Construction Lecture 18 Software Testing.
Automated Testing Presentation to EPICS Collaboration Meeting DESY Paul Gibbons PhD Diamond Light Source Ltd.
An OBSM method for Real Time Embedded Systems Veronica Eyo Sharvari Joshi.
Harmony: A Run-Time for Managing Accelerators Sponsor: LogicBlox Inc. Gregory Diamos and Sudhakar Yalamanchili.
1 Pre-Exam Lecture 4 Final Examination is scheduled on Monday December 18th at 1:30PM in class 4 There are 8 questions with or without sub- parts and.
System Components ● There are three main protected modules of the System  The Hardware Abstraction Layer ● A virtual machine to configure all devices.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
Page 1 Towards a Schedu Capturing OS Expertise in an Event Type System: the Bossa Experience Julia L. Lawall DIKU, University of Copenhagen Joint work.
1 Read-Copy Update Paul E. McKenney Linux Technology Center IBM Beaverton Jonathan Appavoo Department.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Improving the Reliability of Commodity Operating Systems Michael M. Swift, Brian N. Bershad, Henry M. Levy Presented by Ya-Yun Lo EECS 582 – W161.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Accelerometer based motion gestures for mobile devices Presented by – Neel Parikh Advisor Committee members Dr. Chris Pollett Dr. Robert Chun Dr. Mark.
Computer System Structures
Benefits of a Virtual SIL
Architecture Review 10/11/2004
Software Testing.
Maintaining software solutions
Some Important Techniques For Regression Testing That You Must Know.
Multi-Dispatch in the Java™ Virtual Machine
Model-Driven Analysis Frameworks for Embedded Systems
Introduction to Software Testing
Programming Fundamentals (750113) Ch1. Problem Solving
CSE 303 Concepts and Tools for Software Development
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Thomas E. Anderson, Brian N. Bershad,
Presentation transcript:

Constructing Component-Based Extension Interfaces in Legacy Systems Code Gilles Muller École des Mines de Nantes Julia Lawall DIKU, University of Copenhagen Jean-Marc Menaud, Mario Sudholt École des Mines de Nantes

Page 2 The OS designer/researcher problem u How to implement my new wonderful idea? u Design a full OS from scratch? –Too much work –Limited support and compatibility (drivers, libraries)  Extend a legacy OS

Page 3 Extending a Legacy OS How to add event generation? Linux kernel with scheduling events Run- Time System User- defined scheduling policy Implementation of the Bossa process scheduling framework

Page 4 Problems in extending a legacy OS with new functions u How to plug new functions in the existing code –Interfaces may not exist u How to be sure that the extension is correctly done –One modification may have to be done in many places –The legacy OS may evolve –What about extending multiples OSes? u How to be sure that the whole system is consistent –Many extensions may cohabit

Page 5 Our Approach u Automate the extension process –Document modifications so that the process can be repeated and verified u Turn the system into a set of components –Legacy OS, extensions u Define new component interfaces –Identify points of interaction between the legacy OS and the extension –Define rewrite rules that construct support for interactions –Use an existing component framework (KNIT[OSDI’00], Think [Usenix’02])

Page 6 Defining new interfaces Legacy OS call_extension() Extension kmalloc() kfree() è Low-level code rewrite is needed

Page 7 Rewrite rule features u Insert new definitions –Wrappers for legacy functions, data structures u Insert code within existing definitions –Calls to the extension entry points –Data structure fields used by the extension u Remove code within existing definitions è We need to reason about the execution path

Page 8 1- Inserting code within existing definitions u update_times keeps track of time in Linux u Bossa entry point rts_clocktick marks the passage of time Add a call to rts_clocktick after the call to update_times In timer_bh: update_times(args) → After rts_clocktick()

Page Removing code within existing definitions u Linux function schedule –preempts the current process –elects a new one –performs the context switch u Bossa entry point rts_schedule –preempts the current process –elects a new one Replace part of schedule with a call to rts_schedule

Page 10 Specifying a region of code u rts_schedule replaces code that is both –after the taking of the runqueue lock –before the releasing of the runqueue lock u Temporal logic used to describe code regions –AF: On all forward paths, there exists … –AFΔ: On all backward paths, there exists … In schedule: ALL(AFΔ spin_lock_irq(&runqueue_lock) & AF spin_unlock_irq(&runqueue_lock)) → … rts_schedule(caller) …

Page Error checking u Safety criteria: –A rule never applies –Multiple rules apply at a single code point u Error rules: –Illegal patterns, partial matches In schedule: (AFΔ spin_lock_irq(&runqueue_lock) & (¬AF spin_unlock_irq(&runqueue_lock) | ¬AFΔ spin_unlock_irq(&runqueue_lock))) → Error(“runqueue lock taken but not released: ambiguous rts_schedule”)

Page 12 Component view of Bossa Kernel_to_RTS RTS_to_kernel Kernel_entry_points Kernel_to_bossa RTS_to_policy Policy_to_RTS Modified Linux Kernel RTS Policy

Page 13 Component Generation u Knit elements: –Bundletypes: list related objects bundletype RTS_to_kernel = { rts_clocktick, rts_schedule, … } –Units: use bundletypes to describe module imports and exports unit Kernel = { imports [ rts_to_kernel : RTS_to_kernel ]; exports [ kernel_to_Bossa : Kernel_to_Bossa, … ]; … }

Page 14 Knit interfaces extended with rewrite rules u Bundletypes include rewrite rules to apply when the object is imported or exported bundletype RTS_to_kernel = { rts_clocktick { import: In timer_bh: update_times(args) → After rts_clocktick() }, … }

Page 15 Experiments u Bossa –23 rewrites rules –20 exported functions –13 imported functions –Applied over the Linux 2.4 kernel (100MB) u SQUID –Add support for specific prefetching policies –4 rewrites rules –25 exported functions –4 imported functions

Page 16 Future work u Improvement of error detection u Jaluna/Chorus re-engineering to support virtual machine monitor u Extend Linux/Bossa with energy support u Target the Fractal/Think component framework u Turn Linux into components u Release our prototype

Page 17 Conclusion A replacement for “patch” u AOP inspired approach to OS evolution u Approach specifically targeted to system needs –Side result of Bossa u Promising initial experiments u Step towards the integration of components and AOP