Pattern-Oriented Software Architecture Concurrent & Networked Objects

Size: px
Start display at page:

Download "Pattern-Oriented Software Architecture Concurrent & Networked Objects"

Transcription

1 Pattern-Oriented Software Architecture Concurrent & Networked Objects Tuesday, October 27, 2009 Dr. Douglas C. Schmidt Electrical & Computing Engineering Department The Henry Samueli School of Engineering University of California, Irvine

2 The Road Ahead 2,400 bits/sec to 1 Gigabits/sec 10 Megahertz to 1 Gigahertz In general, software has not Increasing software improved productivity as rapidly or as and QoS depends effectively heavily as on hardware COTS CPUs and networks have increased by 3-7 orders of magnitude in the past decade Extrapolating this trend to 2010 yields ~100 Gigahertz desktops ~100 Gigabits/sec LANs ~100 Megabits/sec wireless ~10 Terabits/sec Internet backbone These advances stem largely from standardizing hardware & software APIs and protocols, e.g.: Intel x86 & Power PC chipsets TCP/IP, ATM POSIX & JVMs CORBA ORBs & components Ada, C, C++, RT Java

3 Overview of Patterns and Pattern Languages Patterns Present solutions to common software problems arising within a certain context Help resolve key design forces Capture recurring structures & dynamics among software participants to facilitate reuse of successful designs Generally codify expert knowledge & best practices Pattern Languages Define a vocabulary for talking about software development problems Provide a process for the orderly resolution of these problems Help to generate & reuse software architectures Flexibility The Proxy ExtensibilityPattern Dependability Predictability Scalability Efficiency

4 Overview of Frameworks & Components Framework An integrated collection of components that collaborate to produce a reusable architecture for a family of related applications Frameworks differ from conventional class libraries: Frameworks Semi-complete applications Domain-specific Inversion of control Class Libraries Stand-alone components Domainindependent Borrow caller s thread of control Class Library Architecture Framework Architecture Frameworks faciliate reuse of successful software designs & implementations Applications inherit from and instantiate framework components

5 The JAWS Web Server Framework Key Sources of Variation Concurrency models e.g.,thread pool vs. thread-per request Event demultiplexing models e.g.,sync vs. async File caching models e.g.,lru vs. LFU Content delivery protocols e.g.,http , HTTP-NG, IIOP, DICOM Event Dispatcher Accepts client connection request events, receives HTTP GET requests, & coordinates JAWS s event demultiplexing strategy with its concurrency strategy. As events are processed they are dispatched to the appropriate Protocol. Protocol Performs parsing & protocol processing of HTTP request events. JAWS Protocol design allows multiple Web protocols, such as HTTP/1.0, HTTP/1.1, & HTTP- NG, to be incorporated into a Web server. To add a new protocol, developers just write a new Protocol component & configure it into the Cached Virtual Filesystem Improves Web server performance by reducing the overhead of file system accesses when processing HTTP GET requests. Various caching strategies, such as least-recently used (LRU) or leastfrequently used (LFU), can be selected according to the actual or anticipated workload & configured statically or dynamically.

6 Applying Patterns to Resolve Key JAWS Design Challenges Patterns help resolve the following common challenges: Encapsulating low-level OS APIs Efficiently Demuxing Asynchronous Decoupling event demultiplexing & Operations & Completions connection management from Enhancing server configurability protocol processing Transparently parameterizing Scaling up performance via threading synchronization into components Implementing a synchronized request Ensuring locks are released queue properly Minimizing server threading overhead Minimizing unnecessary locking Using asynchronous I/O effectively Synchronizing singletons correctly

7 Encapsulating Low-level OS Context A Web server must manage a variety of OS services, including processes, threads, Socket connections, virtual memory, & files. Most operating systems provide lowlevel APIs written in C to access these services. APIs Problem The diversity of hardware and operating systems makes it hard to build portable and robust Web server software by programming directly to low-level operating system APIs, which are tedious, error-prone, & non-portable. Application calls methods Solution Apply the Wrapper Facade design pattern to avoid accessing low-level operating system APIs directly. Wrapper Facade data method1() methodn() void method1(){ functiona(); functionb(); } void methodn(){ functiona(); } calls calls calls API FunctionA() API FunctionB() API FunctionC() Intent : Application This pattern encapsulates data & functions provided by existing non- OO APIs within more concise, robust, portable, maintainable, & cohesive OO class interfaces. method() : Wrapper Facade : APIFunctionA functiona() : APIFunctionB functionb()

8 Decoupling Event Demuxing and Connection Management from Protocol Processing Context A Web server can be accessed simultaneously by multiple clients, each of which has its own connection to the server. A Web server must therefore be able to demultiplex and process multiple types of indication events that can arrive from different clients concurrently. A common way to demultiplex events in a Web server is to use select(). Problem Client Developers often tightly couple a Web server s event-demultiplexing Event Dispatcher and connectionmanagement code with its HTTP protocol-handling GET Web Server code that performs select() HTTP 1.0 processing. request In such a design, the demultiplexing and connection-management Socket code cannot be reused Client as black-box HTTP components GET s request Neither by other HTTP protocols, nor by other middleware and applications, such as ORBs and image servers. Sockets Thus, changes to Client the event-demultiplexing Connect and connection-management code will affect the Web server protocol request code directly and may introduce subtle bugs. e.g., porting it to use TLI or WaitForMultipleObjects() Solution Apply the Reactor pattern and the Acceptor-Connector pattern to separate the generic event-demultiplexing and connection-management code from the web server s protocol code.

9 Intent The Reactor architectural pattern allows event-driven applications to demultiplex & dispatch service requests that are delivered to an application from one or more clients. 1. Initialize phase 2. Event handling phase : Main Program : Concrete Event Con. Event The Reactor Pattern Events Reactor handle_events() register_handler() remove_handler() <<uses>> handle set Synchronous Event Demuxer select () register_handler() get_handle() handle_events() handle_event() service() notifies dispatches owns Concrete Event A handle_event () get_handle() : Reactor : Synchronous Event Demultiplexer s s select() event Event handle_event () get_handle() Concrete Event B handle_event () get_handle() Observations Note inversion of control Also note how long-running event handlers can degrade the QoS since callbacks steal the reactor s thread!

10 The Acceptor-Connector Pattern Intent The Acceptor-Connector design pattern decouples the connection & initialization of cooperating peer services in a networked system from the processing performed by the peer services after being connected & initialized. notifies uses Dispatcher select() uses uses uses handle_events() Transport register_handler() Transport Transport remove_handler() notifies Connector owns notifies Service owns <<creates>> owns Acceptor Connector() connect() complete() handle_event () peer_stream_ open() handle_event () set_handle() peer_acceptor_ Acceptor() Accept() handle_event () Concrete Connector <<activate>> Concrete Service A Concrete Service B <<activate>> Concrete Acceptor

11 Acceptor Dynamics : Application : Acceptor : Dispatcher 1.Passive-mode endpoint initialize phase 2.Service handler initialize phase 3.Service processing phase open() accept() The Acceptor ensures that passive- mode transport endpoints aren t used to read/write data accidentally And vice versa for data transport endpoints Acceptor : open() ACCEPT_ EVENT : Service Service register_handler() handle_events() 2 Events register_handler() handle_event() service() There is typically one Acceptor factory per-service/per-port Additional demuxing can be done at higher layers, a la CORBA

12 Synchronous Connector Dynamics Motivation for Synchrony If connection latency is negligible e.g., connecting with a server on the same host via a loopback device If multiple threads of control are available & it is efficient to use a thread-per-connection to connect each service handler synchronously If the services must be initialized in a fixed order & the client can t perform useful work until all connections are established. : Application : Connector : Service : Dispatcher 1.Sync connection initiation phase 2.Service handler initialize phase 3.Service processing phase Service Addr connect() get_handle() open() Service handle_event() register_handler() Events handle_events() service()

13 Asynchronous Connector Dynamics Motivation for Asynchrony If client is establishing connections over high latency links If client is a single-threaded applications If client is initializing many peers that can be connected in an arbitrary order. : Application : Connector : Service : Dispatcher 1.Async connection initiation phase 2.Service handler initialize phase 3.Service processing phase Service Addr connect() get_handle() complete() open() Service register_handler() Connector CONNECT EVENT handle_event() service() handle_events() register_handler() Events

14 Applying the Reactor and Acceptor- Connector Patterns in JAWS The Reactor architectural pattern decouples: 1.JAWS generic synchronous event demultiplexing & dispatching logic from 2.The HTTP protocol processing it performs in response to events Reactor handle_events() register_handler() remove_handler() <<uses>> handle set Synchronous Event Demuxer select () notifies dispatches owns HTTP Acceptor handle_event () get_handle() Event handle_event () get_handle() HTTP handle_event () get_handle() The Acceptor-Connector design pattern can use a Reactor as its Dispatcher in order to help decouple: 1.The connection & initialization of peer client & server HTTP services from 2.The processing activities performed by these peer services once they are connected & initialized.

15 The JAWS Web Server Framework Key Sources of Variation Concurrency models e.g.,thread pool vs. thread-per request Event demultiplexing models e.g.,sync vs. async File caching models e.g.,lru vs. LFU Content delivery protocols e.g.,http , HTTP-NG, IIOP, DICOM Event Dispatcher Accepts client connection request events, receives HTTP GET requests, & coordinates JAWS s event demultiplexing strategy with its concurrency strategy. As events are processed they are dispatched to the appropriate Protocol. Protocol Performs parsing & protocol processing of HTTP request events. JAWS Protocol design allows multiple Web protocols, such as HTTP/1.0, HTTP/1.1, & HTTP- NG, to be incorporated into a Web server. To add a new protocol, developers just write a new Protocol component & configure it into the Cached Virtual Filesystem Improves Web server performance by reducing the overhead of file system accesses when processing HTTP GET requests. Various caching strategies, such as least-recently used (LRU) or leastfrequently used (LFU), can be selected according to the actual or anticipated workload & configured statically or dynamically.

16 The Acceptor-Connector Pattern Intent The Acceptor-Connector design pattern decouples the connection & initialization of cooperating peer services in a networked system from the processing performed by the peer services after being connected & initialized. notifies uses Dispatcher select() uses uses uses handle_events() Transport register_handler() Transport Transport remove_handler() notifies Connector owns notifies Service owns <<creates>> owns Acceptor Connector() connect() complete() handle_event () peer_stream_ open() handle_event () set_handle() peer_acceptor_ Acceptor() Accept() handle_event () Concrete Connector <<activate>> Concrete Service A Concrete Service B <<activate>> Concrete Acceptor

17 Reactive Connection Management & Data Transfer in JAWS

18 Scaling Up Performance via Context HTTP runs over TCP, which uses flow control to ensure that senders do not produce data more rapidly than slow receivers or congested networks can buffer and process. Since achieving efficient end-to-end quality of service (QoS) is important to handle heavy Web traffic loads, a Web server must scale up efficiently as its number of clients increases. Threading Problem Processing all HTTP GET requests reactively within a single-threaded process does not scale up, because each server CPU time-slice spends much of its time blocked waiting for I/O operations to complete. Similarly, to improve QoS for all its connected clients, an entire Web server process must not block while waiting for connection flow control to abate so it can finish sending a file to a client. Solution Apply the Half-Sync/Half-Async architectural pattern to scale up server performance by processing different HTTP requests concurrently in multiple threads. This solution yields two benefits: 1. Threads can be mapped to separate CPUs to scale up server performance via multiprocessing. 2. Each thread blocks independently, which prevents one flow-controlled connection from degrading the QoS other clients receive.

19 The Half-Sync/Half-Async Intent The Half-Sync/Half-Async architectural pattern decouples async & sync service processing in concurrent systems, to simplify programming without unduly reducing performance. The pattern introduces two intercommunicating layers, one for async & one for sync service processing. This pattern defines two service processing layers one async and one sync along with a queueing layer that allows services to exchange messages between the two layers. The pattern allows sync services, such as HTTP protocol processing, to run concurrently, relative both to each other and to async services, such as event demultiplexing. Pattern Sync Service Layer Queueing Layer Async Service Layer : External Event Source Sync Service 1 Sync Service 2 Sync Service 3 read() <<read/write>> <<dequeue/enqueue>> notification message Queue Async Service <<read/write>> : Async Service : Queue work() message enqueue() <<read/write>> <<interrupt>> External Event Source notification read() message : Sync Service work()

