Вы находитесь на странице: 1из 14

1

SISTEMAS OPERATIVOS

Universidad Nacional
Federico Villarreal
ESCUELA:
Ingeniera de Sistemas.
TEMA:
Proyecto de programacin uno. Desarrollo de un intrprete de mandatos
PROFESOR:
Ing. Edgar Muante Villafuerte
Ing. Dario Huayta Guardia
EQUIPO:
Hinostroza Flores, Janet
King Atoche, Bryan
Minaya de la Cruz, Ivan Abel
Orellana Lopez, Mike Angelo
Suarez Ramrez, Jasn Franklin

MANUAL DE
USUARIO
2016

PROYECTO DE PROGRAMACIN UNO. DESARROLLO DE UN


INTRPRETE
DE MANDATOS

El shell o intrprete de mandatos es la interfaz de usuario


fundamental de los sistemas operativos.
El primer proyecto es escribir un intrprete de mandatos sencillo
myshell con las siguientes propiedades:
1. El intrprete 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
tambin 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 lnea (espacios
mltiples o tabuladores se reducen a un especio sencillo).
vi. help muestra el manual de usuario usando el filtro more.
vii. pause detiene la ejecucin del intrprete de mandatos
hasta que se pulse Intro.
viii. quit sale del intrprete de mandatos.
ix. El entorno del intrprete de mandatos debe contener
shell=<ruta>/myshell donde
<ruta>/myshell es la ruta completa al ejecutable del intrprete
de mandatos (no una ruta fijada al directorio inicial, sino la ruta
real desde dnde se ha ejecutado).
2. Todo el resto de entradas por teclado se interpretan como la
invocacin de un programa, que deben realizarse por medio de
un fork y la ejecucin de dicho programa. Todo ello como un
proceso hijo del intrprete 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 intrprete de mandatos debe ser capaz de leer su entrada de
mandatos de un fichero. Por ejemplo, si se invoca al intrprete
de mandatos con la lnea:
myshell fichero-lotes

Donde fichero-lotes se supone que contiene las lneas de


mandatos para el intrprete. Cuando se
llegue al final del fichero, el intrprete de mandatos debe
terminar. Obviamente, si el intrprete se
invoca sin argumentos de entrada, solicitar los mandatos al
usuario va consola.
4. El intrprete de mandatos debe soportar redireccin de E/S,
sobre stdin y/o stdout. Por ejemplo, la lnea 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 redireccin de stdout debe de ser posible tambin para los
mandatos internos: dir, environ, echo, y help.
Para la redireccin de salida, si el carcter de redireccin es >
se crear el fichero salida si no existe y si existe se truncar su
contenido. Si el indicador de redireccin es >> se crear el
fichero salida si no existe y si existe se aadir la salida al final
de su contenido.
5. El intrprete de mandatos debe soportar la ejecucin de
mandatos en segundo plano (background).Un signo & al final de
la lnea de mandatos indica que el intrprete debe devolver un
prompt al usuario, inmediatamente despus de haber lanzado
el programa.
6. El prompt debe indicar la ruta del directorio.

Nota: se puede asumir que todos los argumentos en la lnea de


mandatos (incluyendo los smbolos de redireccin >, <, y >>; y
background &) estarn separados de los otros argumentos en la lnea
de mandatos por espacios en blanco uno o ms espacios y/o
tabuladores (obsrvese la lnea de mandatos en 4).

Requisitos del proyecto

1. Disee un intrprete de mandatos sencillo que satisfaga los


criterios antes mencionados e implemntelo en la plataforma
UNIX seleccionada.
2. Escriba un manual sencillo que describa cmo usar el
intrprete. El manual debe contener suficiente informacin para
que un usuario principiante en UNIX pueda usarlo. Por ejemplo,
se debe explicar los conceptos de redireccin de E/S, de entorno
de programa, y de ejecucin 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 estndar.

3.

4.
5.

6.

Como ejemplo del tipo de profundidad que se pide, deber


inspeccionar los manuales en lnea de csh y tcsh.(man csh, man
tcsh). Estos intrpretes tienen mucha ms funcionalidad que el
que se pide, de forma que el manual que se requiere no deber
ser tan largo. No debe incluir bajo ningn concepto
consideraciones de implementacin, ficheros fuente o cdigo.
Esto se incluir en otros ficheros del proyecto. Este manual
debe ser un Manual de Usuario no un Manual de Desarrollo.
El cdigo fuente DEBE estar extensamente comentado y
apropiadamente estructurado, permitiendo a sus colegas
comprenderlo y darle mantenimiento al cdigo. El cdigo
comentado con propiedad y bien alineado es mucho ms fcil
de interpretar e interesa que la persona que pueda evaluar su
cdigo pueda entenderlo con facilidad sin necesidad de hacer
gimnasia mental!
Los detalles sobre el envo del proyecto se proporcionarn con
antelacin a la fecha lmite.
El envo del proyecto debe contener slo ficheros fuente,
incluyendo ficheros de cabecera, makefile (en letras
minsculas, por favor) el fichero readme (en letras minsculas,
por favor). No se debe incluir ningn fichero ejecutable. El
evaluador recompilar automticamente su intrprete de
mandatos a partir del cdigo fuente. Si el cdigo fuente no
compila, no ser calificado.
El makefile (en letras minsculas, por favor) DEBE generar un
fichero binario llamado myshell (en letras minsculas, por
favor). Un ejemplo de makefile sera:
# Pepe Potamo, s1234567 Proyecto 1 de SO
# CompLab1/01 tutor: Chema Pea
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 lnea de mandatos.
Nota: la cuarta lnea del makefile de ejemplo DEBE comenzar
por un tabulador.
7. En el ejemplo mostrado arriba los ficheros incluidos en el
directorio de envo eran:
makefile
myshell.c
utility.c
myshell.h
readme
Envo
Es necesario un makefile. Todos los ficheros incluidos en su envo se
copiarn 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.

MANUAL DE USUARIO

Proyecto de programacin y desarrollo de un intrprete de


mandatos

EJECUCION DEL COMANDO Myshell

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 tambin la variable de entorno
PWD.

Agregamos la entrada por ejemplo nbproject y aceptar

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

Вам также может понравиться