Publicidad

sábado, 27 de septiembre de 2008

Ligadores Dinámicos y Programación Distribuida

Algunas funciones, o metodos, que estan llamadas desde dentro de un programa existen fuera del programa compilado. El proposito de un ligador es manejar este problema.

Existen dos formas de ligar funciones desde afuera del programa:

1.Ligado estático. Un ligador toma el código de objeto del programa compilado y combina esto con código de la función, o metodo, relevante, asi formando un archivo ejecutable.
2.Ligado dinámico. En el tiempo de ejecución del programa, el ligador “invoca” una función, o metodo, que existe en algun lugar aparte del código del programa. Esto quiere decir que la función cierta está identificada (con resolución de su nombre), encontrada, y cargada en la memoria, con los datos copiados desde el programa hasta variables para ser manipulados por la función, un puntero está puesto en la primera instrucción de la función, todo está puesto en la pila, la función corre y los resultados (los datos modificados) estan regresados para el programa que hizo la llamada.

Ligado dinámico abre la posibilidad de computación distribuida, pues asi no es necesario tener funciones cargadas en la memoria de la misma máquina donde corren los programas que llaman estas funciones. De hecho, ni es necesario que la funcion sea escrita en el mismo lenguaje. Solo es necesario un metodo para identificar la función cierta, en termos de datos de entrada y salida y lo que hace la función (no como lo hace). La primera parte se puede hacer con un interface de tipo API. Las dos partes se puede hacer por medio de algo como el Web Services Description Language, que guarda estes metadatos en un archivo de XML.

Claro que, también, es preciso pasar una mensaje para que la función corra, junto con los datos para la función.

¿Qué es Debian?

Bueno compañeros como no pude ir a lo de Linux, pues investige un poco del tema de Debian, y esto es lo que encontre pues resulta interesante conocer mas sobre Linux, espero y sea buena.
¿Qué es Debian?
El
Proyecto Debian es una asociación de personas que han hecho causa común para crear un sistema operativo (SO) libre. Este sistema operativo que hemos creado se llama Debian GNU/Linux, o simplemente Debian para acortar.
Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. El centro de un sistema operativo es el núcleo (N. del T.: kernel). El núcleo es el programa más importante en la computadora, realiza todo el trabajo básico y le permite ejecutar otros programas.
Los sistemas Debian actualmente usan el núcleo de
Linux. Linux es una pieza de software creada en un principio por Linus Torvalds y soportada por miles de programadores a lo largo del mundo.
Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial con
el Hurd. El Hurd es una colección de servidores que se ejecutan sobre un micronúcleo (como Mach) para implementar las distintas funcionalidades. El Hurd es software libre producido por el proyecto GNU.
Una gran parte de las herramientas básicas que completan el sistema operativo, vienen del
proyecto GNU; de ahí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas también son libres.
Desde luego, lo que la gente quiere es el software de aplicación: herramientas que los ayuden a realizar lo que necesiten hacer, desde editar documentos, ejecutar aplicaciones de negocios hasta divertirse con juegos y escribir más software. Debian viene con más de 18733
paquetes (software precompilado y empaquetado en un formato amigable para una instalación sencilla en su máquina) — todos ellos de forma gratuita.
Es un poco como una torre. En la base está el núcleo. Encima se encuentran todas las herramientas básicas. Después está todo el software que usted ejecuta en su computadora. En la cima de la torre se encuentra Debian — organizando y encajando todo cuidadosamente para que todo el sistema trabaje junto.
¿Todo esto es gratis?
Usted puede preguntarse: ¿por qué gastará la gente horas de su propio tiempo escribiendo software, empaquetándolo cuidadosamente, y luego regalándolo? Las respuestas son tan variadas como la gente que contribuye. A algunas personas les gusta ayudar a otras. Muchas escriben programas para aprender más acerca de los computadores. Más y más personas están buscando maneras de evitar los precios inflados del software. Un grupo creciente contribuye como un agradecimiento por todo el excelente software libre y gratuito que ha recibido de otros. En las instituciones académicas muchos crean software libre para ayudar a obtener los resultados de sus investigaciones en un uso más amplio. Las empresas ayudan a mantener el software libre para poder observar cómo se desarrolla éste, ¡no hay una manera más rápida de obtener una nueva característica que implementarla uno mismo! Desde luego, muchos de nosotros sólo lo encontramos divertido.
Debian está tan comprometido con el software libre que pensamos que sería útil que ese compromiso se encontrara formalizado en algún tipo de documento. Por ello nació nuestro
Contrato Social.
Aunque Debian cree en el software libre, existen casos en los que la gente quiere o necesita disponer de software que no es libre en sus máquinas. Siempre que sea posible, Debian respaldará ésto. Hay un número creciente de paquetes que tienen como única misión instalar software que no es libre en un sistema Debian.
El Proyecto Debian es una asociación de personas que han hecho causa común para crear un sistema operativo (SO) libre. Este sistema operativo que hemos creado se llama Debian GNU/Linux, o simplemente Debian para acortar.
Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. El centro de un sistema operativo es el núcleo (N. del T.: kernel). El núcleo es el programa más importante en la computadora, realiza todo el trabajo básico y le permite ejecutar otros programas.
Los sistemas Debian actualmente usan el núcleo de Linux. Linux es una pieza de software creada en un principio por Linus Torvalds y soportada por miles de programadores a lo largo del mundo.
Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial con el Hurd. El Hurd es una colección de servidores que se ejecutan sobre un micronúcleo (como Mach) para implementar las distintas funcionalidades. El Hurd es software libre producido por el proyecto GNU.
Una gran parte de las herramientas básicas que completan el sistema operativo, vienen del proyecto GNU; de ahí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas también son libres.
Desde luego, lo que la gente quiere es el software de aplicación: herramientas que los ayuden a realizar lo que necesiten hacer, desde editar documentos, ejecutar aplicaciones de negocios hasta divertirse con juegos y escribir más software. Debian viene con más de 18733 paquetes (software precompilado y empaquetado en un formato amigable para una instalación sencilla en su máquina) — todos ellos de forma gratuita.
Es un poco como una torre. En la base está el núcleo. Encima se encuentran todas las herramientas básicas. Después está todo el software que usted ejecuta en su computadora. En la cima de la torre se encuentra Debian — organizando y encajando todo cuidadosamente para que todo el sistema trabaje junto.

¿Todo esto es gratis?
Usted puede preguntarse: ¿por qué gastará la gente horas de su propio tiempo escribiendo software, empaquetándolo cuidadosamente, y luego regalándolo? Las respuestas son tan variadas como la gente que contribuye. A algunas personas les gusta ayudar a otras. Muchas escriben programas para aprender más acerca de los computadores. Más y más personas están buscando maneras de evitar los precios inflados del software. Un grupo creciente contribuye como un agradecimiento por todo el excelente software libre y gratuito que ha recibido de otros. En las instituciones académicas muchos crean software libre para ayudar a obtener los resultados de sus investigaciones en un uso más amplio. Las empresas ayudan a mantener el software libre para poder observar cómo se desarrolla éste, ¡no hay una manera más rápida de obtener una nueva característica que implementarla uno mismo! Desde luego, muchos de nosotros sólo lo encontramos divertido.
Debian está tan comprometido con el software libre que pensamos que sería útil que ese compromiso se encontrara formalizado en algún tipo de documento. Por ello nació nuestro Contrato Social.
Aunque Debian cree en el software libre, existen casos en los que la gente quiere o necesita disponer de software que no es libre en sus máquinas. Siempre que sea posible, Debian respaldará ésto. Hay un número creciente de paquetes que tienen como única misión instalar software que no es libre en un sistema Debian.
¿Qué hardware se encuentra soportado?
Debian funcionará en casi todos los ordenadores personales, incluyendo la mayoría de los modelos más antiguos. Cada nueva versión de Debian generalmente soporta un mayor número de arquitecturas de ordenadores. Si quiere una lista completa de las que se soportan actualmente, vea la documentación para la versión estable.
Casi todo el hardware común está soportado. Si desea asegurarse de que todos los dispositivos conectados a su máquina están soportados, vea el CÓMO de la Compatibilidad de Hardware en Linux (Linux Hardware Compatibility HOWTO).
Existen algunas compañías que hacen difícil el soporte al no publicar las especificaciones de su hardware. Esto quiere decir que a lo mejor no pueda usar su hardware con GNU/Linux. Algunas compañías proporcionan drivers que no son libres, pero eso es un problema, porque la compañía podría quebrar o dejar de dar soporte a su hardware. Recomendamos que sólo adquiera hardware de fabricantes que proporcionen controladores libres para sus productos.
¿Cómo empezó todo esto?
Debian comenzó en agosto de 1993 gracias a Ian Murdock, como una nueva distribución que se realizaría de forma abierta, en la línea del espíritu de Linux y GNU. Debian estaba pensado para ser creada de forma cuidadosa y concienzuda, y ser mantenida y soportada con el mismo cuidado. Comenzó como un grupo de pocos y fuertemente unidos hackers de Software Libre, y gradualmente creció hasta convertirse en una comunidad grande y bien organizada de desarrolladores y usuarios. Vea la historia detallada.
Ya que mucha gente lo ha preguntado, Debian se pronuncia /ˈde.bi.ən/. Viene de los nombres del creador de Debian, Ian Murdock, y de su esposa, Debra.

