martes, 18 de septiembre de 2018

Registro de propósito general

Registro CS.
El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, mas un valor de desplazamiento en el registro de apuntado de instrucción (IP), indica la dirección de una instrucción que es buscada para sí ejecución. Para propósito de programación normal, no e necesita referenciar el registro CS.
Registro DS.
La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, mas un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un bytes especifico en el segmento de datos.
Registro SS.El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada. Para propósitos de programación normal, no se necesita referenciar el registro SS.
Registro ES
Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro esta de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES esta asociado con el registro DI (índice) . un programa que requiere el uso del registro ES puede inicializarlo con una dirección apropiada.

martes, 21 de agosto de 2018

¿Que es un lenguaje ensamblador?

El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portables.

Caracteristicas:

Consume menos recursos y memoria RAM yROM, a comparacion de un lenguaje de alto nivel.

Es de difícil comprensión.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel.



Representación de nemónicos de lenguaje máquina para procesadores i386:

Código binarioCódigo hexadecimalCódigo ASCIINemónicoAcción
50PADDSuma al acumulador
00101101B1±SUBResta al acumulador
010000xx40@INCIncrementa al registro
010010xx12DECDecrementa al registro
0011001032JxxSalto al registro o xx

ley de Moore


Ir a la navegaciónIr a la bú

Ley de Moore

Ir a la navegaciónIr a la búsqueda
La ley de Moore comparada con los datos históricos (gráfico en idioma portugués).












La ley de Moore expresa que aproximadamente cada dos años se duplica el número de transistores en un microprocesador.
A pesar de que la ley originalmente fue formulada para establecer que la duplicación se realizaría cada año,1​ posteriormente Moore redefinió su ley y amplió el periodo a dos años.2​ Se trata de una ley empírica, formulada por el cofundador de IntelGordon E. Moore, el 19 de abril de 1965, cuyo cumplimiento se ha podido constatar hasta hoy.123
En 1965, Gordon Moore afirmó que la tecnología tenía futuro, que el número de transistores por unidad de superficie en circuitos integrados se duplicaba cada año y que la tendencia continuaría durante las siguientes dos décadas.1
Más tarde, en 1975, modificó su propia ley al corroborar que el ritmo bajaría, y que la capacidad de integración no se duplicaría cada 12 meses sino cada 24 meses aproximadamente.4​ Este periodo a veces se cita equivocadamente como 18 meses debido al ejecutivo de Intel David House, quien predijo que el desempeño del chip se duplicaría cada 18 meses (siendo una combinación del efecto de más transistores y los transistores siendo más rápidos).5​ Esta progresión de crecimiento exponencial, duplicar la capacidad de los circuitos integrados cada dos años, es lo que se denomina ley de Moore. Sin embargo, en 2007 el propio Moore determinó una fecha de caducidad: «Mi ley dejará de cumplirse dentro de 10 o 15 años»,6​ según aseguró durante la conferencia en la que afirmó, no obstante, que una nueva tecnología vendrá a suplir a la actual.7
La consecuencia directa de la ley de Moore es que los precios bajan al mismo tiempo que las prestaciones suben: la computadora que hoy vale 3000 dólares costará la mitad al año siguiente y estará obsoleta en dos años. En 26 años el número de transistores en un chip se ha incrementado 3200 veces.
Actualmente esta ley se aplica a ordenadores personales y teléfonos móviles o celulares. Sin embargo, cuando se formuló no existían los microprocesadores, inventados en 1971, los ordenadores personales, popularizados en los años ochenta y la telefonía celular o móvil apenas estaba en fase de experimentación.

Instalación de EMU8086 y Turbo Assambler

Para la instalación de los ensambladores lo primero es irnos a la pagina de descargar de cada ensamblador respectivamente.

EMU8086: https://emu8086.waxoo.com/
Turbo Asambler: https://sourceforge.net/projects/guitasm8086/

Despues de haber descargado el instalador, ahora si podremos instalar los ensambladores en nuestro equipo:








jueves, 24 de mayo de 2018

Proyecto Final

Aplicación que inserta, modifica, borra, actualiza y limpia los datos dentro de una tabla

