I'm studying operating systems, and I'm trying to grasp the concept of processes and programs. I understand that a program is an executable file, while a process is the execution of that program. However, I'd like a more detailed explanation with a code example to illustrate the difference.
Could someone provide a code example in C that demonstrates the distinction between a program and a process? Specifically, I'd like to see how a single program can result in multiple processes when executed concurrently, and how these processes share or don't share memory and resources.
Here's a simple C code snippet that calculates the factorial of a number:
`#include <stdio.h>
int factorial(int n) {
if (n == 0) return 1;
return n * factorial(n - 1);
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
`
Could someone modify this code to create multiple processes that simultaneously calculate the factorial of different numbers? Additionally, please explain how these processes differ from the original program, especially in terms of memory and resource allocation. Since this idea is crucial to operating systems, I'm seeking for practical knowledge of it. I've also been to a few sites. We would value any new information on how operating systems control programs and processes.