20 Applying the Half-Sync/Half-Async Synchronous Service Layer Pattern in JAWS Worker Thread 1 Worker Thread 2 Worker Thread 3 Queueing Layer <<get>> <<put>> <<get>> Request Queue <<get>> Asynchronous Service Layer HTTP s, HTTP Acceptor Reactor <<ready to read>> Socket Event Sources JAWS uses the Half- Sync/Half-Async pattern to process HTTP GET requests synchronously from multiple clients, but concurrently in separate threads The worker thread that removes the request synchronously performs HTTP protocol processing & then transfers the file back to the client. If flow control occurs on its client connection this thread can block without degrading the QoS experienced by clients serviced by other worker threads in the pool.

21 Implementing a Synchronized Request Context The Half-Sync/Half-Async pattern contains a queue. The JAWS Reactor thread is a producer that inserts HTTP GET requests into the queue. Worker pool threads are consumers that remove & process queued requests. Solution Apply the Monitor Object pattern to implement a synchronized queue. Queue Worker Thread 1 This design pattern synchronizes concurrent method execution to ensure that only one method at a time runs within an object. It also allows an object s methods to cooperatively schedule their execution sequences. Problem <<get>> when <<get>> multiple threads insert and <<get>> remove Request Queue <<put>> Worker Thread 2 Worker Thread 3 A naive implementation of a request queue will incur race conditions or busy waiting requests. e.g., multiple concurrent producer and consumer HTTP threads s, can HTTP corrupt Acceptor the queue s internal state if it is not synchronized properly. Similarly, these threads will busy wait when Reactor the queue is empty or full, which wastes CPU cycles unnecessarily. Client 2.. uses Monitor Condition wait() notify() notify_all() Monitor Object sync_method1() sync_methodn() Monitor Lock acquire() release() uses

22 Dynamics of the Monitor Object : Client Thread1 Pattern : Client Thread2 : Monitor Object : Monitor Lock : Monitor Condition 1. Synchronized method invocation & serialization 2. Synchronized method thread suspension 3. Monitor condition notification the OS thread scheduler automatically resumes the client thread and the synchronized method sync_method1() the OS thread scheduler automatically suspends the client thread sync_method2() acquire() dowork() acquire() dowork() release() wait() the OS thread scheduler atomically releases the monitor lock notify() 4. Synchronized method thread resumption dowork() release() the OS thread scheduler atomically reacquires the monitor lock

23 pplying the Monitor Object Pattern in JAWS The JAWS synchronized request queue implement the queue s not-empty and not-full monitor conditions via a pair of ACE wrapper facades for POSIX-style condition variables. HTTP <<put>> uses 2 Thread Condition wait() notify() notify_all() Request Queue put() get() Thread_Mutex acquire() release() <<get>> uses Worker Thread When a worker thread attempts to dequeue an HTTP GET request from an empty queue, the request queue s get() method atomically releases the monitor lock and the worker thread suspends itself on the not-empty monitor condition. The thread remains suspended until the queue is no longer empty, which happens when an HTTP_ running in the Reactor thread inserts a request into the queue.

24 Minimizing Server Threading Overhead Context Socket implementations in certain multi-threaded operating systems provide a concurrent accept() optimization to accept client connection requests and improve the performance of Web servers that implement the HTTP 1.0 protocol as follows: The operating system allows a pool of threads in a Web server to call accept() on the same passive-mode socket handle. When a connection request arrives, the operating system s transport layer creates a new connected transport endpoint, encapsulates this new endpoint with a data-mode socket handle and passes the handle as the return value from accept(). The operating system then schedules one of the threads in the pool to receive this datamode handle, which it uses to communicate with its connected client. accept() accept() accept() passive-mode socket handle accept() accept()

25 Drawbacks with the Half-Sync/ Half-Async Architecture Problem Although Half-Sync/Half-Async threading model is more scalable than the purely reactive model it is not necessarily the most efficient design. e.g., passing a request between the Reactor thread and a worker thread incurs: Dynamic memory (de)allocation, Synchronization operations, A context switch, & CPU cache updates This overhead makes JAWS latency unnecessarily high, particularly on operating systems that support the concurrent accept() optimization. Worker Thread 1 <<get>> <<put>> Solution Reactor <<get>> Request Queue HTTP s, Worker Thread 2 HTTP Acceptor <<get>> Apply the Leader/Followers pattern to minimize server threading overhead. Worker Thread 3

26 ynamics in the Leader/Followers Pattern 1.Leader thread demuxing 2.Follower thread promotion 3.Event handler demuxing & event processing 4.Rejoining the thread pool Thread 1 Thread 2 thread 1 sleeps until it becomes the leader join() join() thread 2 sleeps until it becomes the leader thread 2 waits for a new event, thread 1 processes current event join() : Thread Pool handle_events() promote_ new_leader() handle_ events() : Set event handle_event() deactivate_ handle() reactivate_ handle() event handle_event() deactivate_ handle() : Concrete Event

27 Applying the Leader/Followers Pattern in JAWS Two options: 1.If platform supports accept() optimization then the OS implements the Leader/Followers pattern 2.Otherwise, this pattern can be implemented as a reusable framework Set handle_events() deacitivate_handle() reactivate_handle() select() Thread Pool synchronizer join() promote_new_leader() HTTP Acceptor handle_event () get_handle() uses demultiplexes Event handle_event () get_handle() HTTP handle_event () get_handle() Although Leader/Followers thread pool design is highly efficient the Half-Sync/Half-Async design may be more appropriate for certain types of servers, e.g.: The Half-Sync/Half-Async design can reorder and prioritize client requests more flexibly, because it has a synchronized request queue implemented using the Monitor Object pattern. It may be more scalable, because it queues requests in Web server virtual memory, rather than the operating system kernel.

28 Problem Developing software that achieves the potential efficiency & scalability of async I/O is hard due to the separation in time & space of async operation invocations and their subsequent completion events. <<uses>> The Proactor Solution Pattern Initiator Apply the Proactor architectural pattern to make efficient use of async I/O. This pattern allows event-driven applications to efficiently demultiplex & dispatch service requests triggered by the completion of async operations, thereby achieving the performance benefits of concurrency without incurring many of its liabilities. <<uses>> <<uses>> Asynchronous Operation Processor execute_async_op() <<enqueues>> <<executes>> <<invokes>> Asynchronous Operation async_op() is associated with <<demultiplexes & dispatches>> Completion handle_event() Completion Event Queue <<dequeues>> Asynchronous Event Demuxer get_completion_event() Proactor handle_events() Concrete Completion

