Estou estudando sistemas operacionais e tentando compreender o conceito de processos e programas. Entendo que um programa é um arquivo executável, enquanto um processo é a execução desse programa. No entanto, gostaria de uma explicação mais detalhada com um exemplo de código para ilustrar a diferença.
Alguém poderia fornecer um exemplo de código em C que demonstre a distinção entre um programa e um processo? Especificamente, gostaria de ver como um único programa pode resultar em vários processos quando executado simultaneamente e como esses processos compartilham ou não memória e recursos.
Aqui está um trecho de código C simples que calcula o fatorial de um número:
#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;
}
Alguém poderia modificar este código para criar vários processos que calculam o fatorial de diferentes números simultaneamente? Além disso, explique como esses processos diferem do programa original, especialmente em termos de memória e alocação de recursos.
Estou procurando obter uma compreensão profunda dessas linguagens e também procurei em diferentes sites como elas operam em cenários mais avançados, portanto, insights e exemplos de código relacionados às suas diferenças complexas seriam muito apreciados.