GNATDIST : a conguration language for. distributed Ada 95 applications. Yvon Kermarrec and Laurent Nana. Departement Informatique

Size: px
Start display at page:

Download "GNATDIST : a conguration language for. distributed Ada 95 applications. Yvon Kermarrec and Laurent Nana. Departement Informatique"

Transcription

1 GNATDIST : a conguration language for distributed Ada 95 applications Yvon Kermarrec and Laurent Nana ENST de Bretagne Departement Informatique Technop^ole de l'iroise F Brest Cedex France Yvon.Kermarrec@enst-bretagne.fr Laurent Pautet Telecom Paris Departement Informatique 46 rue Barrault F Paris cedex 13 France pautet@inf.enst.fr Abstract We need a programming language for distributed systems which makes it possible to benet from the potential interests of distributed platforms: e.g., performances, high availability. Ada 95 denes a general framework for programming distributed applications but there is still no language for conguring. Our paper presents our proposal for such a language and we have implemented some of its features. This is part of our eort to make GNAT an environment for programming distributed systems. keywords: Distributed systems programming - conguration language - GNAT 1 Introduction Distributed systems are available thanks to the emergence of networks, workstations and PCs. Programming distributed systems still implies low level interactions with the operating system or communication network interfaces. This is incompatible with a well disciplined programming approach and leads to non 1

2 portable application codes. Advances in computer science have made possible the transition from assembly languages to high level programming languages. We all know the benets of the latter in terms of abstraction and other software engineering principles. In some respects, nowadays, programming distributed systems can be compared to some use of assembly language (e.g., the programmer deals with IP numbers, port numbers). Our contribution aims at dening a high level programming language which can be used to program distributed applications without considering the details of the underlying platform. We say contribution because many programming languages have been proposed and we do not intend to reinvent the wheel. Moreover, Ada has been extended to deal with distributed applications (see Annex E of ISO ) but we still have a minimal language that requires extensions and enhancements. In the rst section of this paper we present the existing solutions for programmming distributed systems. The benets of a programming language for distributed systems are major over traditional approaches which lead to system dependent codes. In the second section, we present the requirements of a language and we justify these elements from existing technologies. This study highlights the main features which can be incorporated into a distributed language and we describe in detail what we call a conguration language. In the third section, we give a brief overview of an Ada 95 approach for distributed systems and the implementation-dependent features as suggested by the reference manual. In the fourth section, we present GNATDIST which is our conguration language. Its syntax and semantics are described and we illustrate its characteristics with an example. As a conclusion, we present the work in progress and our activities around GNAT. 2 Various approaches for programming distributed systems Several approaches exist for programming distributed systems and we do not intend to explore them all. H. Bal and A. Tannenbaum made a complete survey of these issues in [2] and the interested reader will nd a precise analysis of this topic there. Nevertheless, we can isolate three distinct strategies: The use of the underlying facilities of the operating system The use of some middleware or API (Application Programmer Interface). The use of languages dedicated to distributed programming The rst approach is quite traditional and well known and consists in using facilities of the underlying operating system and its network operations. For 2

3 example, in UNIX, we have numerous IPCs (Inter Process Communication) to communicate through the network: e.g., sockets, TLI (Transport Layer Interface). Such an application code depends on the operating system and thus the code cannot be portable on other platforms. In this respect, POSIX (Portable Operating System Interface) aims at proposing a common interface to the OS facilities: the key challenge is to reach portability of even system level applications. Nevertheless, this system programming is low-level and the programmer is responsible for dealing with both complex and error-prone system calls. The second approach proposes the middleware as an intermediate layer between the application code and the target facilities. In the traditional domains of intensive scientic computation, we have PVM (Parallel Virtual Machine) [7] [3]: a software package that permits a heterogeneous collection of machines and workstations to appear as a unique computing resource. The PVM team has ported PVM on many platforms, and many multiprocessors can also be programmed with PVM thanks to the constructors. PVM appears as an answer to the portability problem but still the programmer is faced with the diculties of the message-passing approach: e.g., dealing with data representation, buer management and packing data into buers. OSF DCE (Distributed Computing Environment) [12] [11] proposes an interesting framework for the development of distributed systems. This approach is more suitable for information technologies and has been widely used for cooperative or client/server applications. "OSF DCE provides services and tools that support the creation, use, and maintenance of distributed applications in a heterogeneous computing environment.\ DCE constitutes a signicant step towards facilitating programming distributed systems since the application can rely on numerous services (e.g., security, name services, clock synchronization) and access them through the same interface whatever the platform is. Nevertheless, DCE oers these services through a complex API aimed at sequential programming languages. The third approach is to use specic programming languages. Our view is that a language for distributed systems has to integrate two features: an algorithmic side to program the fragments and a conguration aspect to map the fragments to the computing resources. H. Bal [2] describes the maze in these domains and the variety of approaches in terms of distribution unit, application domains and paradigms. The benets of developing a distributed application with an adequate language are numerous. One of the major advantages consists in considering the application as a unique entity that can be started, controlled and terminated. The language must provide constructions with both the syntax and the semantics to execute an application onto a distributed system and to support 3

4 communication/synchronization and other forms of control between the various fragments of the application. Remotely-located components can communicate using some form of message-passing abstraction or the remote procedure call paradigm (RPC). Other paradigms have been proposed and oer high level abstraction mechanisms: e.g., Linda [4] [5] or ORCA [1]. For example, Occam [10] incorporates a conguration language and the programmer can associate components of an Occam program with physical resources (processors and communication links). The conguration language of Occam is compiled and the generated code contains all the requirements and directives to load the fragment codes. From the conguration program, the compiler extracts topology information that will be used to route the application codes. In Occam 2, there is a clear distinction between the functional aspects and the conguration expression. Once the application has been debugged and tested on a centralized platform, only the conguration program has to be recompiled for a distributed execution. We have selected the programming language approach and in the next section we present some of the features that it can integrate. 3 Features of a distributed language Let us consider the various elements that can be included in a programming language for distributed applications. Their order of presentation does not preclude their relative importance. Only the rst two are required whereas the other elements are optional. 3.1 Building fragments A fragment is dened as an execution unit and is composed of numerous other items depending on the nature of the language. The distribution unit can be the program, the process, the object, the function, the variable or something else. The conguration language has to oer supports for assigning a distribution item to fragments. 3.2 Mapping fragments onto processors On the one hand, we have the software application which is composed of fragments; on the other hand, we have processing elements which understand only binary code. Translation from the software to the binary code is well known in the compilation process. Basically, the code generator must take into account the nature of the processor and must select the appropriate back-end accordingly. Due to the heterogeneous composition of numerous distributed systems, the conguration language has to propose some language construction to specify 4

5 the target. Some other constructions could dene the technical details of the underlying architecture to take advantage of its components (e.g., existence of a co-processor) or to prevent exhaustion of resources (e.g., memory limits). The language must include directives to map fragments of the applications to specic processing elements. This information consists of the machine name, its IP number or any other way to access the processing element. This directive to select the appropriate code generator exists in the conguration language of Occam as Inmos has implemented it. In PVM, the programmer is responsible for calling the compilers for each of the potential targets. To avoid conict between the various versions, the binary code is stored in a le whose path sux is the target. 3.3 Load balancing This facility acts as a complement to the previous one. We have numerous load balancing denitions and we shall consider the static situation. When an application fragment is started, it is executed on the less loaded machine of the network. This static version will not generate thrashing or other complex measurements. Load balancing appears as one possible answer when looking for performance by maximizing the parallelism. Many criteria can be used to dene the activity/load of any machine: its memory use, its CPU use, etc. This requires the code to be available for all the potential targets. In addition, here we have to dene a set of targets in some way. This denition of load balancing and this facility have been implemented in PVM. The criterion is set to be a combination of the CPU utilization and the relative speed of the processor. The set of targets can be all machines of the virtual machine, or a homogeneous subset (e.g., any HP 9000). 3.4 Fault tolerance issues and reconguration Distributed systems are used for their availability and reliability that could be higher than in the case of a monolithic system. In a centralized system, whenever one component crashes or fails then the whole machine is unavailable. When we have several processing elements, the probability of having them all down is very minimal. Nevertheless, we have the so called partial failure which does not preclude system responsiveness but puts it in a degraded performance mode. The nature of potential faults have been studied in depth in the literature. In our context, we consider the case of a faulty communication link or processing element. These events can be detected by the runtime. 5