29 Dynamics : Initiator : Asynchronous in : the Asynchronous Proactor : Completion Pattern Operation Operation Event Queue Processor : Proactor Completion 1. Initiate operation 2. Process operation 3. Run event loop 4. Generate & queue completion event 5. Dequeue completion event & perform completion processing Completion Completion Ev. Queue exec_async_ operation () async_operation() Result Result event handle_events() event Result Result handle_ event() Note similarities & differences with the Reactor pattern, e.g.: Both process events via callbacks However, it s generally easier to multi-thread a proactor service()

30 Applying the Proactor Pattern in The Proactor pattern structures the JAWS concurrent server to receive & process requests from multiple clients asynchronously. JAWS JAWS HTTP components are split into two parts: 1. Operations that execute asynchronously e.g., to accept connections & receive client HTTP GET requests 2. The corresponding completion handlers that process the async operation results e.g., to transmit a file back to a client after an async connection operation completes <<uses>> Web Server <<uses>> <<uses>> Windows NT Operating System execute_async_op() <<enqueues>> <<executes>> <<invokes>> Asynchronous Operation AcceptEx() ReadFile() WriteFile() is associated with <<demultiplexes & dispatches>> Completion handle_event() I/O Completion Port <<dequeues>> Asynchronous Event Demuxer GetQueuedCompletionStatus() Proactor handle_events() HTTP Acceptor HTTP

31 Proactive Connection Management & Data Transfer in JAWS

Produced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar

Produced by. Design Patterns. MSc in Computer Science. Eamonn de Leastar Design Patterns MSc in Computer Science Produced by Eamonn de Leastar (edeleastar@wit.ie)! Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

A Family of Design Patterns for Application-Level Gateways

A Family of Design Patterns for Application-Level Gateways A Family of Design Patterns for Application-Level Gateways Douglas C. Schmidt schmidt@cs.wustl.edu http://www.cs.wustl.edu/schmidt/ Department of Computer Science Washington University, St. Louis 63130

More information

Acceptor and Connector Design Patterns for Initializing Communication Services

Acceptor and Connector Design Patterns for Initializing Communication Services Acceptor and Connector Design Patterns for Initializing Communication Services Douglas C. Schmidt schmidt@cs.wustl.edu Department of Computer Science Washington University St. Louis, MO 63130, USA (314)

More information

Applying Patterns and Frameworks to Develop Object-Oriented Communication Software

Applying Patterns and Frameworks to Develop Object-Oriented Communication Software Applying Patterns and Frameworks to Develop Object-Oriented Communication Software Douglas C. Schmidt schmidt@cs.wustl.edu Department of Computer Science Washington University, St. Louis, MO 63130 This

More information

Leader/Followers A Design Pattern for Efficient Multi-threaded Event Demultiplexing and Dispatching

Leader/Followers A Design Pattern for Efficient Multi-threaded Event Demultiplexing and Dispatching Leader/Followers A Design Pattern for Efficient Multi-threaded Event Demultiplexing and Dispatching Douglas C. Schmidt d.schmidt@vanderbilt.edu Electrical Engineering and Computer Science Dept. Vanderbilt

More information

Universal Communication Component on Symbian Series60 Platform

Universal Communication Component on Symbian Series60 Platform Universal Communication Component on Symbian Series60 Platform Róbert Kereskényi, Bertalan Forstner, Hassan Charaf Department of Automation and Applied Informatics Budapest University of Technology and

More information

Proxy Pattern Graphical Notation Intent: provide a surrogate for another object that controls access to it 5 6 Frameworks More Observations Reuse of p

Proxy Pattern Graphical Notation Intent: provide a surrogate for another object that controls access to it 5 6 Frameworks More Observations Reuse of p Using Design Patterns and Frameworks to Develop Object-Oriented Communication Systems Douglas C. Schmidt www.cs.wustl.edu/schmidt/ schmidt@cs.wustl.edu Washington University, St. Louis Motivation Developing

More information

COPYRIGHTED MATERIAL. Table of Contents. Foreword... xv. About This Book... xvii. About The Authors... xxiii. Guide To The Reader...

COPYRIGHTED MATERIAL. Table of Contents. Foreword... xv. About This Book... xvii. About The Authors... xxiii. Guide To The Reader... Table of Contents Foreword..................... xv About This Book... xvii About The Authors............... xxiii Guide To The Reader.............. xxvii Part I Some Concepts.................. 1 1 On Patterns

More information

Architecture and Design of Distributed Dependable Systems TI-ARDI. POSA2: Reactor Architectural Pattern

Architecture and Design of Distributed Dependable Systems TI-ARDI. POSA2: Reactor Architectural Pattern Architecture and Design of Distributed Dependable Systems TI-ARDI POSA2: Reactor Architectural Pattern Version: 2.09.2014 Abstract The Reactor architectural pattern allows event-driven applications to

More information

APPLYING THE PROACTOR PATTERN TO HIGH-PERFORMANCE WEB SERVERS 1 INTRODUCTION

APPLYING THE PROACTOR PATTERN TO HIGH-PERFORMANCE WEB SERVERS 1 INTRODUCTION APPLYING THE PROACTOR PATTERN TO HIGH-PERFORMANCE WEB SERVERS James Hu jxh@cs.wustl,edu Irfan Pyarali irfan@cs.wustl.edu Douglas C. Schmidt schmidt@cs.wustl.edu Department of Computer Science, Washington

More information

C, ACE C++, Blob Streaming, and Orbix over ATM

C, ACE C++, Blob Streaming, and Orbix over ATM The Performance of Object-Oriented Components for High-speed Network Programming Douglas C. Schmidt schmidt@cs.wustl.edu Washington University, St. Louis Introduction æ Distributed object computing èdocè

More information

Motivation: the Distributed Software Crisis Symptoms Hardware gets smaller, cheaper faster, Software gets larger, slower, more expensive Culprits Acci

