viernes, 9 de diciembre de 2011

Sistema de Archivos EXT3

Autor: Rodrigo Bermedo
Competencia: Gestion del conocimiento
Palabras Claves: EXT3, Archivos, Sistema de archivos

Descripvion de la actividad

Esta actividad fue desarrollada para el cuerso de Mantencion y administracion de sistemas, la actividad consistia en buscar las caracteristicas principales de un sistema de archivos en este caso el sistema de archivos es EXT3.

¿que es un sistema de archivos?

En computación, un sistema de archivos es un método para el almacenamiento y organización de archivos de computadora y los datos que estos contienen, para hacer más fácil la tarea encontrarlos y accederlos. Los sistemas de archivos son usados en dispositivos de almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de la localización física de los archivos. Más concretamente un sistema de archivos es un conjunto de datos abstractos que son implementados para el almacenamiento, la organización jerárquica, la manipulación, el acceso, el direccionamiento ya la recuperación de datos. Los sistemas de archivos tienen muchas similitudes con los sistemas de base de datos. 

En general, los sistemas operativos poseen su propio sistema de archivos, en ellos los sistemas de archivos pueden ser representados como texto (el Shell de Dos) o gráficamente (explorador de archivos de Windows) utilizando un gestor de archivos.

El software del sistema de archivos se encarga de organizar los archivos (que suelen estar segmentados físicamente en pequeños bloques de pocos bytes) y directorios, manteniendo un registro de qué bloques pertenecen a qué archivos, qué bloques no se han utilizado y las direcciones físicas de cada bloque.

Sistema de archivos EXT3

EXT3 es un sistema de archivos con registro por diario (journalist). Es el sistema de archivos más usado en distribuciones Linux, aunque ahora está siendo reemplazado por EXT4.
La principal diferencia con EXT2 es su registro por diario. Un sistema de archivos EXT3 puede ser montado y usado como un sistema de archivos EXT2. Otra diferencia importante es que EXT3 utiliza un árbol binario balanceado (árbol AVL) e incorpora un asignador de bloques de disco Orlov.

Caracteristicas de EXT3

Límites de tamaño

Ext3 tiene dos límites de tamaño distintos. Uno para archivos y otro para el tamaño del sistema de archivos entero. El límite del tamaño del sistema de archivos es 231-1 bloques



Niveles del journaling

Hay tres niveles posibles de journaling (registro por diario)

Diario (riesgo bajo)

Los metadatos y los ficheros de contenido son copiados al diario antes de ser llevados al sistema de archivos principal. Como el diario está en el disco continuamente puede mejorar el rendimiento en ciertas ocasiones. En otras ocasiones el rendimiento es peor porque los datos deben ser escritos dos veces, una al diario y otra a la parte principal del sistema de archivos.

Pedido (riesgo medio)

Solo los metadatos son registrados en el diario, los contenidos no, pero está asegurado que el contenido del archivo es escrito en el disco antes de que el metadato asociado se marque como transcrito en el diario. Es el sistema por defecto en la mayoría de las distribuciones de Linux. Si hay un bajón de tensión o kernel Panic cuando el fichero se está escribiendo o está empezando, el diario indicará que el nuevo archivo o el intento no ha sido pasado, por lo que será purgado por el proceso de limpiado

Reescritura (riesgo alto)

Solo los metadatos son registrados en el diario, el contenido de los archivos no. Los contenidos pueden estar escritos antes o después de que el diario se actualice. Como resultado, los archivos modificados correctamente antes de una ruptura pueden volverse corruptos. Por ejemplo, un archivo pendiente de ser marcado en el diario como mayor de lo que actualmente es, convirtiendo en basura al final de la comprobación. Las versiones antiguas de los archivos pueden aparecer inesperadamente después de una recuperación de diario. La carencia de sincronización entre los datos y el diario es rápidamente subsanada en muchos casos. JFS usa este nivel de journaling, pero se asegura de que cualquier basura es borrada al reiniciar

Ventajas de EXT3
 
Disponibilidad:
 
En el caso de que ocurra un apagado incorrecto de la maquina los sistemas de ficheros EXT2 no pueden ser montados nuevamente si antes no so son analizados por el programa “fsck”, el tiempo que tarda este programa en analizar el sistema de archivos está dado por el tamaño de este mismo.
En contraste el ext3 no requiere un chequeo del disco, incluso después de un apagado incorrecto del sistema. Esto es debido a que los datos son escritos al disco de tal manera que el sistema de ficheros siempre esta consistente. Sólo se realizará un "fsck" en el caso de fallos hardware raramente dados (por ejemplo fallos físicos del disco duro), y en el caso de que el sistema de ficheros esté configurado para que se chequee completamente de forma automática cada cierto periodo de tiempo o cada cierto número de montajes para prevenir posibles fallos.
Integridad después de una recuperación de diario. La carencia de sincronización entre los datos y el diario es rápidamente subsanada en muchos casos. JFS usa este nivel de journaling, pero se asegura de que cualquier basura es borrada al reiniciar.
 