6 Isolated faulty components do not cause any trouble and have no impact on the global system. Troubles appear when these components interact with each other in some ways: e.g., the communication link is broken, or the processor at the end of the communication path is down. We have various approaches when dealing with these situations. The easiest one is to do nothing at all, but this may generate deadlocks and the application will never terminate. The second approach consists in taking into account the various signals or events that could be sent by the runtime when a faulty component is detected. Then the application can handle these events and execute some prepared scenario, or the runtime can retry the interactions. In both cases, we need some form of interaction from the runtime to the application level: the programmer must be able to catch these events and to trigger adequate action, and the semantics of the interaction has to be specied to avoid side eects. (an expired timeout is not enough to state that a processor is down...) Another way to deal with fault tolerance is to incorporate some redundancy at application level. This approach is quite similar to what we have in hardware where critical components are duplicated. The point is that we then need some form of election to select only one result or to combine the various outputs. Let us consider the case of replicated units. At the application level, we need some way to express replication of critical software resources. For the runtime and in case of failure, we need some mechanisms to select one of the replicas and to redirect the future interactions and requests to it. When dealing with resources in a distributed application, we can use some form of name service or directory service. This service keeps track of the association of a logical name and a network address. This server is accessed only on the rst call: i.e., when the name association is still unknown to the application and the return information is stored in a local cache. This prevents numerous successive calls to the name server and thus reduces bottlenecks. Nevertheless, when information is cached to increase performance and response time, then we face some troubles for reconguration. We need some way to break the association and re-make a call to the name server. The programmer is in charge of specifying the desired level of cache management. DCE oers these possibilities and specic code is inserted in the stubs when they are generated. 3.5 Data representation Computers do not encode data in the same ways. When they are isolated from each other and when they do not interact, we can just ignore these internals. This is not the case in a distributed application where the various fragments work together and need to communicate and synchronize. For this we use some form of common data representation or syntax of transfer. Syntax of transfer 6

7 can be compared to a protocol for data exchange in heterogeneous systems. XDR and ASN-1 are available as syntaxes of transfer. The use of the syntax of transfer generates overheads which are unsuitable in a homogeneous environment. The decision has to be made by the designer of the application. Moreover, the data representation chosen has to be made in advance so that the stubs can make the appropriate calls. 3.6 Levels of security In many ways, distributed systems encourage ows of information and promote sharing resources and other network services. We all know breaches that can be used to access data or tricks to listen to ows of information. The point is that if we want to address the information technology business then we need to give condence in the security issue. Security envolves many issues and we do not intend to investigate them in detail. Our point is to establish the link between the security requirements and their expression in a programming language. As one can guess, enforcing security produces major overhead. For some application, this is the price to pay while for other non sensitive businesses this could be optional. Security has three aspects: authentication, tamper protection and condentiality. 4 Ada 95 approach for distribution The distribution of an Ada 95 program is achieved through the Ada partition model as described in annex E of the Reference Manual [8]. A distributed program comprises one or more partitions that execute independently (except when they communicate) in a distributed system. A partition is either active or passive. An active partition has one or more threads of control. A passive partition has no thread of control of its own and its data and subprograms are accessible to one or more active partitions. The intention of a passive partition is to represent a shared address space across one or more computers on which the application is congured. Library units may be included in partitions and each partition may be elaborated and executed independently. Using categorization pragmas, the programmer designates the library units which play a specic role for distribution. Among the categorization pragmas we can nd : Remote Call Interface (RCI) : the specication of an RCI library unit acts as an interface denition (like an IDL in the CORBA approach) for the 7

8 RPC paradigm which is the communication mechanism between partitions. Shared Passive (SP) : the entities declared in such a library are to be mapped on a shared address space. When two partitions use such a library unit, they can communicate by reading or writing the same variable. This supports the shared variables paradigm. Remote Types (RT) : an RT library unit factorizes declarations and makes them accessible to other categorized units and still guarantee the dependency rules. In order to ensure semantic consistency between a distributed program and the equivalent non-distributed program, some compile-time restrictions are associated with each categorization pragma. The annex also introduces a 'Version attribute to deal with the run-time consistency of the distributed program. It is therefore impossible to have an application whose partitions use dierent versions of the same specication. This rule is a continuation of the compilation rules applied to single Ada programs. The standard exception mechanism still holds. When the execution of a remote subprogram raises an exception, this exception has to be re-raised in the caller of the remote subprogram. The Ada 95 distribution scheme has numerous advantages. We enumerate some of them : Distribution has been introduced into the language without adding new syntactic constructors. The strong typing model and the exception mechanism of Ada are maintained even when distributed code sections communicate. This is due to the use of the RPC mechanism instead of message passing. Interactions inside the distributed application are isolated clearly. Only the subprograms which are dened in an RCI unit can be called from remote. This isolation makes it possible to go through selected steps before reaching the remote service. These steps are dened in the stubs which the compiler generates. They can be modied to add new features for fault tolerance and security and there will be no impact on the user's code. The mapping of partitions of a program to the physical nodes is a postcompilation issue. Thus, applications may be partitioned for dierent distributed systems architectures without recompilation. This eases the addition of new features such as reconguration and migration. The main advantage is that it is possible to debug a distributed application as a 8

9 traditional application and then we can map to a distributed architecture once no execution problems remain. The distributed system annex supports the distributed object paradigm through remote-access-to-class-wide features. Distributed objects are somewhat an association of the RPC paradigm with the object-oriented approach. On the one hand, this combination enables local and remote objects to be accessed with no semantic dierence. On the other hand, due to the object-based approach, accesses to the distributed object state are restricted to operations dened in the interface and this promotes the type-safe disciplined communication within a distributed execution environment. The annex species the interface between the compiler and the Partition Communication Subsystem (PCS). Apart from this minimal interface and the pragmas, the implementor has a large degree of freedom: he can extend the partition model with new features such as replication, etc. The availability of such an interface also makes a distributed Ada application portable. The user can switch easily from one PCS implementation to another. The annex denes a minimal set for programming distributed applications. However, the integration of this framework into an existing Ada environment requires several extensions. The following work has been done for that purpose and has been incorporated into GNAT : The front-end has to be modied to deal with additional checks. The expander has to translate the standard subprogram calls into calls to bind to the server code. This expansion is known as stub generation. A PCS has to be provided to support communication between partition and run-time checks have to be made [9] and [6]. A language is needed to deal with the assignment of library units to partitions, the generation of the executable for each partition, the handling of partition identiers and several other issues. 5 GNATDIST: the language and rationale 5.1 Syntax and semantics A conguration le As mentioned before, an Ada 95 distributed application comprises a number of partitions which can be executed concurrently on the same machine or can 9

10 be distributed on a network of machines. A partition is a set of compilation units which are linked together to produce an executable binary. A distributed program comprises two or more communicating partitions. The distributed systems annex does not describe how a distributed application should be congured. It is up to the user to dene what are the partitions in his program and on which machines they should be executed. The GNATDIST tool and its conguration language have been purposely designed to allow the user to partition his program and specify the machines where the individual partitions are to be executed. GNATDIST reads a conguration le and builds several executables, one for each partition. It also builds a shell script (default) which is used to launch the dierent partitions and to pass specic arguments to each partition Conguration declaration The conguration language is designed to be simple and convenient to use. Its syntax is similar to the Ada syntax in some respects in order to ease the job of an Ada programmer. For this reason, most of the Ada keywords have been reused, sometimes in a slightly dierent context. The distribution of an Ada program is described by a single conguration unit. This conguration unit has a specication part and an optional body part. A conguration unit is declared as an Ada procedure would be. The keyword conguration is reserved for this purpose. CONFIGURATION_UNIT ::= configuration IDENTIFIER is DECLARATIVE_PART [begin SEQUENCE_OF_STATEMENTS] end [IDENTIFIER]; Partition declaration In the declarative part, the user declares his partitions and can change their default behavior. GNATDIST provides a predened type Partition. The user can declare a list of partitions and can also initialize these partitions with an initial list of Ada units. DECLARATIVE_PART ::= {DECLARATIVE_ITEM} DECLARATIVE_ITEM ::= 10