Esta aplicación esta programado en Python 3.6.2, utiliza las librerias Tkinter, pyMySQL, el objetivo de este aplicación es insertar, borrar, modificar, limpiar datos de un estudiantes guardolos en una tabla que esta dentro de una base de datos creada en MySQL gestionda por XAMPP.


Esta es la interfaz de la aplicación 

Despues de insertar los datos los muestra dentro de una tabla creada en MySQL, podemos apreciarla desde XAMPP o desde el gestor MySQL Workbench.

Desde XAMPP

Desde MySQL Workbench


A continuación presentamos el código del programa:



#-*- coding: utf-8 -*-
from tkinter import *
import pymysql
from pymysql import *
from tkinter import messagebox




def Limpiar():
    NumeroC.set('')
    NombreS.set('')
    EdadS.set('')
    NumeroC.configure(state='normal')


def buscar():
    try:
        con = pymysql.connect(user='root', password='', \
                              host='localhost', database='escuela2')
        cur = con.cursor()
        sql = "Select * from estudiante where numeroC='%s'" % NumeroC.get()
        cur.execute(sql)
        result = cur.fetchone()
        NumeroC.set(result[0])
        NombreS.set(result[1])
        EdadS.set(result[2])
        NumeroC.configure(state='disabled')

    except:
        messagebox.showinfo('Correcto', 'Daatos encontrados')
        Limpiar()


def insertar():
    try:
        con = pymysql.connect(user='root', password='', \
                              host='localhost', database='escuela2')
        cur = con.cursor()
        sql = "insert into estudiante values('%s','%s',%s)" \
              % (NumeroC.get(), NombreS.get(), EdadS.get())
        cur.execute(sql)
        con.commit()
        con.close()
        messagebox.showinfo('Exito', 'DATOS INSERTADOS..')
    except:
        messagebox.showinfo('Error', 'Error en los datos...')
    finally:
        Limpiar()


def actualizar():
    try:
        con = pymysql.connect(user='root', password='', \
                              host='localhost', database='escuela2')
        cur = con.cursor()
        sql = "update estudiantes set Nombre='%s', Edad=%s" \
              % (NombreS.get(), EdadS.get())
        cur.execute(sql)
        con.commit()
        con.close()
        messagebox.showinfo('Exito', 'DATOS ACTUALIZADOS..')
    except:
        messagebox.showinfo('Error', 'Error en los datos...')
    finally:
        Limpiar()


def borrar():
    try:
        con = pymysql.connect(user='root', password='', \
                              host='localhost', database='escuela2')
        cur = con.cursor()
        sql = "delete from estudiante where NumeroC='%s'" \
              % (NumeroC.get())
        cur.execute(sql)
        con.commit()
        con.close()
        messagebox.showinfo('Exito', 'DATOS BORRADOS..')
    except:
        messagebox.showinfo('Error', 'Error en los datos...')
    finally:
        Limpiar()

#----------------Ventana-----------------
ventana = Tk()
ventana.geometry("750x300+350+80")
ventana.title("Bienvenido Alumno")
ventana.resizable(width=True, height=True)
try:
    ventana.iconbitmap("C:\icono.ico")
except:
    print("no hay icono disponible")

#-------------Labels------

LbTitulo= Label(ventana, text="Bienvenido", fg='Red',justify=CENTER, font=("Miramonte", 15))
LbNumeroC = Label(ventana, text="Numero de control:", font=("Miramonte", 15))
LbNombre = Label(ventana, text="Nombre:", font=("Miramonte", 15))
LbEdad = Label(ventana, text="Edad:", font=("Miramonte", 15))

canvas = Canvas(ventana, width=300, height=500)

NumeroC = IntVar()
NombreS = StringVar()
EdadS = IntVar()

#-----------------Entry-----------
EntryNumeroC = Entry(ventana, textvariable=NumeroC, bg='white', fg='dark slate gray', font=("Consolas", 15))
EntryNombre= Entry(ventana, textvariable=NombreS, bg='white', fg='dark slate gray',
               font=("Consolas", 15))
EntryEdad= Entry(ventana, textvariable=EdadS, bg='white', fg='dark slate gray', font=("Consolas", 15))

#-----------------Butones----------------

