Anda di halaman 1dari 10

TRABAJOS PRCTICOS DE DISEO Y ADMINISTRACIN DE SISTEMAS OPERATIVOS

71013012

Asignatura Obligatoria del 1er semestre del 3er Curso del Grado en Ingeniera Informtica de la UNED

Curso 2013-2014

Fecha de publicacin: 15 de noviembre 2013 Fecha de entrega: 13 de enero de 2014

Contenido
INFORMACION GENERAL ....................................................................................................... 3 Objetivo de los trabajos ............................................................................................................. 3 Carcter de los trabajos ............................................................................................................. 3 Requisitos .................................................................................................................................. 3 Formato y fecha de entrega de los trabajos ............................................................................... 4 Informe ...................................................................................................................................... 4 Evaluacin de los trabajos ......................................................................................................... 5 TRABAJO I: Virus y antivirus...................................................................................................... 6 TRABAJO II: Comunicando procesos .......................................................................................... 8

INFORMACION GENERAL
Objetivo de los trabajos
Los trabajos prcticos de la asignatura Diseo y Administracin de Sistemas Operativos consistirn en la realizacin a su vez de dos trabajos o problemas (Trabajo I y Trabajo II). El objetivo de estos trabajos es que el estudiante practique algunos de los conceptos bsicos de la asignatura haciendo uso del lenguaje C y el lenguaje de script Bash usando como

plataforma el sistema operativo Linux.

Carcter de los trabajos


Tal y como se seala en la gua de la asignatura, tanto los trabajos prcticos como las pruebas de evaluacin a distancia PED no son necesarios para superar la asignatura. Por ello, se recuerda al estudiante la obligacin e importancia de hacer los trabajos por s mismo sin copiarlas de otros compaeros, dado que ello repercutir en perjuicio del propio estudiante, quien no adquirir el grado formativo adecuado. Por otro lado, se recomienda al estudiante que comience a hacer estos trabajos una vez se haya dado ya un primer repaso a los temas de la asignatura en los que se basa cada trabajo, y se hayan asimilado los conceptos bsicos.

Requisitos
Debido a la existencia de una gran variedad de distribuciones de Linux y compiladores de C y para evitar problemas de compatibilidad de plataformas y arquitecturas, el equipo docente pone a disposicin del estudiante una mquina virtual con todo lo necesario para la realizacin de los trabajos as como un ejemplo de referencia que define la estructura y el formato del trabajo que el estudiante debe entregar. Tanto la mquina como la plantilla de referencia se encuentran en la misma pgina donde ha podido descargar este documento: http://ctb.dia.uned.es/DyASO/

Se usar nicamente la mquina virtual en el estado en el que se encuentra disponible para su descarga en la correccin de los trabajos y no valorar trabajos que no puedan compilarse o ejecutarse dentro de dicho entorno o que no se ajusten al formato de entrega del ejemplo de referencia.

Por este motivo el estudiante debe comenzar por instalar la mquina virtual. Las instrucciones de descarga e instalacin de dicha mquina virtual se detallan en el Apndice A de este documento.

Formato y fecha de entrega de los trabajos


Para asegurar la homogeneidad en la entrega se dispone de una plantilla denominada Plantilla_DyASO.tar dentro de la cual aparece un ejemplo de los trabajos a realizar. Dicha plantilla debe descomprimirse con permisos de SUPERUSUARIO (sudo tar xf

Plantilla_DyASO.tar) con el fin de que se preserven los propietarios y los permisos de los archivos que contiene.

Los trabajos debern ser entregados a travs de la plataforma del curso virtual aLF en el apartado reservado para tal efecto en la planificacin del curso. Los dos trabajos debern enviarse dentro de un nico fichero .tar con la misma estructura que el ejemplo de referencia as como con el informe de los trabajos en formato PDF. El nombre del fichero debe ajustarse a la siguiente estructura: DyASO_Apellido1_Apellido2_Nombre.tar Donde Apellido1 es el primer apellido del alumno, Apellido2 el segundo apellido y Nombre el nombre del alumno, por ejemplo DyASO_Chaos_Garcia_Dictino.tar

