SlideShare a Scribd company logo
Processes



© 2010 Anil Kumar Pugalia <email@sarika-pugs.com>
               All Rights Reserved.
What to Expect?
W's of a Process
Processes in Linux
  Scheduling & Preemption
  Process States & Transitions
  Process Management
  Programming the Processes




         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   2
                        All Rights Reserved.
What is a Process?
Program in Execution
Executable/Program Loaded → Process
Program is just the Code & initial Data part
Additionally
  Value of Variables
  Stack
  Heap
  Program Counter
  Processor Registers
  And any other OS resources, needed by the Program
make it a Process
               © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   3
                              All Rights Reserved.
Why we need a Process?
To do any task or job
Moreover, to achieve multi-processing
  Really do multiple tasks at a time (in multi-processor
  systems), Or
  At least get a feel of doing multiple tasks at a time (on
  uni-processor systems)
In turn needs
  Timesharing (on same processor)
  Scheduling
  Priority
  And for all these: Process Identifier (pid)
             © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   4
                            All Rights Reserved.
Let's View
Shell Local Processes: ps
Console attached System Processes: ps a
All System Processes: ps ax
List many more details: Add l
Observe
  uid, pid, ppid, priority, nice, status, tty, time
Dynamic Process Status: top
Try pid.c
            © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   5
                           All Rights Reserved.
Processes in Linux




© 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   6
               All Rights Reserved.
Linux Schedulers
Provide multi-tasking capabilities by
  Time Slicing
  Preemption
  Based on various task priorities
  Specified by its scheduling policies
Understand the following execution instances
  Kernel Thread
  User Process
  User Thread

          © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   7
                         All Rights Reserved.
Linux Schedulers ...
Linux Basic Scheduling
  Normal (SCHED_OTHER) – Fairness
  Scheduling
Other Advanced Scheduling supported
  Round Robin (SCHED_RR)
  FIFO (SCHED_FIFO)
All Schedulers are O(1)


        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   8
                       All Rights Reserved.
Linux Kernel Preemption Levels
None (PREEMPT_NONE)
 No forced preemption
 Overall throughput, on average, is good
Voluntary (PREEMPT_VOLUNTARY)
 First stage of latency reduction
 Explicit preemption points are placed at strategic locations
Standard (PREEMPT_DESKTOP)
 Preemption enabled everywhere except within critical sections
 Good for soft real-time applications, like audio, multimedia, …
Kernel Parameter: preempt



             © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>     9
                            All Rights Reserved.
Kernel Preemption Visualization

                            Time

                                                            User Space




                                                            System Call
                                                            Interface




                                                            Kernel Space
      Process A
      Process B


        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>                  10
                       All Rights Reserved.
Process Context Switch

                              Time



             Save State                           Save State
              into PCB A                           into PCB B
            Reload State                         Reload State
             from PCB B                           from PCB A




Interrupt or System Call             Interrupt or System Call



    Process A              Time Wasted in Context Switch
    Process B



       © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>        11
                      All Rights Reserved.
Generic Process State Diagram
                                       Time Run-Out
     New                                                        Terminated
           Admitted                      Dispatch               Exit
                            Ready                     Running          Zombie
                 Wakeup on
                                              Block on
                 I/O or event
                                              I/O or
                 completion
                                              wait event
                           Blocked                                     Stopped
                Uninterruptible or Interruptible


Ready & Blocked states have Queues
Additional States in Linux
  Defunct / Zombie (Terminated but not reaped by its parent)
  Stopped (By job control signal or because being traced)



                 © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>               12
                                All Rights Reserved.
Linux Process States
Process States as in Linux
  TASK_RUNNING (R) – ready or running
  TASK_INTERRUPTIBLE (S) – blocked (waiting for an event)
  TASK_UNINTERRUPTIBLE (D) – blocked (usually for I/O)
  TASK_ZOMBIE (Z) – terminated but not cleaned up by its
  parent
  TASK_STOPPED (T) – execution stopped
Mutually exclusive
Additional Information: Foreground (+), Threaded (l)



            © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   13
                           All Rights Reserved.