btnbuscar = Button(ventana, text="BUSCAR", command=buscar, bg='violet', fg='white', font=("Consolas", 12))
btninsertar = Button(ventana, text="INSERTAR", command=insertar, bg='violet', fg='white', font=("Consolas", 12))
btnactualizar = Button(ventana, text="ACTUALIZAR", command=actualizar, bg='violet', fg='white', font=("Consolas", 12))
btnborrar = Button(ventana, text="BORRAR", command=borrar, bg='violet', fg='white', font=("Consolas", 12))
btnlimpiar = Button(ventana, text="LIMPIAR", command=Limpiar, bg='violet', fg='white', font=("Consolas", 12))

LbTitulo.grid(row=0, column=2)
LbNumeroC.grid(row= 1, column=1, padx=10, pady=10)
LbNombre.grid(row=2, column=1,  padx=10, pady=10)
LbEdad.grid(row=3, column=1,  padx=10, pady=10)

EntryNumeroC.grid(row=1,column=2,  padx=10, pady=10)
EntryNombre.grid(row=2,column=2,  padx=10, pady=10)
EntryEdad.grid(row=3, column=2,  padx=10, pady=10)


btninsertar.grid(row=1,column=3, padx=10, pady=10)
btnbuscar.grid(row=2, column=3, padx=10, pady=10)
btnactualizar.grid(row=3,column=3, padx=10, pady=10)
btnborrar.grid(row=4,column=3, padx=10, pady=10)
btnlimpiar.grid(row=5,column=3, padx=10, pady=10)

ventana.mainloop() 




miércoles, 18 de abril de 2018

Python-MySQL

Pip Python



pip es un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python. Muchos paquetes pueden ser encontrados en el Python Package Index (PyPI). Python 2.7.9 y posteriores (en la serie Python2), Python 3.4 y posteriores incluyen pip (pip3 para Python3) por defecto.
pip es un acrónimo recursivo que se puede interpretar como Pip Instalador de Paquetes o Pip Instalador de Python.

Conectar Python a MySQL

Podemos hacer una conexión desde nuestro editor de python a MySQL con este tutorial:
https://www.youtube.com/watch?v=1zv9DXy8FiM


Conexión a Python

Para hacer la conexión utilice pip e instale desde el cmd la librería PyMySQL con la cual pude hacer la conexión, desde el editor Notepad ++ hicimos el programa que hacia la conexión e insertaba datos en una base de datos sencilla previamente hecha, llamada materias.


En caso de que hayas cometido un error (sintaxis,repetir atributos etc), al ejecutarlo desde el cmd nos saldra este error:


nota: Use la laptop de mi amiga por eso sale el nombre de ella xd

En caso de que todo haya salido bien, nuestros datos habrán sido agregados correctamente a nuestra base de datos:


Aquí se muestran los datos correctamente agregados:


Y de esta forma se logro hacer una conexión e insertar dats en una forma sencilla, no use el editor Pycharm porque este me presentaba errores al tratar de importar las librerías que iba a utilizar y por eso opte por Notepad++. 










martes, 17 de abril de 2018

Programa de multiplicación de números de 2 cifras

;EMU8086
.model small ;Modelo de memoria
.stack

.data  ;Definicion de datos(variables), donde se almacenara informacion
.code  
   ;Variables del primer numero ingresado
   unidades_n1      db ? 
   decenas_n1       db ?
   
   ;Variables del segundo numero ingresado 
   unidades_n2      db ?
   decenas_n2       db ?
   
   ;Variables temporales para los resultados de la primera multiplicacion
   res_temp_dec_n1  db ?
   res_temp_cen_n1  db ?
   
   ;Variables temporales paara los resultados de la segunda multiplicacion
   res_temp_dec_n2  db ?
   res_temp_cen_n2  db ?
   
   ;Variables para los resultados 
   res_unidades     db ?
   res_decenas      db ?
   res_centenas     db ?
   res_uni_millar   db ?
   
   ;Variable de acarreo en multiplicacion
   acarreo_mul      db 0
   
   ;Variable de acarreo en suma
   acarreo_suma     db 0
   
