Wednesday, May 9, 2012

Hola Mundo en nachOS

Bueno la tarea ahora es crear un programa y ejecutarlo. Formato de la tarea:
  • Tomar una foto a los pasos 2, 3, 4 y 6 como se muestra en el ejemplo
  • Ponerlas en formato pdf
  • Enviarlas al correo electronico: sistemas.operativos.fime@gmail.com
  • Ausnto: Tarea 3 - Matricula - Nombre
  • Entregarla antes del miercoles 11 de mayo

Lo primero que tiene que hacer es abrir la terminal y teclear
cd /nachos/nachos/code/test
Pasos para crear y ejecutar el programa:


1.- Creamos el archivo holamundo, tecleando en la terminal
sudo gedit holamundo.c
2.- Escribimos el codigo del programa
#include "syscall.h"
// Ejemplo de Holamundo
int main () {
Write("Hola Mundo! \n :B ",12,10);
Halt();
}
Se deberá ver como la siguiente imagen


3.- Modificar el archivo Makefile
Guardamos el archivo y tecleamos en la terminal:
sudo gedit Makefile
Buscamos la linea que dice "all:" y agregamos nuestro programa
all: halt shell matmult sort holamundo
Abajo en el mismo archivo agregamos las siguientes lineas:
holamundo.o: holamundo.c 
$(CC) $(CFLAGS) -c holamundo.c
holamundo: holamundo.o start.o 
$(LD) $(LDFLAGS) start.o holamundo.o -o holamundo.coff 
../bin/coff2noff holamundo.coff holamundo

NOTA: Asegurate que las lienas esten completamente iguales que en la imagen. Para ajustarlas usa la tecla TAB.


Que quede en color VERDE y alineado de la manera correcta para que no ocurran errores al compilar

Quedando como se muestra en la imagen:


4.- Modificar  el archivo exception.cc
Guardamos y tecleamos en la terminal:
cd ../userprog
y una vez en la carpeta tecleamos
sudo gedit exception.cc
Dentro del archivo agregamos la siguiente función (antes de la funcion ExceptionHandler)
void printVirtualCharArray(int va, int size) {
int tmp,i;
for (i=0;i<size-1; i++){
if(!machine->ReadMem(va+i,1,&tmp)) {
printf("%s trouble getting valut at %d \n",currentThread->getName(),va+1);
return;
}
printf("%c",tmp);
}
}
y despues modificamos la funcion de ExceptionHandler, agregando lo siguiente despues del else y no se te olvide borrar el { que esta despues del else.. si tienes dudas debe quedar igual que la foto. 
if ((which==SyscallException)&&(type==SC_Write)){
DEBUG('e', "%s WRITTING...", currentThread->getName());
int fd=machine->ReadRegister(6);
ASSERT(true);
int size = machine ->ReadRegister(5);
int vaddr=machine ->ReadRegister(4);
printVirtualCharArray(vaddr,size);
machine->WriteRegister(PCReg,machine->ReadRegister(NextPCReg));
machine->Run();
y comentamos las 2 lineas que estan debajo, agregando // , como se ve en la imagen




5.- Compilación
Guardamos y tecleamos en la terminal :
cd ..
con esto deberan estar en la carpeta code y teclean
make
6.- Correr el programa
tecleamos en la terminal:
cd userprog/
y una vez en la carpeta, tecleamos:
./nachos -x ../test/holamundo
y les aparecera una imagen como la siguiente.


Todos los pasos a seguir vienen de :
Imagen de http://9gag.com/gag/3908392

No comments:

Post a Comment