Process Management in Linux
Needs collation of all this information
  Address Space (Code, Variables, Stack, Heap)
  Processor State (PC, Registers, …)
  OS resources in use (File descriptors, ...)
  Scheduling Info, Priority, ...
  Preemption Info, Process State, ...
for every Process
Stored in structure of type 'task_struct'
  Maintained by Linux Kernel on a per process basis
  Also called the Process Descriptor / Process Control Block

             © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   14
                            All Rights Reserved.
Process Control Block (PCB)
Listing: <kernel_source>/include/linux/sched.h
Some of its fields are
  volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
  void *stack;
  unsigned int flags; /* per process flags */
  int prio, static_prio, normal_prio;
  unsigned int rt_priority;
  const struct sched_class *sched_class;
  unsigned int policy;
  struct mm_struct *mm, active_mm; / Pointers to Memory Regions, Descriptors */
  pid_t pid, tgid;
  struct task_struct *real_parent; /* real parent process */
  struct task_struct *parent; /* recipient of SIGCHLD, wait4() reports */
  struct list_head children /* list of its children */, sibling; /* linkage in its parent's children list */
  struct task_struct *group_leader; /* threadgroup leader */
  struct list_head thread_group;
  struct fs_struct fs; /* file system info like current directory, … */
  struct files_struct files; / file descriptors */
  struct signal_struct signal; / signal handlers */
  sigset_t blocked, real_blocked, saved_sigmask;
  struct sigpending pending; /* signals received */

                              © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>                                15
                                             All Rights Reserved.
Basic Process Management
bg - Starts a suspended process in the
background
fg - Starts a suspended process in the
foreground
jobs - Lists the jobs running
pidof - Find the process ID of a running
program
top - Display the processes that are using
the most CPU resources
        © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   16
                       All Rights Reserved.
Programming Linux Processes




   © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   17
                  All Rights Reserved.
Process Creation
From Shell
  By running a Command / Program / Script (Even by .)
  By 'exec' ing a Command / Program
By Programming
  Using system()
    Simple but Inefficient
    Security risks
  Using fork() and exec() family function
    Comparatively complex
    Greater flexibility, speed, and security

            © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   18
                           All Rights Reserved.
Using the exec family
All exec* functions do the same thing
  Just in different ways
Replaces current program by a new one
And hence never returns, unless an error
New program is immediately started
Process remains the same
  Process Id, Parent Process Id
  Current directory, ...
  Open file descriptor tables, ...
          © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   19
                         All Rights Reserved.
exec* function specifics
exec*p (execvp, execlp)
  Accepts a program name
  Searches it in the current execution path
  Others must be given the full path
execv* (execv, execvp, execve)
  Argument list should be a NULL-terminated array of pointers to strings
execl* (execl, execlp, execle)
  Argument list uses the varargs mechanism
exec*e (execve, execle)
  Accepts an additional argument: an array of environment variables
  It should be a NULL-terminated array of pointers to character strings
  Each character string should be of the form “VARIABLE=value”




                 © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>         20
                                All Rights Reserved.
Cons of using fork
Forked child process executes the copy of
parent process' program
And typically, a fork is followed by exec
  Replacing the copy by the new program
What is the point of copying?
Overhead!! What else?
Is there any way out to prevent this?
Yes. And it is ...
          © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   21
                         All Rights Reserved.
Copy On Write (COW)
Parent and Child shares the Address Space (ro)
Data & other Resources are marked COW
If written to, a duplicate is made and each
process receives a unique copy
Consequently, the duplication of resources occurs
only when they are written to
Avoids copy in cases of immediate exec
fork()'s only overheads
  Duplication of the parent's page tables
  Creation of a unique PCB for the child
           © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   22
                          All Rights Reserved.
Process Termination
Parent & Children Processes terminate as usual
  Success Exit – Normal Success
  Error Exit – Normal Failure
  Fatal Exit – Signaled from Kernel Space for a Bug
  Kill Exit – Signaled by a Process
But which one of them terminates, first?
Does it matter?
If it matters, parents can wait for their children
  Using wait family of system calls
  And can retrieve information about its child’s termination
In fact, wait does the cleanup act for the exited child
             © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   23
                            All Rights Reserved.
