Name: Shilpashree Srinivasamurthy Subject: ACS 560- Software Engineering Term: Fall 2010 Chapter 4: Concurrent and Distributed System Technology Textbook: Designing Concurrent, Distributed, and Real-Time Applications with UML This chapter provides an overview of the infrastructure, that is, the concurrent and distributed processing technology required for real-time and distributed applications. The infrastructure is provided by the operating system, networks, and middleware. The chapter first describes the operating system support for the multiprogramming and symmetric multiprocessing environments with further information provided on task scheduling and device input/output. Environments for Concurrent Processing: This section explains the main categories of the environments for concurrent systems: - Multiprogramming Environment: In multiprogramming also known as multitasking environment, multiple tasks share one processor. - Symmetric Multiprocessing Environment: In symmetric multiprocessing environment, there are two or more processors with shared memory. - Distributed Processing Environment: In distributed processing environment, several nodes are interconnected by means of a communications network. Runtime Support for Multiprogramming and Multiprocessing Environments: Runtime support for concurrent processing may be provided by kernel of an operating system, runtime support system or threads package each of which is described in detail in this section. - Operating System Services: Priority preemption scheduling, inter-task communication using messages, mutual exclusion using semaphores, event synchronization using signals, interrupt handling and basic I/O services, and memory management are the typical services provided by an operating system kernel. - The POSIX Operating System Standard: POSIX which stands for Portable Operating System Interface Standard, is an operating system software standard produced by the IEEE Computer Society which is referred to as POSIX 1003. POSIX 1003.1b defines a standard interface in the form of real-time operating system services. Concurrent task management services, timing services, memory management services, I/O services are the typical services provided by POSIX 1003.1b. - Real –Time Operating Systems: Support multitasking, support priority preemption scheduling, provide task synchronization and communication mechanisms, provide a memory-locking capability for tasks, provide a mechanism for priority inheritance, and have a predictable behavior are the typical tasks expected from a real-time operating system. Task Scheduling: This section explains various task scheduling algorithms that have been designed to provide alternative strategies for allocating tasks to the CPU such as round-robin scheduling and priority preemption scheduling. It also explains the various task states i.e. the various states a task goes through from creation to termination. This section also explains about task context switching. When a task is suspended its current context or processor state must be saved. When a task is assigned the CPU, its context must be restored so it can resume executing. This process is known as context switching. Operating System Input/Output Considerations: This section provides an overview of how input/output devices are handled by the operating system. The two mechanisms for performing input/output is explained namely interrupt driven I/O and polled I/O. - Interrupt Handling: With interrupt-driven I/O, an interrupt is generated when input arrives or after an output operation completes. - Polled I/O: In polled I/O the system periodically samples an input device to determine whether any input has arrived and periodically samples an output device to determine whether an output operation has completed. The chapter then explains the technology for distributed processing environments. This includes an overview of a client/server technology and the technology of the World Wide Web. - Client/Server and Distributed System Technology: A client/server system consists of two logical components, a client (or consumer) that requests services and a server (or provider) that provides services. A client/server system is a distributed application where the clients and server are geographically distributed. - World Wide Web Technology: World Wide Web technology is popularly known as www. The user can view www web pages through a web browser which executes on the user’s node. World Wide Web pages are maintained on web servers. Each webpage is identified by means of universal resource locator (URL). Whenever the webpage is selected by the user, the web browser gets the name of the web server using the URL and contacts the web server to download the page. The browser then displays the downloaded page to the user. The following section of the chapter explains the various services of distributed operating system. - - - Name Service: In global naming service, a name server maintains the names of all global services. Binding between Clients and Servers: Binding refers to the association between client and server. There are two types of binding: static binding where the binding is done during the compile time and the dynamic binding where the binding is done at the run time. Distributed Message Communication Services: Transparent message communication between distributed tasks can be handled by means of a distributed kernel of a distributed operating system. Socket Services: Sockets are an application programming interface (API) which defines a set of operations an application can call when it communicates with another application over a network using a specific protocol such as TCP/IP. - Message Communication Using Ports: In distributed systems a component on one node sends the message to an output port. A destination component receives messages at its input port. - Error recovery The next section describes the middleware technology. Middleware is a layer of software that sits above the heterogeneous operating system to provide a uniform platform above which distributed applications can run. The next section of the chapter lists the various distributed component technologies are (COM, JavaBeans, Jini Connection Technology) providing a detailed explanation CORBA. The final section of the chapter explains Transaction Processing Systems. The transaction processing applications are mission-critical or business-critical. A transaction is a request from a client to a server, consisting of two or more operations that perform a single logical function and which must be completed in its entirety or not at all. The various properties of transaction include atomicity, consistency, isolation and durability. A transaction processing monitor coordinates the flow of information between user clients, who initiates the transaction requests, and the transaction processing application that responds to the requests.