LEX

Hola estimados compañeros en esta ocasión encontré información que considero muy importante por lo cual espero con agrado sus comentarios acerca del mismo.

Uso de Lex para la generación automática de un analizador léxico


Lex es un programa que toma como entrada un archivo de texto que contiene expresiones regulares, junto con las acciones que se tomarán cuando se iguale cada expresión, posteriormente este programa produce un archivo de salida que contiene código fuente en lenguaje c y esté a su vez provee un procedimiento llamado yylex controlado por la tabla de un DFA (autómata finito determinístico) –correspondiente a las expresiones regulares del archivo tomado como entrada– el procedimiento yyLex funciona de forma similar a otro procedimiento en lenguaje c llamado getToken, este procedimiento da como salida el siguiente token desde la entrada y también calculara atributos adicionales como el valor de la cadena del token; volviendo con el funcionamiento de Lex es importante saber que lo que se obtiene como salida es un archivo ya sea lex.yy.c o lexyy.c, se compila y liga a un programa principal para obtener un programa ejecutable.

Existe una gran variedad de distribuciones (versiones) de Lex pero una de las más populares es “Flex” (Fast Lex ), forma parte del paquete compilador Gnu que produce la free software Foundation (Fundación de software gratuito) por lo cual, es posible encontrarlo gratuitamente en diversos sitios Web y se dice que fue escrito originalmente por
Eric Schmidt y Mike Lesk.


Algunas convenciones de Lex para expresiones regulares

1) Lex permite la correspondencia de caracteres simples o cadenas de caracteres en secuencia.
2) Lex permite que los metacaracteres se igualen como caracteres reales encerrándolos entre comillas.
3) Las comillas también se pueden escribir en torno de caracteres que no son metacaracteres, siempre y cuando no tengan efecto alguno.
4) Lex interpreta los metacaracteres *,+, (,), y de la manera habitual.
5) Lex utiliza los signos de interrogación como un meta carácter para indicar una parte opcional.
6) La convención de Lex para clases de caracteres (conjuntos de caracteres) es escribirlas entré corchetes “[ ]”.


Estructura de un archivo de Lex


La estructura de un archivo de Lex se divide en tres secciones, separadas por líneas que contienen solamente dos símbolos "%", como sigue:

Definition section (Sección de declaraciones)%%Rules section (Sección de reglas)%%C code section (Sección de código).

· La definition section (Sección de declaraciones) es el lugar para definir macros y para importar los archivos de cabecera escritos en C. También es posible escribir cualquier código de C aquí, que será copiado en el archivo fuente generado. Este código en C debe ir entre los símbolos %{ %}.

También se pueden incluir "atajos" para definir patrones de la Sección de Reglas, por ejemplo en vez del patrón [0-9]* (cero o más dígitos que reconocerían cualquier número natural), se puede definir en esta sección el "atajo": numeros [0-9]*, así, en la sección de código pondríamos el patrón {numeros} {acción_en_C;}. Con esto se clarifica la escritura del código en lex.

· La rules section (Sección de reglas) es la sección más importante; asocia patrones a sentencias de C. Los patrones son simplemente expresiones regulares. Cuando el lexer encuentra un texto en la entrada que es asociable a un patrón dado, ejecuta el código asociado de C. Ésta es la base de del funcionamiento de lex.

· La C code section (Sección de código C) contiene sentencias en C y funciones que serán copiadas en el archivo fuente generado. Estas sentencias contienen generalmente el código llamado por las reglas en la sección de las reglas. En programas grandes es más conveniente poner este código en un archivo separado y enlazarlo en tiempo de compilación.

Eso es todo compañeros, si este tema es de su interés pueden investigar más en la biblioteca de la USBI, el libro se llama: diseño de compiladores y el autor es kenneth C. Louden editorial Thomson, y también esta el sitio: http://www.infor.uva.es/~mluisa/talf/docs/aula/A3-A6.pdf

Ubuntu

Hola amigos, desde hace algunos días, me di cuenta que muchos de nuestros compañeros de informática han optado por utilizar Ubuntu, posiblemente en verdad les sea útil o solo se esta poniendo de moda, en mi particular punto de vista, apenas me estoy familiarizando con la versión 8.04, mas a delante les contare los beneficios que eh encontrado en Ubuntu, por lo tanto les dejo un poco de su historia.

La creación de Ubuntu fue enunciada el 8 de julio de 2004 por la empresa
Canonical Ltd y Mark Shuttleworth. Tuvo un financiamiento inicial de 10 millones de dólares.

El proyecto Ubuntu, nació como una iniciativa de algunos
programadores del proyecto Debian y GNOME, por la decepción que les generaba la forma de operar del proyecto Debian. Según ellos, Debian estaba demasiado burocratizado, sin responsabilidades definidas, y no había énfasis en estabilizar el desarrollo de sus versiones de prueba.

Luego de formar un grupo, estos programadores buscaron el apoyo de Mark Shuttleworth, empresario sudafricano, dueño de Thawte, que fue vendida a
VeriSign por 575 millones de dólares solo cuatro años luego de fundarla.

Mark Shuttleworth decidió apoyar el proyecto Ubuntu, y así nació la empresa
Canonical, encargada del sostenimiento económico del proyecto mediante la comercialización de servicios y soporte técnico a otras empresas.

Bueno compañeros, me despido no sin antes dejar la liga de donde conseguí esta información:

http://www.alegsa.com.ar/Dic/ubuntu.php

En ella encontré datos muy interesantes, nos vemos en clase amigos.

Platica de Linux con el maestro Gerardo Contreras

Hola compañeros, el pasado sábado 25 de sep. el maestro gerardo dio una platica sobre el sw libre, en especial del S.O. Linux donde rescaté algunos puntos teóricos de esta platica, y relfexiones, no fue mucho lo que platicó pero en general estuvo muy bien, no hicimos prácticas sólo platico un poco:

  • Richard Stallman, es el creador del SW libre
  • GNU es un conjunto de utilerías
  1. el SW libre permite:
  2. modificar el SW
  3. utilizarlo como queramos
  4. podemos ver y estudiar su código
  5. distribuir copias para ayudar a los demás
  • Según información del maestro, la UV paga alrededor de 4 milloes de pesos al año solo en pagar SW
  • Y nosotros podemos desarrollar y no sólo ser usuarios finales
  • GPL es la licencia de GNU (General Public Licence)
  • Stallman hizo el compilador de C libre (GCC) y el depurador libre (GDC)
  • El kernel es el nucleo del S.O.
  • GNU/LINUX viene, porque el kernel es de un autor que se llama linux, y GNU es todo lo demás del S.O.
  • Hay varias distribuciones de GNU/LINUX como: Debian, Fedora, Ubuntu, Gentoo.
  • EN linux incluso podemos navegar en internet y escuchar musica en modo texto, desde la consola.

y al final, implicitamente hizo una reflexión interesante:

1.- "tu amigo no es el que te da pescado, sino el que te enseña a pescar"
2.- "linuz te enseña a pescar (en instalación), windows no solo de lo da, sino que te lo vente"
por tanto: "linux e stu amigo"

es algo interesante, ojala les sirva.

viernes, 26 de septiembre de 2008

T-Mobile G1: primer teléfono en correr Android, la plataforma de software móvil de Google