Using the wait family
Four different system calls in the wait family
  wait(): Block until one of its child processes exits
  waitpid(): Wait for a specific child to exit/stop/resume
  wait3(): Along with, return resource usage information
  about the exiting/stopping/resuming child process
  wait4(): wait3() for a specific child or children
All of these fill up a status code
  in an integer pointer argument
  about how the child process exited
  which can be decoded using ...


             © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   24
                            All Rights Reserved.
wait status macros
WIFEXITED, WEXITSTATUS
WIFSIGNALED, WTERMSIG, WCOREDUMP
WIFSTOPPED, WSTOPSIG
WIFCONTINUED




       © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   25
                      All Rights Reserved.
What if Parents Don't Wait?
If Parent dies before the Children
  Children become Orphans
  And are adopted by the Init Process
    which then does the cleanup on their exit
If a Child exits before the Parent
  That's a sad thing :)
  It will become a Ghost / Zombie
  Note that, even if the parent does a wait later
    It remains a Zombie till then
         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   26
                        All Rights Reserved.
Who Cleans Up a Zombie?
Typically, again a Parent
  By doing a wait on it
What if the parent exits without “wait”?
Does it stay around in the system?
Not really. It gets inherited by init
  which then cleans it up, right there




         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   27
                        All Rights Reserved.
What all have we learnt?
W's of a Process?
Process Scheduling & Preemption in Linux
Process States & Transitions (Linux specific)
Linux Process Management using PCB
Programming Linux Processes
  Creation Techniques: fork, exec* & COW
  Termination & Waiting Techniques
  Orphans & Zombies

         © 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   28
                        All Rights Reserved.
Any Queries?




© 2010 Anil Kumar Pugalia <email@sarika-pugs.com>   29
               All Rights Reserved.

More Related Content

PDF
Cs8493 unit 4
PPT
Linux memory
PPTX
cpu scheduling
PDF
Bootloaders
PDF
System Calls
PDF
Linux Memory Management
PPTX
Process synchronization
PDF
USB Drivers
Cs8493 unit 4
Linux memory
cpu scheduling
Bootloaders
System Calls
Linux Memory Management
Process synchronization
USB Drivers

What's hot (20)

PPTX
Fundamentals of operating system
PDF
operating system structure
PDF
Embedded Software Design
PDF
A practical guide to buildroot
PPT
Chapter 2 Operating System Structures.ppt
PDF
BeagleBone Black Booting Process
PPT
How to install windows 10
PDF
Telecom Security
PDF
IGCSE ICT - Types and Components of Computer Systems - Hardware and Software ...
PDF
Operating systems system structures
PDF
Course 102: Lecture 24: Archiving and Compression of Files
PPSX
08. Central Processing Unit (CPU)
PDF
Fixed partitioning of memory
PPT
Chapter 7
PDF
PPT
Ch2: Computer System Structure (OS)
PPTX
All About Cybersecurity Frameworks.pptx
PPT
Chapter 1: Introduction to Operating System
PPTX
Threads .ppt
Fundamentals of operating system
operating system structure
Embedded Software Design
A practical guide to buildroot
Chapter 2 Operating System Structures.ppt
BeagleBone Black Booting Process
How to install windows 10
Telecom Security
IGCSE ICT - Types and Components of Computer Systems - Hardware and Software ...
Operating systems system structures
Course 102: Lecture 24: Archiving and Compression of Files
08. Central Processing Unit (CPU)
Fixed partitioning of memory
Chapter 7
Ch2: Computer System Structure (OS)
All About Cybersecurity Frameworks.pptx
Chapter 1: Introduction to Operating System
Threads .ppt
Ad

Viewers also liked (20)

PPT
Iptables in linux
PPT
Linux booting procedure
PPT
Iptables
DOCX
6 stages of linux boot process
PDF
Packet Filtering Using Iptables
PPTX
Linux booting process!!
PDF
Iptables presentation
PPTX
System and network administration network services
PPTX
Linux process management
PPTX
Process management in linux
PDF
Linux File System
PDF
Introduction to Linux
PDF
gcc and friends
PDF
PCI Drivers
PDF
Embedded C
PDF
PDF
System Calls
PDF
Synchronization
PDF
Iptables in linux
Linux booting procedure
Iptables
6 stages of linux boot process
Packet Filtering Using Iptables
Linux booting process!!
Iptables presentation
System and network administration network services
Linux process management
Process management in linux
Linux File System
Introduction to Linux
gcc and friends
PCI Drivers
Embedded C
System Calls
Synchronization
Ad

