Está en la página 1de 14

1

MANUAL DE
USUARIO

1
2

SISTEMAS OPERATIVOS

Universidad Nacional
Federico Villarreal

ESCUELA:

Ingeniería de Sistemas.

TEMA:

Proyecto de programación uno. Desarrollo

de un intérprete de mandatos

PROFESOR:

Ing. Edgar Muñante Villafuerte

Ing. Dario Huayta Guardia

EQUIPO:

Hinostroza Flores, Janet


King Atoche, Bryan
Minaya de la Cruz, Ivan Abel
Orellana Lopez, Mike Angelo
Suarez Ramírez, Jasón Franklin

2
3

PROYECTO DE PROGRAMACIÓN UNO. DESARROLLO DE UN INTÉRPRETE


DE MANDATOS

El shell o intérprete de mandatos es la interfaz de usuario fundamental de los sistemas


operativos.
El primer proyecto es escribir un intérprete de mandatos sencillo – myshell – con las
siguientes propiedades:

1. El intérprete de mandatos debe dar soporte a los siguientes mandatos internos:

i. cd <directorio> – cambia el directorio actual a <directorio>. Si el argumento


<directorio>no aparece, devuelve el directorio actual. Si el directorio no existe
se debe proporcionar un mensaje de error apropiado. Este mandato debe
modificar también la variable de entorno PWD.

ii. clr – limpia la pantalla.


iii. dir <directory> – lista el contenido de <directorio>.
iv. environ – muestra todas las variables de entorno.
v. echo <comentario> – muestra <comentario> en la pantalla seguido de una
nueva línea (espacios
múltiples o tabuladores se reducen a un especio sencillo).
vi. help – muestra el manual de usuario usando el filtro more.
vii. pause – detiene la ejecución del intérprete de mandatos hasta que se pulse
‘Intro’.
viii. quit – sale del intérprete de mandatos.
ix. El entorno del intérprete de mandatos debe contener shell=<ruta>/myshell
donde
<ruta>/myshell es la ruta completa al ejecutable del intérprete de mandatos (no
una ruta fijada al directorio inicial, sino la ruta real desde dónde se ha ejecutado).

2. Todo el resto de entradas por teclado se interpretan como la invocación de un


programa, que deben realizarse por medio de un fork y la ejecución de dicho
programa. Todo ello como un proceso hijo del intérprete de mandatos. Los
programa deben ejecutarse en un entorno que incluya la entrada:
parent=<ruta>/myshell donde <ruta>/myshell es la ruta descrita en el apartado
1.ix anterior.

3. El intérprete de mandatos debe ser capaz de leer su entrada de mandatos de un


fichero. Por ejemplo, si se invoca al intérprete de mandatos con la línea:

3
4

myshell fichero-lotes

Donde fichero-lotes se supone que contiene las líneas de mandatos para el


intérprete. Cuando se
llegue al final del fichero, el intérprete de mandatos debe terminar. Obviamente,
si el intérprete se
invoca sin argumentos de entrada, solicitará los mandatos al usuario vía consola.

4. El intérprete de mandatos debe soportar redirección de E/S, sobre stdin y/o


stdout. Por ejemplo, la línea de mandatos:

nombreprograma arg1 arg2 < entrada > salida

ejecutará el programa nombreprograma con los argumentos arg1 y arg2, el flujo


de entra stdin se alimentará del fichero entrada y el flujo de salida stdout se
volcará en el fichero salida.

La redirección de stdout debe de ser posible también para los mandatos internos:
dir, environ, echo, y help.

Para la redirección de salida, si el carácter de redirección es > se creará el fichero


salida si no existe y si existe se truncará su contenido. Si el indicador de
redirección es >> se creará el fichero salida si no existe y si existe se añadirá la
salida al final de su contenido.

5. El intérprete de mandatos debe soportar la ejecución de mandatos en segundo


plano (background).Un signo & al final de la línea de mandatos indica que el
intérprete debe devolver un prompt al usuario, inmediatamente después de
haber lanzado el programa.
6. El prompt debe indicar la ruta del directorio.

