Está en la página 1de 2

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA

AREA: SISTEMAS OPERATIVOS


SEMESTRE: SEPTIMO
PROGRAMA: INGENIERÍA DE SISTEMAS
DOCENTE: JOSÉ VIDAL CONTRERAS CUERVO
TEMA: PRACTICA LLAMADAS AL SISTEMA

1) Introducción

 Un proceso es un programa en ejecución, cargado en memoria.


 Un programa es una serie de instrucciones y datos almacenados en un archivo .
 Todo proceso es creado por el núcleo (o kernel) del sistema operativo previa
petición de otro proceso, estableciéndose una relación jerárquica entre el proceso
que realiza la petición de creación (conocido como proceso padre o "creador") y
el nuevo proceso (denominado proceso hijo). Un proceso padre puede tener
varios hijos y todo hijo tiene únicamente un padre.
 Los procesos se organizan de forma jerárquica. Al arrancar el sistema se crea el
proceso init, que es la raíz del árbol de procesos y su PID es 1.

Copie el siguiente código para identificar los identificadores del proceso padre e hijo

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
void main(void)
{

printf(“Mi dentificador de proceso es : %d\n”, getpid());


printf(“El identificador de mi proceso padre es: %d\n", getppid());
printf(“Identificador de usuario: %d\n”, getuid());
printf("Identificador de usuario efectivo: %d\n",geteuid());
printf("Identificador de grupo: %d\n", getgid());
printf("Identificador de grupo efectivo: %d\n", getegid());
}

consulte la siguiente llamada al sistema exec y su familia y haga un pequeño resumen


sobre su uso y de un ejemplo de cada uno.

Consulte la llamada al sistemas terminación de procesos exit() y wait() y haga un pequeño


resumen sobre su uso y de un ejemplo de cada uno.

Realice los siguientes ejercicios en lenguaje c.

Crear un proceso que permita ingresar un comando sin parámetros (ls, ps, time, top,
pwd…) por medio del terminal y lo ejecute, no se debe permitir ejecutar un comando hasta
que el anterior haya acabado. El proceso terminara cuando se introduzca la palabra salir.

Cree un programa donde el proceso padre espere a que finalice el proceso hijo. Utilice la
llamada al sistema sleep ().
UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA

AREA: SISTEMAS OPERATIVOS


SEMESTRE: SEPTIMO
PROGRAMA: INGENIERÍA DE SISTEMAS
DOCENTE: JOSÉ VIDAL CONTRERAS CUERVO
TEMA: PRACTICA LLAMADAS AL SISTEMA

De a cuerdo al siguiente fragmento de código:


for (i = 1; i<= n; i++)
{

if ((i== n) && (fork() == 0))


execlp ("ls", "ls", "-1", NULL);
}
Dibuje la jerarquía de procesos que generada para n=3 e indique en qué procesos se
cambia la imagen del proceso use la función execlp.

Observa el siguiente código

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

main ()
{
int num; pid_t pid;
srandom(getpid());
for (num= 0; num< 3; num++)
{
pid= fork();
printf (" Soy el proceso de PID %d y mi padre tiene %d de PID.\n", getpid(),
getppid());
if (pid== 0)
break;
}
if (pid== 0)
sleep(random() %5);
else
for (num= 0; num< 3; num++)
printf ("Fin del proceso de PID %d.\n", wait (NULL));
}

Antes de compilar y ejecutar el código, dibuje la jerarquía de procesos que


genera dicho código, ¿ que pasa en la orden de terminación de los
procesos? Y ¿por qué pasa?

Éxitos.

También podría gustarte