Similar to Processes (20)

PDF
PPTX
AOS_Module_4ssssssssssssssssssssssss.pptx
PPTX
Process management
DOCX
LP-Unit3.docx
PDF
Linux Internals - Part II
PPTX
unit 2- process management of Operating System
DOCX
Week 11Linux InternalsProcesses, schedulingLecture o.docx
PPT
Chap3.ppt
PPT
Operating System 3
PPTX
Managing Processes in Unix.pptx
PPTX
Managing Processes in Unix.pptx
PPTX
04_ForkPipe.pptx
PPTX
Advanced Operating Systems......Process Management
PPT
11_UNIX_Processes_Including_Select.ppt
PPTX
07 Systems Software Programming-IPC-Signals.pptx
DOCX
Ecet 360 Enthusiastic Study / snaptutorial.com
DOCX
Ecet 360 Massive Success / snaptutorial.com
DOCX
Ecet 360 Success Begins / snaptutorial.com
AOS_Module_4ssssssssssssssssssssssss.pptx
Process management
LP-Unit3.docx
Linux Internals - Part II
unit 2- process management of Operating System
Week 11Linux InternalsProcesses, schedulingLecture o.docx
Chap3.ppt
Operating System 3
Managing Processes in Unix.pptx
Managing Processes in Unix.pptx
04_ForkPipe.pptx
Advanced Operating Systems......Process Management
11_UNIX_Processes_Including_Select.ppt
07 Systems Software Programming-IPC-Signals.pptx
Ecet 360 Enthusiastic Study / snaptutorial.com
Ecet 360 Massive Success / snaptutorial.com
Ecet 360 Success Begins / snaptutorial.com

More from Anil Kumar Pugalia (17)

PDF
File System Modules
PDF
Kernel Debugging & Profiling
PDF
Introduction to Linux
PDF
Playing with R L C Circuits
PDF
Audio Drivers
PDF
Video Drivers
PDF
Mobile Hacking using Linux Drivers
PDF
Shell Scripting
PDF
References
PDF
Functional Programming with LISP
PDF
Power of vi
PDF
"make" system
PDF
Hardware Design for Software Hackers
PDF
RPM Building
PDF
Linux User Space Debugging & Profiling
PDF
Linux Network Management
PDF
Inter Process Communication
File System Modules
Kernel Debugging & Profiling
Introduction to Linux
Playing with R L C Circuits
Audio Drivers
Video Drivers
Mobile Hacking using Linux Drivers
Shell Scripting
References
Functional Programming with LISP
Power of vi
"make" system
Hardware Design for Software Hackers
RPM Building
Linux User Space Debugging & Profiling
Linux Network Management
Inter Process Communication

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Modernizing your data center with Dell and AMD
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Approach and Philosophy of On baking technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
KodekX | Application Modernization Development
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
Network Security Unit 5.pdf for BCA BBA.
Modernizing your data center with Dell and AMD
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Approach and Philosophy of On baking technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KodekX | Application Modernization Development
MYSQL Presentation for SQL database connectivity
Digital-Transformation-Roadmap-for-Companies.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Unlocking AI with Model Context Protocol (MCP)
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Building Integrated photovoltaic BIPV_UPV.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

