From 8ce7cd9769fe269b5b59526f916e4545a700e305 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 26 Jul 2021 00:55:56 -0400 Subject: [PATCH] finish report --- doc/Informe.tex | 8 +++++++ doc/sections/codigo.tex | 2 +- doc/sections/codigo/launch.tex | 6 ----- doc/sections/codigo/permutar.tex | 6 +++++ doc/sections/funcionamiento.tex | 38 ++++++++++++++++++++++++++++++++ 5 files changed, 53 insertions(+), 7 deletions(-) delete mode 100644 doc/sections/codigo/launch.tex create mode 100644 doc/sections/codigo/permutar.tex create mode 100644 doc/sections/funcionamiento.tex diff --git a/doc/Informe.tex b/doc/Informe.tex index 5b40666..4eb6891 100644 --- a/doc/Informe.tex +++ b/doc/Informe.tex @@ -13,6 +13,12 @@ \usepackage{amsmath} \usepackage{listings} \usepackage{xcolor} +\usepackage[T1]{fontenc} +\usepackage{lmodern} + +\usepackage{mathptmx} + +\newcommand{\Quad}{\hspace*{1em}} \lstdefinestyle{freefempp}{ language=C, @@ -79,6 +85,8 @@ Carlos Faúndez \include{sections/introduccion} +\include{sections/funcionamiento} + \include{sections/codigo} \include{sections/conclusiones} diff --git a/doc/sections/codigo.tex b/doc/sections/codigo.tex index 13c32b6..7f94769 100644 --- a/doc/sections/codigo.tex +++ b/doc/sections/codigo.tex @@ -1,6 +1,6 @@ \section{Código} \input{sections/codigo/ciclo} \input{sections/codigo/builtins} -\input{sections/codigo/launch} +\input{sections/codigo/permutar} \input{sections/codigo/redireccion} \input{sections/codigo/environ} \ No newline at end of file diff --git a/doc/sections/codigo/launch.tex b/doc/sections/codigo/launch.tex deleted file mode 100644 index 267b1c4..0000000 --- a/doc/sections/codigo/launch.tex +++ /dev/null @@ -1,6 +0,0 @@ -\newpage -\subsection{Launch} -Launch(lanzar) es la parte responsable por permutar un programa que está en el sistema operativo o en PATH. Para hacer eso\ -primer hacemos un fork donde el hijo permuta la operación y el padre espera que su hijo termina. Luego pasamos un nombre\ -de programa a lanzar y sus argumentos al execvp para permutar en el hijo. -\lstinputlisting{code/launch.txt} \ No newline at end of file diff --git a/doc/sections/codigo/permutar.tex b/doc/sections/codigo/permutar.tex new file mode 100644 index 0000000..f633c51 --- /dev/null +++ b/doc/sections/codigo/permutar.tex @@ -0,0 +1,6 @@ +\newpage +\subsection{Permutar} +Permutar es la parte responsable por correr un programa que está en el sistema operativo o en PATH. Para hacer eso\ +primer hacemos un fork donde el hijo permuta la operación y el padre espera que su hijo termina. Luego pasamos un nombre\ +de programa a permutar y sus argumentos al execvp. +\lstinputlisting{code/launch.txt} \ No newline at end of file diff --git a/doc/sections/funcionamiento.tex b/doc/sections/funcionamiento.tex new file mode 100644 index 0000000..c7c2e3b --- /dev/null +++ b/doc/sections/funcionamiento.tex @@ -0,0 +1,38 @@ +\section{Funcionamiento} +El myshellin consiste de 3 partes importantes, los comandos "builtins", permutar y redireccionamiento. + +\subsection{Builtins} +Los builtins son comandos que son proporcionados por el shell en vez de un programa que provee el sistema operativo. Los comandos\ +que proporciona el myshellin son: +\begin{itemize} + \item help \newline \Quad mostrar una mensaje de ayuda de como usar el shell. + \item environ \newline \Quad imprimir todos los variables del entorno. + \item set \newline \Quad crear o sobre escribir un variable de entorno. + \item echo \newline \Quad imprimir un comentario o variable. + \item cd \newline \Quad cambiar el directorio donde está trabajando el shell. + \item exit \newline \Quad salir del shell. +\end{itemize} + +Cuando el comando que ingreso el usuario no es un builtin el siguiente paso es tratar de permutar un software que proporciona el\ +sistema operativo. + +\subsection{Permutar} +Para permutar un programa de sistema, el proceso de myshellin hace una llamada al fork para crear un proceso hijo. Luego el\ +proceso hijo intenta permutar con el comando execvp. Lo que hace eso es reemplazar el proceso hijo con el proceso del programa\ +que proporciona el sistema operativo como ls, rm, df, du, etc. Mientras que corre el programa el proceso padre espera que\ +termina el proceso hijo antes que puede seguir pidiendo que el usuario ingresa otros comandos. + +\newpage +\subsection{Redireccionamiento} +Redireccionamiento es el proceso de redirigir los contenidos de una entrada o salida al stdin, stdout o stderr. Por ejemplo\ +se puede redirigir todo el contenidos que se debe imprimir en stdout a un archivo usando el símbolo ``>`` seguido por un nombre\ +de archivo. En el shell existen los siguientes tipos de redireccionamiento: +\begin{itemize} + \item > \newline \Quad redirigir el stdout a un archivo y borrar el contenido anterior si existe el archivo. + \item >\null> \newline \Quad redirigir el stdout a un archivo y agregue el el contenido nuevo al final del archivo si existe. + \item 1> \newline \Quad redirigir el stdout a un archivo y borrar el contenido anterior si existe el archivo. + \item 1>\null> \newline \Quad redirigir el stdout a un archivo y agregue el el contenido nuevo al final del archivo si existe. + \item 2> \newline \Quad redirigir el stderr a un archivo y borrar el contenido anterior si existe el archivo. + \item 2>\null> \newline \Quad redirigir el stderr a un archivo y agregue el el contenido nuevo al final del archivo si existe. + \item < \newline \Quad redirigir el contenido de un archivo al stdin. +\end{itemize} \ No newline at end of file