Fork() is a system call that creates a new process by duplicating the calling process. The child process created by fork() is an exact duplicate of the parent process, having the same memory space and file descriptors. Exec() is another system call that replaces the current process with a new executable, keeping the same process ID. It is commonly used along with fork() to launch new programs from within a process. Fork() alone does not replace the process image - it is used to create a new process while exec() replaces the current process image with a new program.