lec4

Reviews
Shared by: Muhammad Saleem
Categories
Tags
Stats
views:
32
rating:
not rated
reviews:
0
posted:
11/9/2007
language:
DANISH
pages:
0
Network Programming TDC 561 Lecture # 4: Server Design (II) Concurrent Servers Dr. Ehab S. Al-Shaer School of Computer Science & Telecommunication DePaul University Chicago, IL 1 Unix Signals A signal is a notification to a process that an event has occurred. ❂ Signals can be sent by one process to another (or to itself) or by the kernel to a process. ❂ The signal() system call provides a mechanism for user programs to react to signals by associating a function called a signal handler with a specific signal. ❂ 2 Dr. Ehab Al-Shaer/Network Programming signal() system call void (*signal (int sig,void (*func)(int)))(int); ❂ Example: signal(SIGUSR1,myfunc); This would tell the kernel to call the user defined function myfunc() whenever the signal SIGUSR1 is received. ❂ There are many differnt signals - each has a name specified in the include file signal.h. 3 Dr. Ehab Al-Shaer/Network Programming 1 POSIX Signals SI GABRT SI GALRM SI GFPE SI GHUP SI GI NT SI GKI LL SI GSEGV SI GQUI T SI GUSR1 SI GCHLD SI GCONT SI GSTOP SI GTSTP Abnormal termination Timeout Erroneous arithmetic operation Hangup Interactive attention Termination signal Invalid memory reference Interactive termination (^C) User defined Child process has terminated Continued Stop Interactive Stop (^Z) Dr. Ehab Al-Shaer/Network Programming 4 Sources of Signals ❂ The kill() system call allows a process to send a signal to another process. int kill( int pid, int sig ); ❂ A signal can be sent via the kill system call only if the effective UID of the sending process is 0 (root) or matches the effective UID of the receiving process. 5 Dr. Ehab Al-Shaer/Network Programming Other sources of signals From shell: e.g. $kill -9 Certain terminal characters generate signals, for example ^C. ❂ Hardware conditions can generate signals (division by zero, memory violation). These signals are passed to the process from the kernel. ❂ Some software related conditions can cause the kernel to send a signal (for example the receipt of out-of-band data). ❂ ❂ 6 Dr. Ehab Al-Shaer/Network Programming 2 Concurrent Servers ❂ Motivations for Concurrency • • • • better response time I/O (and CPU) overlapping multiprocessor systems Nonblocking I/O chew up all processor time ❂ (Common) Concurrent Server Architectures • Multi-process servers • I/O Multiplexing servers • Multithreaded servers 7 Dr. Ehab Al-Shaer/Network Programming Multi-process Concurrent Servers ❂ Design: • Master/slave model – Master: always running, manage but does not communicate back – Slave: does the actual work (processing + comm) ❂ Algorithm for Connection-oriented servers: 1. M: Create a socket & Bind to a port 2. M: Make it passive! (listen) 3. M: Accept connections & create a slave (S) 4. M: Go to 3 5. S: Read, process and reply 6. S: Close and exit 8 Dr. Ehab Al-Shaer/Network Programming Multiprocess Concurrent Servers (cont.) ❂ Algorithm for Connectionless servers: 1. M: Create a socket & Bind to a port 2. M: Receive a request & create a slave (S) 3. M: Go to 2 4. S: process and reply 5. S: Close and exit ❂ ❂ ❂ A slave per connection Vs. per request few connectionless concurrent servers exist! Used mainly when slaves are independent (why?) 9 Dr. Ehab Al-Shaer/Network Programming 3 I/O Multiplexing Concurrent Servers ❂ Design: • Singe process (apparent concurrency) • select(): the kernel support for asynchronous I/O multiplexing ❂ Algorithm for connection-oriented servers: 1. Create a socket (m) & Bind to a port, Add m to socklist, 2. use select(){blocking,unblocking,timeout} 3. Accept connections when m is “ready”, and add the new socket to socklist 4. Read/write from/to a “ready” socket 10 5. Go to 2 Dr. Ehab Al-Shaer/Network Programming I/O Multiplexing Concurrent Servers (cont.) ❂ Motivations: • No fork() overhead • connections share same state or coordination • client requests are very interleaved (eg. X clients: xclock, xbuf, xterm, xemacs ..etc) • supporting multi-protocol single server • serializability • simpler! ❂ Issues: • programmer must be aware of this concurrency • fairness: short requests/service time • multiprocessor machine does not help! Dr. Ehab Al-Shaer/Network Programming 11 Select() The select() system call allows us to use blocking I/O on a set of descriptors (file, socket, …). ❂ For example, we can ask select to notify us when data is available for reading on either STDIN or a TCP socket. ❂ 12 Dr. Ehab Al-Shaer/Network Programming 4 Select() int select( int maxfd, fd_set *readset, fd_set *writeset, fd_set *excepset, const struct timeval *timeout); maxfd : highest number assigned to a descriptor. readset: set of descriptors we want to read from. writeset: set of descriptors we want to write to. excepset: set of descriptors to watch for exceptions. timeout: maximum time select should wait Dr. Ehab Al-Shaer/Network Programming 13 struct timeval struct timeval { long tv_sec; long tv_usec; /* seconds */ /* microseconds */ } struct timeval max = {1,0}; 14 Dr. Ehab Al-Shaer/Network Programming fd_set ❂ ❂ Implementation is not important Operations to use with fd_set: void FD_ZERO( fd_set *fdset); void FD_SET( int fd, fd_set *fdset); void FD_CLR( int fd, fd_set *fdset); int FD_ISSET( int fd, fd_set *fdset); 15 Dr. Ehab Al-Shaer/Network Programming 5 Using select() Create fd_set clear the whole thing with FD_ZERO ❂ Add each descriptor you want to watch using FD_SET. ❂ Call select ❂ when select returns, use FD_ISSET to see if I/O is possible on each descriptor. ❂ ❂ 16 Dr. Ehab Al-Shaer/Network Programming Multithreaded Concurrent Servers ❂ Design: (detailed discussion later) • Master/slave model with stronger coordination – Master: always running, manage but does not communicate back – Slave: does the actual work (processing + comm) ❂ Algorithm for connection-oriented servers: 1. MT: Create a socket & Bind to a port 2. MT: Make it passive! (listen) 3. MT: Accept & create a thread (ST) 4. MT: Go to 3 5. ST: Read, process, reply and coordinate 6. ST: go to 5 or close and exit-thread Dr. Ehab Al-Shaer/Network Programming 17 Servers Threat ❂ Resources consumption • rapid connections during 2*MSL • too many client crashes ❂ Reliability problems • Erroneous message • requests storm ❂ Server deadlock • client connects but does not send • client send but not receive • UDP server sends a request and expects a reply but the request is lost 18 Dr. Ehab Al-Shaer/Network Programming 6