.startup
   ;cls
   mov ah,00h         ;Function(Set video mode)
   mov al,03          ;Mode 80x25 8x8 16
   int 10h            ;Interruption Video

   mov ah,01h         ;Function(character read)
   int 21h            ;Interruption DOS functions
   sub al,30h         ;ajustamos valores
   mov decenas_n1,al  ;[chr1].chr2 * chr3 = ac.r1.r2
 
   mov ah,01h         ;Function(character read)
   int 21h            ;Interruption DOS functions
   sub al,30h         ;Ajustamos valores
   mov unidades_n1,al ;chr1.[chr2] * chr3 = ac.r1.r2
 
   mov ah,02h         ;Function(character to send to standard output)
   mov dl,'*'         ;Character to show
   int 21h
 
   mov ah,01h         ;Function(Read character)
   int 21h            ;Interruption DOS Functions
   sub al,30h         ;Transform(0dec = 30hex)
   mov decenas_n2,al  ;chr1.chr2 * [chr3] = ac.r1.r2
   
   mov ah,01h         ;Function(Read character)
   int 21h            ;Interruption DOS Functions
   sub al,30h         ;Transform(0dec = 30hex)
   mov unidades_n2,al
   
   mov ah,02h         ;Character to send to standar output
   mov dl,'='         ;
   int 21h            ;Interruption DOS functions
 
   ;Realizamos las operaciones
   
   ;Primera multiplicacion  ; Explicacion utilizando la multiplicacion de 99*99 ->(n1*n2)
   mov al,unidades_n1       ; al=9
   mov bl,unidades_n2       ; bl=9
   mul bl                   ; 9*9=81 -> (al=81)
   mov ah,00h               ;
   AAM                      ; Separa el registro ax en su parte alta y baja
   mov acarreo_mul,ah       ; acarreo_mul = 8
   mov res_unidades,al      ; res_unidades= 1 -> Reultado de unidades
   
   ;Segunda multiplicacion
   mov al,decenas_n1        ; al=9
   mov bl,unidades_n2       ; bl=9
   mul bl                   ; 9*9=81 -> (al=81)
   mov res_temp_dec_n1,al   ; res_temp_dec_n1= 81
   mov bl,acarreo_mul       ; bl= 8
   add res_temp_dec_n1,bl   ; res_temp_dec_n1= 81+8= 89
   mov ah,00h               ;
   mov al,res_temp_dec_n1   ; al= 89
   AAM                      ; Separa el registro ax en su parte alta y baja
   mov res_temp_cen_n1,ah   ; res_temp_cen_n1= 8  
   mov res_temp_dec_n1,al   ; res_temp_dec_n1= 9     
    
   ;Tercera multiplicacion  ; Resultado actual = 000>1
   mov al,unidades_n1       ; al= 9
   mov bl,decenas_n2        ; bl= 9
   mul bl                   ; 9*9=81 -> (al=81)
   mov ah,00h               ;
   AAM                      ; Separa el registro ax en su parte alta y baja
   mov acarreo_mul,ah       ; acarreo_mul= 8
   mov res_temp_dec_n2,al   ; res_temp_dec_n2= 1
                            ;
   mov bl, res_temp_dec_n1  ; bl= 9
   add res_temp_dec_n2,bl   ; res_temp_dec_n2= 1+9= 10
   mov ah,00h               ;
   mov al, res_temp_dec_n2  ; al = 10 
   AAM                      ; Separa el registro ax en su parte alta y baja
   mov acarreo_suma, ah     ; acarreo_suma = 1
   mov res_decenas,al       ; res_decenas  = 0 -> Reultado de decenas
   
   ;Tercera multiplicacion  ; Resultado actual = 00>01
   mov al,decenas_n1        ; al= 9
   mov bl,decenas_n2        ; bl= 9
   mul bl                   ; 9*9=81 -> (al=81)
   mov res_temp_cen_n2,al   ; res_temp_cen_n2= 81 
   mov bl,acarreo_mul       ; bl= 8
   add res_temp_cen_n2,bl   ; res_temp_cen_n2= 89
   mov ah,00h               ;
   mov al,res_temp_cen_n2   ; al= 89
   AAM                      ; Separa el registro ax en su parte alta y baja
   mov res_uni_millar,ah    ; res_uni_millar = 8
   mov res_temp_cen_n2,al   ; res_temp_cen_n2= 9
                            ; 
   mov bl, res_temp_cen_n1  ; bl= 8
   add res_temp_cen_n2, bl  ; res_temp_cen_n2= 17
   mov bl, acarreo_suma     ; bl= 1
   add res_temp_cen_n2,bl   ; res_temp_cen_n2= 17+1= 18
   mov ah,00h               ;
   mov al,res_temp_cen_n2   ; al= 18
   AAM                      ;
   mov acarreo_suma,ah      ; acarreo_suma= 1
   mov res_centenas,al      ; res_centenas= 8 -> Resultado de centenas
   
                            ; Resultado actual= 0>801
   mov bl, acarreo_suma     ; bl= 1
   add res_uni_millar, bl   ; res_uni_millar= 8+1= 9 -> Resultado de unidades de millar
                            ; Reultado actual 9801
 
   ;Mostramos resultados
   mov ah,02h 
   mov dl,res_uni_millar
   add dl,30h
   int 21h
   
   mov ah,02h 
   mov dl,res_centenas
   add dl,30h
   int 21h       

   mov ah,02H
   mov dl,res_decenas
   add dl,30h
   int 21h        

   mov ah,02H
   mov dl,res_unidades
   add dl,30h
   int 21h       
