B. Ramamurthy - PowerPoint PPT Presentation

About This Presentation
Title:

B. Ramamurthy

Description:

... SIGINT See signal.h for others SIGHUP, SIGINT, SIGILL, SIGTRAP, SIGFPE, SIGKILL SIGALRM (sent by kernel to a process after an alarm timer has expired) ... – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 24
Provided by: Bina5
Learn more at: https://cse.buffalo.edu
Category:

less

Transcript and Presenter's Notes

Title: B. Ramamurthy


1
Task ControlSignals and AlarmsChapter 7 and 8
  • B. Ramamurthy

2
Multi-tasking
  • How to create multiple tasks? Ex Xinu create()
  • How to control them?
  • ready()
  • resched()
  • How to synchronize them? How to communicate among
    them?
  • XINU semaphores, send and receive messages
  • How to (software) interrupt a process? signals

3
Examples
  • Consider g myProg.c
  • You want to kill this process after you started
    the compilation..hit cntrl-C
  • Consider execution of a program called badprog
  • gtbadprog
  • It core dumps .. What happened? The error in the
    program results in a signal to kernel to stop and
    dump the offending code
  • Consider kill p ltpidgt
  • Kill issues a termination signal to the process
    identified by the pid

4
Linux Processes
  • Similar to XINU Procs.
  • Lets understand how to create a linux process and
    control it.
  • Chapter 7 and 8 of text book.
  • Chapter 7 multi-tasking
  • Chapter 8 Task communication and synchronization

5
Process creation
  • Four common events that lead to a process
    creation are
  • 1) When a new batch-job is presented for
    execution.
  • 2) When an interactive user logs in / system
    initialization.
  • 3) When OS needs to perform an operation (usually
    IO) on behalf of a user process, concurrently
    with that process.
  • 4) To exploit parallelism an user process can
    spawn a number of processes.

6
Termination of a process
  • Normal completion, time limit exceeded, memory
    unavailable
  • Bounds violation, protection error, arithmetic
    error, invalid instruction
  • IO failure, Operator intervention, parent
    termination, parent request, killed by another
    process
  • A number of other conditions are possible.
  • Segmentation fault usually happens when you try
    write/read into/from a non-existent
    array/structure/object component. Or access a
    pointer to a dynamic data before creating it.
    (new etc.)
  • Bus error Related to function call and return.
    You have messed up the stack where the return
    address or parameters are stored.

7
Process control
  • Process creation in unix is by means of the
    system call fork().
  • OS in response to a fork() call
  • Allocate slot in the process table for new
    process.
  • Assigns unique pid to the new process..
  • Makes a copy of the process image, except for the
    shared memory.
  • both child and parent are executing the same code
    following fork()
  • Move child process to Ready queue.
  • it returns pid of the child to the parent, and a
    zero value to the child.

8
Process control (contd.)
  • All the above are done in the kernel mode in the
    process context. When the kernel completes these
    it does one of the following as a part of the
    dispatcher
  • Stay in the parent process. Control returns to
    the user mode at the point of the fork call of
    the parent.
  • Transfer control to the child process. The child
    process begins executing at the same point in the
    code as the parent, at the return from the fork
    call.
  • Transfer control another process leaving both
    parent and child in the Ready state.

9
Process Creation (contd.)
  • Parent process create children processes, which,
    in turn create other processes, forming a tree of
    processes
  • Generally, process identified and managed via a
    process identifier (pid)
  • Resource sharing
  • Parent and children share all resources
  • Children share subset of parents resources
  • Parent and child share no resources
  • Execution
  • Parent and children execute concurrently
  • Parent waits until children terminate

10
Process Termination
  • Process executes last statement and asks the
    operating system to delete it (exit)
  • Output data from child to parent (via wait)
  • Process resources are deallocated by operating
    system
  • Parent may terminate execution of children
    processes (abort)
  • Child has exceeded allocated resources
  • Task assigned to child is no longer required
  • If parent is exiting
  • Some operating system do not allow child to
    continue if its parent terminates
  • All children terminated - cascading termination

