Estudiante
ESCUELA DE INFORMATICA
UNIVERSIDAD NACIONAL DE TRUJILLO
Proyecto Unidad I Objetivos
1. COMPRENDER las diferentes llamadas al sistema y como se implementan en el kernel de Linux 2. APRENDER A COMPILAR el Kernel de LINUX 3. INTEGRAR los conceptos sobre procesos, señales y llamadas al sistema al implementar el proyecto de una interfaz de shell. 4. APRECIAR lasaplicaciones de la API pthread de UNIX. 5. IMPLEMENTAR los conceptos de hilos en el proyecto de multiplicación de matrices.
Experiencia 01
Creando una Interfaz de Shell
Este proyecto consiste en modificar un programa de Java para que funcione como una interfaz de shell que acepte comandos de usuario y luego ejecute cada comando en un proceso distinto, externo a la máquina virtual de Java. Unainterfaz de shell le muestra al usuario un prompt, tras lo cual el usuario escribe el siguiente comando. El ejemplo siguiente ilustra el promp jsh> y el comando del usuario: cat Prog.java. Este comando despliega el archivo Prog.java en la terminal utilizando el comando cat de Unix. jsh> cat Prog.java Quizá la técnica mas sencilla para implementar una interfaz de shell consista en hacer que elprograma primero lea lo que el usuario escribió en la línea de comandos (en el ejemplo anterior cat Prog.java) y luego crear un proceso externo distinto que lleve a cabo el comando. Para crear el nuevo proceso utilizamos el objeto ProcessBuilder(), como se ilustra en la figura 3.13 del libro. En nuestro ejemplo el nuevo proceso es externo a la máquina virtual de Java, y comienza su ejecución cuando seinvoca su método run(). Un Shell Simple El archivo SimpleShell.java contiene un programa de Java que proporciona las operaciones básicas de un shell de línea de comandos. El método main() despliega el prompt jsh> y espera hasta que el usuario escriba algo. El programa termina cuando el usuario teclea Ctrl-C. Este proyecto se divide en tres partes: (1) crear el proceso externo y ejecutar el comandoen dicho proceso, (2) modificar el shell para que se pueda cambiar de directorio, y (3) añadir un historial de instrucciones.
Ms Edwin Raúl Mendoza Torres
Sistemas Operativos
Creando el Proceso Externo La primera parte del proyecto consiste en modificar el método main() del archivo SimpleShell.java para que se cree un proceso externo y ejecute el comando que el usuario haya especificado.El comando debe ser procesado primero para separar sus parámetros y luego pasado al constructor del objeto ProcessBuilder. Por ejemplo, si el usuario escribe el comando jsh> cat Prog.java entonces los parámetros son (1) cat y (2) Prog.java, y estos parámetros deben ser pasados al constructor de ProcessBuilder. Quizá la estrategia más sencilla para lograr esto sea usar el constructor que tiene lafirma siguiente: public ProcessBuilder (List command) Se puede usar una instancia de java.util.ArrayList, el cual implementa la interfaz java.util.List, donde el primer elemento de la lista sea cat y el segundo elemento sea Prog.java. Esta estrategia es particularmente útil ya que el número de argumentos que se le pasan a los comandos de UNIX puede variar (el comando cat acepta un argumento; elcomando cp acepta dos, etc.) Si el usuario escribe un comando no válido, el método start() en la clase ProcessBuilder arroja una excepción java.io.IOException. Si ocurre esto, tu programa debe escribir un mensaje de error apropiado y seguir esperando más comandos del usuario. Cambiando de Directorios La siguiente tarea que tienes que realizar es modificar tu programa para que se pueda cambiar dedirectorio. En sistemas UNIX existe el concepto del directorio actual de trabajo, lo cual es simplemente el directorio donde te encuentras actualmente. El comando cd le permite al usuario cambiar de directorio actual de trabajo. Tu interfaz de shell debe soportar este comando. Por ejemplo, si el directorio actual es /usr/pepe y el usuario escribe cd musica, el directorio actual pasa a ser...
Regístrate para leer el documento completo.