Download presentation
Presentation is loading. Please wait.
Published byTheodore Gibbs Modified over 8 years ago
1
2.1 Processes process = abstraction of a running program multiprogramming = CPU switches from running program to running program pseudoparallelism each process has its own virtual CPU each process is considered to be simply sequential make no assumptions about timing
2
Processes cont’d critcal real-time requirements = particular events must occur within a specified number of milliseconds difference between a process and a program Process – an activity = program, input, output, and state
3
Process Types 1. Foreground – process that interacts with user 2. Background – not associated with a specific user; specific/dedicated function daemon = background process to handle some activities (e. g., email, telnet, ftp, web server, etc.)
4
Process creation 4 major events causing process creation: 1.system initialization 2.running process executes a process creation system call 3.user requests creation of a new process 4.initiation of a batch job
5
Process creation cont’d win32: use task manager to view process Unix: ps –edalf command
6
Process creation cont’d win32: CreateProcess() 10 parameters creates and loads new process Unix: fork() + execve() system calls fork() creates new process (copy of parent) execve() loads new program
7
Unix process creation: fork() #include int main ( const int argc, const char* const argv[] ) { puts( "forking" ); pid_t ret = fork(); puts( "forked" ); return 0; }
8
#include int main ( const int argc, const char* const argv[] ) { puts( "parent: forking" ); pid_t ret = fork(); switch (ret) { case -1:puts( "parent: error: fork failed!" ); break; case 0:puts( "child: here (before execl)!" ); if (execl( "./child.exe", "./child.exe", 0 )==-1) perror( "child: execl failed:" ); puts( "child: here (after execl)!" ); //should never get here break; default:printf( "parent: child has pid=%d \n", ret ); break; } return 0; } fork and exec fork and exec
9
Child process #include int main ( const int argc, const char* const argv[] ) { printf( "child process %s running with %d arg(s). \n", argv[0], argc ); return 0; }
10
Process termination Conditions: Voluntary: Normal exit Error exit Win32: ExitProcess() Unix: exit() Involuntary: Fatal error (e. g., divide by zero, illegal memory access) Killed by another process
11
Process hierarchies None in win32 Unix maintains a parent/child relationship called a process group.
12
Process states 1. Running 2. Ready 3. Blocked
13
Implementation of processes Process table = array of structures (process control blocks)
14
Context switch/interrupt service
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.