Introducción a los Sistemas Operativos, Ing. Informática, UPV/EHU


Proyecto P07. Múltiples nombres de los ficheros y su borrado

En otros sistemas operativos conocemos una forma de crear un “acceso directo” a un fichero, de esta manera podemos hacer referencia al fichero bien desde su nombre original o desde su “acceso directo”. ¿Proporciona Linux algún mecanismo similar?, ¿Qué implicaciones tiene en el borrado de los ficheros?

Actividad A07.1 El nombre de un fichero, ¿identificador o simple atributo?

Si el profesor te pide que agrupes todos tus ficheros fuente desarrollados en la asignatura en un mismo directorio fuentes de tu directorio HOME ¿cómo lo resolverías?. En Windows existe una forma de crear un “acceso directo” a un fichero. Al trabajar en Linux nos planteamos cuál es el mecanismo equivalente, y si ofrece la misma funcionalidad.

Qué hay que hacer

  1. Como punto de partida, observad en el grupo el efecto del siguiente comando:

    ln fichero_existente nuevo
    

    Comprobad el efecto y, con ayuda de man interpretad el resultado. ¿Qué pasa si ahora eliminamos uno de ellos? ¿Tenemos dos ficheros? ¿Uno con dos nombres? ¿Equivale este comando al “crear acceso directo” de Windows? Responded a estas cuestiones en el cuaderno.

  2. Discutid (en grupo) cómo resolver el problema planteado de cómo agrupar vuestros ficheros fuentes en un mismo directorio. Debe quedar claro que si se modifica un fichero fuente en el subdirectorio de una actividad, debe verse modificado desde fuentes. Plantearos cómo queréis que se interprete el borrado del fichero fuente en el subdirectorio de una actividad. Anotad las conclusiones.

  3. A continuación se discutirá en clase sobre las aportaciones de cada grupo. Como resultado del debate intenta responder de forma razonada a la pregunta de la actividad: en Linux, el nombre de un fichero, ¿identifica el fichero o es un atributo más del mismo (como por ejemplo la fecha de creación)?

  4. Modifica tu entorno de trabajo para poder agrupar los ficheros fuentes en vuestro directorio HOME en la forma enunciada. Verifica que cumple con el comportamiento acordado.

  5. A partir de lo discutido en clase y la experiencia en la adaptación de tu entorno de trabajo, elabora en el cuaderno un pequeño informe que recoja las conclusiones sobre las diferentes opciones de Linux para enlazar un fichero. Este informe te servirá para preparar un cuestionario de evaluación posterior.

Dedicación

En clase dedicaremos 50 minutos a esta actividad.

Tiempo estimado a dedicar fuera de clase: 40 minutos.

Entregables

Ninguno

Evaluación

En una actividad de evaluación posterior.

Actividad A07.2 ¿Cuántos nombres puede tener un fichero?

En la actividad anterior hemos visto cómo entiende Linux el nombre de un fichero. Ahora, vamos construir una utilidad que nos permitirá, utilizando la interfaz de llamadas al sistema, proporcionar cuantos nombres queramos para un mismo fichero. De esta forma, nos proponemos implementar una utilidad milnombres, que funciona de acuerdo a la documento de especificación proporcionada.

Qué hay que hacer

  1. En el grupo, explorad en el man los comandos relacionados con el que queremos desarrollar y determinad las llamadas al sistema necesarias para implementarlo.
  2. En clase, se debate sobre las llamadas al sistema a utilizar y se resuelven las dudas sobre su uso.
  3. Elaborad una lista de casos de prueba para validar el funcionamiento de milnombres de acuerdo a su especificación.
  4. Proceded al desarrollo de la utilidad milnombres utilizando el lenguaje C y las llamadas al sistema acordadas. El profesor os proporcionara alguna pista para facilitar el desarrollo. El código desarrollado debe ser razonablemente eficiente y debe estar expresado de forma clara y estructurada. El grupo dará por finalizado el desarrollo cuando verifique su funcionamiento de acuerdo a su propio test.
  5. Elaborad un informe con la verificación.

Dedicación

En clase dedicaremos 40 minutos a esta actividad.

