Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
DT265-2 Object Oriented Software Development 2 Lecture 5 : Concurrency Lecturer Pat Browne [email protected] Syllabus • Concurrency – Threading and concurrency – Thread synchronization – Parallel extensions and platforms • Programs in this section will be run from the command line. Find where csc.exe is on your machine, say • C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe • You can add this location you the PATH system variable. • csc.exe file.cs Processes • • • • • • Concurrent programs The hardware interface Support for processes Processes and threads Processes in language systems Processes in C# Sequential & Concurrent programs • A sequential program has a single thread of control. Its execution is called a process. • A concurrent program has multiple threads of control. These may be executed as parallel processes. • Non-determinism: concurrent programs are nondeterministic in their execution order, and may also have nondeterministic results. • Run-time overhead: thread construction, context switching and synchronization take time UML state charts & interaction diagrams What is a concurrent system • A concurrent system consists of a set of activities in the process of being executed. That is, at a given time activities are at some stage between their start and finish. • The activities may be competing or cooperating. • Activities cooperate to achieve a common goal (e.g. they may be part of a larger activity). Concurrent activities may need to cooperate by synchronizing their activities or exchanging data. What is a concurrent system • The activities may be competing or cooperating. – Activities cooperate to achieve a common goal (e.g. they may be part of a larger activity). Concurrent activities may need to cooperate by synchronizing their activities or exchanging data. – Activities will compete when they share resources but the resources can only be used by one activity at a time, (e.g. printer, updating a database) Devices, Buffers, Interrupts, Poling • External devices are much slower than processors. • Processors must proceed at their fastest rate and not be held up by slow devices. Devices and processors operate concurrently (in parallel), and exchange data through synchronization. • Buffers, interrupts and polling help achieve synchronization. • A buffer storage area accessed by both a device and the processor. • If an activity (process) is interrupted, it stops execution an interrupt service routine (ISR) is called to carry out the necessary tasks, the state of the process that has been interrupted must be saved in order to be able to resume execution of it later. Upon completion of execution ISR, the previous process or other process will be restarted. Context switching takes significant time. • Poling is alternative to interrupts. 8 Process states Process asked to wait Blocked waiting for an event Running on a processor Scheduled An event occurred The process runs out of time or preempted Each process as a process descriptor: Runnable Waiting for a processor Process id Process priority Process state (blocked, running) Resources allocated Lists the events for which the process may be waiting, Start address 9 Desirable properties of concurrent systems • Safety: ensuring consistency ,concurrent processes may corrupt shared data • Liveness: processes may “starve” if not properly coordinated. • Fairness: A fairness guarantee states that the next operation in a runnable thread eventually will execute. An implementation technique that is often used to provide fairness guarantee is preemption. Pre-emption means running threads are periodically stopped by software in order to let other threads proceed. Desirable properties of concurrent systems • Safety = ensuring consistency • A safety property says “nothing bad happens”. Mutual exclusion: shared resources must be updated atomically • Condition synchronization: operations may be delayed if shared resources are in the wrong state (e.g., read from empty buffer) Desirable properties of concurrent systems • Liveness = ensuring progress • A liveness property says “something good happens” • No Deadlock: some process can always access a shared resource • No Starvation: all processes can eventually access shared resources Desirable properties of concurrent systems • Fairness and Liveness are related notions of describing which of a collection of concurrent processes make progress in their execution. A fairness constraint is imposed on (the scheduler of) the system that it fairly select the process to be executed next. A fairness constraint is a condition on executions (paths) of the system model. Liveness • Liveness describe the requirement that a process make progress toward a specific goal, the achievement of which depends on the fairness of the system. If a process never gets to execute, it usually cannot reach its goal. Therefore, liveness is often evaluated only along fair paths, i.e. paths that satisfy one of the above three fairness path requirements. Synchronous and asynchronous input and output • synchronous I/O policy : a process is blocked while it waits for I/O to be completed • asynchronous I/O policy: a process is allowed to continue its execution and pick up the requested input or acknowledgement of output later • Some systems offer these two policies as options at the application level. 15 Multi-threaded process implementation • A single program can be subdivided into subtasks that are executed by separate processes. – One (main) process will be responsible for executing the program, in the course of its execution, other processes will be created to execute subtasks concurrently. • Each process must be associated with memory locations that contain its executable code, its data, its references to open files and so on (the process’s resources). • Some OS allow subtask processes to share the resources of the main process. (lightweight processes) (or threads) – the full overhead associated with a context switch is avoided. • main processes are referred to as heavyweight processes (or simply processes) – a context switch between such processes will incur the full overhead of changing the resource information. • A multi-threaded process : A (heavyweight) process that is split into many lightweight processes • A multi-threaded operating system :an operating system that supports lightweight processes 16 Concurrent programming language with OS support for use thread as kernel thread One program, many user threads One program, many user threads Language runtime system Language runtime system Operating system kernel • Operating system knows about and manages the threads created by each process. 17 Threads • Multi-tasking: The ability of a computer to carry out more than one task or program concurrently. (tasks is heavyweight processes. • Multi-threading: an individual program which can be divided up into a number of concurrent tasks. (task is lightweight processes (or thread)). • For user friendly programs – While program is running, it interacts with user. – To do this • The execution of the program is divided into a separate thread, leaving the main program thread free to listen for user activity. • In C#, threads are created using the Thread Class. Design choice : – Define class as subclass of Thread, and override the method run, which is the method that is executed to perform the task assigned to a thread. – Or – Declare a thread as implementing the Runnable interface 18 C# Thread Pool • A thread pool is a collection of threads that can be used to perform a number of tasks in the background. This leaves the primary thread free to perform other tasks asynchronously. • Thread pools are often employed in server applications. Each incoming request is assigned to a thread from the thread pool, so the request can be processed asynchronously, without tying up the primary thread or delaying the processing of subsequent requests. Sockets • A Socket is a bidirectional end-point for a communication link between two programs. We use • SynchronousSocketClient.cs • SynchronousSocketListener.cs Sockets • A Socket is a bidirectional end-point for a communication link between two programs. We use • SynchronousSocketClient.cs • SynchronousSocketListener.cs • C# Server Socket Program: A C# Server Socket Program running on a computer has a socket that bound to a Port Number on the same computer and listening to the client's incoming requests. Remoting • The .NET Remoting API is a framework that allows objects on a client machine to communicate with remote objects on a server. • .NET remoting provides an abstract approach to interprocess communication that separates the remotable object from a specific client or server application domain and from a specific mechanism of communication. Compiling from command line • Find where csc.exe is on your machine, say • C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe • You can add this location you the PATH system variable. • csc.exe file.cs