Processes

  • 1. Processes © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> All Rights Reserved.
  • 2. What to Expect? W's of a Process Processes in Linux Scheduling & Preemption Process States & Transitions Process Management Programming the Processes © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 2 All Rights Reserved.
  • 3. What is a Process? Program in Execution Executable/Program Loaded → Process Program is just the Code & initial Data part Additionally Value of Variables Stack Heap Program Counter Processor Registers And any other OS resources, needed by the Program make it a Process © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 3 All Rights Reserved.
  • 4. Why we need a Process? To do any task or job Moreover, to achieve multi-processing Really do multiple tasks at a time (in multi-processor systems), Or At least get a feel of doing multiple tasks at a time (on uni-processor systems) In turn needs Timesharing (on same processor) Scheduling Priority And for all these: Process Identifier (pid) © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 4 All Rights Reserved.
  • 5. Let's View Shell Local Processes: ps Console attached System Processes: ps a All System Processes: ps ax List many more details: Add l Observe uid, pid, ppid, priority, nice, status, tty, time Dynamic Process Status: top Try pid.c © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 5 All Rights Reserved.
  • 6. Processes in Linux © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 6 All Rights Reserved.
  • 7. Linux Schedulers Provide multi-tasking capabilities by Time Slicing Preemption Based on various task priorities Specified by its scheduling policies Understand the following execution instances Kernel Thread User Process User Thread © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 7 All Rights Reserved.
  • 8. Linux Schedulers ... Linux Basic Scheduling Normal (SCHED_OTHER) – Fairness Scheduling Other Advanced Scheduling supported Round Robin (SCHED_RR) FIFO (SCHED_FIFO) All Schedulers are O(1) © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 8 All Rights Reserved.
  • 9. Linux Kernel Preemption Levels None (PREEMPT_NONE) No forced preemption Overall throughput, on average, is good Voluntary (PREEMPT_VOLUNTARY) First stage of latency reduction Explicit preemption points are placed at strategic locations Standard (PREEMPT_DESKTOP) Preemption enabled everywhere except within critical sections Good for soft real-time applications, like audio, multimedia, … Kernel Parameter: preempt © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 9 All Rights Reserved.
  • 10. Kernel Preemption Visualization Time User Space System Call Interface Kernel Space Process A Process B © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 10 All Rights Reserved.
  • 11. Process Context Switch Time Save State Save State into PCB A into PCB B Reload State Reload State from PCB B from PCB A Interrupt or System Call Interrupt or System Call Process A Time Wasted in Context Switch Process B © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 11 All Rights Reserved.
  • 12. Generic Process State Diagram Time Run-Out New Terminated Admitted Dispatch Exit Ready Running Zombie Wakeup on Block on I/O or event I/O or completion wait event Blocked Stopped Uninterruptible or Interruptible Ready & Blocked states have Queues Additional States in Linux Defunct / Zombie (Terminated but not reaped by its parent) Stopped (By job control signal or because being traced) © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 12 All Rights Reserved.
  • 13. Linux Process States Process States as in Linux TASK_RUNNING (R) – ready or running TASK_INTERRUPTIBLE (S) – blocked (waiting for an event) TASK_UNINTERRUPTIBLE (D) – blocked (usually for I/O) TASK_ZOMBIE (Z) – terminated but not cleaned up by its parent TASK_STOPPED (T) – execution stopped Mutually exclusive Additional Information: Foreground (+), Threaded (l) © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 13 All Rights Reserved.
  • 14. Process Management in Linux Needs collation of all this information Address Space (Code, Variables, Stack, Heap) Processor State (PC, Registers, …) OS resources in use (File descriptors, ...) Scheduling Info, Priority, ... Preemption Info, Process State, ... for every Process Stored in structure of type 'task_struct' Maintained by Linux Kernel on a per process basis Also called the Process Descriptor / Process Control Block © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 14 All Rights Reserved.
  • 15. Process Control Block (PCB) Listing: <kernel_source>/include/linux/sched.h Some of its fields are volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; unsigned int flags; /* per process flags */ int prio, static_prio, normal_prio; unsigned int rt_priority; const struct sched_class *sched_class; unsigned int policy; struct mm_struct *mm, active_mm; / Pointers to Memory Regions, Descriptors */ pid_t pid, tgid; struct task_struct *real_parent; /* real parent process */ struct task_struct *parent; /* recipient of SIGCHLD, wait4() reports */ struct list_head children /* list of its children */, sibling; /* linkage in its parent's children list */ struct task_struct *group_leader; /* threadgroup leader */ struct list_head thread_group; struct fs_struct fs; /* file system info like current directory, … */ struct files_struct files; / file descriptors */ struct signal_struct signal; / signal handlers */ sigset_t blocked, real_blocked, saved_sigmask; struct sigpending pending; /* signals received */ © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 15 All Rights Reserved.
  • 16. Basic Process Management bg - Starts a suspended process in the background fg - Starts a suspended process in the foreground jobs - Lists the jobs running pidof - Find the process ID of a running program top - Display the processes that are using the most CPU resources © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 16 All Rights Reserved.
  • 17. Programming Linux Processes © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 17 All Rights Reserved.
  • 18. Process Creation From Shell By running a Command / Program / Script (Even by .) By 'exec' ing a Command / Program By Programming Using system() Simple but Inefficient Security risks Using fork() and exec() family function Comparatively complex Greater flexibility, speed, and security © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 18 All Rights Reserved.
  • 19. Using the exec family All exec* functions do the same thing Just in different ways Replaces current program by a new one And hence never returns, unless an error New program is immediately started Process remains the same Process Id, Parent Process Id Current directory, ... Open file descriptor tables, ... © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 19 All Rights Reserved.
  • 20. exec* function specifics exec*p (execvp, execlp) Accepts a program name Searches it in the current execution path Others must be given the full path execv* (execv, execvp, execve) Argument list should be a NULL-terminated array of pointers to strings execl* (execl, execlp, execle) Argument list uses the varargs mechanism exec*e (execve, execle) Accepts an additional argument: an array of environment variables It should be a NULL-terminated array of pointers to character strings Each character string should be of the form “VARIABLE=value” © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 20 All Rights Reserved.
  • 21. Cons of using fork Forked child process executes the copy of parent process' program And typically, a fork is followed by exec Replacing the copy by the new program What is the point of copying? Overhead!! What else? Is there any way out to prevent this? Yes. And it is ... © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 21 All Rights Reserved.
  • 22. Copy On Write (COW) Parent and Child shares the Address Space (ro) Data & other Resources are marked COW If written to, a duplicate is made and each process receives a unique copy Consequently, the duplication of resources occurs only when they are written to Avoids copy in cases of immediate exec fork()'s only overheads Duplication of the parent's page tables Creation of a unique PCB for the child © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 22 All Rights Reserved.
  • 23. Process Termination Parent & Children Processes terminate as usual Success Exit – Normal Success Error Exit – Normal Failure Fatal Exit – Signaled from Kernel Space for a Bug Kill Exit – Signaled by a Process But which one of them terminates, first? Does it matter? If it matters, parents can wait for their children Using wait family of system calls And can retrieve information about its child’s termination In fact, wait does the cleanup act for the exited child © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 23 All Rights Reserved.
  • 24. Using the wait family Four different system calls in the wait family wait(): Block until one of its child processes exits waitpid(): Wait for a specific child to exit/stop/resume wait3(): Along with, return resource usage information about the exiting/stopping/resuming child process wait4(): wait3() for a specific child or children All of these fill up a status code in an integer pointer argument about how the child process exited which can be decoded using ... © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 24 All Rights Reserved.
  • 25. wait status macros WIFEXITED, WEXITSTATUS WIFSIGNALED, WTERMSIG, WCOREDUMP WIFSTOPPED, WSTOPSIG WIFCONTINUED © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 25 All Rights Reserved.
  • 26. What if Parents Don't Wait? If Parent dies before the Children Children become Orphans And are adopted by the Init Process which then does the cleanup on their exit If a Child exits before the Parent That's a sad thing :) It will become a Ghost / Zombie Note that, even if the parent does a wait later It remains a Zombie till then © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 26 All Rights Reserved.
  • 27. Who Cleans Up a Zombie? Typically, again a Parent By doing a wait on it What if the parent exits without “wait”? Does it stay around in the system? Not really. It gets inherited by init which then cleans it up, right there © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 27 All Rights Reserved.
  • 28. What all have we learnt? W's of a Process? Process Scheduling & Preemption in Linux Process States & Transitions (Linux specific) Linux Process Management using PCB Programming Linux Processes Creation Techniques: fork, exec* & COW Termination & Waiting Techniques Orphans & Zombies © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 28 All Rights Reserved.
  • 29. Any Queries? © 2010 Anil Kumar Pugalia <email@sarika-pugs.com> 29 All Rights Reserved.