Related docs
lec4
Views: 1  |  Downloads: 0
lec4
Views: 0  |  Downloads: 0
Lec4 Radiology 8122007
Views: 0  |  Downloads: 0
Business Plan 2006 - Route 18 WCML
Views: 0  |  Downloads: 0
PDF Issues Spreadsheet - MIT
Views: 35  |  Downloads: 0
premium docs
Other docs by Muhammad Salee...
The Social Media Manual - by Muhammad Saleem
Views: 3126  |  Downloads: 118
08-202_employment_application
Views: 622  |  Downloads: 11
02-63-Withdrawal-of-Counsel
Views: 742  |  Downloads: 0
10.01J Consent Agreement
Views: 629  |  Downloads: 1
10.01I Full Hearing CPO
Views: 699  |  Downloads: 1
10.01D Petition for CPO
Views: 580  |  Downloads: 1
11-DistressWarrantAffidavit
Views: 498  |  Downloads: 0
10-DispossessoryWritofPossession
Views: 452  |  Downloads: 0
09-DispossessoryWarrant
Views: 464  |  Downloads: 0
07-CertificationUnderRule3_2
Views: 450  |  Downloads: 0
05i-AnswerofContinuingGarnishment-Interactive
Views: 295  |  Downloads: 0
dv560
Views: 131  |  Downloads: 2
dv550infov
Views: 144  |  Downloads: 0
dv550infos
Views: 152  |  Downloads: 0
dv550infok
Views: 161  |  Downloads: 0