Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instrucciones
Cada equipo de laboratorio deberá responder solo una pregunta de las que se plantean en
el documento. De ser posible, el uso de dibujos y gráficos es altamente recomendado.
Referencias
Una buena parte de la información que aquí se pide puede ser consultada de los siguientes
enlaces:
1. Laboratorio 3-1: Procesos.
2. Diapositivas clase 2 - Procesos.
3. google
Este taller está pensado en mejorar muchos de los vacíos que se encuentran en el
documento asociado al enlace 1. Se recomienda una lectura juiciosa ya que de esto
depende el rápido avance del laboratorio el cual va a ser evaluado en la misma clase.
Equipo responsable:
● Sebastian Gallego Pulgarin
● Manuel Calle Garcés
Equipo responsable:
● Andrés Mauricio Álvarez.
● Andrés Felipe Vásquez.
El PCB es una estructura de datos que hace parte de la lista de procesos o de la lista de
tareas del sistema operativo, sirve para rastrear el estado de los procesos en ejecución y
contiene la información necesaria de cada uno de ellos. Esta estructura la podemos hallar
en el kernel del sistema en memoria principal. Cada sistema operativo puede manejar de
forma diferente el PCB ya que no existe un estándar, pero a si manejan una estructura
básica mostrada en la siguiente imagen.
Process ID: Identificador único del proceso normalmente conocido como PID.
Process State: El estado actual del proceso, ya sea alguno de los estados básicos,
teniendo en cuenta que cada OS puede manejar estos estados de forma independiente.
Equipo responsable:
● Arcangel Marin .
● Juan Carlos Londoño.
Para visualizar cómo se comporta el proceso Zombie se puede ejecutar el siguiente código:
1 #include <stdlib.h>
2 #include <sys/types.h>
3 #include <unistd.h>
4 int main () {
5 pid_t child_pid;
6 /* Creacion del proceso hijo. */
7
8 child_pid = fork ();
9 if (child_pid > 0) {
10 /*Este es el proceso padre el cual duerme por 20 segundos.*/
11 sleep (20);
12 }
13 else {
14 /* Este es el proceso hijo el cual culmina inmediatamente.*/
15 exit (0);
16 }
17 return 0;
}
Ejecute el programa anterior y una vez hecho esto, ejecuta en otra pestaña el comando ps
–o pid,ppid,stat,cmd. se Notará una salida algo similar como la de la siguiente figura:
Otra respuesta:
● Alejandro Castañeda Villa
● Gilberto Rendon
Esta entrada todavía se necesita para permitir al proceso que inició el proceso (ahora
zombie) pueda leer su estado de salida. El comando kill no tiene efecto sobre un proceso
zombie.
Cuando un proceso finaliza, toda la memoria y recursos asociados con este son
desasignados para que puedan ser usados por otros procesos. De todas maneras, la
entrada del proceso permanece en la tabla de procesos. El proceso padre puede leer el
estado de salida del proceso hijo ejecutando la llamada del sistema wait. Luego el estado de
zombie es eliminado.
Un proceso zombie no es lo mismo que un proceso huérfano. Este último es un proceso que
permanece en ejecución, pero su padre ha muerto.
Los procesos zombies son identificados en la salida del comando "ps" con la presencia la la
letra Z en la columna STAT.
Parte 2. Llamadas a sistema para control de procesos.
La siguiente tabla muestra algunas de las principales llamadas a sistema para el control de
procesos.
Clasificación Funciones
pid_t getppid(void)
uid_t getuid(void)
uid_t geteuid(void)
gid_t getgid(void)
gid_t getegid(void)
kill
El objetivo de cada equipo será describir cada una de las llamadas mostradas en la tabla
anterior. Siga el formato mostrado a continuación con el fin de que la descripción sea
estándar a lo largo del documento:
Equipo responsable:
● Integrante 1.
● Integrante 2.
Funcion getpid
Sintaxis
pid_t getpid(void)
Librerías sys/types.h>
#include <
#include < unistd.h>
necesarias
Descripción Llamada de sistema que retorna el ID del proceso (PID) del proceso
que la invoca.
Parámetros de ● No tiene
entrada
Valor retornado Retorna un valor con el PID (pid_t) del proceso que invoca la función.
Equipo responsable:
● Arcangel marin.
● Juan Carlos Londoño.
Funcion getppid
Sintaxis
pid_t getppid(void)
Parámetros de ● No tiene
entrada
Valor retornado Siempre tendrá éxito y no se reservará ningún valor de retorno para
indicar un error.
Equipo responsable:
● Lina María Uribe.
● Santiago Bedoya.
Funcion fork
Sintaxis
pid_t fork(void)
Parámetros de No tiene.
entrada
Equipo responsable:
● Luis Ernesto Monsalve
● Yennifer Serna Carvajal
Funcion getuid
Sintaxis
uid_t getuid(void)
Librerías sys/types.h>
#include <
#include < unistd.h>
necesarias
Descripción La función getuid() devuelve el ID del usuario real del proceso actual.
El identificador real corresponde con el del proceso invocador.
Parámetros de No tiene.
entrada
Valor retornado Retorna el identificador del usuario real del proceso de llamada.
Equipo responsable:
● Yeison Ballesteros
● Integrante 2.
Funcion getgid
Sintaxis
gid_t getgid(void)
Librerías sys/types.h>
#include <
necesarias #include < unistd.h>
Descripción Función que devuelve el ID(identificador) real del grupo del proceso
actual.
Parámetros de Ninguno
entrada
Valor retornado Retorna valor con el ID del grupo del proceso llamante. Esta función
no tiene error.
Equipo responsable:
● Daniel Fernando Areiza Agudelo
● Integrante 2.
Funcion exit
Sintaxis
Equipo responsable:
● Juan pablo Jaramillo Tobon
● Hector mauricio Guerra
Funcion geteuid
Sintaxis
uid_t geteuid(void)
Librerías sys/types.h>
#include <
#include < unistd.h>
necesarias
Parámetros de ● No tiene
entrada
Equipo responsable:
● Raúl Andrés Arcila Rodríguez
Funcion Sleep()
Librerías sys/types.h>
#include <
#include < unistd.h>
necesarias
Descripción Sleep() hace que el hilo de llamada esté inactivo hasta que hayan
transcurrido ciertos segundos o hasta que llegue una señal que no se
ignore.
Equipo responsable:
● Juan José Márquez Villacís
● Andrés Felipe Isaza
Funcion kill
Sintaxis
Valor retornado La función retorna 0 si el proceso tiene permiso para enviar la señal.
Si el envío de la señal falla, retorna -1.
Equipo responsable:
● Julian Angel Gallego.
● David Andres Quiroga.
Funcion execl
Sintaxis
int execl(const char *path, const char *arg, ..., NULL);
Los argumentos char *arg, ..., NULL describe una lista de uno o más
punteros a cadenas terminadas en nulo que representan la lista de
argumentos disponible para el programa ejecutado.
Funcion getegid
Sintaxis
git_t getegid(void)
Librerías unistd.h>
#include <
#include < sys/types.h>
necesarias
Parámetros Ninguno
de entrada
Equipo responsable:
● Jhonatan Alejandro Torres Vasco
● Juan Fernando Mosquera
Funcion execl
Sintaxis
int execl(const char *path, const char *arg, ...);
Parámetros El primer argumento (path), por convenio, debe apuntar al nombre del
de entrada fichero asociado con el fichero que se esté ejecutando, seguido de
n cantidad de argumentos que son una lista de apuntadores a cadenas
de caracteres terminadas en cero, los cuales representan la lista de
argumentos disponibles para el programa ejecutado, y su último
argumento debe ser un puntero NULL.
Equipo responsable:
● Integrante 1.Edison Bedoya García
● Integrante 2.Deyber Sepulveda Tuberquia
Dado el siguiente diagrama de tiempo (timing diagram). ¿Cuál cree que sea el contenido del
archivo thefile.txt?
El contenido será:
This is the Parent
hi it’s me. i’m back
Child write
ya que el diagrama de tiempo así indica el orden en que se escriben los datos, pero al estar
el waitpid al final del hijo, cualquier de los dos procesos se puede ejecutar, y la otra posible
salida es:
This is the Parent
Child write
hi it’s me. i’m back
Equipo responsable:
● Santiago López
● Juan Pablo Posada
Dado el siguiente diagrama de tiempo (timing diagram). ¿Cuál cree que sea el contenido del
archivo thefile.txt?, ¿En que cambia respecto al anterior?
Sintaxis
Librerías sys/types.h>
#include <
#include < sys/wait.h>
necesarias
Descripción Esta función suspende la ejecución del proceso padre hasta que su
hijo termine.