.exit
end

Unidad 2: Arquitectura del gestor

Objetivo de la Unidad

-Conocer los diferentes tipos de memoria y procesos que nos podemos encontrar en un sistema gestor de bases de datos.
-Tener conocimiento sobre el procedimiento de instalación y configuración de un DBMS.
-Saber los requisitos que pide cada DBMS y comandos generales de alta y baja.
-Poder elegir el mejor DBMS en cada situación.

2.1. Características del DBMS


Los sistemas de administración de bases de datos son usados para permitir a los usuarios acceder y manipular la base de datos proveyendo métodos para construir sistemas de procesamiento de datos para aplicaciones que requieran acceso a los datos.
Además proporcionan a los administradores las herramientas que les permitan ejecutar tareas de mantenimiento y administración de los datos.

Control de la redundancia de datos
Este consiste en lograr una mínima cantidad de espacio de almacenamiento para almacenar los datos evitando la duplicación de la información. De esta manera se logran ahorros en el tiempo de procesamiento de la información, se tendrán menos inconsistencias, menores costos operativos y hará el mantenimiento más fácil.

Compartimiento de datos
Una de las principales características de las bases de datos, es que los datos pueden ser compartidos entre muchos usuarios simultáneamente, proveyendo, de esta manera, máxima eficiencia.

Mantenimiento de la integridad

La integridad de los datos es la que garantiza la precisión o exactitud de la información contenida en una base de datos. Los datos interrelacionados deben siempre representar información correcta a los usuarios.

Soporte para Control de transacciones y recuperación de fallas
Se conoce como transacción toda operación que se haga sobre la base de datos. Las transacciones deben por lo tanto ser controladas de manera que no alteren la integridad de la base de datos. La recuperación de fallas tiene que ver con la capacidad de un sistema DBMS de recuperar la información que se haya perdido durante una falla en el software o en el hardware.

Independencia de los Datos
En las aplicaciones basadas en archivos, el programa de aplicación debe conocer tanto la organización de los datos como las técnicas que el permiten acceder a los datos. En los sistemas DBMS los programas de aplicación no necesitan conocer la organización de los datos en el disco duro. Este totalmente independiente de ello.

Seguridad
La disponibilidad de los datos puede ser restringida a ciertos usuarios. Según los privilegios que posea cada usuario de la base de datos, podrá acceder a mayor información que otros.  

2.1.3 Requerimientos para instalación de la base de datos


Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores.


2.1.4 Instalación del software de base de datos en modo transaccional


Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.

Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.

Se usan las siguientes métodos :
  • Begin TRans para iniciar la transacción. 
  • CommitTrans para efectuar los cambios con éxito. 
  • RollbackTrans para deshacer los cambios. 
Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD.

2.1.5 Variables de ambiente y archivos importantes para instalación