11 PARTITION_DECLARATION REPRESENTATION_CLAUSE SUBPROGRAM_DECLARATION PARTITION_DECLARATION ::= DEFINING_IDENTIFIER_LIST : Partition [:= ENUMERATION_OF_ADA_UNITS]; DEFINING_IDENTIFIER_LIST ::= DEFINING_IDENTIFIER {, DEFINING_IDENTIFIER} STATEMENT ::= IDENTIFIER := ENUMERATION_OF_ADA_UNITS; SEQUENCE_OF_STATEMENTS ::= STATEMENT {STATEMENT} Once declared, a partition is an empty list of Ada units. The operator ":=" adds the Ada units list on the right side to the current list of Ada units that are already mapped to the partition. This is a non-destructive operation. Whether a unit is a relevant Ada unit or not is checked later on by the back-end of GNATDIST. These assignments can occur in the declarative part as well as in the body part. ENUMERATION_OF_ADA_UNITS ::= ({ADA_UNIT {, ADA_UNIT}}); As GNATDIST generates full Ada code in order to build the dierent executables, all the Ada keywords have been reserved even if they are not used in the conguration language Physical nodes Logical nodes (or partitions) can be mapped onto physical nodes. GNATDIST default behavior is to ask for themi nteractively. It is possible to modify the default behavior of all the partitions via an attribute denition clause applied to the predened type Partition. It is also possible to modify the default behavior of a given partition via an attribute denition clause applied to the partition itself. The host-name can be either a static or dynamic value. In case of a static value, the expression is a string literal. In case of a dynamic value, the representation clause argument is a function that accepts a string as parameter and that returns a string value. When the function is called, the partition name is passed as parameter and an host-name is returned. REPRESENTATION_CLAUSE ::= for IDENTIFIER'Host use STRING_LITERAL; for IDENTIFIER'Host use SUBPROGRAM; 11

12 for Partition'Host use STRING_LITERAL; for Partition'Host use SUBPROGRAM; The signature of the function should be the following : it takes a string parameter which corresponds to a partition name. It also returns a string parameter which corresponds to an host-name. The function that returns the host-name can be an Ada function (default) or a shell script. A pragma Import is used to import a function dened in Ada or in Shell. This function is called before launching the partition. Therefore, in case of load balancing, the function can return the most appropriate host from among a set of hosts Executable location There are several other attributes that can be applied to a partition. Storage Dir allows the user to specify in which directory the partition executable is stored. This can be useful in heterogeneous systems when the user wants to store executables of the same target in a given directory. Specifying the directory is also useful if the partition executable is not directly visible from the user environment. For instance, when a remote command like rsh is invoked, the executable directory has to be present in the user path. If the Storage Dir attribute has been specied, the executable full name is used. REPRESENTATION_CLAUSE ::= for IDENTIFIER'Storage_Dir use STRING_LITERAL; Partition main procedure Basically, the distributed system annex helps a user in building a distributed application from a non-distributed application. The user can design, implement and test his application in a non-distributed environment, and then should be able to switch from his non-distributed case to a distributed case. This twophase design approach has several advantages. For this reason, the conguration language provides a way to declare the main procedure of the non-distributed application. procedure MAIN_UNIT is in PARTITION; In this case, the partition in which the main procedure has been mapped will include in its code a call to this main procedure. Other partitions will have a null body as a main procedure. But the user can also modify this behavior by providing an alternate main procedure. 12

13 procedure MAIN_PROCEDURE; for PARTITION'Main use MAIN_PROCEDURE; In a non-distributed case, the user executes only one main executable possibly with a name corresponding to the main unit name of his application. With GNATDIST, in a distributed case, a main executable with a name corresponding to the main unit name is responsible for starting the entire distributed application. For this reason, the user can start his application the same way he used to do in the non-distributed case. As a default, the main executable is a shell script that starts one at a time the dierent partitions on the appropriate remote machines. But the user may ask for a full Ada starter procedure. The pragma Starter allows the user to ask for one starter or another. type Method_Type is (Ada, Shell, None); pragma Starter (Method => Method_Type); Alternate services There are several other pragmas in the conguration language. The pragma Crossed Elaboration allows the user to violate E.4 (14) or E.5 (21) : 14 If a remote subprogram call is received by a called partition before the partition has completed its elaboration, the call is kept pending until the called partition completes its elaboration (unless the call is cancelled by the calling partition prior to that). 21 The procedure System.RPC.Establish RPC Receiver is called once, immediately after elaborating the library units of an active partition (that is, right after the elaboration of the partition) if the partition includes an RCI library unit, but prior to invoking the main subprogram, if any. pragma Crossed_Elaboration (Allowed => Boolean); The rationale of such a pragma comes from the following situation: 13

14 -- On partition 1 package body RCI_3 is... begin Read (File, Default3); end RCI_3; with RCI_2; package body RCI_1 is... begin RCI_2.Get_Default2; Compute (Default1); end RCI_1; -- On partition 2 with RCI_3; package body RCI_2 is... begin RCI_3.Get_Default3; Compute (Default2); end RCI_2; To elaborate on partition 1, RCI 1 has to wait for the elaboration of RCI 2. But, to elaborate on partition 2, RCI 2 has to wait for the elaboration of RCI 3. If we follow the LRM restrictions, requests to RCI 3 should be kept pending until partition 1 has been fully elaborated. Thus, we are in a deadlock situation. The GNAT distributed annex is designed such a way that this restriction is not necessary. The default behavior follows the LRM restriction, but this can be suppressed by pragma Crossed Elaboration. 5.2 A short example File `my_config.cfg' The name of the file prefix must be the same as the name of -- the configuration unit, in this example `my_config'. The -- file suffix must be `cfg'. For a distributed program, -- you can have as many configuration files as you wish. configuration My_Config is Partition_1 : Partition := (); procedure Master_Procedure is in Partition_1; -- Partition 1 contains no RCI package at this point. However, -- it will contain the main procedure of the distributed -- application, called `Master_Procedure' in this example. If -- the line `procedure Master_Procedure is in Partition_1;' -- was missing Partition 1 would be completely empty. This is -- forbidden, a partition has to contain at least one lib. unit gnatdist produces an executable shell script with the name -- of Master_Procedure which will start the various partitions -- on their host machines in the background. The main -- partition is launched in the foreground. Partition_2, Partition_3 : Partition := (Normal); -- Partition_2 and Partition_3 contain package Normal 14