Motivation: the Distributed Software Crisis Symptoms Hardware gets smaller, cheaper faster, Software gets larger, slower, more expensive Culprits Acci Using the ACE Framework and Patterns to Develop OO Communication Software schmidt@cs.wustl.edu University, St. Louis Washington http://www.cs.wustl.edu/schmidt/ Sponsors DARPA, Bellcore, Boeing, CDI/GDIS,

More information

PATTERN-ORIENTED SOFTWARE ARCHITECTURE

PATTERN-ORIENTED SOFTWARE ARCHITECTURE PATTERN-ORIENTED SOFTWARE ARCHITECTURE A Pattern Language for Distributed Computing Volume 4 Frank Buschmann, Siemens, Munich, Germany Kevlin Henney, Curbralan, Bristol, UK Douglas C. Schmidt, Vanderbilt

More information

Reactor. An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events. Douglas C. Schmidt

Reactor. An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events. Douglas C. Schmidt Reactor An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events Douglas C. Schmidt schmidt@cs.wustl.edu Department of Computer Science Washington University, St.

More information

Overview of Patterns: Introduction

Overview of Patterns: Introduction : Introduction d.schmidt@vanderbilt.edu www.dre.vanderbilt.edu/~schmidt Professor of Computer Science Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA Introduction

More information

CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING Expression Tree Case Study : Prototype Pattern Reactor pattern

CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING Expression Tree Case Study : Prototype Pattern Reactor pattern CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 Expression Tree Case Study : Prototype Pattern Reactor pattern CLONING OBJECTS Cloning permits replicating an object C++ assignment operator implements a

More information

Applying Design Patterns to Flexibly Configure Network Services in Distributed Systems

Applying Design Patterns to Flexibly Configure Network Services in Distributed Systems pplying Design Patterns to Flexibly Configure Network Services in Distributed Systems Douglas C. Schmidt schmidt@uci.edu http://www.ece.uci.edu/schmidt/ Department of Electrical & Computer Science University

More information

Latency Reliability Partitioning Ordering Low-level APIs Poor debugging tools Algorithmic decomposition Components Self-contained, ëpluggable" ADTs Fr

Latency Reliability Partitioning Ordering Low-level APIs Poor debugging tools Algorithmic decomposition Components Self-contained, ëpluggable ADTs Fr C. Schmidt Douglas schmidt@cs.wustl.edu University, St. Louis Washington www.cs.wustl.eduèçschmidtètao4.ps.gz Sponsors Boeing, CDI, DARPA, Kodak, Bellcore, Motorola, NSF, OTI, SAIC, Lucent, SCR, Siemens

More information

Techniques for Enhancing Real-time CORBA Quality of Service

Techniques for Enhancing Real-time CORBA Quality of Service Techniques for Enhancing Real-time CORBA Quality of Service Irfan Pyarali y Douglas C. Schmidt Ron K. Cytron irfan@oomworks.com schmidt@uci.edu cytron@cs.wustl.edu OOMWorks, LLC Electrical & Computer Engineering

More information

Patterns for Asynchronous Invocations in Distributed Object Frameworks

Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Markus Voelter Michael Kircher Siemens AG, Corporate Technology,

More information

CS342: Software Design. November 21, 2017

CS342: Software Design. November 21, 2017 CS342: Software Design November 21, 2017 Runnable interface: create threading object Thread is a flow of control within a program Thread vs. process All execution in Java is associated with a Thread object.

More information

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently. Gang of Four Software Design Patterns with examples STRUCTURAL 1) Adapter Convert the interface of a class into another interface clients expect. It lets the classes work together that couldn't otherwise

More information

Page Line Wrong Text Correct Text Done Correction appears in print #

Page Line Wrong Text Correct Text Done Correction appears in print # 1 all all all use of the word synchronization in the concurrency patterns might confuse readers: why aren t these patterns in the synchronization chapter then? replace synchronization with coordination

More information

Software Architecture Patterns

Software Architecture Patterns Software Architecture Patterns *based on a tutorial of Michael Stal Harald Gall University of Zurich http://seal.ifi.uzh.ch/ase www.infosys.tuwien.ac.at Overview Goal Basic architectural understanding

More information

CSE398: Network Systems Design

CSE398: Network Systems Design CSE398: Network Systems Design Instructor: Dr. Liang Cheng Department of Computer Science and Engineering P.C. Rossin College of Engineering & Applied Science Lehigh University February 23, 2005 Outline

More information

Intro to Patterns and Frameworks

Intro to Patterns and Frameworks Introduction to Patterns and Frameworks Associate Professor Computer Engineering Dept. schmidt@uci.edu University of California, Irvine www.eng.uci.edu/schmidt/ (949) 824-1901 Motivation for Patterns and

More information

Introduction to Patterns and Frameworks

Introduction to Patterns and Frameworks Patterns and Frameworks CS 342: Object-Oriented Software Development Lab Introduction to Patterns and Frameworks Dr. David L. Levine and Douglas C. Schmidt Department of Computer Science Washington University,

More information

Introduction to Patterns and Frameworks

Introduction to Patterns and Frameworks Patterns and Frameworks CS 342: Object-Oriented Software Development Lab Introduction to Patterns and Frameworks David L. Levine Christopher D. Gill Department of Computer Science Washington University,

More information

Threads SPL/2010 SPL/20 1

Threads SPL/2010 SPL/20 1 Threads 1 Today Processes and Scheduling Threads Abstract Object Models Computation Models Java Support for Threads 2 Process vs. Program processes as the basic unit of execution managed by OS OS as any

More information

Implementing Real-time CORBA with Real-time Java

Implementing Real-time CORBA with Real-time Java Implementing Real-time CORBA with Real-time Java Ray Klefstad, Mayur Deshpande, Carlos O Ryan, & Doug Schmidt {coryan,schmidt}@uci.edu {klefstad,mayur}@ics.uci.edu Elec. & Comp. Eng. Dept Info. & Comp.

More information

A Scalable Event Dispatching Library for Linux Network Servers

A Scalable Event Dispatching Library for Linux Network Servers A Scalable Event Dispatching Library for Linux Network Servers Hao-Ran Liu and Tien-Fu Chen Dept. of CSIE National Chung Cheng University Traditional server: Multiple Process (MP) server A dedicated process

More information

Constructing a Web- Servers with Patterns

