Advertisement
diofanto33

Untitled

Sep 6th, 2023
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VisualBasic 3.84 KB | Cryptocurrency | 0 0
  1. # Lab01-SisOp-2022
  2. ## Grupo N° 15
  3. #### Integrantes:
  4. Otero Alan
  5. Sharry Facundo
  6. Collo Gaston
  7. Rodriguez Diego
  8.  
  9. # Indice
  10. 1. [Introducción](#id1)
  11. 2. [Técnicas de Programación](#id2)
  12. 3. [Herramientas de Programación](#id3)
  13. 4. [Setup](#id4)
  14. 5. [Módulos](#id5)
  15. 6. [FeedBack](#id6)
  16. 7. [Conclusiones](#id7)
  17.  
  18. -   ## Introducción <span id="id1"/>
  19.     ### MyBASH
  20.     Es una [CLI](https://en.wikipedia.org/wiki/Command-line_interface) que posee tres comandos básicos **cd**, **exit** y           **help**, y que además puede ejecutar comandos simples del sistema con redirección y en pipelines pares.
  21.  
  22. -   ## Técnicas de Programación <span id="id2"/>
  23.     Se trato de llegar siempre a un código modular y limpio, que cumpla con los requerimientos, pero manteniendo un balance con la legibilidad.
  24. -   ## Herramientas de Programación <span id="id3"/>
  25.     Durante todo el desarrollo del laboratorio usamos el IDE CLion con la extensión CodeWithMe para conectarnos al mismo workspace. GDB fue clave para el avance.
  26.  
  27. # Setup <span id="id4"/>
  28.  
  29. ## Limpiar ejecutables
  30.  
  31. ```sh
  32. make clean
  33. ```
  34. ## Compilar
  35.  
  36. ```sh
  37. make
  38. ```
  39. o también
  40. ```sh
  41. make all
  42. ```
  43.  
  44. ## Ejecutable
  45.  
  46. ```sh
  47. ./mybash
  48. ```
  49.  
  50. ## Ejecutar desde un solo comando
  51.  
  52. ```sh
  53. make && ./mybash
  54. ```
  55.  
  56. # Modulos <span id="id5"/>
  57.  
  58. - ## Command
  59.   Contiene los TADs responsables de construir y dar funcionalidad a
  60.   nuestras pipelines y comandos simples, abstrayendo su comportamiento.
  61. - ## Builtin
  62.   Contiene métodos para manejar los comandos internos; específicamente         ejecutarlos, enumerar y encapsular las syscalls de los builtin implementados, y chequear si un scommand es un comando interno. Ademas implementamos function pointers para lograr cierto "Polimorfismo" y que sea mas sencillo llamar al executor de nuevos comandos internos.
  63. - ## Execute
  64.   Es el encargado de ejecutar los comandos de una pipeline, conectando sus inputs y outputs y ademas realizarlos en procesos hijos.
  65. - ## Parsing
  66.   Es el encargado de iterar entre los argumentos, símbolos y demás patrones que nos interesen que se encuentren en un string y construir nuestros TAD pipeline y scommand.
  67.  
  68. # Feedback <span id="id6"/>
  69.  
  70. ## Desarrollo
  71.  
  72. Nuestro proceso de desarrollo fue el siguiente:
  73.  
  74. Comenzamos desarrollando la estructura del command. En principio nos fuimos guíando por el díagrama que dejó la cátedra en el doc, y luego nos ayudamos de las específicaciones que estaban en cada .h (command.h).
  75. Al comenzar con la estructura de command y pipeline, nos decidimos usar Glist de la librería Glib, porque tenía métodos ya implementados que ibamos a necesitar en cada función propia(como hacer push o pop).
  76. Lo próximo que realizamos fue el parsing y el builtin, en paralelo. El builtin lo hemos ido cambiando, ya que aparecían mejores formas de desarrollo(mas elegante y modularizada) y a medida que pasaban los días, mejorabamos el código o eliminabamos cosas innecesarias, también arreglabamos problemas como "segmentation fault" que generaban los ciclos o los punteros. El último día testeamos que la llamada a los comandos internos, funcionaban, el cd, exit y help.
  77. Al final de todo y lo que mas problema generó fue el execute.c, en especial lo que implica el fork y pipe, por sus test, pero que lograron resolverse el último día.
  78. Pudimos resolver todo lo que implican los puntos necesarios para aprobar el proyecto, desde los comandos internos a los procesos zombies, y también realizar un punto estrella: generar un prompt con información relevante.
  79.  
  80.  
  81. ## Conclusiones <span id="id7"/>
  82. Sentimos que el lab fue entretenido y pudimos adquirir los conocimientos de una manera desafiante pero satisfactoria, si bien no llegamos a cumplir todos los puntos extra, de haber tenido mas tiempo (Hablando del tiempo personal de cada uno de los integrantes), consideramos que habria sido totalmente alcanzable.
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement