Pontifícia Universidade Católica – Rio de Janeiro
INF1316 – Sistemas Operacionais
Prof. Alexandre Meslin
#include <stdio.h> #include <sys/types.h> main () { int id,i; id = fork (); if (id) { /* pai */ printf ("Sou pai de %d\n", id); for (i=1;i;i++); puts ("O pai terminou"); } else { /* filho */ puts ("Sou filho"); for (i=1;i;i++); puts ("O filho terminou"); } }
#include <stdio.h> #include <sys/types.h> #define TEMPO0 10000000000 #define TEMPO1 9000000000 #define TEMPO2 8000000000 #define TEMPO3 7000000000 #define TEMPO4 6000000000 main() { unsigned long int id,i,j; for(i=0;i<4;i++) if (!fork()) break; switch (i) { case 0: puts("sou filho 0"); for (j=0;j<TEMPO0;j++); puts("filho 0 terminou"); break; case 1: puts("sou filho 1"); for(j=0;j<TEMPO1;j++); puts("filho 1 terminou"); break; case 2: puts("sou filho 2"); for(j=0;i<TEMPO2;i++); puts("filho 2 terminou"); break; case 3: puts("sou filho 3"); for(j=0;j<TEMPO3;j++); puts("filho 3 terminou"); break; case 4: puts ("sou pai"); for (j=0;j<TEMPO4;j++); puts("pai terminou"); } }
#include <stdio.h> #include <string.h> main (int argc, char *argv[]) { int i; printf ("Processo %s comecando (loop de %d)\n", argv[1], atoi(argv[2])); for (i = 0; i < atoi(argv[2]); i++); printf ("Processo %s terminando\n", argv[1]); }O programa recebe dois parâmetros: o primeiro e um nome apenas para identificação e o segundo é a quantidade de transmogrifações 3D revolutivas que o programa vai realizar.
Execute o programa duas vezes em background de acordo com os comandos
abaixo e verifique a ordem de término:
delay P1 100000000 &
delay P2 200000000 &
Execute novamente modificando a prioridade do primeiro programa com o
comando nice:
nice -n 19 delay P1 100000000 &
delay P2 200000000 &
#include <stdio.h> main () { int i, aux=2; char v[] = {'-', '\\', '|', '/'}; for (i=0; i < 10000000; i++) { aux *= aux; } }
#include <stdio.h> main () { int i; char v[] = {'-', '\\', '|', '/'}; for (i=0; i < 1000; i++) { putchar (v[i%4]); putchar ('\b'); } }Use o comando time cpu e time io para verificar os tempos de execução dos programas.