Hola que tal amigos...pues no es muy relacionado con la materia pero entrando por diferentes paginas me encontre que lanzaron un nuevo telefono celular con la plataforma de software móvil de google..aunque no lo crean la tecnologia avanza demasiado.Habla algo sobre linux pero se los dejo a que ustedes lean un poquito saludos....YRVIN OSSIEL DORANTES CARREON

Pues los servicios de internet serán mejores ya que cuenta google maps, y otros servicios.

La operadora T-Mobile en conjunto con Google han anunciado el T-Mobile G1, el primero de muchos teléfonos móviles que soportan Android, la plataforma de software móvil de Google. El T-Mobile G1 incluye una pantalla touchscreen de 3 pulgadas, un teclado deslizante QWERTY y un botón de navegación central, ofrece también una cámara digital de 3 MegaPíxeles, GPS, Wi-Fi, radios 3G, entre otros. Este teléfono (obviamente si Google está en ello) te permite disfrutar de una mejor experiencia de los servicios web a nivel de móviles, incluye todos los servicios del popular buscador como Google Maps, Gmail, Youtube, etc.



Tecnologia Android

Lo que ha presentado Google, junto a la Open Handset Alliance, ha sido una plataforma, de nombre Android que consta del sistema operativo, basado en Linux, el interfaz gráfico y una serie de aplicaciones. Esta plataforma podrá usarse en diferentes teléfonos de diversos fabricantes.

Es decir, nos encontramos más bien frente a un rival para Windows Mobile o Symbian que ante un nuevo competidor en el panorama a de los terminales. Esta plataforma permitirá a los programadores crear aplicaciones que puedan acceder a todas las capacidades del móvil, desde llamadas hasta la cámara de fotos.

El movimiento es importante porque esta plataforma será gratuita, lo que implica la reducción de costes de los móviles y, por tanto, un precio más ajustado para el usuario final. Queda por ver como se utilizará para ofrecer publicidad por parte de Google, lo cual, en el fondo, es el objetivo principal de esta estrategia.

Viendo que en la presentación también se ha hablado de proveer servicios para los teléfonos equipados con Android por parte de las operadoras, imagino que será por este lado por donde venga la publicidad ofrecida por Google. Por cierto, entre las operadoras que se han apuntado está Telefónica, por lo que está garantizado que nos lleguen al menos algunos de los modelos que se presenten. Otras de las operadoras son Sprint y T-Mobile en Estados Unidos y Telecom Italia.

Los primeros modelos que se pondrán a la venta los podremos ver a partir de la segunda mitad del año 2008 y Google ha prometido que en aproximadamente una semana tendremos un SDK disponible para empezar a desarrollar aplicaciones para la plataforma Android.

Que es ensamblador y para que sirve? (Repaso)

Hola pues aquí les dejo un poco de lo que es en si el lenguaje ensamblador dijamos que es un pequeño recordatorio para de lo que se ve en arquí II, sus ventajas y desventajas.

Cuando se empezaron a utilizar símbolos nemotécnicos (lenguaje ensamblador), se escribieron programas para traducir automáticamente los programas escritos en lenguaje ensamblador a lenguaje máquina. A estos programas traductores se les llamo ensambladores.
La entrada para un ensamblador es un programa fuente escrito en lenguaje ensamblador. La salida es un programa objeto, escrito en lenguaje de máquina. El programa objeto incluye también la información necesaria para que el cargador pueda preparar el programa objeto para su ejecución.

Motivos para utilizarlo.

Rapidez:
Mayor control de la computadora:
Independencia del lenguaje:
La mayoría de las computadoras pueden ensamblar:

Motivos para no utilizarlo.

Dependencia del hardware:
Mayor tiempo de codificación:
Comprensión mas profunda de la computadora:
Errores mas frecuentes en el programa:

Ensambladores Cruzados (Cross-Assembler).

Se denominan así los ensambladores que se utilizan en una computadora que posee un procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa objeto producido.

domingo, 21 de septiembre de 2008

¿Programación de Sistemas ó Herramientos Para Programadoras?

Hice una copia del Programa de estudios del curso. Me parece que no cubre exactamente lo que entiendo de que es programación de sistemas. En la “Descripción minima”, se dice “...los alumnos distinguen los diferentes programas, técnicas y herramientas que soportan el desarrollo de otras aplicaciones, tanto en ambientes estátisticos como en dinámicos.”

Primero, la descripción no incluya programación. Segunda, no todas de las técnicas y herramientas que soportan de otras aplicaciones son incluidos en lo que es software de sistemas. El último es definido asi:

“El Software de sistema, en algunas ocasiones también denominado software de base, consiste en un software que sirve para controlar e interactuar con el sistema, proporcionando control sobre el hardware y dando soporte a otros programas. En contraposición del llamado Software de Aplicación. Ejemplos de software del sistema son sistema operativo, sistema operativo de red, compiladores, Antivirus, librerías tales como OpenGL (para la aceleración gráfica), PNG para el sistema gráfico o demonios que controlan la temperatura, la velocidad del disco duro (como hdparm) o la frecuencia del procesador como por ejemplo cpudyn.are” http://es.wikipedia.org/wiki/Software_de_sistema. Estes sistemas incluyan sistemas operativos, cargadores, asembladores, software que controla dispositivos, etc.

Entiendo que compiladores interactuan con el hardware en el sentido de crear código de máquina, aunque los compiladores de Java ni hacen esto, creando, en vez, código de una máquina virtual, lo que es removido del hardware específico del máquina. (Es la idea de una máquina virtual.) Ligadores ligan código de objeto con bibliotecas de software. No ligan software con el hardware. Editores y depuradores no tiene nada que ver directamente con el hardware.

¿Que piensan ustedes?

sábado, 20 de septiembre de 2008

USOS DE UN MACROPROCESADOR

bueno compañeros aqui les dejo una poca de informacion sobre los macroprocesadores y su uso espero nos sirva para saber un poco mas sobre el tema SALUDOS .......................

USOS DE UN MACROPROCESADOR

Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa, los ensambladores y compiladores cuentan con macroprocesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario.
Para utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la macro y el conjunto de instrucciones que representará.
El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas.
La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macrollamada) puede hacerse cuantas veces sea necesario.
La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.
Es tan común el empleo de macroinstrucciones se les considera como una extensión de los lenguajes. De manera similar se considera al procesador de macroinstrucciones o macroprocesador como una extensión del ensamblador o compilador utilizado.
El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macrollamada, el macroprocesador hará la sustitución por las instrucciones correspondientes. A este proceso de sustitución se le denomina expansión de la macro.
El macroprocesador elabora dos tablas para el manejo de las macros:
Una tabla de macronombres que consiste de los nombres de las macros y un índice que le permite localizar la definición de la macro en otra tabla llamada tabla de macrodefiniciones.
Como su nombre lo indica, la tabla de macrodefiniciones contiene las definiciones de todas las macros a utilizar en el programa.
En ocasiones es conveniente agrupar macros, de acuerdo a las tareas que realizan, y almacenarlas en archivos que se constituyen en bibliotecas de macros. De esta manera, cuando se requiera la utilización de alguna macro en particular, se incluye en el programa fuente el archivo de la biblioteca de macros correspondiente. La mayoría de los ensambladores y compiladores permiten el uso de pseudoinstrucciones condicionales del tipo IF ... ELSE, por medio de las cuales se puede controlar la traducción de ciertos bloques de programa

Samba vs. Windows Server 2003

Esta interesante, espero les guste y la verdad no se si tenga mucho que ver con programación de sistemas....


***Para que tu empresa ahorre, no pongas en tus servidores software microsoft. Usa linux y samba. Samba 3 aumenta su ventaja sobre Windows 2003


¿Qué es SAMBA?


SAMBA es una implementación en Linux del protocolo SMB, con código abierto. Hay un cliente y un servidor, de tal forma que puede servir archivos a maquinas con Windows, y leer y/o escribir en servidores de archivos de Windows.
La última versión de Samba muestra una mayor rapidez que Windows en la compartación de archivos e impresoras.


Las pruebas desarrolladas por los laboratorios de IT Week indican que la última versión del servidor de archivos e impresión de código abierto, Samba, ha ampliado su ventaja en desempeño contra el software comercial Windows.


Los últimos resultados comparativos muestran una mejora de Samba 3 sobre Samba 2, el cual se desempeñó al doble de velocidad que Windows 2000 server cuando fue probado por los laboratorios IT Week el año pasado. En general, ahora Samba 3 se desempeña 2.5 veces más rápido que Windows Server 2003.