15 -- whatever mapped RCI units are. for Partition_2'Host use "foo.bar.com"; -- Specify the host on which to run partition 2. function Choose_Best_Node (P : String) return String; pragma Import (Shell, Choose_Best_Node, "./best-node"); for Partition_3'Host use function Choose_Best_Node; -- Use the value returned by a function to decide at execution -- time the name of the host on which partition 3 should -- execute. For instance, execute the shell script `best-node' -- which returns a string giving the name of the partition. Partition_4 : Partition := (RCI_B5); -- Partition 4 contains one RCI package RCI_B5 -- No host is specified for this partition. The startup -- script will ask for it interactively when it is executed. for Partition_1'Storage_Dir use "/usr/ada/sunos-5.4/bin"; for Partition_2'Storage_Dir use "/usr/ada/sunos-4.1.3/bin"; -- Specify the directory in which the executables in each -- partition will be stored. Default is the current directory. pragma Starter (Method => Ada); -- Specify the kind of launch procedure you would like. -- Three methods are available. Shell method builds a shell -- script that means that all the partitions will be launched -- from a shell script. If Ada method is chosen, then the -- launch procedure is the main Ada procedure itself. If -- None method is chosen, then no launch procedure is built -- and you have to start the partition manually. In the -- following example, Partition_2, Partitions_3 and -- Partition_4 will be started from Partition_1 - Master_Procedure. -- The configuration body is optional. You may have fully -- described your configuration in the declaration part. begin Partition_2 := (RCI_B2, RCI_B4); -- Partition 2 contains two RCI packages RCI_B2 and RCI_B4 -- and a normal package. A normal package is not categorized. Partition_3 := (RCI_B3); -- Partition 3 contains one RCI package RCI_B3 and a Normal package. end My_Config; 5.3 GNATDIST internals Command line GNATDIST is an upper layer to GNATMAKE and includes some of its functionalities. For instance, if you want to compile with debugging information, the option "-g" works the same way it does for GNATMAKE. Thus, all the generated 15

16 stubs will be compiled with debugging information. By default, GNATDIST builds the executables of all the partitions declared in the conguration le. The user can ask for the creation of a given set of partitions by indicating such a set on the command line. For instance, the user can build some of his partitions with particular options (dierent -I and -L paths depending on the platforms) when the remaining partitions are built by using another set of options Implementation constraints One of our main restrictions was to keep GNATDIST simple and ecient. For this reason, GNATDIST has an executable size similar to GNATMAKE. GNATDIST parser was written manually and we decided not to use Aex and Ayacc for this reason. GNATDIST reuses the GNAT sources in order to remain consistent with any modication of the ALI le format. Since GNAT is really well written, it is really a great benet to have access to its optimized, portable functionalities. Eciency and portability were two major reasons for discarding the idea of a graphical tool. First of all, such a tool is very ashy for novices in case of demos but is almost useless in the context of a large project. It is hardly portable as there is a strong dependency on the graphic environment and it also involves a large amount of code that is not concerned with the application distribution, which is of little benet to the user GNATDIST directory hierarchy GNATDIST creates a directory hierarchy in order to store its own les (Ada stub, ali les, object les). To keep the user directory clean from all the private les of the distributed system annex, all these les are stored in the dsa directory. This directory is structured as follows : dsa/caller Contains the caller stubs (Ada sources, ali les, object les) dsa/receiver Contains the receiver stubs (Ada sources, ali les, object les) dsa/<partition > Contains copies or links to Ada units mapped onto this partition, mostly received stubs for RCI units. 16

17 Here is what goes on behind the scenes when building a distributed application: 1. Each compilation unit in the program is compiled into an object module (as for non distributed applications). This is achieved by calling gnatmake on the sources of the various partitions. This step can be skipped by using the -n option. 2. GNATDIST performs a number of consistency checks, for instance it checks that all packages marked as remote call interfaces are mapped onto partitions. It also checks that an RCI package is mapped onto only one partition. GNATDIST checks that all the mapped units of the conguration le are visible Ada units. 3. Stubs are generated and compiled into object modules. Several timestamp checks are performed to avoid useless recompilation. These les are respectively stored in dsa/caller and dsa/receiver directories. 4. GNATDIST builds a directory dsa/<partition> and installs the receiver stub les of RCI units mapped on the current partition. Depending on the operating system, this installation is a copy, or a link to the appropriate les. 5. A main procedure is built in the same directory. In this le, GNATDIST makes all the mapped units visible. Some special services are also activated at this point, such as version id consistency. 6. Finally, the executables for each partition in the program are created along with the generation of the shell script to start them on the appropriate machines GNATDIST and GARLIC The GNAT Partition Communication Subsystem, GARLIC (Generic Ada Reusable Library for Interpartition Communication), is included in the source distribution. GARLIC implements all the functions and services required in System.RPC and also provides extended services to the distributed ystem annex. Among other things, GARLIC provides a distributed termination algorithm. But this functionality can be inhibited by the user if the partition attribute Termination is set to False. This way, the distributed algorithm is still active, but when the termination request is received by such a partition, the request is forwarded to neighbors but ignored locally (See E.1 (14)). 14 An implementation may allow the state of some of the partitions of a distributed program to persist while other partitions of the program terminate and are later reinvoked. 17

18 Several extended services are not mentioned in the LRM but are available in GARLIC. During conguration, the user can ask for these services which are made available via several library calls embedded in the partition main procedures built by GNATDIST. One of these services would be to allow crossed elaboration or to suppress global termination. GARLIC and GNATDIST installation are performed at the same time. In the previous section, we mentioned that GNATDIST takes full advantage of GARLIC specic features. In this purpose, GARLIC is automatically made visible to the user through GNATDIST. 6 Conclusions and work in progress GNATDIST is our language for programming distributed Ada 95 applications. The features we have presented in section 5 have been implemented. GNATDIST can be compared to a conguration language which assists the programmer and masks many technical details. This language is our answer to the "implementation dependent" elements as dened in Annex E. Its reduced syntax and semantics make it possible for a programmer to implement and congure a distributed application and benet from the advantages of a distributed system: redundancy for fault tolerance, distribution for performance. Its consistency with Ada 95 in terms of syntax and constructs will be easily understiood by the Ada 95 programmer and this guarantees a continuation and consistency from the programming of the partitions to their conguration. Its source distribution make it possible for a team to adapt and tailor GNATDIST to its needs or to add additional features if required. Moreover, conguring an application with a language increases portability and exibility. This initial version of GNATDIST is operational and we have started to distribute it. It has been used in a student project for a ray tracing application and the transition from a centralized execution to a distributed execution on several workstations has been very smooth. The evaluations of the testers will be helpful and we are waiting for their comments. From these evaluations and experiments, we also plan to extend the potentialities of the language but we do not yet have a schedule of deliveries. Our team is working in conjunction with other teams in Lausanne (EPFL) and Uppsala (Departement of Computer Systems) and, with their cooperations, we hope to implement new features in GNATDIST. In some ways, GNATDIST completes the work we were doing in distributed systems for many years. At the beginning, we have been working on software components for distributed applications and we have already addressed various algorithms, services and paradigms. During this phase, our concern was 18

19 reusability and software engineering at the application level. In another phase, the GNAT team assigned to us the implementation of the distributed system annex. This work was at the compiler level: we completed the front-end checks and the stub generations. Run time libraries have also been developed and for this we benet from our experience and our earlier developments of software components. The last phase is GNATDIST. Our achievements do not preclude parallel work or additional extensions. We indicate a few on-going or future projects. We intend to add new features in the run-time libraries to detect faults and to anticipate the application recon- guration, to deal with various syntaxes of transfers, and to address embedded applications. HOOD is a software method that is promoted by the European Space Agency and the new version incorporates a proposal for the design of distributed applications. Our current work consists in establishing a "link" between the description of the application in HOOD and its distributed execution, through the generation of Ada 95 and GNATDIST codes. References [1] H. Bal, M. Kaashoek, and A. Tanenbaum. Orca : a language of parallel programming of distributed systems. IEEE transactions on software engineering, 18(3):190{205, march [2] H. Bal, J. Steiner, and A. Tanenbaum. Programming languages for distributed computing systems. ACM computing surveys, 21(3):260{322, september [3] A. Beguelin, J. Dongarra, R. Manchek, and V. Sunderam. A users' guide to PVM parallel virtual machine. Technical Report ORNL/TM-11826, Oak Ridge NAtional Laboratory, July [4] N. Carriero and D. Gelernter. How to write parallel programs : a guide to the perplexed. ACM Computing Surveys, 21(3):323{358, September [5] N. Carriero and D. Gelernter. Linda in context. Communications of the ACM, 32(4):444{458, April [6] A. Gargaro, Y. Kermarrec, L. Pautet, and S. Tardieu. PARIS : Partitionned Ada for Remotely Invoked Services. In Eurospace, editor, Ada Europe Conference, Franckfurt Germany, Heidelberg, October CNES and European Space Agency, Lectures Notes in Computer Sciences. [7] A. Geist, A. Beguelin, J. Dongarra, and W. Jiang et al. PVM 3 user's guide and reference manual. Technical Report ORNL/TM-12187, Oak Ridge National Laboratory, May

20 [8] Intermetrics. Ada 95 reference manual. International Standard ANSI / ISO / IEC-8652:1995, January [9] Y. Kermarrec, L. Pautet, and S. Tardieu. GARLIC : Generic Ada Reusable Library for Interpartitions communication. In Proceedings of the Tri Ada conference, Anaheim, California, November ACM. (technical report of Telecom Bretagne). [10] D. May. Occam 2, langage denition. Prentice Hall, February [11] Ward Rosenberry, David Kenney, and Gerry Fisher. Understanding DCE. O'Reilly and associates, inc, [12] John Shirley. Guide to writing DCE applications. O'Reilly & Associates, Inc, June

PARIS - Partitioned Ada for Remotely Invoked. Services. 46, Rue Barrault. March 21, 1995.

PARIS - Partitioned Ada for Remotely Invoked. Services. 46, Rue Barrault. March 21, 1995. PARIS - Partitioned Ada for Remotely Invoked Services Anthony Gargaro Software Engineering Institute Carnegie Mellon University 4500 Fifth Avenue Pittsburgh, PA 15213-3890 USA abg@sei.cmu.edu Laurent Pautet

More information

2 A programmer's view : getting started CORBA is simple by itself and this leitmotiv appears everywhere for the promotion of the OMG solution. This as

2 A programmer's view : getting started CORBA is simple by itself and this leitmotiv appears everywhere for the promotion of the OMG solution. This as CORBA vs. Ada 95 DSA A programmer's view Yvon Kermarrec ENST Bretagne Departement IASC Technopole de l'iroise 29285 Brest Cedex France Yvon.Kermarrec@enst-bretagne.fr Abstract Recent evolutions in computer

More information

Kevin Skadron. 18 April Abstract. higher rate of failure requires eective fault-tolerance. Asynchronous consistent checkpointing oers a

Kevin Skadron. 18 April Abstract. higher rate of failure requires eective fault-tolerance. Asynchronous consistent checkpointing oers a Asynchronous Checkpointing for PVM Requires Message-Logging Kevin Skadron 18 April 1994 Abstract Distributed computing using networked workstations oers cost-ecient parallel computing, but the higher rate

More information

CORBA & DSA: Divorce or Marriage?

CORBA & DSA: Divorce or Marriage? CORBA & DSA: Divorce or Marriage? Laurent PAUTET, Thomas QUINOT, and Samuel TARDIEU {pautet,quinot,tardieu}@enst.fr ENST Paris, France Abstract This paper presents a comparison between CORBA and the Ada

More information

Distributed Computing Environment (DCE)

Distributed Computing Environment (DCE) Distributed Computing Environment (DCE) Distributed Computing means computing that involves the cooperation of two or more machines communicating over a network as depicted in Fig-1. The machines participating

More information

The Ocarina Tool Suite. Thomas Vergnaud

The Ocarina Tool Suite. Thomas Vergnaud The Ocarina Tool Suite Motivation 2 ENST is developing a middleware architecture: PolyORB generic, configurable, interoperable enables middleware verification create a tool chain

More information

On Object Orientation as a Paradigm for General Purpose. Distributed Operating Systems

On Object Orientation as a Paradigm for General Purpose. Distributed Operating Systems On Object Orientation as a Paradigm for General Purpose Distributed Operating Systems Vinny Cahill, Sean Baker, Brendan Tangney, Chris Horn and Neville Harris Distributed Systems Group, Dept. of Computer

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

A Portable Implementation of the Distributed Systems Annex in Java

A Portable Implementation of the Distributed Systems Annex in Java Yoav Tzruya Department of Computer Science Tel-Aviv University Ramat-Aviv 69978 Israel tzruya@math.tau.ac.il A Portable Implementation of the Distributed Systems Annex in Java Mordechai Ben-Ari Department

More information

Building Modern Distributed Systems

Building Modern Distributed Systems Building Modern Distributed Systems Laurent Pautet, Thomas Quinot, and Samuel Tardieu École Nationale Supérieure des Télécommunications Networks and Computer Science Department 46, rue Barrault F-75634

More information

City Research Online. Permanent City Research Online URL:

City Research Online. Permanent City Research Online URL: Kloukinas, C., Saridakis, T. & Issarny, V. (1999). Fault Tolerant Access to Dynamically Located Services for CORBA Applications. Paper presented at the Computer Applications in Industry and Engineering

More information

and easily tailor it for use within the multicast system. [9] J. Purtilo, C. Hofmeister. Dynamic Reconguration of Distributed Programs.

and easily tailor it for use within the multicast system. [9] J. Purtilo, C. Hofmeister. Dynamic Reconguration of Distributed Programs. and easily tailor it for use within the multicast system. After expressing an initial application design in terms of MIL specications, the application code and speci- cations may be compiled and executed.

More information

Enhancing Integrated Layer Processing using Common Case. Anticipation and Data Dependence Analysis. Extended Abstract

Enhancing Integrated Layer Processing using Common Case. Anticipation and Data Dependence Analysis. Extended Abstract Enhancing Integrated Layer Processing using Common Case Anticipation and Data Dependence Analysis Extended Abstract Philippe Oechslin Computer Networking Lab Swiss Federal Institute of Technology DI-LTI

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

A Report on RMI and RPC Submitted by Sudharshan Reddy B

A Report on RMI and RPC Submitted by Sudharshan Reddy B A Report on RMI and RPC Submitted by Sudharshan Reddy B Abstract: This report mainly explains the RMI and RPC technologies. In the first part of the paper the RMI technology is briefly explained and in

More information

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Middleware Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Outline Web Services Goals Where do they come from? Understanding middleware Middleware as infrastructure Communication

More information

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations Outline Computer Science 331 Data Structures, Abstract Data Types, and Their Implementations Mike Jacobson 1 Overview 2 ADTs as Interfaces Department of Computer Science University of Calgary Lecture #8

More information

Chapter 1: Distributed Systems: What is a distributed system? Fall 2013

Chapter 1: Distributed Systems: What is a distributed system? Fall 2013 Chapter 1: Distributed Systems: What is a distributed system? Fall 2013 Course Goals and Content n Distributed systems and their: n Basic concepts n Main issues, problems, and solutions n Structured and

More information

Lecture 06: Distributed Object

Lecture 06: Distributed Object Lecture 06: Distributed Object Distributed Systems Behzad Bordbar School of Computer Science, University of Birmingham, UK Lecture 0? 1 Recap Interprocess communication Synchronous and Asynchronous communication

More information

Distributed Systems. The main method of distributed object communication is with remote method invocation

Distributed Systems. The main method of distributed object communication is with remote method invocation Distributed Systems Unit III Syllabus:Distributed Objects and Remote Invocation: Introduction, Communication between Distributed Objects- Object Model, Distributed Object Modal, Design Issues for RMI,

More information

[8] J. J. Dongarra and D. C. Sorensen. SCHEDULE: Programs. In D. B. Gannon L. H. Jamieson {24, August 1988.

[8] J. J. Dongarra and D. C. Sorensen. SCHEDULE: Programs. In D. B. Gannon L. H. Jamieson {24, August 1988. editor, Proceedings of Fifth SIAM Conference on Parallel Processing, Philadelphia, 1991. SIAM. [3] A. Beguelin, J. J. Dongarra, G. A. Geist, R. Manchek, and V. S. Sunderam. A users' guide to PVM parallel

More information

Multiprocessors 2007/2008

Multiprocessors 2007/2008 Multiprocessors 2007/2008 Abstractions of parallel machines Johan Lukkien 1 Overview Problem context Abstraction Operating system support Language / middleware support 2 Parallel processing Scope: several

More information

Java RMI Middleware Project

Java RMI Middleware Project Java RMI Middleware Project Nathan Balon CIS 578 Advanced Operating Systems December 7, 2004 Introduction The semester project was to implement a middleware similar to Java RMI or CORBA. The purpose of

More information

Technische Universitat Munchen. Institut fur Informatik. D Munchen.

Technische Universitat Munchen. Institut fur Informatik. D Munchen. Developing Applications for Multicomputer Systems on Workstation Clusters Georg Stellner, Arndt Bode, Stefan Lamberts and Thomas Ludwig? Technische Universitat Munchen Institut fur Informatik Lehrstuhl

More information

Stackable Layers: An Object-Oriented Approach to. Distributed File System Architecture. Department of Computer Science

Stackable Layers: An Object-Oriented Approach to. Distributed File System Architecture. Department of Computer Science Stackable Layers: An Object-Oriented Approach to Distributed File System Architecture Thomas W. Page Jr., Gerald J. Popek y, Richard G. Guy Department of Computer Science University of California Los Angeles

More information

Client Server & Distributed System. A Basic Introduction

Client Server & Distributed System. A Basic Introduction Client Server & Distributed System A Basic Introduction 1 Client Server Architecture A network architecture in which each computer or process on the network is either a client or a server. Source: http://webopedia.lycos.com

More information

Transparent Access to Legacy Data in Java. Olivier Gruber. IBM Almaden Research Center. San Jose, CA Abstract

Transparent Access to Legacy Data in Java. Olivier Gruber. IBM Almaden Research Center. San Jose, CA Abstract Transparent Access to Legacy Data in Java Olivier Gruber IBM Almaden Research Center San Jose, CA 95120 Abstract We propose in this paper an extension to PJava in order to provide a transparent access

More information

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System Donald S. Miller Department of Computer Science and Engineering Arizona State University Tempe, AZ, USA Alan C.

More information

Storage System. Distributor. Network. Drive. Drive. Storage System. Controller. Controller. Disk. Disk

Storage System. Distributor. Network. Drive. Drive. Storage System. Controller. Controller. Disk. Disk HRaid: a Flexible Storage-system Simulator Toni Cortes Jesus Labarta Universitat Politecnica de Catalunya - Barcelona ftoni, jesusg@ac.upc.es - http://www.ac.upc.es/hpc Abstract Clusters of workstations

More information

RECONFIGURATION OF HIERARCHICAL TUPLE-SPACES: EXPERIMENTS WITH LINDA-POLYLITH. Computer Science Department and Institute. University of Maryland

RECONFIGURATION OF HIERARCHICAL TUPLE-SPACES: EXPERIMENTS WITH LINDA-POLYLITH. Computer Science Department and Institute. University of Maryland RECONFIGURATION OF HIERARCHICAL TUPLE-SPACES: EXPERIMENTS WITH LINDA-POLYLITH Gilberto Matos James Purtilo Computer Science Department and Institute for Advanced Computer Studies University of Maryland

More information

Experiences Report on the Implementation of EPTs for GNAT

Experiences Report on the Implementation of EPTs for GNAT Experiences Report on the Implementation of EPTs for GNAT Rodrigo García García, Alfred Strohmeier Software Engineering Laboratory Swiss Federal Institute of Technology in Lausanne (EPFL) CH-1015 Lausanne

More information

Testing Exceptions with Enforcer

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

More information

Transport protocols are of practical. login, le transfer, and remote procedure. calls. will operate on and therefore are generally

Transport protocols are of practical. login, le transfer, and remote procedure. calls. will operate on and therefore are generally Hazard-Free Connection Release Jennifer E. Walter Department of Computer Science Texas A&M University College Station, TX 77843-3112, U.S.A. Jennifer L. Welch Department of Computer Science Texas A&M University

More information

The Chance for Ada to Support Distribution and Real- Time in Embedded Systems

The Chance for Ada to Support Distribution and Real- Time in Embedded Systems The Chance for Ada to Support Distribution and Real- Time in Embedded Systems Juan López Campos, J. Javier Gutiérrez, and Michael González Harbour Departamento de Electrónica y Computadores Universidad

More information

A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING

A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING A NEW DISTRIBUTED COMPOSITE OBJECT MODEL FOR COLLABORATIVE COMPUTING Güray YILMAZ 1 and Nadia ERDOĞAN 2 1 Dept. of Computer Engineering, Air Force Academy, 34807 Yeşilyurt, İstanbul, Turkey 2 Dept. of

More information

System-Level Specication of Instruction Sets. Department of Electrical and Computer Engineering. Department of Computer Science

System-Level Specication of Instruction Sets. Department of Electrical and Computer Engineering. Department of Computer Science System-Level Specication of Instruction Sets Todd A. Cook Paul D. Franzon Ed A. Harcourt y Thomas K. Miller III Department of Electrical and Computer Engineering y Department of Computer Science North

More information

Operating Systems Overview. Chapter 2

Operating Systems Overview. Chapter 2 Operating Systems Overview Chapter 2 Operating System A program that controls the execution of application programs An interface between the user and hardware Masks the details of the hardware Layers and

More information

100 Mbps DEC FDDI Gigaswitch

100 Mbps DEC FDDI Gigaswitch PVM Communication Performance in a Switched FDDI Heterogeneous Distributed Computing Environment Michael J. Lewis Raymond E. Cline, Jr. Distributed Computing Department Distributed Computing Department

More information

Siegfried Loer and Ahmed Serhrouchni. Abstract. SPIN is a tool to simulate and validate Protocols. PROMELA, its

Siegfried Loer and Ahmed Serhrouchni. Abstract. SPIN is a tool to simulate and validate Protocols. PROMELA, its DIMACS Series in Discrete Mathematics and Theoretical Computer Science Volume 00, 19xx Creating Implementations from PROMELA Models Siegfried Loer and Ahmed Serhrouchni Abstract. SPIN is a tool to simulate

More information

Chapter 3. Design of Grid Scheduler. 3.1 Introduction

Chapter 3. Design of Grid Scheduler. 3.1 Introduction Chapter 3 Design of Grid Scheduler The scheduler component of the grid is responsible to prepare the job ques for grid resources. The research in design of grid schedulers has given various topologies

More information

Lecture 5: Object Interaction: RMI and RPC

Lecture 5: Object Interaction: RMI and RPC 06-06798 Distributed Systems Lecture 5: Object Interaction: RMI and RPC Distributed Systems 1 Recap Message passing: send, receive synchronous versus asynchronous No global Time types of failure socket

More information

Do! environment. DoT

Do! environment. DoT The Do! project: distributed programming using Java Pascale Launay and Jean-Louis Pazat IRISA, Campus de Beaulieu, F35042 RENNES cedex Pascale.Launay@irisa.fr, Jean-Louis.Pazat@irisa.fr http://www.irisa.fr/caps/projects/do/

More information

An Integrated Course on Parallel and Distributed Processing

An Integrated Course on Parallel and Distributed Processing An Integrated Course on Parallel and Distributed Processing José C. Cunha João Lourenço fjcc, jmlg@di.fct.unl.pt Departamento de Informática Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa

More information

Today: Distributed Objects. Distributed Objects

Today: Distributed Objects. Distributed Objects Today: Distributed Objects Case study: EJBs (Enterprise Java Beans) Case study: CORBA Lecture 23, page 1 Distributed Objects Figure 10-1. Common organization of a remote object with client-side proxy.

More information

Frequently asked questions from the previous class survey

Frequently asked questions from the previous class survey CS 455: INTRODUCTION TO DISTRIBUTED SYSTEMS [FILE SYSTEMS] Shrideep Pallickara Computer Science Colorado State University L27.1 Frequently asked questions from the previous class survey How many choices

More information

Reverse Engineering with a CASE Tool. Bret Johnson. Research advisors: Spencer Rugaber and Rich LeBlanc. October 6, Abstract

Reverse Engineering with a CASE Tool. Bret Johnson. Research advisors: Spencer Rugaber and Rich LeBlanc. October 6, Abstract Reverse Engineering with a CASE Tool Bret Johnson Research advisors: Spencer Rugaber and Rich LeBlanc October 6, 994 Abstract We examine using a CASE tool, Interactive Development Environment's Software

More information

Lecture 1. Chapter 6 Architectural design

Lecture 1. Chapter 6 Architectural design Chapter 6 Architectural Design Lecture 1 1 Topics covered Architectural design decisions Architectural views Architectural patterns Application architectures 2 Software architecture The design process

More information

What future for the Distributed Systems Annex?

What future for the Distributed Systems Annex? What future for the Distributed Systems Annex? Laurent PAUTET Samuel TARDIEU {Laurent.Pautet,Samuel.Tardieu}@enst.fr École Nationale Supérieure des Télécommunications Département Informatique et Réseaux

More information

How do modules communicate? Enforcing modularity. Modularity: client-server organization. Tradeoffs of enforcing modularity

How do modules communicate? Enforcing modularity. Modularity: client-server organization. Tradeoffs of enforcing modularity How do modules communicate? Enforcing modularity Within the same address space and protection domain local procedure calls Across protection domain system calls Over a connection client/server programming

More information

A Resource Look up Strategy for Distributed Computing

A Resource Look up Strategy for Distributed Computing A Resource Look up Strategy for Distributed Computing F. AGOSTARO, A. GENCO, S. SORCE DINFO - Dipartimento di Ingegneria Informatica Università degli Studi di Palermo Viale delle Scienze, edificio 6 90128

More information

Operating Systems : Overview

Operating Systems : Overview Operating Systems : Overview Bina Ramamurthy CSE421 8/29/2006 B.Ramamurthy 1 Topics for discussion What will you learn in this course? (goals) What is an Operating System (OS)? Evolution of OS Important

More information

The language should have few implementation dependencies and should be simple, so that interactions between language features do not give unexpected b

The language should have few implementation dependencies and should be simple, so that interactions between language features do not give unexpected b Using Analytical Approaches for High Integrity Ada95 Systems Stephen Michell Maurya Software 29 Maurya Court, Ottawa, Ontario K1G 5S3 Canada Email: steve@maurya.on.ca Dan Craigen, Mark Saaltink ORA Canada

More information

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model Diego Sevilla 1, José M. García 1, Antonio Gómez 2 1 Department of Computer Engineering 2 Department of Information and

More information

Managing ANSA Objects with OSI Network Management Tools. on the joint ISO-ITU `Reference Model for Open Distributed. to OSI managers.

