Unformatted text preview:

Signals, SynchronizationAnnouncementsRound Robin Scheduling (cont.)Multi-level Queue SchedulingMulti-level Feedback QueuesSignalsSlide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Chapter 8: SynchronizationSynchronizationSlide 19Slide 20Slide 21Signals,SynchronizationCSCI 3753 Operating SystemsSpring 2005Prof. Rick HanAnnouncements•Program Assignment #1 due Tuesday Feb. 15 at 11:55 pm–TA will explain parts b-d in recitation•Read chapters 7 and 8•Today:–Finish RR and multi-level scheduling,–cover Signals (helpful for PA #1), and –begin Ch. 8 SynchronizationRound Robin Scheduling (cont.)•Weighted Round Robin - each process is given some number of time slices, not just one per round•this is a way to provide preferences or priorities even with preemptive time slicingMulti-level Queue Scheduling•Partitions ready queue into several queues–different processes have different needs, e.g. foreground and background–so don’t apply the same scheduling policy to every process, e.g. foreground gets RR, background gets FCFS•Queues can be organized by priority, or each given a percentage of CPU, or a hybrid combinationMulti-level Feedback Queues•Allows processes to move between queues•Criteria for movement could depend upon:–age of a process: old processes move to higher priority queues–behavior of a process: could be CPU-bound processes move down the hierarchy of queues, allowing interactive and I/O-bound processes to move up•assign a time slice to each queue, with smaller time slices higher up•if a process doesn’t finish by its time slice, it is moved down to the next lowest queue•over time, a process gravitates towards the time slice that typically describes its average local CPU burstSignals•Allows one process to interrupt another process using OS signaling mechanisms•A signal is an indication that notifies a process that some event has occurred•30 types of signals on Linux systems•Each signal corresponds to some kind of system eventSignals•Without signals, low-level hardware exceptions are processed by the kernel’s exception handlers only, and are not normally visible to user processes•Signals expose occurrences of such low-level exceptions to user processes•If a process attempts to divide by zero, kernel sends a SIGFPE signal (number 8)•If a process makes an illegal memory reference, the kernel sends it a SIGSEGV signal (number 11)•If you type a ctrl-C, this sends a SIGINT to foreground process•A process can terminate another process by sending it a SIGKILL signal (#9)SignalsNumber Name/Type Event2 SIGINT Interrupt from keyboard11 SIGSEGV invalid memory ref (seg fault)14 SIGALRM Timer signal from alarm function29 SIGIO I/O now possible on descriptorSignals•Kernel sends a signal to a destination process by updating some state in the context of the destination process•A destination process receives a signal when it is forced by the kernel to react in some way to the delivery of the signal:–can ignore the signal–terminate / exit (this is the usual default)–catch the signal by executing a user-defined function called the signal handlerSignals•A signal that has been sent but not yet received is called a pending signal–At any point in time, there can be at most one pending signal of a particular type (signal number)–A pending signal is received at most once•a process can selectively block the receipt of certain signals–when a signal is blocked, it can be delivered, but the resulting pending signal will not be received until the process unblocks the signal•For each process, the kernel maintains the set of pending signals in the pending bit vector, and the set of blocked signals in the blocked bit vectorSignals•Default action is to terminate a process•Sending signals with kill function–kill -9 PID at command line, or can call kill from within a process•A process can send SIGALRM signals to itself by calling the alarm function–alarm(T seconds) arranges for kernel to send a SIGALRM signal to calling process in T seconds–see code example next slide•#include<signal.h>•uses signal function to install a signal handler function that is called asynchronously, interrupting the infinite while loop in main, whenever the process receives a SIGALRM signal•When handler returns, control passes back to main, which picks up where it was interrupted by the arrival of the signal, namely in its infinite loopSignals#include <signal.h>int beeps=0;void handler(int sig) { if (beeps<5) { alarm(3); beeps++; } else { printf(“DONE\n”); exit(0); }}int main() { signal(SIGALRM, handler); alarm(3); while(1) { ; } exit(0);}Signal handlercause next SIGALRM to be sent to this process in 3 secondsregister signal handlercause first SIGALRM to be sent to this process in 3 secondsinfinite loop that gets interrupted by signal handlingSignals•Receiving signals:–when a kernel is returning from some exception handler, it checks to see if there are any pending signals for a process before passing control to the process–default action is typically termination– signal(signum, handler) function is used to change the action associated with a signal•if handler is SIG_IGN, then signals of type signum are ignored•if handler is SIG_DFL, then revert to default action•otherwise handler is user-defined function call the signal handler. This installs or registers the signal handler.–Invocation of the signal handler is called catching the signal–Execution of signal handler is called handling the signalSignals•When a process catches a signal of type signum=k, the handler installed for signal k is invoked with a single integer argument set to k•This argument allows the same handler function to catch different types of signals•When handler executes its return statement (finishes), control usually passes back to the instruction where the process was interruptedSignals•Handling multiple signals–choose to handle the lower number signals first–pending signals are blocked,•e.g. if a 2nd SIGINT is received while handling 1st SIGINT, the 2nd SIGINT becomes pending and won’t be received until after the handler returns–pending signals are not queued•there can be at most one pending signal of type k, e.g. if a 3rd SIGINT arrives while the 1st SIGINT is being handled and the 2nd SIGINT is already pending, then the 3rd SIGINT is dropped–system calls can be interrupted•slow system calls


View Full Document

CU-Boulder CSCI 3753 - Signals, Synchronization

Download Signals, Synchronization
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Signals, Synchronization and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Signals, Synchronization 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?