prof. chuan-ming liu computer science and information ...cmliu/np/ntut_np_f07u/slides/...prof....
TRANSCRIPT
-
NTUT, TAIWAN 1
Mobile Computing & Software Engineering Lab
Concurrency in Clients
Prof. Chuan-Ming LiuComputer Science and Information Engineering
National Taipei University of TechnologyTaipei, TAIWAN
-
NTUT, TAIWAN 2
Mobile Computing & Software Engineering Lab
IntroductionThis chapter considers the issue of concurrency in client softwareIt shows an example client that illustrates concurrent operation
-
NTUT, TAIWAN 3
Mobile Computing & Software Engineering Lab
The Advantage of Concurrency
Servers use concurrency for two main reasons:
Concurrency can improve the observed response time (and therefore the overall throughput to all clients)Concurrency can eliminate potential deadlocks
-
NTUT, TAIWAN 4
Mobile Computing & Software Engineering Lab
The Advantage of Concurrency (cont.)
Concurrency does have advantages in clients:
Concurrent implementations can be easier to program because they separate functionality into conceptually separate componentsConcurrent implementations can be easier to maintain and extend because they make the code modular
-
NTUT, TAIWAN 5
Mobile Computing & Software Engineering Lab
The Advantage of Concurrency (cont.)
Concurrent clients can contact several servers at the same time, either to compare response time or merge the results the servers returnConcurrency can allow the user to change parameters, inquire about the client status, or control processing dynamically
-
NTUT, TAIWAN 6
Mobile Computing & Software Engineering Lab
The Advantage of Concurrency (cont.)
This chapter will focus on the idea of interacting with multiple servers at the same timeThe key advantage of using concurrency in clients lies in asynchrony – allows a client to handle multiple tasks simultaneously without imposing a strict execution order on them
-
NTUT, TAIWAN 7
Mobile Computing & Software Engineering Lab
The Motivation for Exercising Control
One possible use of asynchrony arises from the need to separate control functions from normal processingA user who invokes a client may have little or no idea how long it will take to receive a response or how large that response will be
-
NTUT, TAIWAN 8
Mobile Computing & Software Engineering Lab
The Motivation for Exercising Control (cont.)
An appropriately designed concurrent client can permit the user to continue to interact with the client while the client waits for a responseThe user can find out whether any data has been received, choose to send a different request, or to terminate the communication gracefully
-
NTUT, TAIWAN 9
Mobile Computing & Software Engineering Lab
The Motivation for Exercising Control (cont.)
For example, an concurrent implementation can read and process input from the user’s keyboard or mouse concurrently with database search
-
NTUT, TAIWAN 10
Mobile Computing & Software Engineering Lab
Concurrent Contact with Multiple Servers
Concurrency can allow a single client to contact several servers at the same time and to report to the user as soon as it receives a response from any of themConsider how concurrency can enhance a client that uses ECHO to measure throughput
Because it makes all measurements at the same time, they are faster than a non-concurrent client, and are all affected equally by the loads on the CPU and the local network
-
NTUT, TAIWAN 11
Mobile Computing & Software Engineering Lab
Implementing Concurrent Clients
Like concurrent servers, most concurrent client implementations follow one of the two basic approaches:
A multi-thread implementation that each thread handles one functionA single thread implementation that uses select to handle multiple I/O events asynchronously
-
NTUT, TAIWAN 12
Mobile Computing & Software Engineering Lab
Implementing Concurrent Clients (cont.)
As Fig. 17.1 illustrates, multiple threads allow a connection-oriented client to separate I/O processing
An input thread reads from standard input, formulates requests, and sends them to the server over the TCP connectionA separate output thread receives responses from the server and writes them to the standard outputA control thread accepts commands from the user that control processing
-
NTUT, TAIWAN 13
Mobile Computing & Software Engineering Lab
Figure 17.1
-
NTUT, TAIWAN 14
Mobile Computing & Software Engineering Lab
Single-Thread Implementation
Fig. 17.2 shows the process structure used to provide apparent concurrency in a single thread, connection-oriented client (Algorithm 8.5, the examples in Ch 13 through 15)If the input descriptor becomes ready, the client reads the input and either stores it for later use or acts on it immediatelyIf a TCP socket becomes ready for output, the client prepares and sends a request across a TCP connection
-
NTUT, TAIWAN 15
Mobile Computing & Software Engineering Lab
Figure 17.2
-
NTUT, TAIWAN 16
Mobile Computing & Software Engineering Lab
Algorithm 8.5
-
NTUT, TAIWAN 17
Mobile Computing & Software Engineering Lab
Single-Thread Implementation (cont.)
If a TCP socket becomes ready for input, the client reads the response that the server has sent and handles itThe client reads input or responses from the server at whatever rate they are generatedThe client will continue to read and honor control commands even if the server fails to respond
-
NTUT, TAIWAN 18
Mobile Computing & Software Engineering Lab
Single-Thread Implementation (cont.)
A single thread client can become deadlocked if it invokes a system function that blocksThe programmer must be careful to ensure that the client does not block indefinitely waiting for an event that will not occur
-
NTUT, TAIWAN 19
Mobile Computing & Software Engineering Lab
An Example Concurrent Client That Uses ECHO
Fig. 17.2a shows TCPtecho.c that uses the ECHO service described in Ch 7 to measure network throughput to a set of machines
-
NTUT, TAIWAN 20
Mobile Computing & Software Engineering Lab
Execution of the Concurrent Client
Fig. 17.3 shows sample output from three separate executions of TCPtecho
-
NTUT, TAIWAN 21
Mobile Computing & Software Engineering Lab
Figure 17.3
-
NTUT, TAIWAN 22
Mobile Computing & Software Engineering Lab
Concurrency in the Example Code
A concurrent implementation of TCPtechoimproves the program in two ways
Obtain a more accurate measure of the time required for each connection because congestion affects all connection equallyA concurrent version makes TCPtecho more appealing to users (it offers faster response time than a sequential version
-
NTUT, TAIWAN 23
Mobile Computing & Software Engineering Lab
SummaryConcurrent client implementation can offer faster response time and can avoid deadlock problemsConcurrency can help designers separate control and status processing from normal input and output
-
NTUT, TAIWAN 24
Mobile Computing & Software Engineering Lab
Summary (cont.)We studied a TCP client that measures the time required to access the ECHO server one one or more machines
Avoid the differences in throughput caused by network congestion by making all measurements during the same time intervalAppeals to users because it overlaps the measurements