El ltimo da para entregar las prcticas es el 13 de enero de 2014. Esta fecha es improrrogable.

Informe
Adems de los archivos y ficheros fuente que componen cada trabajo, el estudiante deber entregar un informe de los trabajos en formato PDF que describa el trabajo realizado. Para ello debe seguirse la plantilla del informe proporcionada.

NOTA: Antes de ponerse a trabajar y para evitar descuidos es muy recomendable que el estudiante cambie los datos del ejemplo de referencia (nmero del trabajo, nombre, apellidos, DNI, centro asociado en el que se ha matriculado y telfono de contacto) por los suyos propios en todas las partes donde aparezcan (nombre de los archivos y carpetas as como portada del informe de prcticas).

NOTA2: No deben usarse en ningn caso ficheros .zip para realizar la entrega, ya que los ficheros .zip no almacenan los permisos de ejecucin de los archivos en Linux, haciendo que el funcionamiento de la prctica sea incorrecto.

Evaluacin de los trabajos


Los trabajos, al igual que las PED, suponen un 10% de la nota final de la asignatura en caso de que el alumno tenga aprobada el examen. En caso contrario se habr suspendido la asignatura. No obstante la nota media de los trabajos se mantiene para la convocatoria de septiembre.

En la valoracin del trabajo se tendr en cuenta en primer lugar el funcionamiento de los programas. En caso de que no se ejecuten o no compilen el trabajo prctico no se calificar. Tampoco se evaluarn los trabajos que no presenten informe de prcticas en PDF.

Aviso importante!!, Las prcticas se realizan individualmente, no se aceptan grupos de trabajo. Tanto los profesores-tutores como el equipo docente se reservan el derecho de ponerse en contacto en caso de duda con el estudiante y realizarle diferentes cuestiones relativas a las prcticas para verificar que efectivamente es el autor de las mismas y no las ha copiado. La deteccin de una prctica copiada obligar al equipo docente a ponerlo en conocimiento del Servicio de Inspeccin de la UNED. Tampoco se permite el intercambio de cdigo a travs de los foros de la asignatura.

TRABAJO I: Virus y antivirus


Un virus de ordenador es un programa capaz de replicarse a s mismo y expandirse por diferentes ordenadores. Los virus son programas altamente especializados y en general complejos. El propsito de este trabajo es menos ambicioso, en l se realizar un pequeo programa virus de script y se programar un antivirus capaz de eliminarlo.

Adems se comprender cul es una de las fortalezas de los sistemas derivados de UNIX ante los virus: el sistema de permisos. Junto con el virus y el antivirus se crear un ejecutable Ejercicio1.sh que demostrar el funcionamiento de ambos programas.

Virus: El virus es un programa sencillo cuyo objetivo es copiarse en todos los archivos
ejecutables de forma silenciosa y sin despertar sospechas. Para ello deber adelantarse a los posibles errores en tiempo de ejecucin y evitarlos. El virus consiste en un archivo ejecutable Shell scrip de Bash llamado Virus.sh que realiza las siguientes operaciones: 1) Busca en el directorio en el que se encuentra todos los archivos con permisos de ejecucin (el virus no debe infectar archivos no ejecutables) y para cada uno de ellos realiza las siguientes acciones: a. Verifica que se trata de un archivo de scrip Bash. (Para simplificar la tarea comprobar la primera lnea del programa para ver si comienza con #!/bin/bash). b. Verifica si el archivo ya est infectado. En caso afirmativo no hace nada (no debe infectar dos veces al mismo archivo ni debe infectarse a s mismo). En caso de estar limpio pasa al paso c. c. Comprueba que tiene los permisos necesarios de lectura y escritura en los archivos a infectar (el virus ha de ser silencioso y por tanto no deben producirse errores de permisos). d. Copia el cdigo del virus al comienzo del archivo manteniendo a continuacin el contenido original del ejecutable. Nota importante: Si un archivo est infectado debera poder ejecutarse con normalidad, pero al hacerlo, el cdigo del virus intentar copiarse dentro de otros archivos. Si encontraran alguno disponible el virus slo copiar su propio cdigo (y no el de todo el archivo infectado).

Antivirus: El antivirus es un programa en Shell script en bash llamado Antivirus.sh


que admite como entrada el nombre de un archivo y realiza las siguientes acciones: 1) Comprueba los permisos de acceso al archivo. Si no dispone de permisos muestra un mensaje al usuario y finaliza. 6