En términos de escalabilidad, las ventajas de actualizar a Samba 3 son aún más contundentes. El año pasado encontramos que Samba podía soportar hasta cuatro veces más clientes que Windows 2000 antes de que el desempeño comenzara a disminuir. Este año necesitariamos hacer más grande el tamaño de nuestra red de pruebas a fin de encontrar el punto en el cual el desempeño de Samba comienza a disminuir.


El laboratorio de IT Week utilizó el modelo de pruebas de Ziff-Davis para probar el desempeño del servidor de archivos, con 48 computadoras como clientes. Escogimos especificaciones bajas pero con servidores modernos para nuestras pruebas. Usamos un servidor HP Proliant BL10 eClass con un procesador Pentium III de 900Mhz, con un disco duro ATA de 40 GB y 512MB de RAM. No hicimos ningún ajuste al software para mejorar el desempeño.


Cada cliente de la red de prueba hace un flujo constante de solicitudes de archivos al servidor que se está probando, semejando un ambiente del mundo real donde muchos usuarios permanecerían inactivos por largos periodos. En consecuencia, nuestro ambiente de prueba simuló la carga de trabajo de 500 clientes en un típico ambiente de trabajo. ****

¿Un algoritmo que te dice en donde tomaste una foto?

Hola que tal, los saluda su amigo Uriel, quiero compartir algo muy interesante con ustedes, entre mis loqueras buscando por la red, me tope con esta afirmación: ahora una fotografía puede delatar su origen directo, si yo sé, eso esta genial. Tal vez esten pensado en un algoritmo muy complicado para poder realizar esta tarea, pero dadas las descripciones que mencionan los articulos que vi, puedo decir en sintesis que el algoritmo (IM2GPS) nos resuelve este problema por medio de otros procedimientos que no tienen que ver con la identificacion de objetos (no se confundan), esos métodos analizan la composicion de la foto, checa como estan distribuidas su textura y colores y se ayuda con datos como el numero de serie de la foto y su posicion mediante técnica heurísticas (grafos). Bueno chequenlo con mas calma si quieren. Bueno hay nos vidrios hasta la otra entrada. Sus creadores, informáticos originarios de la Universidad de Carnegie Mellon (de donde fue creado el programa Alice), según ellos dicen que el algoritmo tiene un 16% de fallar en un rango de 200 fotos. Este es un avance muy grande para que las computadoras sean dotadas con habilidades como la identificacion de objetos y obviamente la posibilitación de la visión analogíca en las computadoras que beneficiaran a ramas como la IA, entre muchas otras...

Se despide dios o demonio.

Caracteristicas de python

Hola que tal compañeros...pues aqui subiendo otra poca de información...el maestro nos puso a leer algunos libros de python...pues bueno les pongo un poco del libro e información que encontre en la red..para que vean lo practico q es este lenguaje de programacion saludos....Yrvin Ossiel Dorantes Carreon.


Python es un lenguaje de programación creado por Guido van Rossum en el año 1990.[1]

Se compara habitualmente con TCL, Perl, Scheme, Java y Ruby. En la actualidad Python se desarrolla como un proyecto de código abierto, administrado por la Python Software Foundation. La última versión estable del lenguaje es actualmente la 2.5.2 (22 de febrero de 2008) (Se anunció la llegada de la versión 3.0 para agosto de 2008).

Python es considerado como la "oposición leal" a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar.

Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros...

Python es un lenguaje interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. También es una calculadora muy útil.

El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos Monty Python.[2] El principal objetivo que persigue este lenguaje es la facilidad, tanto de lectura, como de diseño.


Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación estructurada y programación funcional. Otros muchos paradigmas más están soportados mediante el uso de extensiones. Python usa tipo de dato dinámico y reference counting para el manejo de memoria. Una característica importante de Python es la resolución dinámica de nombres, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado ligadura dinámica de métodos).

Otro objetivo del diseño del lenguaje era la facilidad de extensión. Nuevos módulos se pueden escribir fácilmente en C o C++. Python puede utilizarse como un lenguaje de extensión para módulos y aplicaciones que necesitan de una interfaz programable. Aunque el diseño de Python es de alguna manera hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia del Lisp como puede ser Scheme.

Python fue diseñado para ser leído con facilidad. Entre otras cosas se utilizan palabras en inglés donde otros lenguajes utilizarían símbolos (por ejemplo, los operadores lógicos y && en Python se escriben or y and, respectivamente).

En vez de delimitar los bloques de código mediante el uso de llaves ({}), Python utiliza la indentación. Esto hace que la misma sea obligatoria, ayudando a la claridad y consistencia del código escrito (incluso entre varios desarrolladores):


Una comparación de una funcion en diferentes lenguajes..y se ve la forma practica de programar en python..



Función factorial en C int factorial(int x)
{
if (x == 0)
return 1;
else
return x*factorial(x - 1);
}

Función factorial en Python
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x-

cargadores y ligadores

Hola compañeros está ocasión logre encontrar información de cargadores y ligadores, espero y les sirva de complemento a lo que vimos en clase pero tengan paciencia porque es bastante extenso.

CONCEPTO DE CARGADORES Y LIGADORES

La mayor parte de los programas se componen de más de un procedimiento.

Los compiladores y ensambladores suelen traducir un procedimiento a la vez y guardan en memoria secundaria el resultado de esta traducción. Antes de que pueda ejecutarse el programa, todos los procedimientos traducidos deben recuperarse y ligarse correctamente. Si no se dispone de memoria virtual, el programa enlazado debe cargarse explícitamente en memoria.

Los programas que realizan estas funciones reciben varios nombres, como cargador (loader), cargador montado (linking loader) y editor de enlaces (linkage editor).

La traducción completa de un programa fuente se efectúa en dos pasos:

1) Compilación o ensamblaje de los procedimientos fuente
2) Encadenamiento (linking) o montaje de los módulos objeto.

Cargador:Es un programa especial, parte del sistema operativo que tiene como propósito colocar en la memoria las instrucciones y datos de un programa o información codificada en lenguaje máquina, para que entonces la computadora pueda procesarla.

Un cargador es un programa que realiza la función de carga, pero muchos cargadores también incluyen relocalización y ligado.

Algunos sistemas tienen un ligador para realizar las operaciones de enlace, y un cargador separado para manejar la relocalización y la carga. Los procesos de ensamblado y carga están íntimamente relacionados.

Ligador:Es un programa que enlaza todos los programas o módulos obteniendo lo que denominamos programa ejecutable.

Es un programa que enlaza distintos módulos o programas que poseen subprogramas. Además incorporan las denominadas rutinas de librerías en caso de solicitarlas el propio programa.

La generación de un módulo ejecutable a partir de una colección de procedimientos traducidos independientemente requiere un ligador.

FUNCION DE UN CARGADOR Y UN LIGADOR

Las funciones de un cargador son:

Colocar un programa objeto en la memoria e iniciar su ejecución.

Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalización de programas, su operación es muy simple, pues todas las funciones se realizan en un solo paso. Se revisa el registro de encabezamiento para comprobar se ha presentado el programa correcto para la carga (entrando en la memoria disponible). A medida que se lee cada registro de texto, el código objeto que contiene pasa a la dirección de memoria indicada. Cuando se encuentra el registro de fin, el cargador salta a al dirección especificada para iniciar la ejecución del programa cargado. Un programa objeto contiene instrucciones traducidas y valores de datos del programa fuente, y específica direcciones en memoria donde se cargarán estos elementos.

Las funciones de un cargador son relativamente sencillas y consisten en extraer información de algún medio exterior de la memoria (por ejemplo: CD Discos) y chocarlo en celdas sucesivas de la memoria a partir de una celda pre especificada. El cargador realiza la última etapa del proceso de traducción: cargar el programa en memoria donde puede ser ejecutado.

Una opción típica del cargador permite la selección de fuentes alternativas de entrada. Otros mandatos permiten al usuario eliminar símbolos externos o secciones de control completas.
También es posible cambiar referencias externas dentro del programa que se está cargando, La mayoría de los cargadores permiten al usuario especificar alternativas para búsqueda por medio de una proposición de tipo LIBRARY.

Las funciones de un ligador:

