Prácticas de laboratorio (Primavera 2008)

Anuncio
Prácticas de laboratorio (Primavera 2008)
Programación de sistemas
Práctica No. 1
Escribir un programa en C que lea desde la línea de comandos los nombres de dos archivos de
texto. El programa deberá leer el contenido del primer archivo y deberá eliminar los símbolos
‘.’, ‘,’, ‘;’ y los dígitos del ‘0’ al ‘9’, el resultado será almacenado en el segundo archivo y al final
del seundo archivo se deberá almacenar los símbolos que fueron eliminados del primero.
Práctica No. 2
Escribir un programa en C que manipule una lista doblemente ligada. Los campos de cada
nodo serán: nombre, edad, sexo. El programa desplegará un menú que permitirá realizar las
siguientes operaciones:
Mostrar la lista ligada ya se por nombre, edad o sexo, o por posición, o todos los elementos de
la lista, eliminar un elemento específico (elimina todas las ocurrencias de ese elemento),
eliminar un elemento de una posición en específico (ya sea por nombre, sexo o edad), inserta
en una posición en específico, en este caso si la lista esta vacía se inserta como primer
elemento, si el número de elementos es menor a la posición indicada, entonces el elemento se
inserta al final.
Práctica No. 3
Escribir un programa que permita crear n procesos, los procesos creados serán procesos
hermanos, es decir, descenderan del mismo padre. Cada proceso hijo creará su propio archivo
y almacenará en él el pid de su padre y el suyo. El número de procesos a crear se pasarán en la
línea de comandos. Por ejemplo: ./prac3 3
--Aquí se crearán 3 procesos
Práctica No. 4
Crear los siguientes programas:
1. Un programa que lea dos número enteros de la línea de comandos, los sume y el
resultado sea colocado en la función exit al terminar el programa.
2. Un programa que se pause durante 10 segundos utilizando la función pause y alarm,
cuando la señal sea atrapada el programa deberá terminar invocando a la función
abort.
3. Un programa que realice un while (1).
Una vez creados estos programas se deberá crear un cuarto programa el cual deberá ejecutar
cada uno de los programas anteriores (procesos hijo) mediante la función exec, el proceso
padre deberá esperar por la finalización de sus hijos y deberá desplegar en pantalla la
información acerca de la terminación de cada hijo. El hijo 3 (programa 3) se deberá terminar
enviándole una señal para su terminación. El proceso padre no podrá terminar en los primeros
10 segundos mediante la señal SIGINT, pasado este tiempo SIGINT se deberá reestablecer a su
acción default.
Práctica No. 5.
Los mismo que la práctica 4, solo que con sigaction.
Práctica No. 6.
Crear un proceso escritor y un proceso lector que utilicen tuberías (escribir un lector y escritor
con pipes, y un lector y escritor con fifos) para comunicarse. El proceso escritor leerá desde el
teclado comando y los enviará al proceso lector, a su vez el proceso lector ejecutará los
comandos mediante la función “exec”. Cuando el proceso lector reciba el comando “salir”,
finalizará su ejecución y también la del proceso escritor. En el caso de fifos cuando el proceso
escritor reciba del usuario el comando “adios”, finalizará su ejecución, pero solo la de él, el
proceso lector continuará en ejecución en espera de que aparezca otro escritor.
Práctica No. 7
Crear un programa “escritor” que lea datos del teclado, los datos serán los siguientes: nombre,
edad, calificaciones (3), si el primedio es <6 asignar prioridad 3, si es >=6 y <8 asignar prioridad
2, y si es >=8 y <=10 asignar prioridad 1. Estos datos serán enviados a un programa “lector” a
través de una cola de mensajes. El programa “escritor” terminará cuando el usuario oprima
ctrl-C y confirme su deseo de terminar la sesión, esto es, cuando el usuario oprima ctrl-C, se
debe desplegar un mensaje en pantalla que pregunte “¿Esta seguro de querer abandonar la
sesion? S/N “. Para terminar por completo el programa “escritor” y el “lector”, el usuario
debera escribir en el campo nombre la cadena “salir”.
El programa “lector” permanecerá leyendo los paquetes cada 3 seg, primero los de prioridad 1,
luego los de 2 y finalmente los de 3. El programa deberá ubicar cada paquete en un archivo
dependiendo de su categoría, esto es , se creará un archivo para paquetes de prioridad 1, otro
para paquetes de prioridad 2 y otro de prioridad 3. Los archivos deberán ser archivos binarios.
Práctica No. 8
Semáforos y Memoria compartida
Descargar