Managing ANSA Objects with OSI Network Management Tools. on the joint ISO-ITU `Reference Model for Open Distributed. to OSI managers. Managing ANSA Objects with OSI Network Tools Guy Genilloud Computer Engineering Department EPFL-DI-LIT Swiss Federal Institute of Technology CH-1015 Lausanne, SWITZERLAND Marc Polizzi Computer Engineering

More information

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

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

More information

MODELS OF DISTRIBUTED SYSTEMS

MODELS OF DISTRIBUTED SYSTEMS Distributed Systems Fö 2/3-1 Distributed Systems Fö 2/3-2 MODELS OF DISTRIBUTED SYSTEMS Basic Elements 1. Architectural Models 2. Interaction Models Resources in a distributed system are shared between

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL. Jun Sun, Yasushi Shinjo and Kozo Itano

THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL. Jun Sun, Yasushi Shinjo and Kozo Itano THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL Jun Sun, Yasushi Shinjo and Kozo Itano Institute of Information Sciences and Electronics University of Tsukuba Tsukuba,

More information

instruction fetch memory interface signal unit priority manager instruction decode stack register sets address PC2 PC3 PC4 instructions extern signals

instruction fetch memory interface signal unit priority manager instruction decode stack register sets address PC2 PC3 PC4 instructions extern signals Performance Evaluations of a Multithreaded Java Microcontroller J. Kreuzinger, M. Pfeer A. Schulz, Th. Ungerer Institute for Computer Design and Fault Tolerance University of Karlsruhe, Germany U. Brinkschulte,

More information

Message Passing. Advanced Operating Systems Tutorial 7

Message Passing. Advanced Operating Systems Tutorial 7 Message Passing Advanced Operating Systems Tutorial 7 Tutorial Outline Review of Lectured Material Discussion: Erlang and message passing 2 Review of Lectured Material Message passing systems Limitations

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

European Component Oriented Architecture (ECOA ) Collaboration Programme: Architecture Specification Part 2: Definitions

European Component Oriented Architecture (ECOA ) Collaboration Programme: Architecture Specification Part 2: Definitions European Component Oriented Architecture (ECOA ) Collaboration Programme: Part 2: Definitions BAE Ref No: IAWG-ECOA-TR-012 Dassault Ref No: DGT 144487-D Issue: 4 Prepared by BAE Systems (Operations) Limited

More information

Abstract. Introduction

Abstract. Introduction Highly Available In-Memory Metadata Filesystem using Viewstamped Replication (https://github.com/pkvijay/metadr) Pradeep Kumar Vijay, Pedro Ulises Cuevas Berrueco Stanford cs244b-distributed Systems Abstract

More information

Network. Department of Statistics. University of California, Berkeley. January, Abstract

Network. Department of Statistics. University of California, Berkeley. January, Abstract Parallelizing CART Using a Workstation Network Phil Spector Leo Breiman Department of Statistics University of California, Berkeley January, 1995 Abstract The CART (Classication and Regression Trees) program,

More information

The Object Model Overview. Contents. Section Title

The Object Model Overview. Contents. Section Title The Object Model 1 This chapter describes the concrete object model that underlies the CORBA architecture. The model is derived from the abstract Core Object Model defined by the Object Management Group

More information

Chapter 6 Architectural Design. Chapter 6 Architectural design

Chapter 6 Architectural Design. Chapter 6 Architectural design Chapter 6 Architectural Design 1 Topics covered Architectural design decisions Architectural views Architectural patterns Application architectures 2 Software architecture The design process for identifying

More information

An Overview of the BLITZ System

An Overview of the BLITZ System An Overview of the BLITZ System Harry H. Porter III Department of Computer Science Portland State University Introduction The BLITZ System is a collection of software designed to support a university-level

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make

More information

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA A taxonomy of race conditions. D. P. Helmbold, C. E. McDowell UCSC-CRL-94-34 September 28, 1994 Board of Studies in Computer and Information Sciences University of California, Santa Cruz Santa Cruz, CA

More information

IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation

IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation IUT Job Cracker Design and Implementation of a Dynamic Job Scheduler for Distributed Computation *Fahim Kawsar, **Md. Shahriar Saikat, ***Shariful Hasan Shaikot Department of Computer Science *Islamic

More information

Module 1 - Distributed System Architectures & Models

Module 1 - Distributed System Architectures & Models Module 1 - Distributed System Architectures & Models System Architecture Defines the structure of the system components identified functions of each component defined interrelationships and interactions

More information

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design Chapter 6 Architectural Design Lecture 1 1 Topics covered ² Architectural design decisions ² Architectural views ² Architectural patterns ² Application architectures 2 Software architecture ² The design

More information

CHAPTER 4 AN INTEGRATED APPROACH OF PERFORMANCE PREDICTION ON NETWORKS OF WORKSTATIONS. Xiaodong Zhang and Yongsheng Song

CHAPTER 4 AN INTEGRATED APPROACH OF PERFORMANCE PREDICTION ON NETWORKS OF WORKSTATIONS. Xiaodong Zhang and Yongsheng Song CHAPTER 4 AN INTEGRATED APPROACH OF PERFORMANCE PREDICTION ON NETWORKS OF WORKSTATIONS Xiaodong Zhang and Yongsheng Song 1. INTRODUCTION Networks of Workstations (NOW) have become important distributed

More information

Algorithmic "imperative" language

Algorithmic imperative language Algorithmic "imperative" language Undergraduate years Epita November 2014 The aim of this document is to introduce breiy the "imperative algorithmic" language used in the courses and tutorials during the

More information

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan. Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan Reading List Remote Object Invocation -- Tanenbaum Chapter 2.3 CORBA

More information

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005 Wrapping a complex C++ library for Eiffel FINAL REPORT July 1 st, 2005 Semester project Student: Supervising Assistant: Supervising Professor: Simon Reinhard simonrei@student.ethz.ch Bernd Schoeller Bertrand

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

Real-Time Programming with GNAT: Specialised Kernels versus POSIX Threads

Real-Time Programming with GNAT: Specialised Kernels versus POSIX Threads Real-Time Programming with GNAT: Specialised Kernels versus POSIX Threads Juan A. de la Puente 1, José F. Ruiz 1, and Jesús M. González-Barahona 2, 1 Universidad Politécnica de Madrid 2 Universidad Carlos

More information

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered Topics covered Chapter 6 Architectural Design Architectural design decisions Architectural views Architectural patterns Application architectures Lecture 1 1 2 Software architecture The design process

More information

residual residual program final result

residual residual program final result C-Mix: Making Easily Maintainable C-Programs run FAST The C-Mix Group, DIKU, University of Copenhagen Abstract C-Mix is a tool based on state-of-the-art technology that solves the dilemma of whether to

More information

A Framework for Building Parallel ATPs. James Cook University. Automated Theorem Proving (ATP) systems attempt to prove proposed theorems from given

A Framework for Building Parallel ATPs. James Cook University. Automated Theorem Proving (ATP) systems attempt to prove proposed theorems from given A Framework for Building Parallel ATPs Geo Sutclie and Kalvinder Singh James Cook University 1 Introduction Automated Theorem Proving (ATP) systems attempt to prove proposed theorems from given sets of

More information

DISTRIBUTED COMPUTER SYSTEMS

DISTRIBUTED COMPUTER SYSTEMS DISTRIBUTED COMPUTER SYSTEMS Communication Fundamental REMOTE PROCEDURE CALL Dr. Jack Lange Computer Science Department University of Pittsburgh Fall 2015 Outline Communication Architecture Fundamentals

More information

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2

Gustavo Alonso, ETH Zürich. Web services: Concepts, Architectures and Applications - Chapter 1 2 Chapter 1: Distributed Information Systems Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) alonso@inf.ethz.ch http://www.iks.inf.ethz.ch/ Contents - Chapter 1 Design

More information

MODELS OF DISTRIBUTED SYSTEMS

MODELS OF DISTRIBUTED SYSTEMS Distributed Systems Fö 2/3-1 Distributed Systems Fö 2/3-2 MODELS OF DISTRIBUTED SYSTEMS Basic Elements 1. Architectural Models 2. Interaction Models Resources in a distributed system are shared between

More information

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999 Migrating a Static Analysis Tool to AspectJ TM Martin P. Robillard and Gail C. Murphy Department of Computer Science University of British Columbia 201-2366 Main Mall Vancouver BC Canada V6T 1Z4 fmrobilla,murphyg@cs.ubc.ca

More information

A Generic Multi-node State Monitoring Subsystem

A Generic Multi-node State Monitoring Subsystem A Generic Multi-node State Monitoring Subsystem James A. Hamilton SLAC, Stanford, CA 94025, USA Gregory P. Dubois-Felsmann California Institute of Technology, CA 91125, USA Rainer Bartoldus SLAC, Stanford,

More information

* What are the different states for a task in an OS?

* What are the different states for a task in an OS? * Kernel, Services, Libraries, Application: define the 4 terms, and their roles. The kernel is a computer program that manages input/output requests from software, and translates them into data processing

More information

Designing Issues For Distributed Computing System: An Empirical View

Designing Issues For Distributed Computing System: An Empirical View ISSN: 2278 0211 (Online) Designing Issues For Distributed Computing System: An Empirical View Dr. S.K Gandhi, Research Guide Department of Computer Science & Engineering, AISECT University, Bhopal (M.P),

More information

Self-Organization Algorithms SelfLet Model and Architecture Self-Organization as Ability Conclusions

Self-Organization Algorithms SelfLet Model and Architecture Self-Organization as Ability Conclusions Self-Organization Algorithms for Autonomic Systems in the SelfLet Approach D. Devescovi E. Di Nitto D.J. Dubois R. Mirandola Dipartimento di Elettronica e Informazione Politecnico di Milano Reading Group

More information

Powered by. These slides are powered by Open Source softwares : Debian GNU Linux Beamer LaTeX mode LaTeX Emacs. Context. Last night OSGi saved my life

Powered by. These slides are powered by Open Source softwares : Debian GNU Linux Beamer LaTeX mode LaTeX Emacs. Context. Last night OSGi saved my life Powered by Context These slides are powered by Open Source softwares : Debian GNU Linux Beamer LaTeX mode LaTeX Emacs Course menu... Context 1 Context 2 3 4 5 Summary I Context the application Original

More information

Construction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract

Construction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract Construction of Application Generators Using Eli Uwe Kastens, University of Paderborn, FRG Abstract Application generators are a powerful means for reuse of software design. They produce special purpose

More information

2 Addressing the Inheritance Anomaly One of the major issues in correctly connecting task communication mechanisms and the object-oriented paradigm is

2 Addressing the Inheritance Anomaly One of the major issues in correctly connecting task communication mechanisms and the object-oriented paradigm is Extendable, Dispatchable Task Communication Mechanisms Stephen Michell Maurya Software 29 Maurya Court Ottawa Ontario, Canada K1G 5S3 steve@maurya.on.ca Kristina Lundqvist Dept. of Computer Systems Uppsala

More information

From MDD back to basic: Building DRE systems

From MDD back to basic: Building DRE systems From MDD back to basic: Building DRE systems, ENST MDx in software engineering Models are everywhere in engineering, and now in software engineering MD[A, D, E] aims at easing the construction of systems

More information

Advanced Distributed Systems

Advanced Distributed Systems Course Plan and Department of Computer Science Indian Institute of Technology New Delhi, India Outline Plan 1 Plan 2 3 Message-Oriented Lectures - I Plan Lecture Topic 1 and Structure 2 Client Server,

More information

Eli System Administration Guide

Eli System Administration Guide Eli System Administration Guide Compiler Tools Group Department of Electrical and Computer Engineering University of Colorado Boulder, CO, USA 80309-0425 Copyright c 2002, 2009 The Regents of the University

More information

Reuse Contracts As Component Interface. Descriptions. Koen De Hondt, Carine Lucas, and Patrick Steyaert. Programming Technology Lab

Reuse Contracts As Component Interface. Descriptions. Koen De Hondt, Carine Lucas, and Patrick Steyaert. Programming Technology Lab Reuse Contracts As Component Interface Descriptions Koen De Hondt, Carine Lucas, and Patrick Steyaert Programming Technology Lab Computer Science Department Vrije Universiteit Brussel Pleinlaan 2, B-1050

More information

What is Software Architecture

What is Software Architecture What is Software Architecture Is this diagram an architecture? (ATM Software) Control Card Interface Cash Dispenser Keyboard Interface What are ambiguities in the previous diagram? Nature of the elements

More information

AADL Generative Implementation Annex

AADL Generative Implementation Annex Institut Supérieur de l Aéronautique et de l Espace AADL Generative Implementation Annex Jérôme Hugues, ISAE Key question answered by the annex How to implement a subprogram, and bind it to an AADL model?

More information

DHCP for IPv6. Palo Alto, CA Digital Equipment Company. Nashua, NH mentions a few directions about the future of DHCPv6.

DHCP for IPv6. Palo Alto, CA Digital Equipment Company. Nashua, NH mentions a few directions about the future of DHCPv6. DHCP for IPv6 Charles E. Perkins and Jim Bound Sun Microsystems, Inc. Palo Alto, CA 94303 Digital Equipment Company Nashua, NH 03062 Abstract The Dynamic Host Conguration Protocol (DHCPv6) provides a framework

More information

which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented

which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented A Type-Sensitive Preprocessor For Haskell Noel Winstanley Department of Computer Science University of Glasgow September 4, 1997 Abstract This paper presents a preprocessor which generates code from type

More information