Introducción a los Sistemas Operativos, Ing. Informática, UPV/EHU
Proyecto P02. Desarrollando sobre Linux¶
Como una primera utilidad a desarrollar sobre Linux se nos propone construir un despertador que escriba un mensaje en el terminal pasado el tiempo que le especifiquemos como parámetro, además, cada segundo debe escribir en el terminal el número de segundos transcurridos y los que faltan para despertarse. Para desarrollar esta utilidad tendremos que conocer las herramientas de las que disponemos y las diferentes formas de construirla.
El objetivo de este proyecto es aprender a encontrar en el manual de Linux los diferentes tipos de herramientas que necesitamos para construir utilidades, y entender las consecuencias de utilizar unas u otras, en particular en lo que respecta a la compatibilidad. Para utilizar las herramientas Linux deberemos también aprender los rudimentos del lenguaje de programación C.
Actividad A02.1. Utilización del man¶
Linux proporciona una enorme caja de herramientas para construir aplicaciones. Una de esas herramientas es el manual (man) y resulta imprescindible para usar el resto de herramientas. Para desarrollar la utilidad que nos proponen debemos conocer un poco mejor la utilidad man, cómo está organizada y qué podemos encontrar en cada una de sus secciones. A partir de aquí veremos los tipos de herramientas que nos ofrece y cuáles son útiles para construir un despertador sencillo.
Qué hay que hacer:¶
- Para empezar, desde un terminal Linux (shell), probad el comando (o bien desde un buscador buscad linux man man)
man man
- En grupo, discutid qué tipo de herramientas esperáis encontrar en el man para implementar el despertador. Tened en cuenta las alternativas para implementarla (bien utilizando comandos del shell o bien programando en C). Explorad en el man las herramientas para cada una de las alternativas. Resumid en un borrador, para cada alternativa, en qué secciones del man habéis localizado los elementos a utilizar para implementar la utilidad. Anotad también las dudas que os hayan surgido.
- En clase revisaremos las aportaciones de los grupos y resolveremos las dudas. Toma notas, que te serán de utilidad para las actividades siguientes y para el resto del curso.
Dedicación¶
En clase dedicaremos unos 30 minutos a esta actividad.
Evaluación¶
Esta actividad no se evalúa directamente. Más adelante pondrás en práctica continuamente lo aprendido aquí. También se evalúa en una actividad de evaluación posterior.
Actividad A02.2 Un primer despertador.¶
Como habrás aprendido en la actividad anterior, Linux proporciona herramientas poderosas para construir utilidades como el despertador. Vamos a aprovechar estas herramientas.
Qué hay que hacer:¶
- De acuerdo a lo aprendido en la actividad anterior, programad en el grupo un despertador sencillo (sin el mensaje de cada segundo) utilizando las herramientas de la Sección 1 del manual, verificando que funciona de acuerdo a lo definido. Si no lo conseguís, anotad con la mayor precisión posible cuál ha sido vuestro problema.
- El profesor revisará las soluciones propuestas por cada grupo y se comentarán en clase. En el caso de que no hubiéseis conseguido implementarlo, plantead al profesor el problema encontrado. En cualquier caso, anotad las ideas para mejorar la utilidad.
- Después de la clase, terminad de poner a punto la utilidad y dejadla en el directorio correspondiente de vuestra cuenta del servidor para que el profesor pueda verificar su funcionamiento.
Dedicación¶
En clase dedicaremos unos 30 minutos a esta actividad.
Tiempo estimado a dedicar fuera de clase: 30 minutos.
Entregables¶
La utilidad debe quedar en tu directorio de la actividad en el servidor.
Evaluación¶
La actividad se considerará superada satisfactoriamente si la utilidad se ha construido y funciona de acuerdo a lo definido.
Esta actividad no se evalúa directamente. Más adelante pondrás en práctica continuamente lo aprendido aquí. También se evalúa en una actividad de evaluación posterior.
Actividad A02.3. Un despertador en C¶
Como hemos visto en la actividad anterior en Linux podemos utilizar un repertorio de comandos. Muchos de estos comandos ya están construidos y se incluyen en la distribución del sistema operativo. El man (Sección 1) nos permite conocer su funcionalidad y uso. Utilizando estos comandos como componentes, podemos construir nuevos comandos.
Evidentemente, alguien ha programado esos comandos, normalmente en C. De igual forma, nosotros podemos utilizar el lenguaje C para programar comandos como los de Linux o en versiones más adecuadas a lo que queremos. En este caso, ¿cuáles son los componentes que Linux nos ofrece para construir el despertador en lenguaje C y cómo los localizamos en el manual? ¿Cómo se elabora y ejecuta un programa C para Linux?
Qué hay que hacer:¶
- En primer lugar, debemos aprender algo de lenguaje C para desenvolvernos con esta actividad. Para ello nos basaremos en este primer ejemplo . Revisadlo en el grupo con la vista puesta en el programa despertador que tendréis que elaborar vosotros. Anotad las dudas que os surjan.
- El profesor explicará los aspectos acerca del lenguaje C necesarios para construir un programa sencillo como el despertador. También explicará cómo compilar el programa para montar la utilidad sobre Linux (Ejemplo de compilación con gcc).
- El comportamiento del programa debe ser el establecido en el documento de especificación que se suministra. Esta especificación establece los requisitos funcionales de la utilidad y es de gran importancia que el programa que vamos a desarrollar se atenga a ella. La forma de verificar el comportamiento de la aplicación será a través de un conjunto de pruebas, para lo que deberemos elaborar previamente un documento de casos de prueba basándonos en la especificación. Aquí tenéis una plantilla del documento de verificación. Con su ayuda, estableced los casos de prueba necesarios y elaborad vuestro propio documento, que utilizaréis más tarde para verificar el funcionamiento de la utilidad.
- De acuerdo a la especificación, elaborad el nuevo despertador programado en C. Compiladlo y corregir los errores de compilación. Una vez libre de errores de compilación, verificad su funcionamiento de acuerdo al documento de test. Elaborad un documento de verificación a partir del documento de prueba, indicando si para cada caso el programa pasa la prueba satisfactoriamente o si hay algún problema. Dedicad un máximo de 90 minutos fuera de clase a estas tareas.
- En la clase siguiente se comentarán los problemas encontrados tanto en las fases de programación como de verificación. Si no has podido finalizar esta actividad, dedica algo de tiempo después de la clase.
Dedicación¶
En clase dedicaremos 1 hora y media a esta actividad.
Tiempo estimado a dedicar fuera de clase: 2 horas.
Entregables¶
El grupo deberá entregar los siguientes documentos:
- Código fuente y ejecutable de la utilidad en formato electrónico (.tar.gz).
- Documento de verificación.
Evaluación¶
La actividad NO SE EVALUA directamente, servirá como ejemplo de cómo se deben realizar las entregas de programas y verificación de los mismos. No obstante os recomendamos que reviséis los criterios de evaluación los criterios de evaluación de este tipo de actividades. Para esta actividad son los siguientes:
- Que el código desarrollado sea razonablemente eficiente y esté expresado de forma clara y estructurada. En el apartado CEval 8 se describe el criterio de evaluación del código.
- Que la utilidad cumpla los requisitos funcionales de la especificación. En el apartado CEval 8 se describe el criterio de evaluación.
- Calidad de la verificación a través del documento de verificación. En el apartado CEval 9 se describe el criterio de evaluación.
Actividad A02.4. ¿Funcionará nuestro despertador en Windows?¶
Ahora podemos plantearnos lo siguiente:
Hemos programado una utilidad en C para Linux y disponemos en el PC de una partición Windows. ¿Podemos ejecutar esta utilidad en Windows?
Más en concreto, vamos a tratar de verificar cuál de las siguientes afirmaciones es cierta:
- El programa ejecutable compilado para Linux se puede ejecutar en Windows sin mayor problema, siempre que ambos sistemas operativos compartan la misma máquina.
- El programa ejecutable compilado para Linux no se puede ejecutar en Windows directamente, pero podemos recompilar el código fuente con un compilador de C para Windows y ejecutarlo sin mayor problema.
- El programa fuente elaborado para Linux debe ser modificado y recompilado con un compilador de C para Windows si queremos que funcione en Windows.
Qué hay que hacer:¶
- En el grupo, discutid cuál de las tres afirmaciones de arriba debería ser la cierta. Basándoos en vuestros conocimientos sobre arquitectura de computadores y lenguajes de programación, y en vuestra experiencia como usuarios de sistemas operativos, escribid una respuesta razonada lo más precisa posible. Anotad también las dudas que os hayan surgido.
- En clase se recogerán las respuestas de cada grupo. El profesor os propondrá una prueba sobre Windows con los dos programas que hemos manejado en la actividad anterior (el de ejemplo y el despertador). Realizad el experimento y anotad los resultados. Tratad de justificarlos de acuerdo a lo razonado en el punto anterior.
- El profesor presentará una versión para windows del despertador para que lo probéis de nuevo sobre Windows. ¿Qué es lo que hace que este código se pueda compilar y ejecutar en Windows?
- En clase se debatirán los resultados y se establecerán las hipótesis adecuadas. El profesor presentará una versión compatible del despertador para que probéis de nuevo, tanto sobre Linux como sobre Windows.
- De nuevo, se discutirán los resultados y el profesor propondrá un conjunto de modelos de compatibilidad para explicar los resultados obtenidos. También se referirá a los intentos de estandarización. Toma notas, que podrás usar en una evaluación posterior.
Dedicación¶
En clase dedicaremos 90 minutos a esta actividad.
Tiempo estimado a dedicar fuera de clase: 30 minutos para ordenar las notas.
Entregables¶
No hay que entregar ningún documento, pero las notas que tomes te servirán para realizar un repaso en una evaluación posterior.
Evaluación¶
La actividad se evalúa en una actividad de evaluación posterior.
No olvides rellenar la encuesta de dedicación de esta actividad.(Encuesta de Dedicación.)