11
Example Code
  1. int retVal
  2. printf(" Just one process so far\n")
  3. printf(" Invoking/Calling fork() system
    call\n")
  4. retVal fork() / create new process/
  5. if (retVal 0)
  6. printf(" I am the child d \n",getpid())
  7. else if (retVal gt 0)
  8. printf(" I am the parent, child has pid d
    \n", retVal)
  9. else
  10. printf(" Fork returned an error d \n",
    retVal)

12
Input/output Resources
  • What is standard IO?
  • These are resources allocated to the process at
    the time of creation
  • From Wikipedia/Standard_streams

13
Signals
  • Signals provide a simple method for transmitting
    software interrupts to UNIX process
  • Signals cannot carry information directly, which
    limits their usefulness as an general
    inter-process communication mechanism
  • However each type of signal is given a mnemonic
    name Ex SIGINT
  • See signal.h for others
  • SIGHUP, SIGINT, SIGILL, SIGTRAP, SIGFPE, SIGKILL
  • SIGALRM (sent by kernel to a process after an
    alarm timer has expired)
  • SIGTERM
  • signal (signal id, function) simply arms the
    signal

14
Signal Value Action Comment
--------------------------------------------------
----------------------- SIGHUP 1
Term Hangup detected on controlling
terminal or death of controlling
process SIGINT 2 Term
Interrupt from keyboard SIGQUI 3
Core Quit from keyboard SIGILL 4
Core Illegal Instruction SIGABR
6 Core Abort signal from abort(3)
SIGFP 8 Core Floating point
exception SIGKILL 9 Term Kill
signal SIGSEG 11 Core Invalid
memory reference SIGPIPE 13 Term
Broken pipe write to pipe with no readers
SIGALRM 14 Term Timer signal from
alarm(2) SIGTERM 15 Term
Termination signal SIGUSR1 30,10,16
Term User-defined signal 1 SIGUSR2
31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or
terminated SIGCONT 19,18,25 Cont
Continue if stopped SIGSTOP 17,19,23
Stop Stop process SIGTSTP 18,20,24
Stop Stop typed at tty SIGTTIN
21,21,26 Stop tty input for background
process SIGTTOU 22,22,27 Stop tty
output for background process The
signals SIGKILL and SIGSTOP cannot be caught,
blocked, or ignored.
15
Realtime signals
  • Linux supports real-time signals as originally
    defined in the POSIX.1b real-time extensions (and
    now included in POSIX.1-2001). Linux supports 32
    real-time signals, numbered from 32 (SIGRTMIN) to
    63 (SIGRT- MAX)
  • Main difference is that these are queued and not
    lost.
  • Realtime signals are delivered in guaranteed
    order.

16
Intercept Signals
Task1
Task2
Two essential parameters are destination process
identifier and the signal code number kill
(pid, signal) Signals are a useful way of
handling intermittent data arrivals or rare
error conditions.
17
Handling Signals
  • Look at the examples
  • Catching SIGALRM
  • Ignoring SIGALRM
  • sigtest.c
  • sigHandler.c
  • pingpong.c
  • See /usr/include/sys/iso/signal_iso.h for signal
    numbers

18
Signals and Alarms
  • include ltsignal.hgt
  • unsigned int alarm( unsigned int seconds )
  • alarm(a) will start a timer for a secsonds and
    will interrupt the calling process after a secs.
  • time(t) will get you current time in the
    variable t declared as time_t t
  • ctime(t) will convert time to ascii format
  • Alarm has a sigaction function that is set for
    configuring the alarm handler etc.
  • sigaction(SIGALRM, act, oldact) the third
    paramter is for old action configuration

19
Sample programs
  • Starting new tasks in linux page 165
  • Programs in pages 174-180 on signals and alarms
  • See demos directory for the code
  • See page 175 for the second program
  • See page 178 for the third program

20
Pingpong
Parent
PSIG 43
Child
CSIG 42
21
Observe in pingpong.c
  • pause() indefinite
  • sleep() sleep is random/finite time
  • While loop
  • Signal handlers
  • Re-arming of the signals

22
Volatile
  • A variable should be declared volatile whenever
    its value could change unexpectedly. In practice,
    only three types of variables could change
  • Memory-mapped peripheral registers
  • Global variables modified by an interrupt service
    routine
  • Global variables within a multi-threaded
    application
  • Registers in devices are abstracted for
    programmatic access as volatile type

23
Summary
  • We studied signals and alarms and their
    specification and example programs
Write a Comment
User Comments (0)
About PowerShow.com