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
Anuncios

5 pensamientos en “Tarea 3 – Hola Mundo en nachOS

  1. […] Correr un Hola Mundo “userprog” (9 de mayo) […]

  2. everblut dice:

    ¿Por qué no usar los registros 1,2 y 3?
    ¿Por qué saltarse hasta el 4,5 y 6?
    ¿Es necesario agregar las lineas para debugeo?

  3. everblut dice:

    ¿Por qué usar el registro 4, 5 y 6, qué pasa con el 1,2 y 3?
    ¿Es necesario poner las lineas de debugeo?
    ¿Hacer una syscall es crear un programa de usuario?

    J/K Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: