Understanding Process Management in Computer Systems

 
Process Management
 
Process management related system calls
Process creation
Process termination
Running another program in a process
Synchronization between parent/child processes
 
 
 
 
Readings
APUE 7.6, 8.3, 8.5, 8.6, 8.10
UNP 4.7
 
 
 
1
 
Computer Systems Overview
 
User
Space
 
OS
CPU
scheduling
Memory
Mgmt
File system
Device
Mgmt
 
Processes
Network Stack
System Call Interface
 
2
 
Hardware: CPU, Memory, Disk, Keyboard, Monitor
 
Users’ view
Program1
 
Each program owns its own (virtual) computer.
The execution of a program does not affect one
another.
CPU
Memory
Disk
Keyboard
Monitor
Program2
CPU
Memory
Disk
Keyboard
Monitor
ProgramX
CPU
Memory
Disk
Keyboard
Monitor
 
Process
 
Informal definition
A process is a program in execution
 
Process is not the same as a program.
Program is a passive entity stored in disk
Program (code) is just one part of the process.
 
4
 
What else in a Process?
 
Process context:
Memory space (static, dynamic)
Procedure call stack
Open files, connections
Registers and counters :
Program counter, stack pointer, general purpose registers
……
 
5
 
Memory Layout of a Process
 
Text
Machine instructions
Data
Global variables
Heap
Dynamically allocated memories
(malloc, new, etc)
Stack
Local variables
Function calls
 
6
 
text
 
data
 
heap
 
stack
 
Why Process?
 
Allowing multiple processes (users) to share the
system resources.
Process isolation (the illusion that each process is the only
one on the machine).
Process interaction (synchronization, inter-process
communication).
Which is more important?
 
7
 
Examining Processes in Unix
 
ps command
Standard process attributes
Try ‘ps –ef’
 
/proc  directory
All Linux distributions, some other OSes to provide
hardware, system, and process information
/proc/cpuinfo, /proc/memory, /proc/sys,
/proc/####(PID) etc
man proc 
to get more information on /proc
 
top, vmstat command
Examining CPU and memory usage statistics.
 
8
 
Creating a New Process  - fork()
 
 
pid = 
fork()
;
 