Nota: se puede asumir que todos los argumentos en la línea de mandatos (incluyendo
los símbolos de redirección >, <, y >>; y background &) estarán separados de los otros
argumentos en la línea de mandatos por espacios en blanco – uno o más espacios y/o
tabuladores (obsérvese la línea de mandatos en 4).

Requisitos del proyecto

4
5

1. Diseñe un intérprete de mandatos sencillo que satisfaga los criterios antes


mencionados e impleméntelo en la plataforma UNIX seleccionada.
2. Escriba un manual sencillo que describa cómo usar el intérprete. El manual debe
contener suficiente información para que un usuario principiante en UNIX pueda
usarlo. Por ejemplo, se debe explicar los conceptos de redirección de E/S, de
entorno de programa, y de ejecución en segundo plano (background). El manual
DEBE llamarse readme y debe ser un documento de texto plano que pueda
leerse con un editor de texto estándar.

Como ejemplo del tipo de profundidad que se pide, deberá inspeccionar los
manuales en línea de csh y tcsh.(man csh, man tcsh). Estos intérpretes tienen
mucha más funcionalidad que el que se pide, de forma que el manual que se
requiere no deberá ser tan largo. No debe incluir bajo ningún concepto
consideraciones de implementación, ficheros fuente o código. Esto se incluirá en
otros ficheros del proyecto. Este manual debe ser un Manual de Usuario no un
Manual de Desarrollo.
3. El código fuente DEBE estar extensamente comentado y apropiadamente
estructurado, permitiendo a sus colegas comprenderlo y darle mantenimiento al
código. ¡El código comentado con propiedad y bien alineado es mucho más fácil
de interpretar e interesa que la persona que pueda evaluar su código pueda
entenderlo con facilidad sin necesidad de hacer gimnasia mental!
4. Los detalles sobre el envío del proyecto se proporcionarán con antelación a la
fecha límite.
5. El envío del proyecto debe contener sólo ficheros fuente, incluyendo ficheros de
cabecera, makefile (en letras minúsculas, por favor) el fichero readme (en letras
minúsculas, por favor). No se debe incluir ningún fichero ejecutable. El evaluador
recompilará automáticamente su intérprete de mandatos a partir del código
fuente. Si el código fuente no compila, no será calificado.
6. El makefile (en letras minúsculas, por favor) DEBE generar un fichero binario
llamado myshell (en letras minúsculas, por favor). Un ejemplo de makefile sería:

# Pepe Potamo, s1234567 – Proyecto 1 de SO


# CompLab1/01 tutor: Chema Peña
myshell: myshell.c utility.c myshell.h
gcc –Wall myshell.c utility.c –o myshell

El programa myshell se generará simplemente tecleando make en la línea de


mandatos.

5
6

Nota: la cuarta línea del makefile de ejemplo DEBE comenzar por un tabulador.

7. En el ejemplo mostrado arriba los ficheros incluidos en el directorio de envío


eran:
makefile
myshell.c
utility.c
myshell.h
readme
Envío
Es necesario un makefile. Todos los ficheros incluidos en su envío se copiarán al mismo
directorio, por tanto no incluya rutas en su makefile. El makefile debe incluir todas las
dependencias para compilar el programa. Si se incluye una biblioteca, su makefile debe
construir dicha biblioteca.

6
7

MANUAL DE USUARIO

Proyecto de programación y desarrollo de un intérprete de mandatos

EJECUCION DEL COMANDO Myshell

7
8

dir <directory> – lista el contenido de <directorio>.

i. cd <directorio> – cambia el directorio actual a <directorio>. Si el


argumento <directorio> no aparece, devuelve el directorio actual. Si el
directorio no existe se debe proporcionar un mensaje de error apropiado.
Este mandato debe modificar también la variable de entorno PWD.

8
9

Agregamos la entrada por ejemplo “nbproject” y aceptar

9
10

Cambiando del Directorio Actual “nbproject” existente en el MyShell

10
11

help – muestra el manual de usuario usando el filtro more.

Muestra el manual de usuario

11
12

Inserta o captura los datos de la ruta donde encuentra el bloc de notas UNFV-
EPIS.txt

12
13

13
14

14

También podría gustarte