Constructing a Web- Servers with Patterns Pra 03 Constructing a Web- Servers with Patterns Michael Stal Siemens Corporate Technology Michael Stal Aufbau eines Web- Servers mit Hilfe von Patterns 1 Case Study A High-Performance Web Server Dein

More information

Solution: Reuse Design Patterns Design patterns support reuse of software architecture Patterns embody successful solutions to problems that arise whe

Solution: Reuse Design Patterns Design patterns support reuse of software architecture Patterns embody successful solutions to problems that arise whe Introduction Experience Using Design Patterns to Evolve Communication Software Across Diverse Platforms Developing portable, reuseable, and ecient communication software is hard OS platforms are often

More information

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of California, Berkeley Operating Systems Principles

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/58 Definition Distributed Systems Distributed System is

More information

02 - Distributed Systems

02 - Distributed Systems 02 - Distributed Systems Definition Coulouris 1 (Dis)advantages Coulouris 2 Challenges Saltzer_84.pdf Models Physical Architectural Fundamental 2/60 Definition Distributed Systems Distributed System is

More information

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4 Motivation Threads Chapter 4 Most modern applications are multithreaded Threads run within application Multiple tasks with the application can be implemented by separate Update display Fetch data Spell

More information

Active Object. Concurrent Object, Actor

Active Object. Concurrent Object, Actor Active Object 1 Active Object The Active Object design pattern decouples method execution from method invocation to enhance concurrency and simplify synchronized access to objects that reside in their

More information

MTAT Enterprise System Integration. Lecture 2: Middleware & Web Services

MTAT Enterprise System Integration. Lecture 2: Middleware & Web Services MTAT.03.229 Enterprise System Integration Lecture 2: Middleware & Web Services Luciano García-Bañuelos Slides by Prof. M. Dumas Overall view 2 Enterprise Java 2 Entity classes (Data layer) 3 Enterprise

More information

Background: I/O Concurrency

Background: I/O Concurrency Background: I/O Concurrency Brad Karp UCL Computer Science CS GZ03 / M030 5 th October 2011 Outline Worse Is Better and Distributed Systems Problem: Naïve single-process server leaves system resources

More information

Networking, Java threads and synchronization. PRIS lecture 4 Fredrik Kilander

Networking, Java threads and synchronization. PRIS lecture 4 Fredrik Kilander Networking, Java threads and synchronization PRIS lecture 4 Fredrik Kilander OSI Application Presentation Session Transport Network Data link Physical TCP/IP Application Transport Internet Host-to-network

More information

University of Alberta

University of Alberta University of Alberta Library Release Form Name of Author: Zhuang Guo Title of Thesis: Developing Network Server Applications Using Generative Design Patterns Degree: Master of Science Year of Degree Granted:

More information

Real-time & Embedded Systems Workshop July 2007 Building Successful Real-time Distributed Systems in Java

Real-time & Embedded Systems Workshop July 2007 Building Successful Real-time Distributed Systems in Java Real-time & Embedded Systems Workshop July 2007 Building Successful Real-time Distributed Systems in Java Andrew Foster Product Manager PrismTech Corporation The Case for Java in Enterprise Real-Time Systems

More information

Patterns and Performance of Real-time Middleware for Embedded Systems

Patterns and Performance of Real-time Middleware for Embedded Systems Patterns and Performance of Real-time Middleware for Embedded Systems Associate Professor & Director of the Center for Distributed Object Computing Computer Science Dept. Lockheed Martin November st, 999

More information

5 Distributed Objects: The Java Approach

5 Distributed Objects: The Java Approach 5 Distributed Objects: The Java Approach Main Points Why distributed objects Distributed Object design points Java RMI Dynamic Code Loading 5.1 What s an Object? An Object is an autonomous entity having

More information

Operating System Support

Operating System Support Operating System Support Dr. Xiaobo Zhou Adopted from Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 1 Learning Objectives Know what a modern

More information

DS 2009: middleware. David Evans

DS 2009: middleware. David Evans DS 2009: middleware David Evans de239@cl.cam.ac.uk What is middleware? distributed applications middleware remote calls, method invocations, messages,... OS comms. interface sockets, IP,... layer between

More information

Developing Distributed Real-time Systems Using OS System-Hiding Frameworks

Developing Distributed Real-time Systems Using OS System-Hiding Frameworks Developing Distributed Real-time Systems Using OS System-Hiding Frameworks Associate Professor Elec. & Comp. Eng. Dept. schmidt@uci.edu University of California, Irvine www.ece.uci.edu/schmidt/ (949) 824-1901

More information

Part I: Communication and Networking

Part I: Communication and Networking Review what we learned Part I: Communication and Networking Communication and Networking: Week 5-6, Lectures 2-7 Lecture 1 OSI vs TCP/IP model OSI model Protocols TCP/IP model Application FTP SMTP HTTP

More information

SMD149 - Operating Systems

SMD149 - Operating Systems SMD149 - Operating Systems Roland Parviainen November 3, 2005 1 / 45 Outline Overview 2 / 45 Process (tasks) are necessary for concurrency Instance of a program in execution Next invocation of the program

More information

ASX: An Object-Oriented Framework for Developing Distributed Applications

ASX: An Object-Oriented Framework for Developing Distributed Applications ASX: An Object-Oriented Framework for Developing Distributed Applications Douglas C. Schmidt schmidt@ics.uci.edu Department of Information and Computer Science University of California, Irvine, CA 92717,

More information

Object Oriented Paradigm

Object Oriented Paradigm Object Oriented Paradigm Ming-Hwa Wang, Ph.D. Department of Computer Engineering Santa Clara University Object Oriented Paradigm/Programming (OOP) similar to Lego, which kids build new toys from assembling

More information

Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers

Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers Douglas C. Schmidt schmidt@uci.edu Electrical & Computer Engineering University of California,

More information

Developing Flexible and High-performance Web Servers with Frameworks and Patterns

Developing Flexible and High-performance Web Servers with Frameworks and Patterns Developing Flexible and High-performance Web Servers with Frameworks and Patterns Douglas C. Schmidt schmidt@cs.wustl.edu James C. Hu jxh@cs.wustl.edu Department of Computer Science Washington University

More information

The Design and Performance of a Real-time CORBA Event Service

The Design and Performance of a Real-time CORBA Event Service The Design and Performance of a Real-time CORBA Event Service Timothy H. Harrison, Carlos O Ryan, David L. Levine, and Douglas C. Schmidt fharrison,coryan,levine,schmidtg@cs.wustl.edu Department of Computer