2) Comprueba que el archivo est infectado (buscando al comienzo del mismo el cdigo del virus). En caso afirmativo continua con el paso 3). En caso negativo avisa al usuario de que el archivo est limpio y finaliza. 3) Muestra por la salida estndar el contenido del archivo infectado. 4) Elimina el cdigo del virus devolviendo al archivo a su estado original. 5) Muestra el contenido del archivo una vez limpiado.

El archivo Ejercicio1.sh es el archivo que deber demostrar el funcionamiento del virus y el antivirus, se trata de un script ejecutable escrito en bash de nombre Ejercicio1.sh que realizar las siguientes acciones: 1) Cambia el directorio de trabajo a ./Trabajo1 2) Ejecuta el virus. 3) Ejecuta el archivo Prueba2.sh para ver que funciona adecuadamente una vez infectado. 4) Ejecuta el antivirus en todos los archivos excepto el virus original. 5) Vuelve al directorio de trabajo original. Despus de este proceso los archivos deberan haber vuelto a su estado original. Consejo: Puede resultar de ayuda repasar la redireccin de entrada y salida y consultar el manual de los comandos grep, split y cat antes de hacer el ejercicio.

Datos de entrega:
El archivo Ejercicio1.sh se encontrar en la raz del fichero .tar que contiene la prctica junto con el informe en PDF. Dentro de este mismo fichero debe existir un directorio llamado Trabajo1 que contendr el cdigo del virus y el antivirus.

Adems dentro de dicho directorio debern encontrarse varios ficheros de prueba: un fichero de texto Prueba1.sh que comienza por #!/bin/bash pero que no es ejecutable, otros dos archivos de script con permisos de ejecucin Prueba2.sh y Prueba3.sh y dos archivos de otro usuario Prueba4.sh y Prueba5.sh.

TRABAJO II: Comunicando procesos


Este ejercicio consiste en transmitir informacin entre varios procesos a travs de los mecanismos que se muestran en la Figura 1. Para ello debern implementare los siguientes archivos de cdigo en C: fuente1.c, fuente2.c y fuente3.c. Adems deber implementarse un fichero de script Ejercicio2.sh que compile dichos archivos fuente y genere los ejecutables Ej1, Ej2 y Ej3 respectivamente.

SIGKILL 10 SIGKILL 9 Memoria compartida: vc1 Mensaje Mensaje 7 5 6


Semforo sem1

Entrada Mensaje Proceso P1 estandar 1

2 Mensaje
Tubera sin nombre

Proceso P2

Proceso P3

3 Mensaje

4 Mensaje

fichero1
Fichero FIFO

PID del proceso P3

Cola de mensajes asociada a EJ1

Figura1: Esquema de comunicacin y sincronizacin entre los procesos.

Dichos ejecutables debern realizar las siguientes acciones:

Ej1: Este archivo ejecutable crear dos procesos P1 y P2 que compartirn una tubera sin
nombre. El proceso P1 pedir al usuario que introduzca un mensaje por teclado y se lo transmitir al proceso P2 a travs de dicha tubera. Una vez hecho esto, el proceso P1 crear una cola de mensajes asociada al archivo Ej1 bajo una cierta clave y se quedar a la espera de un mensaje. Cuando llegue un mensaje al proceso P1 a travs de dicha cola, extraer del mismo el PID que contiene (que corresponde al proceso P3 que se describir posteriormente) y a continuacin, enviar una seal SIGKILL a su hijo P2 y al proceso cuyo PID ha recibido (P3). Finalmente borrar el fichero fichero1, mostrar sus estadsticas de uso de CPU y finalizar su ejecucin. 8

Por otra parte, el proceso P2 leer la tubera sin nombre y una vez que tenga el mensaje crear un fichero FIFO de nombre fichero1 y escribir en l dicho mensaje. A continuacin ejecutar el programa Ej2 con la llamada al sistema exec() de tal manera que el proceso P2 pasar a ser una instancia del ejecutable Ej2.

Ej2: Este programa ejecutable abrir el fichero FIFO fichero1 y leer de l el mensaje que
le ha dejado el antiguo proceso P2. A continuacin crear una regin de memoria compartida. En ella crear una variable vc1 en la cul almacenar el mensaje, as como un semforo sem1 para proteger el acceso a dicha regin. Tanto vc1 como sem1 estarn asociados al fichero1. Una vez hecho esto, realizar una operacin P() sobre el semforo sem1 para bloquearlo. A continuacin se dividir creando un proceso hijo P3. El proceso P2 se mantendr a la espera durante un segundo y despus escribir el mensaje en la variable compartida vc1. Despus de esto har una operacin V() para abrir el semforo y suspender su ejecucin con la llamada al sistema pause(). Por su parte el proceso P3 har una llamada al sistema exec() sobre el ejecutable Ej3 que pasar a ser el proceso P3.

Ej3: Este ejecutable cargar la regin de memoria compartida y la variable asociada vc1 as
como el semforo sem1 que ha creado P2 asociados al archivo fichero1. A continuacin realizar una operacin P() sobre el semforo sem1 para esperar a que el proceso P2 acabe de escribir en la memoria compartida. Cuando lo haya hecho leer la regin de memoria compartida y mostrar el mensaje por pantalla. Una vez terminada la operacin, abrir la cola de mensajes asociada al ejecutable Ej1 y le enviar un mensaje al proceso P1 para indicarle que ha terminado. Dicho mensaje deber contener su PID. Hecho esto se quedar a la espera mediante la llamada al sistema pause(). Nota: Cada vez que uno de los procesos enve o reciba un mensaje deber indicarlo escribiendo en la salida estndar. Dicha escritura indicar el PID del proceso que escribe, el proceso en curso (P1, P2 P3), el ejecutable que da lugar a dicho proceso ( Ej1, Ej2 Ej3), el origen o destino del mensaje y el mecanismo de transmisin. Por ejemplo:

El proceso P1 (PID=1247, Ej1) transmite un mensaje al proceso P2 por una tubera sin nombre El archivo Ejercicio2.sh deber ser un script ejecutable escrito en el lenguaje de shell bash que realizar las siguientes acciones: 1) Compile las fuentes que se encuentran en el directorio ./Trabajo2 creando los ejecutables Ej1, Ej2 y Ej3. 2) Asigna los permisos necesarios a Ej1, Ej2 y Ej3. 3) Ejecuta Ej1. 4) Borra todos los archivos ejecutables creados (pero no sus fuentes).

Datos de entrega:
El archivo Ejercicio2.sh se encontrar en la raz del fichero .tar que contiene la prctica junto con el informe en PDF. Dentro de este mismo fichero debe existir un directorio llamado Trabajo2 que contendr los ficheros fuente1.c, fuente2.c y fuente3.c. No

debern entregarse los archivos ejecutables Ej1, Ej2 y Ej3.

10

Anda mungkin juga menyukai