Los editores de ligado pueden efectuar varias funciones últimas a demás de la simple preparación de un programa objeto para su ejecución estos también se pueden utilizar para construir paquetes de subrutinas u otras secciones que suelen utilizar juntas. Esto puede ser útil al tratar con bibliotecas de subrutinas que manejan lenguajes de programación de alto nivel. Comparados con los cargadores de ligadores los editores de ligado en general tienden a ofrecer mayor flexibilidad y control con el correspondiente incremento e complejidad y sobrecarga.

La tarea principal del enlazador es resolver referencias externas lleva a cabo la siguiente etapa del proceso de traducción enlazando los módulos ensambladores y los acervos para formar un programa completo. En algunos sistemas el cargador simplemente copia el programa ejecutable a las posiciones de memorias apropiadas.

Sus principales funciones son:

1) Enlazar código intermedio compilado independientemente en un solo módulo de carga resolviendo las diferencias entre Tokens.

2) Incorpora las denominadas rutinas de librerías en caso de solicitarlas el propio programa.

3) Su función es reducir procedimientos traducidos por separado y enlazarlos para que se ejecuten como una unidad llamada programa binario ejecutable.

TIPOS DE CARGADORES Y LIGADORES
TIPOS DE CARGADORES:

Cargadores iniciales.- Indican a la computadora la forma de poner, dentro de la memoria principal, unos datos que están guardados en un periférico de memoria externa (cinta, disco, etc.). Sirven para cargar en la memoria pequeños programas que inician el funcionamiento de una computadora.

Algunas computadoras de carácter general no tienen en memoria ningún programa de forma permanente y cuando se desconectan pierden toda la información de su memoria interna. Al volverlos a conectar no son capaces de controlar ningún periférico (teclado, discos, etc.). Esto se hace así para que sea el usuario el que ponga los programas que le interese ejecutar.

Cargadores absolutos.- Como ya se menciono el programa cargador pone en memoria las instrucciones guardadas en sistemas externos. Independientemente de que sea un cargador inicial o no, si dichas instrucciones se almacenan siempre en ele mismo espacio de memoria (cada vez que se ejecuta el programa cargador), se dice que es un cargador absoluto.

Cargadores con reubicación.- En ocasiones, un mismo programa necesita ejecutarse en diferentes posiciones de memoria. Para esto la traducción debe estar realizada en forma adecuada, es decir, no utilizando referencias absolutas a direcciones de memoria, sino referencias relativas a una dirección especial llamada dirección de reubicación.

El cálculo de las direcciones reubicables lo realiza el propio cargador a medida que va guardando las instrucciones en el espacio de memoria que le indique el usuario o el propio sistema operativo de la máquina.

A los cargadores que permiten estas operaciones se les denominan cargadores con reubicación.

Cargadores ligadores.- Conocidos también por su término inglés Link editor o simplemente Linker, es muy común también referirse a él por la castellanización del nombre inglés, <>. A la acción de montar se le llama asimismo vulgarmente <>.

Montar un programa consiste en añadir al programa objeto obtenido en la traducción las rutinas externas a las que hace referencia dicho programa. El ensamblador debe permitir dichas referencias y las rutinas deben estar a su vez en lenguaje máquina guardadas en algún elemento accesible por el montador. Generalmente, dichas rutinas se encuentran guardadas en un fichero especial al que suele denominarse librería, porque están almacenadas todas las rutinas externas susceptibles de ser utilizadas por los diferentes programas del usuario. Allí va el programa ligador cuando esta realizando el montaje de un programa a buscarlas y las adjunta al programa objeto.

CARGADORES BOOTSTRAP. El programa cargador, una vez situado en la memoria del computador, cargará el programa de aplicación y los datos. Pero, previamente, se ha debido cargar el cargador en la memoria y esto se puede realizar por uno de los métodos siguientes:
Entrada Manual: Mediante el teclado, el usuario teclea en la máquina el cargador bootstrap. Después de esto, el cargador se carga a sí mismo en la memoria del computador. A partir de este momento, es el cargador el encargado de cargar el programa de aplicación en la memoria.

Entrada por ROM: Es posible tener las instrucciones de inicialización almacenadas permanentemente en alguna porción de la ROM, en lugar de introducirlas manualmente por teclado o por el panel frontal. Cuando se requiere el programa de bootstrap, el operador simplemente dirige al computador, mediante los conmutadores del panel, a ejecutar las instrucciones memorizadas en ROM: Al estar el programa almacenado en ROM se elimina también la posibilidad de borrados accidentales.

CARGADORES ABSOLUTOS. Este es un programa que carga cada instrucción del programa objeto en una posición fija y preestablecida. Por tanto, cada instrucción tiene una dirección absoluta. El cargador absoluto lee simplemente la línea de código objeto que contiene la dirección de inicio de las instrucciones y datos, y carga las palabras (o bytes) sucesivas en posiciones de memoria sucesivas.

El cargador absoluto tiene un serio inconveniente cuando se utiliza en sistemas computadores grandes.

Esto significa que los programas y datos se deben almacenar cada vez en posiciones de memoria distintas. Si se utilizan cargadores absolutos, el programa objeto se tendrá que modificar para que refleje la nueva posición de inicio de memoria. Esta es una actividad larga y sujeta a errores. En tales situaciones, se utilizan cargadores relocatables.

Los cargadores absolutos están diseñados generalmente para verificar cada instrucción que leen. Si se detecta una instrucción ilegal, se interrumpe el proceso de carga.

CARGADORES RELOCATABLES. Este cargador evita el principal inconveniente del cargador absoluto. El cargador relocatable es un programa más sofisticado, tiene las características del cargador absoluto, y además permite al usuario seleccionar y especificar las posiciones de memoria en las que se debe almacenar las palabras de instrucciones y datos.

De esta forma, el mismo programa se puede cargar en distintas zonas de la memoria sin necesidad de reensamblarlo o recompilarlo. Durante el ensamblado o compilación del programa objeto, éste empieza con la dirección. Las sucesivas instrucciones quedan asignadas a posiciones de memoria consecutivas. No obstante, las direcciones no son absolutas, es decir, no representan las verdaderas posiciones de memoria en las que se está almacenando el programa.

Se trata de direcciones relativas. El programador inserta la dirección se añade a cada una de las posiciones de memoria asignadas en el programa, obteniéndose

Las direcciones reales de las instrucciones y datos del programa. El cargador relocatable ofrece algunas ventajas.

TIPOS DE LIGADORES:

EDITORES DE LIGADO. La diferencia fundamental entre un editor de ligado y un cargador ligador es: Primero se ensambla o compila el programa fuente, produciendo un programa objeto (que puede contener varias secciones de control diferentes).
Un cargador ligador realiza todas las operaciones de ligado y relocalización, incluyendo búsqueda automática en bibliotecas, si se especifica, y carga el programa ligado directamente en la memoria para su ejecución. Por otro lado, un editor de ligado produce una versión ligada del programa (llamada a menudo módulo de carga o imagen ejecutable), que se escribe un archivo o biblioteca para su ejecución posterior. Cuando el usuario esta listo para ejecutar el programa ligado, se puede utilizar un cargador relocalizador simple para cargar el programa en la memoria.
El editor de ligado realiza relocalización de todas las secciones de control relativas al inicio del programa ligado.

LIGADOR DINAMICO. El ligador dinámico ofrece algunas ventajas sobre los otros tipos de ligado. Proporciona la posibilidad de cargar las rutinas sólo cuando y si se necesitan. Si las subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir ahorros considerables de tiempo y espacio de memoria.
Cuando se utiliza el ligador dinámico, la asociación de una dirección real y el nombre simbólico de la rutina llamada no se hace hasta que se ejecuta la proposición llamada.

LIGADOR DEL SISTEMA VAX. El ligador VAX es un editor de ligado que realiza las mismas funciones básicas alcanzadas con anterioridad. La acción del ligador en la creación de las secciones de imagen está controlada por ensamblador o compilador por medio de una secuencia de mandatos que forman parte del programa objeto.

El lenguaje de mandatos ofrece una gran diversidad de posibilidades: hay más de 50 códigos de mandatos posibles. El ligador VAX puede generar tres tipos de imágenes. Una imagen ejecutable es aquella adecuada para la carga y ejecución; sin embargo, el ligador no puede reprocesar este tipo de imagen. Una imagen compartible no es ejecutable, pero el ligador puede reprocesarla, y se puede utilizar, por ejemplo como tapa intermedia en el ligado de un programa muy grande. Las imágenes compartibles también hacen posibles que diferentes