More information

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

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

More information

F6COM: A Case Study in Extending Container Services through Connectors

F6COM: A Case Study in Extending Container Services through Connectors F6COM: A Case Study in Extending Container Services through Connectors Abhishek Dubey, Andy Gokhale, Gabor Karsai, William R. Otte; Vanderbilt University/ISIS Johnny Willemsen; Remedy IT Paul Calabrese,

More information

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 6: Design Patterns

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 6: Design Patterns EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 6: Design Patterns Links to Design Pattern Material 1 http://www.oodesign.com/ http://www.vincehuston.org/dp/patterns_quiz.html Types of Design Patterns 2 Creational

More information

Java Threads. COMP 585 Noteset #2 1

Java Threads. COMP 585 Noteset #2 1 Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the

More information

Design and Performance of an Asynchronous Method handling Mechanism for CORBA

Design and Performance of an Asynchronous Method handling Mechanism for CORBA Design and Performance of an Asynchronous Method handling Mechanism for CORBA Mayur Deshpande, Douglas C. Schmidt & Carlos O Ryan {deshpanm,schmidt,coryan}@uci.edu Department of Electrical & Computer Engineering

More information

Today: Distributed Middleware. Middleware

Today: Distributed Middleware. Middleware Today: Distributed Middleware Middleware concepts Case study: CORBA Lecture 24, page 1 Middleware Software layer between application and the OS Provides useful services to the application Abstracts out

More information

IsoStack Highly Efficient Network Processing on Dedicated Cores

IsoStack Highly Efficient Network Processing on Dedicated Cores IsoStack Highly Efficient Network Processing on Dedicated Cores Leah Shalev Eran Borovik, Julian Satran, Muli Ben-Yehuda Outline Motivation IsoStack architecture Prototype TCP/IP over 10GE on a single

More information

Active Object. an Object Behavioral Pattern for Concurrent Programming. R. Greg Lavender Douglas C. Schmidt

Active Object. an Object Behavioral Pattern for Concurrent Programming. R. Greg Lavender Douglas C. Schmidt Active Object an Object Behavioral Pattern for Concurrent Programming R. Greg Lavender Douglas C. Schmidt G.Lavender@isode.com schmidt@cs.wustl.edu ISODE Consortium Inc. Department of Computer Science

More information

CAS 703 Software Design

CAS 703 Software Design Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on Software by Tao et al. (Chapters 9 and 10) (SOA) 1 Interaction

More information

Extensions to Barrelfish Asynchronous C

Extensions to Barrelfish Asynchronous C Extensions to Barrelfish Asynchronous C Michael Quigley michaelforrquigley@gmail.com School of Computing, University of Utah October 27, 2016 1 Abstract The intent of the Microsoft Barrelfish Asynchronous

More information

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example Microthread An Object Behavioral Pattern for Managing Object Execution Joe Hoffert and Kenneth Goldman {joeh,kjg}@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

OO Frameworks. Introduction. Using Frameworks

OO Frameworks. Introduction. Using Frameworks OO Frameworks Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University Introduction Frameworks support reuse of detailed designs and architectures An integrated set of components

More information

Overview. Distributed Systems. Distributed Software Architecture Using Middleware. Components of a system are not always held on the same host

Overview. Distributed Systems. Distributed Software Architecture Using Middleware. Components of a system are not always held on the same host Distributed Software Architecture Using Middleware Mitul Patel 1 Overview Distributed Systems Middleware What is it? Why do we need it? Types of Middleware Example Summary 2 Distributed Systems Components

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Multithreading Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to large compute clusters Can perform multiple

More information

Communication. Distributed Systems Santa Clara University 2016

Communication. Distributed Systems Santa Clara University 2016 Communication Distributed Systems Santa Clara University 2016 Protocol Stack Each layer has its own protocol Can make changes at one layer without changing layers above or below Use well defined interfaces

More information

HPX. High Performance ParalleX CCT Tech Talk Series. Hartmut Kaiser

HPX. High Performance ParalleX CCT Tech Talk Series. Hartmut Kaiser HPX High Performance CCT Tech Talk Hartmut Kaiser (hkaiser@cct.lsu.edu) 2 What s HPX? Exemplar runtime system implementation Targeting conventional architectures (Linux based SMPs and clusters) Currently,

More information

A Comprehensive Assessment and Comparison of Asynchronous Invocation Patterns and Frameworks

A Comprehensive Assessment and Comparison of Asynchronous Invocation Patterns and Frameworks 1 A Comprehensive Assessment and Comparison of Asynchronous Invocation Patterns and Frameworks Amir Moazeni Shahab Danesh Institute of Higher Education a.moazeni@shahabdanesh.ac.ir Abstract Asynchronous

More information

Patterns and Performance of a CORBA Event Service for Large-scale Distributed Interactive Simulations

Patterns and Performance of a CORBA Event Service for Large-scale Distributed Interactive Simulations Patterns and Performance of a CORBA Event Service for Large-scale Distributed Interactive Simulations Carlos O Ryan and Douglas C. Schmidt {coryan,schmidt}@uci.edu Department of Electrical & Computer Engineering

More information

Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers

Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers Douglas C. Schmidt, Sumedh Mungee, Sergio Flores-Gaitan, and Aniruddha Gokhale fschmidt,sumedh,sergio,gokhaleg@cs.wustl.edu

More information

CHAPTER 3 - PROCESS CONCEPT

CHAPTER 3 - PROCESS CONCEPT CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess

More information

May Gerd Liefländer System Architecture Group Universität Karlsruhe (TH), System Architecture Group

May Gerd Liefländer System Architecture Group Universität Karlsruhe (TH), System Architecture Group Distributed Systems 6 RMI/MP IPC May-18-2009 Gerd Liefländer System Architecture Group 1 Intended Schedule of Today RMI (only rough overview) Message Passing Motivation Bridge Principle Message Passing

More information

CSE544 Database Architecture

CSE544 Database Architecture CSE544 Database Architecture Tuesday, February 1 st, 2011 Slides courtesy of Magda Balazinska 1 Where We Are What we have already seen Overview of the relational model Motivation and where model came from

More information

SDC Design patterns GoF