Tiempo estimado a dedicar fuera de clase: 1 hora.

(Esta actividad se explicará en clase por el profesor)

Entregables

Ninguno.

Evaluación

La actividad se evalúa en una actividad de evaluación posterior.

Actividad A07.3 Cómo se elimina un fichero

Ya sabemos manejar la utilidad rm que nos permite borrar un fichero. Algún programador de sistemas habrá desarrollado rm utilizando las llamadas al sistema adecuadas. En esta actividad vamos a construir el comando borrar, similar a rm y que debe funcionar de acuerdo a la especificación de borrar que el profesor os proporciona.

Qué hay que hacer

  1. En el grupo, explorad en el man el comando rm y determinad las llamadas al sistema necesarias para implementar la utilidad borrar.
  2. En clase, se debate sobre las llamadas al sistema a utilizar y se resuelven las dudas sobre su uso.
  3. Elaborad una lista de casos de prueba para validar el funcionamiento de borrar de acuerdo a su especificación.
  4. Proceded al desarrollo de la utilidad borrar utilizando el lenguaje C y las llamadas al sistema acordadas. El código desarrollado debe ser razonablemente eficiente y debe estar expresado de forma clara y estructurada. El grupo dará por finalizado el desarrollo cuando verifique su funcionamiento de acuerdo a su propio test.
  5. Elaborad un informe con la verificación.

En el documento Material P07 se encuentra parte del material utilizado en clase por el profesor.

Dedicación

En clase dedicaremos 40 minutos a esta actividad.

Tiempo estimado a dedicar fuera de clase: 50 minutos.

(Esta actividad se explicará en clase por el profesor)

Entregables

Ninguno. En este curso académico no se requiere ninguna entrega de esta actividad

Evaluación

La actividad se evalúa en una actividad de evaluación posterior.

Actividad A07.4 Actualizar mypackzip para que trabajen con enlaces

Seguimos ampliando la utilidad mypackzip en este caso para que gestione los enlaces por nombre. Actualiza las utilidades de insertar_fichero y extraer_fichero para que funcionen con ficheros de tipo enlace simbólico.

Qué hay que hacer:

  1. Completad las especificaciones de insertar_fichero y de extraer_fichero con los nuevos requisitos.
  2. Elaborad los documentos de verificación con los casos de prueba que consideréis necesarios.
  3. Programad los cambios en insertar_fichero y extraer_fichero y verificad su funcionamiento actualizando los correspondientes documentos de verificación.

Dedicación

En clase dedicaremos media hora a este proyecto.

Tiempo estimado a dedicar fuera de clase: 2 horas.

Entregables

El grupo deberá entregar los siguientes documentos:

  1. Código fuente y ejecutable de anadir_directorio y extraer_directorio (formato .tar.gz).
  2. Documentos de especificación y verificación de las dos utilidades (insertar_fichero y extraer_fichero) en formato pdf.

Evaluación

El código desarrollado en estas dos utilidades lo reutilizarás para construir el proyecto de E/S. por tanto, su evaluación se realizará en una actividad de evaluación posterior.

No obstante, puedes revisar los criterios que se utilizarán para evaluar este código en el proyecto.

Los criterios de evaluación son los siguientes:

  1. 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.
  2. Que la utilidad cumpla los requisitos funcionales de la especificación. En el apartado CEval 8 se describe el criterio de evaluación.
  3. 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.

Tareas opcionales:

Para aquellos equipos que tengan interés en ampliar la funcionalidad de la utilidad mypackzip se proponen otras posibles mejoras:

  1. Gestionar los ficheros de tipo enlace por inode.
  2. Gestionar añadir/extraer directorios con todo su contenido.
  3. Otras funcionalidades que consideréis interesantes o que tengáis especial interés. En este caso, comentar con el profesor dichas funcionalidades antes de comenzar con las mismas.

Se recomienda comenzar abordar estas tareas opcionales sólo cuando ya tengáis operativa las tareas de insertar y extraer enlaces por nombre.

No olvides rellenar la encuesta de dedicación de este proyecto. (Encuesta de Dedicación.)