Programas compartan la misma copia de ciertas instrucciones o área de datos. El tercer tipo de imagen que puede crear el ligado es una imagen de sistema, concebida para ser ejecutada directamente en la máquina VAX.

EDITOR DE LIGADO DEL SISTEMA /370. El formato de los programas objeto manejado por el editor de ligado del SISTEMA /370 es muy parecido al analizado para SIC/XE. La técnica de referencia a un número se usa para mejorar la eficiencia. El programa de salida del editor de ligado se llama módulo de carga, y puede cargarse en la memoria para su ejecución, y suele contener suficiente información para permitir que el editor de ligado los reprocese.
Si desean saber mas pueden consultar:http://club.telepolis.com/nivel_0/doc/Exposicion8.doc

viernes, 19 de septiembre de 2008

componentes, tipos de sistemas operativos

Hola compañeros, espero les agrade esta información, y les dejo el vinculo por is quieren abundar sobre el tema

Componentes del sistema operativo
El sistema operativo está compuesto por un conjunto de paquetes de software que pueden utilizarse para gestionar las interacciones con el hardware. Estos elementos se incluyen por lo general en este conjunto de software:
El núcleo, que representa las funciones básicas del sistema operativo, como por ejemplo, la gestión de la memoria, de los procesos, de los archivos, de las entradas/salidas principales y de las funciones de comunicación.
El intérprete de comandos, que posibilita la comunicación con el sistema operativo a través de un lenguaje de control, permitiendo al usuario controlar los periféricos sin conocer las características del hardware utilizado, la gestión de las direcciones físicas, etcétera.
El sistema de archivos, que permite que los archivos se registren en una estructura arbórea.

Sistemas de multiprocesos
Un sistema operativo se denominade multiprocesos cuando muchas "tareas" (también conocidas como procesos) se pueden ejecutar al mismo tiempo.
Las aplicaciones consisten en una secuencia de instrucciones llamadas "procesos". Estos procesos permanecen activos, en espera, suspendidos, o se eliminan en forma alternativa, según la prioridad que se les haya concedido, o se pueden ejecutar en forma simultánea.
Un sistema se considera preventivo cuando cuenta con un programador (también llamado planificador) el cual, según los criterios de prioridad, asigna el tiempo de los equipos entre varios procesos que lo solicitan.
Se denomina sistema de tiempo compartido a un sistema cuando el programador asigna una cantidad determinada de tiempo a cada proceso. Éste es el caso de los sistemas de usuarios múltiples que permiten a varios usuarios utilizar aplicaciones diferentes o similares en el mismo equipo al mismo tiempo. De este modo, el sistema se denomina "sistema transaccional". Para realizar esto, el sistema asigna un período de tiempo a cada usuario.
Sistemas de multiprocesadores
La técnica de multiprocesamiento consiste en hacer funcionar varios procesadores en forma paralela para obtener un poder de cálculo mayor que el obtenido al usar un procesador de alta tecnología o al aumentar la disponibilidad del sistema (en el caso de fallas del procesador).
Las siglas SMP (multiprocesamiento simétrico o multiprocesador simétrico) hacen referencia a la arquitectura en la que todos los procesadores acceden a la misma memoria compartida.
Un sistema de multiprocesadores debe tener capacidad para gestionar la repartición de memoria entre varios procesadores, pero también debe distribuir la carga de trabajo.
Sistemas fijos
Los sistemas fijos son sistemas operativos diseñados para funcionar en equipos pequeños, como los PDA (asistentes personales digitales) o los dispositivos electrónicos autónomos (sondas espaciales, robots, vehículos con ordenador de a bordo, etcétera) con autonomía reducida. En consecuencia, una característica esencial de los sistemas fijos es su avanzada administración de energía y su capacidad de funcionar con recursos limitados.
Los principales sistemas fijos de "uso general" para PDA son los siguientes:
PalmOS
Windows CE / Windows Mobile / Window Smartphone
Sistemas de tiempo real
Los sistemas de tiempo real se utilizan principalmente en la industria y son sistemas diseñados para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener capacidad para operar en forma fiable según limitaciones de tiempo específicas; en otras palabras, debe tener capacidad para procesar adecuadamente la información recibida a intervalos definidos claramente (regulares o de otro tipo).
Estos son algunos ejemplos de sistemas operativos de tiempo real:
OS-9;
RTLinux (RealTime Linux);
QNX;
VxWorks.

Perl

Hola compañeros en esta ocasión encontré un tutoríal sobre Perl, ojala y les parezca interesante, la definición que nos da el tutoríal de este lenguaje es:

Perl es un lenguaje que hereda ciertas estructuras de los intérpretes de comandos de UNIX, especialmente el csh, y de otras utilidades estándar, como awk y sed. Aparte de esto, está diseñado para hacer todo lo que hacen cualquiera de ellos y todos ellos juntos, y la mayoría de las veces de forma más simple, comprensible y fácil de depurar (aunque, algunas veces no muy fácil de entender). Perl es un lenguaje interpretado, aunque en realidad, el intérprete de Perl, como todos los intérpretes modernos, compila los programas antes de ejecutarlos. Por eso se habla de scripts, y no de programas, concepto referido principalmente a programas compilados al lenguaje máquina nativo del ordenador y sistema operativo en el que se ejecuta.

En realidad yo también no entiendo mucho, así que leeré un poco más.

Aquí les dejo el hipervínculo por si les interesa saber más sobre Perl.
http://geneura.ugr.es/~jmerelo/tutoperl/indice.html

jueves, 18 de septiembre de 2008

INSTALAR LINUX CON WINDOWS VISTA

Hola pues aquí subiendo algo sobre la instalación de Linux en un equipo que que trabaje con vista, después de leer este documento concluí que si es posible solo que se deben realizar unas pequeñas modificaciones en cuanto a la forma de instalación.

La clave se basa en lo de siempre, en manipular las particiones de Vista para dejar espacio suficiente para instalar Linux. Para ello Vista trae una herramienta en Equipo, haciendo clic con el botón derecho y seleccionando Administrar. En la ventana que aparece seleccionamos Administrador de discos. Ya no hace falta Partition Magic ni ninguna otra herramienta.

Otra forma podría ser la creación de una maquina virtual:una máquina virtual que se ejecutará dentro de nuestro Vista sin afectar a nada y de forma totalmente segura.

Evidentemente la velocidad es un poco más lenta, pero se puede trabajar perfectamente.

Por otro lado este sistema resulta muy útil para hacer pruebas y experimentos, ya que en cualquier momento podríamos restaurar nuestra máquina virtual con tan sólo tener una copia de ese archivo y colocarla de nuevo sobre la otra.

sábado, 13 de septiembre de 2008

Cargadores

Hola que tal compañeros, retome el tema sobre cargadores, espero y les guste por si no habia quedado claro o quieran dar un breve repaso saludos. Yrvin Ossiel Dorantes Ca

La Programación de Sistemas se refiere a la creación de programas cuya finalidad es servir a otros programas. Entre los programas que se manejan en la Programación de Sistemas se encuentran, entre otros, los sistemas operativos, los compiladores, los ensambladores, los cargadores, los macroprocesadores, los manejadores de bases de datos.
Un cargador es un programa que coloca en la memoria, para su ejecución, el programa guardado en algún dispositivo de almacenamiento secundario.
Dependiendo de la manera en que se manejen los procesos de liga y de carga, podemos clasificar a los cargadores en:
Cargadores iniciales. Indican a la computadora la forma de poner, dentro de la memoria principal, unos datos que están guardados en un periférico de memoria externa (cinta, disco, etc.). Sirven para cargar en la memoria pequeños programas que inician el funcionamiento de una computadora.
Algunas computadoras de carácter general no tienen en memoria ningún programa de forma permanente y cuando se desconectan pierden toda la información de su memoria interna. Al volverlos a conectar no son capaces de controlar ningún periférico (teclado, discos, etc.). Esto se hace así para que sea el usuario el que ponga los programas que le interese ejecutar.

Cargadores absolutos. Como ya se menciono el programa cargador pone en memoria las instrucciones guardadas en sistemas externos. Independientemente de que sea un cargador inicial o no, si dichas instrucciones se almacenan siempre en ele mismo espacio de memoria (cada vez que se ejecuta el programa cargador), se dice que es un cargador absoluto.

