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
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
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., , telnet, ftp, web server, etc.)
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
Process creation cont’d win32: use task manager to view process Unix: ps –edalf command
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
Unix process creation: fork() #include int main ( const int argc, const char* const argv[] ) { puts( "forking" ); pid_t ret = fork(); puts( "forked" ); return 0; }
#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
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; }
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
Process hierarchies None in win32 Unix maintains a parent/child relationship called a process group.
Process states 1. Running 2. Ready 3. Blocked
Implementation of processes Process table = array of structures (process control blocks)
Context switch/interrupt service