Variables de Ambiente: Se usan para personalizar el entorno en el que se ejecutan los programas y para ejecutar en forma correcta los comandos del shell.

Variables de entorno declaradas por el instalador de MySQL en Windows 10:




Carpeta de archivos de MySQL en Windows 10:


A continuación se comentan las opciones más utilizadas de la sección mysqld (afectan al funcionamiento del servidor MySQL), se almacenan en el archivo my.cnf (o my.ini).

basedir = ruta: Ruta a la raíz MySQL.
console: Muestra los errores por consola independientemente de lo que se configure para log_error.
datadir = ruta: Ruta al directorio de datos.
default-table-type = tipo: Tipo de la Tabla InnoDB o, MyISAM.
flush: Graba en disco todos los comandos SQL que se ejecuten (modo de trabajo, sin transacción).
general-log = valor: Con valor uno, permite que funcione el archivo LOG para almacenar las consultas realizadas.
general-log-file = ruta: Indica la ruta al registro general de consultas.
language: Especifica el idioma de los lenguajes de error, normalmente esots archivos de lenguaje, están bajo /usr/local/share.
log-error = ruta: Permite indicar la ruta al registro de errores.
log = ruta: Indica la ruta al registro de consultas.
long-query-time = n: Segundos a partir de los cuales una consulta que tardes más, se considerará una consulta lenta.
og-bin = ruta: Permite indicar la ruta al registro binario.
pid-file = ruta: Ruta al archivo que almacena el identificador de proceso de MySQL.
port = puerto: Puerto de escucha de MySQL.
skip-grant-tables: Entra al servidor saltándose las tablas de permisos, es decir todo el mundo tiene privilegios absolutos.
skip-networking: El acceso a MySQL se hará solo desde el servidor local.
slow-query-log = 0|1: Indica si se hace LOG de las consultas lentas.
slow-query-log-file = ruta: Ruta al archivo que hace LOG de las consultas lentas.
socket = ruta: Archivo o nombre de socket a usar en las conexiones locales.
standalone: Para Windows, hace que el servidor no pase a ser un servicio.
user = usuario: Indica el nombre de usuario con el que se iniciará sesión en MySQL.
tmpdir = ruta: Ruta al directorio para archivos temporales.

Arquitectura física de una base de datos en SQL Server

La unidad fundamental del almacenamiento de datos en SQL Server es la página. El espacio en disco asignado a un archivo de datos (.mdf o .ndf) de una base de datos se divide lógicamente en páginas numeradas de forma contigua de 0 a n. Las operaciones de E/S de disco se realizan en el nivel de página. Es decir, SQL Server lee o escribe páginas de datos enteras.

Páginas
En SQL Server, el tamaño de página es de 8 KB. Esto significa que las bases de datos de SQL Server tienen 128 páginas por megabyte. Cada página empieza con un encabezado de 96 bytes, que se utiliza para almacenar la información del sistema acerca de la página. Esta información incluye el número de página, el tipo de página, el espacio libre en la página y el Id. de unidad de asignación del objeto propietario de la página.




Extensiones
Las extensiones son la unidad básica en la que se administra el espacio. Una extensión consta de ocho páginas contiguas físicamente, es decir 64 KB. Esto significa que las bases de datos de SQL Server tienen 16 extensiones por megabyte.

Para hacer que la asignación de espacio sea eficaz, SQL Server no asigna extensiones completas a tablas con pequeñas cantidades de datos. SQL Server tiene dos tipos de extensiones:
·         Las extensiones uniformes son propiedad de un único objeto; sólo el objeto propietario puede utilizar las ocho páginas de la extensión.
·         Las extensiones mixtas, que pueden estar compartidas por hasta ocho objetos. Cada una de las 8 páginas de la extensión puede ser propiedad de un objeto diferente.

Archivos de base de datos
Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:
·         Archivos de datos principales: El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de la base de datos. Cada base de datos tiene un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.
·         Archivos de datos secundarios: Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La extensión de nombre de archivo recomendada para los archivos de datos secundarios es .ndf.
·         Archivos de registro: Los archivos de registro almacenan toda la información de registro que se utiliza para recuperar la base de datos. Como mínimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensión de nombre de archivo recomendada para los archivos de registro es .ldf.