Cargadores con reubicación. En ocasiones, un mismo programa necesita ejecutarse en diferentes posiciones de memoria. Para esto la traducción debe estar realizada en forma adecuada, es decir, no utilizando referencias absolutas a direcciones de memoria, sino referencias relativas a una dirección especial llamada dirección de reubicación.
El cálculo de las direcciones reubicables lo realiza el propio cargador a medida que va guardando las instrucciones en el espacio de memoria que le indique el usuario o el propio sistema operativo de la máquina.
A los cargadores que permiten estas operaciones se les denominan cargadores con reubicación.

Cargadores ligadores. Conocidos también por su término inglés Link editor o simplemente Linker, es muy común también referirse a él por la castellanización del nombre inglés. A la acción de montar se le llama asimismo vulgarmente .
Montar un programa consiste en añadir al programa objeto obtenido en la traducción las rutinas externas a las que hace referencia dicho programa. El ensamblador debe permitir dichas referencias y las rutinas deben estar a su vez en lenguaje máquina guardadas en algún elemento accesible por el montador. Generalmente, dichas rutinas se encuentran guardadas en un fichero especial al que suele denominarse librería, porque están almacenadas todas las rutinas externas susceptibles de ser utilizadas por los diferentes programas del usuario. Allí va el programa ligador cuando esta realizando el montaje de un programa a buscarlas y las adjunta al programa objeto.

En el proceso de carga reubicable (relocalizable), un mismo programa puede ejecutarse en diferentes posiciones de memoria. Para esto, el programa objeto debe utilizar referencias a relativas a una dirección especial llamada dirección de reubicación.
EI cálculo de las direcciones reubicables es realizado por el cargador a medida quo va ubicando las instrucciones en el espacio de memoria que le indique el sistema operativo.
Cuando se utilizan subrutinas en un programa, el código ejecutable de cada una de ellas debe encontrarse en memoria al tiempo de ejecución. Para esto, antes de cargar un programa, debe ligarse su código objeto con los códigos objeto (guardados en uno o más archivos) de cada una de las subrutinas invocadas por él, obteniendo así un programa ejecutable que contiene tanto el código del módulo invocador como el código de los módulos invocados. En este punto, es posible guardar el resultado del proceso de liga en un archivo que podrá ser utilizado por un cargador, o el mismo programa ligador puede también realizar la tarea de carga. Esto último evita el tener que guardar el código ejecutable en un archivo, con lo que se ahorra espacio en disco. Este ahorro de espacio en disco se paga con el tiempo gastado al tener que ligar todos los módulos cada vez que se necesite ejecutar el programa.
Este enlace se llama estático porque se realiza antes de ejecutar el programa.
Existe otro proceso llamado enlace dinámico, el cual consiste en enlazar en tiempo de ejecución los módulos que contienen a las subrutinas.

UNIDADES FUNCIONALES

El procesador se compone de un grupo de unidades interrelacionadas (o unidades de control). Aunque la arquitectura del microprocesador varía considerablemente de un diseño a otro, los elementos principales del microprocesador son los siguientes:
Una unidad de control que vincula la información entrante para luego decodificarla y enviarla a la unidad de ejecución: La unidad de control se compone de los siguientes elementos:
secuenciador (o unidad lógica y de supervisión ), que sincroniza la ejecución de la instrucción con la velocidad de reloj. También envía señales de control:


contador ordinal, que contiene la dirección de la instrucción que se está ejecutando actualmente; registro de instrucción, que contiene la instrucción siguiente.
· Una unidad de ejecución (o unidad de procesamiento), que cumple las tareas que le asigna la unidad de instrucción. La unidad de ejecución se compone de los siguientes elementos:
o la unidad aritmética lógica (se escribe ALU); sirve para la ejecución de cálculos aritméticos básicos y funciones lógicas (Y, O, O EXCLUSIVO, etc.);
o la unidad de punto flotante (se escribe FPU), que ejecuta cálculos complejos parciales que la unidad aritmética lógica no puede realizar;
o el registro de estado;
o el registro acumulador.
· Una unidad de administración del bus (o unidad de entrada-salida) que administra el flujo de información entrante y saliente, y que se encuentra interconectado con el sistema
RAM.

ESPERO QUE ESTA INFORMACION LES SEA UTIL TAL VEZ LO VIERON EN ARQUITECTURA DE COMPUTADORAS 2 PERO PUES YO NO RECUERDO MUY BIEN. SALUDOS A TODOS

SUBSISTEMAS DE UN Sistemas


SUBSISTEMA DE PROCESOS
Es un conjunto de rutinas del sistema que permite la gestión de varias actividades. Permite varias funcionalidades:
· Gestión de la CPU. Se encarga de sacar y meter los procesos en la CPU.
· Debe permitir a los programas de usuario el acceso a las primitivas del Kernel (system calls).
Realizar las operaciones de swap−in y swap−out. Esto es lo que permite sacar de la CPU tareas que han consumido su tiempo de CPU o que necesitan realizar operaciones de I/O. Debe poder guardar esta tarea en el área de swapping y cuando llegue el momento de meterla en CPU, se encargará de planificar la entrada.
· La incorporación más importante es la Técnica de Intercomunicación entre Procesos:

Tuberías sin nombre.
Tuberías con nombre.

3.INTERACCIÓN EN PLATAFORMAS (POSIX)
Existe un comité que es el POSIX, que establece el conjunto de funcionalidades definidas como estándar para que en cualquier plataforma sea posible el desarrollo de aplicaciones software con independencia de las plataformas en que se han desarrollado.
4.HERRAMIENTAS DE AYUDA AL DESARROLLO
CC es el compilador que vamos a utilizar en UNIX. Los archivos .c van a ser los archivos fuente, y los archivos .o son los objeto. Por defecto al compilar con CC se crea el ejecutable a.out.

Las Macros en Programación

Hola compañeros, como en las próximas clases veremos las macros aquí les dejo un poco de información sobre ellas...

Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa, los ensambladores y compiladores cuentan con macroprocesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la macro y el conjunto de instrucciones que representará.El programador escribirá el nombre de la macro en cada uno de los lugares donde se requiera la aplicación de las instrucciones por ella representadas. La declaración se realiza una sola vez, pero la utilización o invocación a la macro (macrollamada) puede hacerse cuantas veces sea necesario. La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.Es tan común el empleo de macroinstrucciones que se les considera como una extensión de los lenguajes. De manera similar se considera al procesador de macroinstrucciones o macroprocesador como una extensión del ensamblador o compilador utilizado. El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macro llamada, el macroprocesador hará la sustitución por las instrucciones correspondientes. A este proceso de sustitución se le denomina expansión de la macro. El macroprocesador elabora dos tablas para el manejo de las macros.

Bueno compañeros ojala y les sea de utilidad esta información, nos vemos en clase.

funcionamiento de un sistema operativo e interfaz gráfica

Sistema Operativo

Las principales actividades que realiza un Sistema Operativo en una computadora son:

1.- La comunicación con los periféricos.
2.- La coordinación del procesamiento de trabajos concurrentes.
3.- La administración de la memoria.
4.- Supervisión, contabilidad y seguridad de recursos .
5.- Administración de programas y datos.

El proceso de arranque (boot) en una computadora personal es el proceso mediante el cuál se prepara el sistema de la computadora para efectuar una o varias instrucciones; el boot arranca un Sistema Operativo.

Al encender la computadora, el sistema Operativo hace la lectura de inicio de la aplicación que se va a correr; verifica los drives en el orden que el usuario le indica al instalarlo, Revisa si no hubo errores al apagar el equipo y avisa al usuario cuando existe algún problema.
Si al revisar los drives, encuentra un disco o diskette de "boot", corre dicha aplicación para instalarla.

El sistema Operativo es un programa que se instala en la computadora para obtener un formato prediseñado de las operaciones que se quieren ejecutar. Esta cargado en la memoria principal de la computadora, y se inicia automaticamente al encender la maquina (una vez que esta instalado).

La interfase con el usuario, es la barrera que exsiste entre el usuario y la computadora que "traduce" el lenguaje del usuario al de la computadora y viseversa. Las aplicaciones, la utileria, los lenguajes de programación y el sistema operativo tienen que comunicarse con el usuario en grados distintos. La interfaz de un programa con el usuario es un actor crítico en esta comunicación.

