- Tomar una foto a los pasos 4 y 5 como se muestra en el ejemplo
- Ponerlas en formato pdf
- Enviarlas al correo electronico: sistemas.operativos.fime@gmail.com
- Asunto: HORA - Tarea 4 - Matricula - Nombre
- Entregarla antes del jueves 23 de mayo
Sistemas Soperativos
. .
Sunday, May 20, 2012
Locks
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
Thursday, May 3, 2012
Configurar nachOS C++ de 64 bits
Es muy simple su configuración, lo primero que tenemos que hacer es ir a la carpeta code que esta dentro de la carpeta nachos.
Estando dentro de la carpeta nachos/nachos/code con un editor de texto abrimos el archivo Makefile.dep
sudo gedit Makefile.dep
nachOS C++
Bien la tarea es instalar nachOS pero para C++ el cambio es porque es mas complicado para todos hacerlo en Java...
Formato de la tarea:
- Tomar una foto al paso 4, 5 y 6 como las que vienen de ejemplo.
- Ponerlas en pdf.
- Enviarlas por correo electronico a: sistemas.operativos.fime@gmail.com
- Asunto: Tarea 2 - Matricula - Nombre
- Entregarla antes del Lunes 7 de Mayo ya que el proximo proyecto es para el Miercoles.
sudo apt-get install build-essential
Thursday, November 24, 2011
Friday, November 18, 2011
Wednesday, November 2, 2011
Second Practical Presentation
Practica nachos2
La idea era subir un video... pero despues de una pelea con un programa decidi tomar capturas de pantalla.
Bueno el siguiente codigo es el mismo de la presentacion. Es una pequeña implementacion de manejo de memoria en C.
View more presentations from Richi Garza
La idea era subir un video... pero despues de una pelea con un programa decidi tomar capturas de pantalla.
Bueno el siguiente codigo es el mismo de la presentacion. Es una pequeña implementacion de manejo de memoria en C.
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #define NSIZE (5*(1<<20)) #define SLEEPT 10 long gx[NSIZE]; int main (int argc, char *argv[]) { char c[NSIZE]; int *px = malloc (NSIZE*sizeof(int)); for (int i=0; i<NSIZE; i++) { gx[i] = (long)i; px[i] = i; c[i] = 'c'; } printf ("address of gx[0] = %012p\n", &gx[0]); printf ("address of px[0] = %012p\n", &px[0]); printf ("address of c[0] = %012p\n", &c[0]); printf ("memory map file: /proc/%d/maps\n", getpid()); printf ("sleeping %d...", SLEEPT); fflush (NULL); sleep (SLEEPT); free (px); printf ("\ndone\n"); exit (EXIT_SUCCESS);
Esta es la captura de pantalla al momento de ejecutar el codigo.
/proc es un directorio extraño. Realmente no existe, sin embargo puedes explorarlo. Sus archivos de tamaño 0 no son ni binarios ni textos, sin embargo puedes examinarlos y desplegar su contenido. Este directorio especial contiene todos los detalles de tu sistema Linux, incluyendo el kernel, procesos y parámetros de configuración. Estudiando el directorio /proc, puedes aprender como los comandos de Linux trabajan e incluso es posible realizar tareas administrativas.
/proc es un directorio extraño. Realmente no existe, sin embargo puedes explorarlo. Sus archivos de tamaño 0 no son ni binarios ni textos, sin embargo puedes examinarlos y desplegar su contenido. Este directorio especial contiene todos los detalles de tu sistema Linux, incluyendo el kernel, procesos y parámetros de configuración. Estudiando el directorio /proc, puedes aprender como los comandos de Linux trabajan e incluso es posible realizar tareas administrativas.
El directorio /proc está organizado en directorios virtuales y subdirectorios, que agrupan archivos de tópicos similares. Trabajando como root el comando
ls /proc
te despliega algo como lo siguiente.Como en la imagen anterior hacemos cat /proc/id/maps le ponemos que lo imprima en un .dat y agregue solo una parte del archivo ya que era muy grande y este puede cambiar de tamaño en cualquier momento.
La direccion de la memoria esta expresada en numeros hexadecimales. Acordadamente el tamaño de una pagina es de 4KB y es expresado en 100016 o 0x1000
p en r-xp significa que es una region privada.
00d54000-00d56000 rw-p 00000000 00:00 0 00d88000-00ea1000 r-xp 00000000 08:06 1834279 /usr/lib/libX11.so.6.3.0 00ea1000-00ea2000 r--p 00118000 08:06 1834279 /usr/lib/libX11.so.6.3.0 00ea2000-00ea4000 rw-p 00119000 08:06 1834279 /usr/lib/libX11.so.6.3.0 00ea4000-00ea5000 rw-p 00000000 00:00 0 00eab000-00eb1000 r-xp 00000000 08:06 1835288 /usr/lib/libxcb-render.so.0.0.0 00eb1000-00eb2000 r--p 00005000 08:06 1835288 /usr/lib/libxcb-render.so.0.0.0 00eb2000-00eb3000 rw-p 00006000 08:06 1835288 /usr/lib/libxcb-render.so.0.0.0 00ec3000-00ede000 r-xp 00000000 08:06 1050850 /lib/ld-2.11.1.so 00ede000-00edf000 r--p 0001a000 08:06 1050850 /lib/ld-2.11.1.so 00edf000-00ee0000 rw-p 0001b000 08:06 1050850 /lib/ld-2.11.1.so 00ef1000-00ef9000 rwxp 00000000 00:00 0 00f11000-00f19000 rwxp 00000000 00:00 0 00f2f000-00f30000 r-xp 00000000 00:00 0 [vdso] 00f33000-00f3b000 rwxp 00000000 00:00 0 00f6c000-00f70000 r-xp 00000000 08:06 1046643 /lib/tls/i686/cmov/libnss_dns-2.11.1.so 00f70000-00f71000 r--p 00004000 08:06 1046643 /lib/tls/i686/cmov/libnss_dns-2.11.1.so 00f71000-00f72000 rw-p 00005000 08:06 1046643 /lib/tls/i686/cmov/libnss_dns-2.11.1.so 00fb1000-00fd5000 r-xp 00000000 08:06 1046628 /lib/tls/i686/cmov/libm-2.11.1.so 00fd5000-00fd6000 r--p 00023000 08:06 1046628 /lib/tls/i686/cmov/libm-2.11.1.so 00fd6000-00fd7000 rw-p 00024000 08:06 1046628 /lib/tls/i686/cmov/libm-2.11.1.so 00fd7000-013a4000 r-xp 00000000 08:06 1833560 /usr/lib/libgtk-x11-2.0.so.0.2000.1 013a4000-013a8000 r--p 003cd000 08:06 1833560 /usr/lib/libgtk-x11-2.0.so.0.2000.1 013a8000-013aa000 rw-p 003d1000 08:06 1833560 /usr/lib/libgtk-x11-2.0.so.0.2000.1 013aa000-013ac000 rw-p 00000000 00:00 0 08048000-0908e000 r-xp 00000000 08:06 1831708 /usr/lib/opera/opera 0908e000-0909d000 rw-p 01045000 08:06 1831708 /usr/lib/opera/opera 0909d000-090a3000 rw-p 00000000 00:00 0 09f6d000-0d5c5000 rw-p 00000000 00:00 0 [heap] b7576000-b7578000 rw-p 00000000 00:00 0 b75b2000-b75f1000 r--p 00000000 08:06 1839402 /usr/lib/locale/en_US.utf8/LC_CTYPE b75f1000-b75f2000 r--p 00000000 08:06 1839407 /usr/lib/locale/en_US.utf8/LC_NUMERIC b75f2000-b7710000 r--p 00000000 08:06 1839401 /usr/lib/locale/en_US.utf8/LC_COLLATE b7710000-b7716000 rw-p 00000000 00:00 0 b7716000-b7717000 r--p 00000000 08:06 1844068 /usr/lib/locale/en_US.utf8/LC_TIME b7717000-b7718000 r--p 00000000 08:06 1844069 /usr/lib/locale/en_US.utf8/LC_MONETARY b7718000-b7719000 r--p 00000000 08:06 1844070 /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES b7719000-b771a000 r--p 00000000 08:06 1839655 /usr/lib/locale/en_US.utf8/LC_PAPER b771a000-b771b000 r--p 00000000 08:06 1839289 /usr/lib/locale/en_US.utf8/LC_NAME b771b000-b771c000 r--p 00000000 08:06 1844071 /usr/lib/locale/en_US.utf8/LC_ADDRESS b771c000-b771d000 r--p 00000000 08:06 1844072 /usr/lib/locale/en_US.utf8/LC_TELEPHONE b771d000-b771e000 r--p 00000000 08:06 1839651 /usr/lib/locale/en_US.utf8/LC_MEASUREMENT b771e000-b7725000 r--s 00000000 08:06 1832651 /usr/lib/gconv/gconv-modules.cache b7725000-b7726000 r--p 00000000 08:06 1844073 /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION b7726000-b7728000 rw-p 00000000 00:00 0 bff74000-bffa7000 rw-p 00000000 00:00 0 [stack]

El comando
cat /proc/meminfo
puede traer a la pantalla algo como lo siguienteMemTotal: 2999120 kB MemFree: 1330344 kB Buffers: 766668 kB Cached: 421904 kB SwapCached: 0 kB Active: 511076 kB Inactive: 1058524 kB Muestra mas info... solo lo corte para no hacer spam
Filesystem
Lo que hicimos nosotros fue ver de que manera funcionaba la herramienta y posteriormente hacer unas pruebas para saber que tan factible era utilizar algo similar en nuestro proyecto. Cabe hacer mención que no solo existe la herramienta en python si no que tambien la podemos encontrar en varios lenguajes de programación.
A continuación se encuentran un par de videos que hicimos de las pruebas de funcionamiento de pyinotify, En el primero se muestra como sucede el monitoreo de un archivo en el se muestra algunos cambios como lo son la creación del archivo, después cuando se escribe en el mismo y por ultimo cuando eliminamos el archivo.
En el segundo video se muestra el monitoreo sobre una carpeta y aquí podemos ver que el programa nos dice cuando se crea un archivo o una carpeta y cuando se eliminan los mismos.
Esta es la entrada correspondiente a la segunda presentación practica del proyecto.
Subscribe to:
Posts (Atom)