EXT3 escribe tres tipos de bloques de datos en el registro:

1. Meta-información: Contiene el bloque de meta-información que está siendo actualizado por la transacción. Cada cambio en el sistema de ficheros, por pequeño que sea, es escrito en el registro. Sin embargo es relativamente barato ya que varias operaciones de E/S pueden ser agrupadas en conjuntos más grandes y pueden ser escritas directamente desde el sistema page-cache.

2. Bloques descriptores: Estos bloques describen a otros bloques del registro para que luego puedan ser copiados al sistema principal. Los cambios en estos bloques son siempre escritos antes que los de meta-información.

3. Bloques cabeceras: Describen la cabecera y cola del registro más un número de secuencia para garantizar el orden de escritura durante la recuperación del sistema de ficheros.

Velocidad

El sistema de archivos ext3, aparte de permitir escribir datos más de una vez, en la mayoría de los casos tiene un rendimiento superior al que proporciona ext2 porque los "journals" de ext3 optimizan el movimiento de los cabezales de los discos duros. Se pueden seleccionar tres modos de journaling para optimizar la velocidad, pero, como contrapartida, la integridad de los datos se verá afectada.

Los diferentes modos son:

Data = writeback: limita la garantía de integridad de los datos, permitiendo a los antiguos datos aparecer en ficheros después de una caída, para un posible pequeño incremento de la velocidad en algunas circunstancias. Este es el modo journaling por defecto en muchos otros sistemas de ficheros journaling, esencialmente proporciona las garantías más limitadas de integridad en los datos y simplemente evita el chequeo en el reinicio del sistema.
 
Data = ordered: (modo por defecto): garantiza que los datos son consistentes con el sistema de ficheros. Los ficheros escritos recientemente nunca aparecerán con contenidos basura después de una caída.

Data = journal: requiere un "journal" grande para una velocidad razonable en la mayoría de los casos y por lo tanto tarda más tiempo recuperar el sistema en el caso de un apagado incorrecto, pero es algunas veces es más rápido para algunas operaciones ya que funciona muy bien si se escriben muchos datos al mismo tiempo (por ejemplo en los spools de correo o servidores NFS sincronizados). No obstante, utilizar el modo "journal" para un uso normal resulta con frecuencia un poco más lento.

Aplicacion con Swing

Autor: Rodrigo Bermedo
Competencia: Trabajo en equipo
Palabras Claves: Programacion, JAVA, Swing

Descripcion de la actividad

Esta actividad grupal fue desarrollada para el curso de Programacion I, y en ella creamos una aplicacion JAVA  con interfaz grafica. este programa era bastante simple ya que en el fondo lo importante era que lograramos comprender la estructura basica que poseian las interfaces que se pueden desarrollar en JAVA.


Enunciado de la actividad

Desarrolle una aplicacion JAVA en la que el usuario ingrese un valor de 1 a 12 y el programa le regrese el nombre del mes al que corresponde el numero. Recuerde que para esta actividad debe ocupar una interfaz grafica.

Ejemplos  de entrada y salida

Entrada                   Salida
 
11                            Noviembre
0                              Ese mes no existe
5                              Mayo
14                            Ese mes no existe 
10                           Octubre

Prototipo de interfaz 


1. JTextField que recive el numero ingresado por el usuario
2. JButton que captura el numero ingresado por el usuario y ejecuta el metodo  ActionPerformed
3. JTextField que le entrega la respuesta al usuario


 Codigo fuente

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class Meses implements ActionListener {

    JLabel et1, et2;
    JTextField t1, t2;
    JButton boton;
    JFrame v;
    FlowLayout f = new FlowLayout();

    Meses() {
        v = new JFrame("meses del año");
        et1 = new JLabel("ingrese el numero del mes");
        et2 = new JLabel("nombre del mes");
        t1 = new JTextField(11);
        t2 = new JTextField(11);
        t2.setEditable(false);
        t2.setBackground(Color.white);
        boton = new JButton("presionar");
        boton.addActionListener(this);
        v.setSize(180, 180);
        v.setLayout(f);
        v.add(et1);
        v.add(t1);
        v.add(boton);
        v.add(et2);
        v.add(t2);
        v.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        int a = Integer.parseInt(t1.getText());
        if (a > 0 && a <= 12) {
            if (a == 1) {
                t2.setText("enero");
            }
            if (a == 2) {
                t2.setText("febrero");
            }
            if (a == 3) {
                t2.setText("marzo");
            }
            if (a == 4) {
                t2.setText("abril");
            }
            if (a == 5) {
                t2.setText("mayo");
            }
            if (a == 6) {
                t2.setText("junio");
            }
            if (a == 7) {
                t2.setText("julio");
            }
            if (a == 8) {
                t2.setText("agosto");
            }
            if (a == 9) {
                t2.setText("septiembre");
            }
            if (a == 10) {
                t2.setText("octubre");
            }
            if (a == 11) {
                t2.setText("noviembre");
            }
            if (a == 12) {
                t2.setText("diciembre");
            }
        } else {
            t2.setText(" ese mes no existe");
        }
    }

    public static void main(String[] args) {
        Meses n = new Meses();
    }
}

Capturas de pantalla





Regresion Lineal

Autor: Rodrigo Bermedo
Competencia: Trabajo en equipo
Palabras Claves: Programacion, Regresion lineal, java, MySql

Descripcion de la actividad

Esta actividad fue parte de el curso de Desarrollo de aplicaciones cliente servidor, la activivdad consistia en crear 2 aplicaciones JAVA, que fueran capaces de pedirle al usuarion una cantidad de puntos X e Y y luego de realizar ciertas operaciones pudieran entregarle al usuario el valor de A, B, R2 y la ecuacion de la recta, la diferencias que debian exisitir entre las aplicaciones era que una debia realizar las operaciones por consola y la segunda debia implementar una interfaz grafica, aparte cada aplicacion debia generar una conexion con una base de datos previamente creada en la cual se guardarian los datos ingresados por el usuario, esta actividad debia realizarse en grupo de maximo 4 personas, las principales dificultades que presentaba este trabajo era lograr una buena coordinacion entre el grupo de trabajo tanto como para programar de una manera eficaz como tambien para crear el informe que se debia enviar al profesor.


Enunciado de la actividad

Desarrollar una aplicación basada en la arquitectura Cliente-Servidor de tres niveles (MVC: Modelo-Vista-Controlador). Debe presentar dos alternativas de solución al problema de ayudar a ajustar una curva, usando regresión lineal, para lo cual la aplicación de permitir al usuario ingresar los puntos (x, y) en una base de datos MySql.
Cada grupo debe establecer la problemática a modelar, el diseño que permita solucionar la problemática genérica y los dos software que lo solucionen, cada uno de forma independiente.
Uno de los software debe ser sobre consola y otro sobre Swing (ambos implementan transacciones).
Se recomienda utilizar JTable, AbstractTableModel y DefaultTableModel (tecnologías Java, las cuales le ayudaran a resolver cosas específicas con Swing.
El objetivo es que cada grupo pueda generar una solución de propósito general que permita apoyar, para el dominio especifico del problema seleccionado, ajustes de curvas, en este casi líneas rectas, que permitan su modelamiento.
Cada aplicaciones debe manejar los procesos de actualización de datos de ajustes, ingresar los puntos (x, y) y la aplicación de la curva ajustada a distintos casos de la problemática seleccionada.
De modo que el grupo pueda lograr los siguientes objetivos:
 -  Conocer y operar satisfactoriamente sobre la arquitectura cliente-servidor.
 - Resolver un problema, de aplicación de ciencias de la ingeniería, a partir de los  conocimientos puestos en relación en la asignatura.


Descripcion de la Problematica

Obtener la ecuación de la recta, el “a”, el “b” y el “r2” (coeficiente de correlación) a partir de los puntos ingresados “x” e “y” los cuales son años y cantidad de población en miles.
Esto nos permitirá ver el crecimiento de la población durante los años en forma lineal ascendente.
Además a partir de la ecuación se podrá obtener la predicción de población para un año futuro “x”


Ejemplo
Años    Poblacion
1991     200 
1992     300            
 
los datos de poblacion al ser ingresados al programas son multiplicados por 1000 es por ese motivo es que los datos de poblacion que se muestran en este ejemplo corresponden a 200.000 y 300.000 respectivamente.
 
Resultados:
 
La ecuación para los datos ingresados es:  y=100x+-198900
a = 100 b = -198900 r2 = 1


Diagramas de clases

diagrama aplicacion por consola



Diagrama de clases aplicacion con interfaz grafica

Diagrama de actividades

 

Implementacion de operaciones
Las operaciones utilizadas fueron las de regresión lineal para calcular a, b y r2:

Capturas de pantalla

programa por consola






programa con interfaz grafica