Las interfaces han evolucionado hasta llegar al punto en que los paquetes mas complejos de software pueden ser utilizados por cualquier persona que no sepa de computadoras.
La interfaz es la forma en que la maquina te explica de forma “didáctica” las opciones que tienes para trabajar o hacer en ella. Te explica lo que esta sucediendo dentro de ella, con el fin de tener informado al usuario de lo que va a suceder o lo que podría suceder.

Los diferentes tipos de interfase que puede ofrecer un programa al ejecutarse han evolucionado desde las interfaces de línea de ordenes, hasta las interfaces gráficas y la que esta basada en caracteres. Tambien existen las llamadas interfaces dirigidas por menus y de interprete de comandos.

La interfase de intérprete de linea de ordenes, se utiliza cuando es necesario establecer comunicacion directa (un dialogo) con el sistema operativo. Con ella, el ususario teclea ordenes y el computador responde a ellas.

Elementos de una interfase gráfica

Los avances tecnologicos han hecho posible que todos los computadores cuenten con pantallas graficas, aun siendo de bajo costo. Estas pueden controlar por separado cada punto de la pantalla y el sistema operativo vigila las ordenes del usuario por medio de los movimientos del raton.
Una ventana es el area con recuadro en la pantalla del computador que puede abrirse, cerrarse y moverse con el dispositivo apuntador.

Los menús permiten al usuario seleccionar de una lista que proviene del titulo de dicho menu.
Los botones son puntos "vivos" en la pantalla que responden a clicks del raton generalmente presentando una pantalla diferente.

Existen dos tipos de Barras> las de herramientas, que se encuentran en algunas aplicaciones y que contienen ciertos botones que se pueden utilizar como "caminos cortos" para efectuar las ordenes mas comunes.

Las barras de menus, se encuentran en la parte superior de la pantalla o ventana que contiene menus descendentes.

El scroll es una columna dlgad que aparece en la parte inferior o derecha de las ventanas en las que no se logra visualizar completamente las imagenes y permiten al usuario mover la parte de la pantalla que si se puede observar para ver lo demas.

El ratón es el dispositivo manual que le indica al sistema operativo el lugar en la pantalla en el que se encuentra el cursor. En una interfase gráfica, esto le indicaria al S.O. que boton, ventana, menu, barra o scroll quiere utilizar el usuario.

Drag significa "arrastrar", esto se utiliza para mover de lugar las figuras de utilidades diferentes; ya sean ventanas iconos, archivos(para cambiarlos de folder) e incluso para arrastrar "short cuts" al escritorio principal. Click, es literalmente el sonido que hace el boton del mouse al presionarlo. Cuando la indicacion es "darle un click" (o dos) se refiere a colocar el cursor en el luar de la pantalla donde se va a trabajar y presionar una o dos veces el boton del dispositivo.

viernes, 12 de septiembre de 2008

Cmpiladores vs intérpretes

Hola compañeros, lo que subo es sobre compiladores e interpretes, en clase vimos acracteristicas pero creo que es importante reflezionar entre las ventajas de cada uno sobre el otro y sus desventajas, ojalá les sea de utilidad y lo más importante, que thagan sus conclusiones.


Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.
Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente. Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.
Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores.

Máquina Virtual de Java (JVM)

Máquina Virtual de Java (JVM)

Una máquina física tiene su sistema operativo, lo que arranca código de máquina, y un procesador, lo que ejecuta el código. Para programas escritos en lenguages interpretados (in vez de compilados), un intérprete tambien es preciso, para convertir el código del fuente en instrucciones mientras el programa está ejecutando.

Una máquina virtual es un programa que desempeña estes pasos en el tiempo de ejecución con respecto a algo que se llama código de byte, en vez de operar directamente en el código máquina. Esta máquina convierte el código de byte en instrucciones especificas para la máquina física, por medio ó de un intérprete ó de un compilador “just in time”, lo que hace la compilación desde el código de byte hasta el código de máquina (física) en el tiempo de correr el programa.

El código de byte utilizado por Java es un byte stream (flujo de octetos) que contiene ó instancias de clases (tipos) primativas de Java (como int, float, etc.) ó op codes (códigos de operación) para manipular estas instancias de clases primativas.

Como un lenguaje orientado a objetos, Java habilita la construcción de objetos de clases compuestas de instancias de clases primativas, juntos con las operaciones usadas para manipular estes objetos. Un objeto de una clase compuesta puede tener instancias de clases primativas ó de otras clases compuestas, junto con los métodos usados para manipular estes objetos. (Los últimos, en su turno, son construidos de métodos para manipular las instancias de clases primativas.) Estes objetos de clases compuestas son, entonces, definidas últimamente, y compuestas por, instancias de clases primativas y las operaciones para manipularlas.

Porque las clases compuestas son compuestas usando tipos primativos y los métodos para manipular objetos construidos de ellos, es precisa una manera de interpretar el código byte en termas de los objetos de clases compuestas. O sea, los tipos primativos y sus operadores, contenidos en el código byte, deben ser interpretados para ejecutar en tal manera que las operaciones para estes tipos primativos sirven, en efecto, para manipular los objetos de clases compuestas, usando los métodos de estas clases. Esto es la función de la parte de la JVM que se llama un class loader (arrancador de clases). El arrancador de clases arranca las definiciones de clases compuestas conforme que sea necesário, junto con el código de byte preciso para implementar instancias de estas clases.

caricatura


espero les guste

DIFERENCIA ENTRE COMPILADOR E INTERPRETE

HOLA COMPAÑEROS PUES YO RETOME EL TEMA QUE SE ESTA VIENDO EN CLASE QUE ES UN COMPILADOR Y SU FUNCIÓN AL IGUAL QUE EL DE UN INTERPRETE.
Compilador:
Es un programa que traduce los programas escritos en lenguajes de alto nivel a lenguaje máquina.El compilador traduce sentencia a sentencia el programa fuente. Un compilador acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera.
Un intérprete:
Es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. Los programas interpretados suelen ser más lentos que los compilados, pero los intérpretes son más flexibles como entornos de programación y depuración.

un poco de la relacion entre numero mágico y a.out

Las pruebas de números mágicos se emplean para comprobar ficheros con datos dispuestos en formatos fijos particulares. El ejemplo de esto es un fichero ejecutable binario (programa compilado) a.out, cuyo formato se describe en a.out.h y posiblemente en exec.h en el directorio normal de ficheros de cabecera. Estos ficheros tienen un‘número mágico’ guardado en una posición particular cerca del principio del fichero, que le dice al sistema operativo UNIX que el fichero es un binario ejecutable, y de qué tipo de entre unos cuantos. El concepto de ‘número mágico’ se ha aplicado por extensión a ficheros de datos. Cualquier fichero con algún identificador invariante en una posición fija y cercana al principio en el fichero puede normalmente describirse de esta forma. La información de estos ficheros se lee del ‘fichero mágico’ /usr/share/misc/magic.

Aunque me quedan mis dudas todo esto esta basado en FreeBSD que es un SO basado en UNIX
Espero que les sirva...
J. Arturo Sarabia Rodriguez.

miércoles, 10 de septiembre de 2008

¿Qué es un Checksum?

Hola que tal, espero que se la pasen bien chido y pues vayamos al grano:

Pues encontré este tip en internet acerca de lo que es un Checksum, la verdad nunca en mi vida lo había oído pero al leer acerca de lo que se trataba se me hizo interesante compartirlo con ustedes, al fin y al cabo creo que aunque sea un poco, esto tiene que ver con nuestra materia de programación de sistemas. En resumen proviene del vocablo ingles y traducido al español seria algo Así como "chequeo de suma", por lo cual hace énfasis a una suma, es decir que si los métodos matemáticos a los que se someten un determinado número de octetos, para ser llamado checksum, dichos métodos debe ser a través de sumas. Es un sistema de control de errores y consiste normalmente en un único octeto mediante una o varias operaciones matemáticas sobre todos los octetos de un bloque de datos cuyo fin es detectar los posibles errores que se produzcan durante una transmisión en la red. Si el checksum no es el esperado se reenvía el bloque erróneo.

Pues espero que de algo les haya servido esta embarradita de cultura general informática y pues los veo luego... se despide de ustedes Uriel (dios o demonio)...