SDC Design patterns GoF SDC Design patterns GoF Design Patterns The design pattern concept can be viewed as an abstraction of imitating useful parts of other software products. The design pattern is a description of communicating

More information

The Design and Performance of a Pluggable Protocols Framework for Real-time Distributed Object Computing Middleware

The Design and Performance of a Pluggable Protocols Framework for Real-time Distributed Object Computing Middleware The Design and Performance of a Pluggable Protocols Framework for Real-time Distributed Object Computing Middleware, Fred Kuhns, Douglas C. Schmidt, Ossama Othman and Jeff Parsons coryan@uci.edu http://www.ece.uci.edu/coryan/

More information

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Objectives To introduce the notion of a

More information

Applying Patterns to Design a High-performance, Real-time Pluggable Protocols Framework for OO Communication Middleware

Applying Patterns to Design a High-performance, Real-time Pluggable Protocols Framework for OO Communication Middleware Applying Patterns to Design a High-performance, Real-time Pluggable Protocols Framework for OO Communication Middleware Carlos O Ryan, Fred Kuhns, Douglas C. Schmidt and Jeff Parsons fcoryan,fredk,schmidt,parsonsg@cs.wustl.edu

More information

Foundational Design Patterns for Moving Beyond One Loop

Foundational Design Patterns for Moving Beyond One Loop Foundational Design Patterns for Moving Beyond One Loop Raja Pillai Technical Consultant Agenda Why move beyond one loop? What is a design pattern? Why learn communication mechanisms? Functional global

More information

Chapter 1: Distributed Information Systems

Chapter 1: Distributed Information Systems Chapter 1: Distributed Information Systems Contents - Chapter 1 Design of an information system Layers and tiers Bottom up design Top down design Architecture of an information system One tier Two tier

More information

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues 4.2 Silberschatz, Galvin

More information

Designing an Efficient & Scalable Server-side Asynchrony Model for CORBA

Designing an Efficient & Scalable Server-side Asynchrony Model for CORBA Designing an Efficient & Scalable Server-side Asynchrony Model for CORBA Darrell Brunsch, Carlos O Ryan, & Douglas C. Schmidt {brunsch,coryan,schmidt}@uci.edu Department of Electrical & Computer Engineering

More information

Software Architecture

Software Architecture Software Architecture Lecture 6 Event Systems Rob Pettit George Mason University SWE 443 Software Architecture Event Systems 1 previously data flow and call-return styles data flow batch sequential dataflow

More information

OS atop Today, more and more apps atop middleware built Middleware has several layers Quality of Service (QoS) Software architecture & System call-lev

OS atop Today, more and more apps atop middleware built Middleware has several layers Quality of Service (QoS) Software architecture & System call-lev Using OS System-Hiding Frameworks www.ece.uci.edu/schmidt/ (949) 824-1901 Developing Distributed RT Systems Professor Elec. & Comp. Eng. Dept. Associate University of California, Irvine schmidt@uci.edu

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

EXPERIENCE OF COMMUNICATIONS SOFTWARE EVOLUTION AND PERFORMANCE IMPROVEMENT WITH PATTERNS

EXPERIENCE OF COMMUNICATIONS SOFTWARE EVOLUTION AND PERFORMANCE IMPROVEMENT WITH PATTERNS EXPERIENCE OF COMMUNICATIONS SOFTWARE EVOLUTION AND PERFORMANCE IMPROVEMENT WITH PATTERNS Chung-Horng Lung, Qiang Zhao, Hui Xu, Heine Mar, Prem Kanagaratnam Department of Systems and Computer Engineering

More information

Operating System Support

Operating System Support Teaching material based on Distributed Systems: Concepts and Design, Edition 3, Addison-Wesley 2001. Copyright George Coulouris, Jean Dollimore, Tim Kindberg 2001 email: authors@cdk2.net This material

More information

CS A331 Programming Language Concepts

CS A331 Programming Language Concepts CS A331 Programming Language Concepts Lecture 12 Alternative Language Examples (General Concurrency Issues and Concepts) March 30, 2014 Sam Siewert Major Concepts Concurrent Processing Processes, Tasks,

More information

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?]

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?] Control Message An Object Behavioral Pattern for Managing Protocol Interactions Joe Hoffert and Kenneth Goldman {joeh,kjg@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

Asynchronous Events on Linux

Asynchronous Events on Linux Asynchronous Events on Linux Frederic.Rossi@Ericsson.CA Open System Lab Systems Research June 25, 2002 Ericsson Research Canada Introduction Linux performs well as a general purpose OS but doesn t satisfy

More information

Applying Patterns to Develop Extensible ORB Middleware

Applying Patterns to Develop Extensible ORB Middleware Applying Patterns to Develop Extensible ORB Middleware Douglas C. Schmidt and Chris Cleeland fschmidt,cleelandg@cs.wustl.edu Department of Computer Science Washington University St. Louis, MO 63130, USA

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Administrative Stuff. We are now in week 11 No class on Thursday About one month to go. Spend your time wisely Make any major decisions w/ Client

Administrative Stuff. We are now in week 11 No class on Thursday About one month to go. Spend your time wisely Make any major decisions w/ Client Administrative Stuff We are now in week 11 No class on Thursday About one month to go Spend your time wisely Make any major decisions w/ Client Real-Time and On-Line ON-Line Real-Time Flight avionics NOT

More information

Process. Program Vs. process. During execution, the process may be in one of the following states

Process. Program Vs. process. During execution, the process may be in one of the following states What is a process? What is process scheduling? What are the common operations on processes? How to conduct process-level communication? How to conduct client-server communication? Process is a program

More information

The Strategy Pattern Design Principle: Design Principle: Design Principle:

The Strategy Pattern Design Principle: Design Principle: Design Principle: Strategy Pattern The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Design

More information

[08] IO SUBSYSTEM 1. 1

[08] IO SUBSYSTEM 1. 1 [08] IO SUBSYSTEM 1. 1 OUTLINE Input/Output (IO) Hardware Device Classes OS Interfaces Performing IO Polled Mode Interrupt Driven Blocking vs Non-blocking Handling IO Buffering & Strategies Other Issues

More information

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable What s An OS? Provides environment for executing programs Process abstraction for multitasking/concurrency scheduling Hardware abstraction layer (device drivers) File systems Communication Do we need an

More information