Archivo de la categoría: Orden de la Clase

Tarea 3 – 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 9 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

codigo_holamundo

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

Quedando como se muestra en la imagen:
mod_Makefile
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

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 :
Version de Blogger