if (pid == -1) {
  
fprintf(stderr, "
fork failed\n
");
  
exit(1);
 
}
 
 
if (pid == 0) {
  
printf(“
This is the child
\n");
  
exit(0);
 
}
 
 
if (pid > 0) {
  
printf(“
This is parent. The child is %d\n
", pid);
  
exit(0);
 
}
 
9
UNIX convention: -1 is
the failure code for all
UNIX system calls
 
P
o
i
n
t
s
 
t
o
 
N
o
t
e
 
fork() 
is called once …
… but it returns twice!!
Once in the parent and
Once in the child
See example1.c
fork() basically duplicates the parent process
image
Both processes are exactly the same after the fork() call.
Are there any dependence between the two processes?
Provide a way to distinguish the parent and the child
 
Parent and child share text segment (machine instructions)
Parent and child do not share other memory including data
space, stack, and heap
 
10
 
P
o
i
n
t
s
 
t
o
 
N
o
t
e
 
How to distinguish parent and child??
Return value of fork() in child = 0
Return value in parent = process id of child
See example2.c
What about the data in the program?
See example6.c, example6b.c
 
Return value of -1 indicates error in all UNIX system
calls.
Is it true: All processes are created by fork() in UNIX?
 
11
 
Running New Program in a Process
 
Exec() family of functions
Completely replace current process with a new program
Various forms
int 
execl
(char * pathname, char * arg0, …, (char *)0);
int 
execv
(char * pathname, char * argv[]);
int 
execle
(char * pathname, char * arg0, …, (char *)0, char envp[]);
int 
execlp
(char * filename, char * arg0, …, (char *)0);
int 
execvp
(char * filename, char * argv[]);
Notation convention
l: list of arguments
v: vector of arguments
e: environment variables
p: searching PATH to locate filename, unless filename contains /
We can use any of them, but normally only one of them is system call (execve),
others are library functions
man execve
 
12
 
execv
 
int 
execv
(char * pathname, char *
argv[]);
Example: to run “/bin/ls –l –a /”
pathname: file path for the executable
char *argv[]: must be exactly the same as the C/C++
command line argument.
argv[0] = “/bin/ls”;
argv[1] = “-l”;
argv[2] = “-a”;
argv[3] = “/”;
a
r
g
v
[
4
]
 
=
 
N
U
L
L
;
See example3f.c, example3d.c, example3e.c
 
Examples
 
Running one command example3a.c
Run all commands in the command line argument –
example3b.c
 
How does a parent know if a child process has run
successfully?
 
14
 
Properties of 
exec()
 
Replaces current process image with new
program image.
If successful, everything after the exec() call will
NOT be executed.
Will exec() return anything other than -1 (on error)?
 
15
Running a Command without Killing the
Process
16
Parent
Child
 
Fork(…)
 
Exec(…)
New program
image
in execution
 
Terminating a Process
 
exit (int status)
Clean up the process (e.g close all files)
Tell its parent processes that he is dying (SIGCHLD)
Tell child processes that he is dying (SIGHUP)
Exit status can be accessed by the parent process.
 
See example3.c
 
17
 
Parent/Child Synchronization
 
Parent created a child, it has the responsibility to see
the child through:
check if the child is done.
wait, waitpid
.
Both block if no child process changes state
waitpid
 has option to return immediately if no child has exited.
check the exit status of the child
pid_t wait(int *stat_loc), see example4.c (and example4a.c)
Macros related to exit status
WIFEXITED(status), WEXISTSTATUS(status)
WIFSIGNALED(status), WIFSTOPPED(status),
WIFCONTINUED(status)
 A child has no responsibility for the parent
 
18
 
Zombie and Orphan Processes
 
What happens when a child process terminates but the parent
does not wait or has not waited for it?
The child process becomes a 
zombie process
 (see example12.c)
System recycles most of its resources, including process image, and
closes all files opened by the process
System does maintain certain information, including process ID, exit
status, and CPU time, until it is waited
What happens when a parent terminates without waiting for
child processes to terminate?
The child processes become 
orphan process 
(normally only mean the
child processes that are still running)
They will be adopted by a special process (normally init, with process
ID 1)
Init waits for each (adopted) child process, so no zombie
What happens to a zombie process when the parent process
terminates?
They will also be adopted by init (orphaned zombie)
And they are removed (waited) by init
 
19
 
Process ID
 
Processes are identified by a process id (pid)
getpid(): find your own pid
getppid(): find the pid of the parent
 
See example5.c for the time for system calls versus
regular routine calls.
Linux getpid() is highly optimized
Try run example5.c on program.cs.fsu.edu
 
20
 
Questions to Consider
 
How to implement the 
system
 routine?
How to prevent a child process to become long-term
zombies?
Note that a parent process may run for a long time before it
terminates, or it will not terminate under normal conditions
(for example, a web server)
 
21
 
Summary/Review
 
Why processes?
What is process context?
How to check processes in UNIX?
What does fork() do? What is its return value?
Does fork() create all processes in a UNIX system?
What does execv() do? What is its return value?
How to run a command in a program without getting
killed?
Does exit completely clean up a process?
Can a parent process tell if its child process terminate
normally?
Can a child process tell if its parent process terminate
normally?
 
 
 
 
Slide Note
Embed
Share

Exploring the concepts of process management in computer systems, including process creation, termination, running programs, synchronization between processes, and the components involved in managing processes such as memory, CPU, files, and devices. The importance of processes in sharing system resources, process isolation, and interaction is highlighted. Examination of processes in Unix through commands like ps, examining CPU and memory usage statistics, and understanding the structure and elements of a process are also covered in this comprehensive overview.


Uploaded on Oct 01, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Process Management Process management related system calls Process creation Process termination Running another program in a process Synchronization between parent/child processes Readings APUE 7.6, 8.3, 8.5, 8.6, 8.10 UNP 4.7 1

  2. Computer Systems Overview Processes User Space System Call Interface OS File system CPU Memory Mgmt Device Mgmt scheduling Network Stack Hardware: CPU, Memory, Disk, Keyboard, Monitor 2

  3. Users view Program1 Program2 ProgramX CPU Memory Disk Keyboard Monitor CPU Memory Disk Keyboard Monitor CPU Memory Disk Keyboard Monitor Each program owns its own (virtual) computer. The execution of a program does not affect one another.

  4. Process Informal definition A process is a program in execution Process is not the same as a program. Program is a passive entity stored in disk Program (code) is just one part of the process. 4

  5. What else in a Process? Process context: Memory space (static, dynamic) Procedure call stack Open files, connections Registers and counters : Program counter, stack pointer, general purpose registers 5

  6. Memory Layout of a Process Text Machine instructions Data Global variables Heap Dynamically allocated memories (malloc, new, etc) Stack Local variables Function calls stack heap data text 6

  7. Why Process? Allowing multiple processes (users) to share the system resources. Process isolation (the illusion that each process is the only one on the machine). Process interaction (synchronization, inter-process communication). Which is more important? 7

  8. Examining Processes in Unix ps command Standard process attributes Try ps ef /proc directory All Linux distributions, some other OSes to provide hardware, system, and process information /proc/cpuinfo, /proc/memory, /proc/sys, /proc/####(PID) etc man proc to get more information on /proc top, vmstat command Examining CPU and memory usage statistics. 8

  9. Creating a New Process - fork() UNIX convention: -1 is the failure code for all UNIX system calls pid = fork(); if (pid == -1) { fprintf(stderr, "fork failed\n"); exit(1); } if (pid == 0) { printf( This is the child\n"); exit(0); } if (pid > 0) { printf( This is parent. The child is %d\n", pid); exit(0); } 9

  10. Points to Note fork() is called once but it returns twice!! Once in the parent and Once in the child See example1.c fork() basically duplicates the parent process image Both processes are exactly the same after the fork() call. Are there any dependence between the two processes? Provide a way to distinguish the parent and the child Parent and child share text segment (machine instructions) Parent and child do not share other memory including data space, stack, and heap 10

  11. Points to Note How to distinguish parent and child?? Return value of fork() in child = 0 Return value in parent = process id of child See example2.c What about the data in the program? See example6.c, example6b.c Return value of -1 indicates error in all UNIX system calls. Is it true: All processes are created by fork() in UNIX? 11

  12. Running New Program in a Process Exec() family of functions Completely replace current process with a new program Various forms int execl(char * pathname, char * arg0, , (char *)0); int execv(char * pathname, char * argv[]); int execle(char * pathname, char * arg0, , (char *)0, char envp[]); int execlp(char * filename, char * arg0, , (char *)0); int execvp(char * filename, char * argv[]); Notation convention l: list of arguments v: vector of arguments e: environment variables p: searching PATH to locate filename, unless filename contains / We can use any of them, but normally only one of them is system call (execve), others are library functions man execve 12

  13. execv int execv(char * pathname, char * argv[]); Example: to run /bin/ls l a / pathname: file path for the executable char *argv[]: must be exactly the same as the C/C++ command line argument. argv[0] = /bin/ls ; argv[1] = -l ; argv[2] = -a ; argv[3] = / ; argv[4] = NULL; See example3f.c, example3d.c, example3e.c

  14. Examples Running one command example3a.c Run all commands in the command line argument example3b.c How does a parent know if a child process has run successfully? 14

  15. Properties of exec() Replaces current process image with new program image. If successful, everything after the exec() call will NOT be executed. Will exec() return anything other than -1 (on error)? 15

  16. Running a Command without Killing the Process Fork( ) Child Parent Exec( ) New program image in execution 16

  17. Terminating a Process exit (int status) Clean up the process (e.g close all files) Tell its parent processes that he is dying (SIGCHLD) Tell child processes that he is dying (SIGHUP) Exit status can be accessed by the parent process. See example3.c 17

  18. Parent/Child Synchronization Parent created a child, it has the responsibility to see the child through: check if the child is done. wait, waitpid. Both block if no child process changes state waitpid has option to return immediately if no child has exited. check the exit status of the child pid_t wait(int *stat_loc), see example4.c (and example4a.c) Macros related to exit status WIFEXITED(status), WEXISTSTATUS(status) WIFSIGNALED(status), WIFSTOPPED(status), WIFCONTINUED(status) A child has no responsibility for the parent 18

  19. Zombie and Orphan Processes What happens when a child process terminates but the parent does not wait or has not waited for it? The child process becomes a zombie process (see example12.c) System recycles most of its resources, including process image, and closes all files opened by the process System does maintain certain information, including process ID, exit status, and CPU time, until it is waited What happens when a parent terminates without waiting for child processes to terminate? The child processes become orphan process (normally only mean the child processes that are still running) They will be adopted by a special process (normally init, with process ID 1) Init waits for each (adopted) child process, so no zombie What happens to a zombie process when the parent process terminates? They will also be adopted by init (orphaned zombie) And they are removed (waited) by init 19

  20. Process ID Processes are identified by a process id (pid) getpid(): find your own pid getppid(): find the pid of the parent See example5.c for the time for system calls versus regular routine calls. Linux getpid() is highly optimized Try run example5.c on program.cs.fsu.edu 20

  21. Questions to Consider How to implement the system routine? How to prevent a child process to become long-term zombies? Note that a parent process may run for a long time before it terminates, or it will not terminate under normal conditions (for example, a web server) 21

  22. Summary/Review Why processes? What is process context? How to check processes in UNIX? What does fork() do? What is its return value? Does fork() create all processes in a UNIX system? What does execv() do? What is its return value? How to run a command in a program without getting killed? Does exit completely clean up a process? Can a parent process tell if its child process terminate normally? Can a child process tell if its parent process terminate normally?

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#