lunes, 20 de diciembre de 2010

patos gimp

La imagen es un ejemplo de cómo clonar en gimp. La herramienta de clonado se utiliza seleccionando un punto de la imagen manteniendo pulsada la tecla "control", y ese punto de la imagen es clonado el la parte de la imagen en la que se desea

jueves, 9 de diciembre de 2010

7.2 trabajo sobre sistemas operativo

En este tema se describe aquella parte del "software" de un ordenador que transforma el "hardware" en algo útil: el sistema operativo. Para los fines de este capítulo es importante considerar un ordenador como un conjunto de recursos, de tipo físico, lógico o una mezcla de ambos. Tomados como un todo estos recursos proporcionan facilidades para el tratamiento y la entrada/salida de datos, así como para otros aspectos del funcionamiento de un ordenador. 

 

CLASIFICACIÓN

 

Para comprender qué es un sistema operativo, es necesario entender cómo han sido desarrollados, en este apartado se esboza el desarrollo de los sistemas operativos desde los primeros hasta los actuales multiprogramados y de tiempo compartido. A medida que nos adentremos en las distintas etapas, veremos que los componentes de los sistemas operativos evolucionaron como soluciones naturales a los problemas de los primeros sistemas informáticos.

LOS PRIMEROS SISTEMAS


Inicialmente lo único que existía era el "hardware" del ordenador. Los primeros ordenadores eran máquinas muy grandes que ejecutaban su trabajo desde lo programado en una consola. El usuario escribía el programa y lo ejecutaba directamente desde la consola del operador, se debía de cargar manualmente en la memoria, bien fuera desde los conmutadores del panel frontal, desde cinta de papel o mediante tarjetas perforadas. Seguidamente se pulsaban los interruptores adecuados para cargar la dirección de inicio y para comenzar la ejecución del programa. Se supervisaba la ejecución por medio de los indicadores luminosos de la consola, si aparecía algún error se podía detener la ejecución, examinar el contenido de la memoria y de los registros y depurar el programa desde la consola. La salida generada se imprimía, o bien se almacenaba en cinta de papel o tarjetas perforadas para su procesado posterior.


Con el tiempo se perfeccionaron tanto el "hardware" como el "software", aparecieron los lectores de tarjeta, impresoras de línea y cintas magnéticas. Se diseñaron programas ensambladores, cargadores y enlazadores para facilitar la tarea de programación.


Más tarde aparecieron compiladores para los lenguajes FORTRAN y COBOL, haciendo más sencillo el manejo del ordenador por parte del usuario, pero más compleja su forma de operar. Por ejemplo para trabajar con un programa en FORTRAN, el programador había de cargar primero en la máquina el compilador FORTRAN, que estaba normalmente en una cinta magnética que se tenía que montar en un lector de cinta. El programa se leía a partir de tarjetas perforadas. A continuación de la compilación se generaba una salida en ensamblador que para ensamblarse requería la carga desde otra cinta del lenguaje ensamblador. A su vez el código generado era frecuente que se tuviera que enlazar con otro existente en librerías. Finalmente el programa en binario, quedaba listo para su ejecución y podía cargarse en memoria y si fuera necesario proceder a su depuración.


Como se ha indicado, la ejecución de un programa podía implicar previamente un tiempo de preparación considerable. Además si se producía un error en cualquier paso lo más probable era que habría que comenzar desde el principio.


MONITOR SIMPLE


Durante el tiempo de montaje de las cintas o mientras se operaba en la consola, la CPU del ordenador permanecía inactiva. Además los ordenadores eran muy caros, como ejemplo si se considera un IBM 7094, que costaba dos millones de dólares y su esperanza de vida era de cinco años, el coste del inmovilizadoxxx-large era de 45.66 dólares por hora, trabajando 24 horas al día y 365 días al año. Además se han de considerar los costes de funcionamiento por energía, refrigeración, papel, programadores, etc. Todo ello en una época en la que el salario mínimo era de un dólar por hora. Está claro que el tiempo de ordenador era muy valioso, y los propietarios deseaban sacarle el máximo rendimiento. Para rentabilizar su inversión debían maximizar la cuota de uso.


La solución fue doble, en primer lugar se contrataron operadores de ordenador profesionales, el programador entonces ya no tenía que tocar la máquina. Tan pronto como se terminaba un trabajo el operador ponía en marcha el siguiente y se eliminaban los tiempos de inactividad basándose en el sistema de reservas. Además al tener los operadores más experiencia en los procesos implicados, como por ejemplo el montaje de cintas, los tiempos se redujeron. Por supuesto que los operadores no podían depurar los problemas que surgieran en los programas, por lo que en caso necesario se volcaban a un sistema de almacenamiento y se entregaban al programador. El segundo ahorro de tiempo fue debido a la reducción del tiempo de preparación. Los trabajos con necesidades similares se incluyeron en lotes y se ejecutaban en le ordenador como un grupo. Por ejemplo si se recibían programas en diversos lenguajes como FORTRAN y COBOL, no se ejecutaban en el orden de recepción, sino que se procesaban primeramente todos los de un lenguaje y a continuación todos los del otro, con el consiguiente ahorro al cargar una sola vez cada compilador.


Pero aún había problemas, por ejemplo si un trabajo se detenía, los operadores tenían que darse cuenta observando la consola, determinar por qué se había detenido la ejecución y obrar en consecuencia según el problema planteado. Durante este proceso la CPU volvía a estar inactiva. Para solventar esta inactividad se introdujo el secuenciamiento automático de trabajos y con él se crearon los primeros y rudimentarios sistemas operativos. Fueron los programas residentes denominados monitores residentes, que secuenciaban automáticamente todos los programas que se ejecutaban en el ordenador. Para facilitar la secuenciación sin necesidad de la intervención de un operador se introdujeron las tarjetas de control, cuya idea es muy simple, además del programa o datos de un trabajo, se incluyen tarjetas especiales que son directivas para el monitor residente, indicándole qué programa tiene que ejecutar. Por ejemplo para indicar que un programa está en FORTRAN, se acostumbraba a poner una tarjeta de control con el texto $FTN, y para terminxxx-largear un trabajo se pondría otra con $END. Los sistemas así configurados son conocidos como batch o procesos por lotes.


PRESTACIONES


Los ordenadores, en especial los grandes, han sido máquinas muy caras, por lo que es lógico obtener las máximas prestaciones posibles. Los procesos por lotes mejoraron las prestaciones, sin embargo aunque el trabajo realizado por los operadores se redujo, había una parte del proceso que era muy lenta en comparación con la velocidad de la CPU, este problema era originado por los sistemas de entradas y salidas, siendo el caso más representativo el acceso a las cintas magnéticas, pues al ser dispositivos mecánicos la velocidad es muy baja comparada con los procesos electrónicos. Por ejemplo al trabajar para la ejecución de un programa, que como es lógico se cargaba desde cinta, se tenía la CPU inactiva el 93% del tiempo que duraba todo el proceso.


OPERACIONES "OFF-LINE"


Con el tiempo se crearon dispositivos de entrada/salida más rápidos, pero las velocidades de las CPU's crecieron aún a un ritmo mayor, por lo que el problema aumentó.


Una solución fue la de reemplazar las lentas lectoras de tarjetas e impresoras de líneas, por unidades de cinta magnética. La mayoría de los sistemas de los años 1950 y 1960 trabajaban por lotes, que leían de tarjetas y escribían en impresoras. Sin embargo en lugar de hacer que la CPU leyera directamente tarjetas, estas se copiaban previamente en una cinta magnética, y cuando estaba llena se llevaba al ordenador. Si un programa necesitaba una entrada de una tarjeta, se leía de la cinta, análogamente las salidas se llevaban a cintas y se imprimían posteriormente.


Se desarrollaron dispositivos especializados con salida o entrada directa a cinta magnética. Incluso se llegaron a crear pequeños ordenadores para realizar dichas funciones, que eran satélites del equipo principal.


Otra solución a la lentitud de los procesos de entrada/salida fue el denominado "buffering". Este sistema trata de mantener continuamente ocupados tanto a la CPU como a los dispositivos de E/S. La idea es muy sencilla, una vez que se han leído los datos y que la CPU va a operar con ellos, el dispositivo de entrada ejecuta inmediatamente la siguiente lectura. La CPU y el dispositivo de entrada permanece ocupado. Con suerte, cuando la CPU esté libre para el siguiente grupo de datos, el dispositivo de entrada habrá acabado de leerlos. La CPU podrá iniciar el proceso de los últimos datos leídos, mientras que el dispositivo de entrada iniciará la lectura de los datos que siguen. Para la salida se puede realizar un proceso análogo. (La palabra buffer, en castellano se puede traducir como tampón).


Al introducirse como sistemas de almacenamiento los basados en disco, el sistema off-line se fue eliminando progresivamente, y se introdujo el sistema conocido como "spooling" (Simultaneous Operation On-Line), que consiste en usar el disco como tampón, cuya principal ventaja es que solapa la entrada/salida de un proceso con la computación de otros.


MULTIPROGRAMACIÓN


El aspecto más importante de la planificación de trabajo es la capacidad de multiprogramación. Las operaciones descritas previamente para procesos de E/S tienen sus limitaciones, un usuario, no puede en general mantener la CPU o los dispositivos de E/S ocupados todo el tiempo. La multiprogramación es un método para incrementar el empleo de CPU, disponiendo en todo momento de algo que la CPU pueda ejecutar. La idea ea la siguiente, el sistema operativo toma uno de los trabajos de un grupo de ellos y empieza a ejecutarlo, eventualmente el trabajo tendrá que esperar por algún motivo, como por ejemplo para montar una cinta, en un sistema sin multiprogramación la CPU quedaría inactiva


Esta idea es bastante frecuente en otras situaciones, un abogado no tiene un solo cliente en un cierto momento, por el contrario, varios clientes pueden estar en situación de recibir atención al mismo tiempo. Mientras un caso espera para ir a juicio, el abogado puede trabajar en otro caso. Con un número suficiente de clientes un abogado nunca estará ocioso (Los abogados ociosos tienden a convertirse en políticos del PP, por lo que hay interés social en mantenerlos ocupados). 


Los sistemas operativos multiprogramados son bastante sofisticados. Tener varios trabajos dispuestos para su ejecución, supone mantenerlos simultáneamente en memoria, y tener varios programas en memoria al mismo tiempo requiere una gestión de la memoria. Además, si hay varios trabajos dispuestos para ejecución, hay que tomar alguna decisión para elegir entre ellos, mediante una planificación adecuada de la CPU. La multiprogramación es el tema central de los sistemas operativos modernos.


Los aspectos fundamentales a considerar son:
Gestión de la memoria
La memoria total del ordenador se ha de compartir de forma adecuada entre todos los programas y datos que en cierto momento tenga cada usuario del equipo.

Planificación de la CPU

Entre todas las tareas demandadas por los usuarios es posible establecer preferencias, lo cual implica que la CPU se planifique dando más tiempo a algunos trabajos o a los usuarios en función de unos niveles de privilegios establecidos.

Control de concurrencia.

El sistema operativo ha de gestionar adecuadamente todos los recursos del ordenador y ordenar la concurrencia de demandas de una forma adecuada. Por ejemplo si varios usuarios solicitan al mismo tiempo el acceso a un disco, se habrá de gestionar de forma correcta esta concurrencia para evitar bloqueos o situaciones impredecibles.

Protección

En un sistema donde acceden muchos usuarios es lógico que exista un sistema de protección que permita asegurar que a los trabajos de uno no pueden acceder los otros usuarios, ya sea por motivos de seguridad (por ejemplo para evitar pérdidas de información) o de confidencialidad.

Abrazo mortal

Es un problema que no se plantea solamente en un entorno de sistemas operativos, sino que puede aparecer en la vida real. Por ejemplo si dos personas han de cruzar un río, saltando entre piedras puestas en él, y con la condición de apoyar un solo pie, se llega al abrazo mortal cuando dos personas empiezan a cruzar desde orillas opuestas y se encuentran en el medio, llega este momento cuando los dos intentan pisar la misma piedra. En general esta situación se produce cuando un sistema consta de un número finito de recursos para distribuir entre un número dado de procesos en competencia.
TIEMPO COMPARTIDO

Cuando se desarrollaron los sistemas por lotes estos se definían por la agrupación de trabajos similares, que sólo permitían el acceso secuencial a la información. Al disponerse de discos, se hizo posible el acceso inmediato a todas las aplicaciones.


Un sistema por lotes tiene algunos inconvenientes, para el usuario, el principal es que los usuarios no pueden interactuar con sus trabajos mientras se están ejecutando, lo cual crea problemas caso de necesitar depurar un programa. Como consecuencia posteriormente a estos sistemas aparecieron los conocidos como interactivos o "hands-on", en los que el usuario da y recibe las instrucciones de forma inmediata. En consecuencia se puede experimentar fácilmente con cualquier programa. 


Un sistema operativo de tiempo compartido utiliza la planificación de la CPU y la multiprogramación para dotar a cada usuario de una pequeña parte del ordenador compartido. Un sistema operativo en tiempo compartido permite que muchos usuarios compartan el ordenador. Como cada acción o comando suele ser breve, basta con un tiempo de CPU corto para cada usuario. Dado que el sistema cambia rápidamente entre usuarios, estos tienen la impresión de que cada uno de ellos dispone de su propio ordenador, cuando realmente un solo ordenador es compartido entre muchos usuarios. Esta idea fue expuesta en 1960, pero al ser difíciles de construir estos sistemas, no se difundieron hasta principios de los 70.


TIEMPO REAL


Otro tipo de sistemas son los conocidos como en tiempo real, que se utilizan frecuentemente como dispositivos de control en aplicaciones especializadas. Por ejemplo unos sensores proporcionan datos al ordenador, que los analiza y en consecuencia ajusta unos controles para modificar las entradas al sensor. Ejemplos de este tipo son en aplicaciones científicas, médicas e industriales.


Un caso típico de equipo que funciona bajo tiempo real, es un "controlador miniatura", que consiste en un pequeño ordenador, diseñado en una placa de circuito impreso, que se embebe en una máquina o cualquier otro dispositivo, con finalidad de control. Estos dispositivos se usan en maquinaria de fabricación, comprobación de equipamientos, telecomunicaciones, sistemas de control y seguridad, ventilación y aire acondicionado, monitorización del medio ambiente e investigación científica. Algunos ejemplos reales se citan seguidamente:
  • Hornos
  • Control de señales de tráfico
  • Control de satélites
  • Equipos musicales
  • Verificación de componentes de automoción
  • Control de riego agrícola
Comparado con un PC, un ordenador de este tipo es menor, gasta menos energía y disipa menos calor. La propiedad más importante es que pueden trabajar en ambientes hostiles.

El sistema operativo es parte fundamental de cualquier ordenador. A grandes rasgos un sistema informático se puede dividir en:

  • Hardware
  • Sistema operativo o de explotación
  • Programas de aplicación
  • Usuarios

El hardware facilita los recursos básicos de computación, mientras que los programas de aplicación definen cómo hay que utilizar estos recursos para resolver los problemas de los usuarios. Puede haber muchos usuarios diferentes tratando de resolver problemas distintos. Consecuentemente es habitual la existencia de distintos programas de aplicación. El sistema operativo controla y coordina el uso del hardware por parte de los distintos programas de aplicación de los diversos usuarios.









Un sistema operativo es similar a un gobierno. Los recursos básicos de un sistema informáticos son el hardware, el software y los datos. El sistema operativo facilita los medios para el uso adecuado de estos recursos durante la operación del sistema informático, al igual que un gobierno, el sistema operativo no realiza por sí mismo una función útil, simplemente crea el entorno en el que otros programas puedan hacer un trabajo..

También se puede considerar un sistema operativo como un asignador de recursos. Un sistema informático tiene muchos recursos susceptibles de ser requeridos para resolver problemas. El sistema operativo actúa como gestor asignando los recursos a programas y usuarios específicos, según las necesidades, para que realicen sus tareas.


Otra concepción ligeramente diferente de un sistema operativo se basa en la necesidad de controlar distintos dispositivos de entrada/salida y los programas de usuario. Un sistema operativo es un programa de control.


En general no existe una definición completamente adecuada de un sistema operativo. Existen por que son una vía razonable para resolver el problema de crear un sistema informático manejable. En general es más fácil definir los sistemas operativos por lo que hacen mas que por lo que son.

Los sistemas operativos se pueden clasificar en cuatro grupos:

Por lotes (batch)
Son los primitivos, de la época en que se manejaban tarjetas perforadas.

Interactivos monousuarios
Permiten que el que esté usando el equipo pueda interaccionar en cualquier momento con el proceso que esté ejecutando. Sólo permiten que trabaje un usuario en un momento dado.

Tiempo compartido
Permiten el acceso al ordenador de un número variable de usuarios de forma concurrente, y dada la gran velocidad del ordenador, es como si estuviera trabajando simultáneamente para todos ellos.

Tiempo real
Se utilizan ampliamente en aplicaciones industriales y de control. El sistema responde de forma inmediata a entradas del exterior.

7.3 Sistemas operativos habituales

En el inicio de la informática cada fabricante tenía sus propios sistemas operativos que no eran compatibles con los de otros, incluso dentro de un mismo fabricante podían coexistir varios, caso típico de IBM. Estos se conocen como sistemas propietarios.

La tendencia actual es hacia los llamados sistemas abiertos, lo cual indica que estos sistemas operativos trabajan sobre una gran variedad de máquinas con independencia del fabricante del equipo. La gran ventaja es el ahorro a todos los niveles, pues por ejemplo una empresa con ordenadores de distintos fabricantes puede tener totalmente uniformado todo su software.
A continuación se comentan los sistemas operativos más difundidos.
MS-DOS
Fue un sistema operativo adaptado por Microsoft para IBM (PC-DOS), y en concreto para el modelo PC, aunque se popularizó rápidamente siendo el más usado a nivel personal. Fue desarrollado en el año 1979 por Tim Paterson que trabajaba en Seatle Computer Products, y adquirido por Microsoft Corporation.
El espíritu del MS-DOS fue el de proporcionar una base flexible para el software de un microordenador. Tiene un núcleo con un conjunto de comandos residentes y una capa con comandos transitorios que se cargan en memoria cuando se necesita su ejecución para a continuación abandonarla.
Dado que el entorno es poco amigable se crearon añadidos que proporcionan un ambiente de trabajo más fácil, el que ha tenido más éxito es WINDOWS (no estrictamente por razones de calidad), que ofrece un entorno gráfico de ventanas y sencillez de manejo mediante un ratón.
La principal desventaja de MS-DOS es que es monousuario y monotarea, es decir que sólo puede trabajar un usuario (no admite terminales) y que a su vez este sólo puede ejecutar un programa al mismo tiempo, aunque este último problema se resuelve con el entorno Windows. Actualmente ha quedado obsoleto, aunque se comercializa en algunos países de Asia, pues a partir del Windows XP ya son en sí sistemas operativos completos (aunque siguen siendo muy malos) y no necesitan para funcionar el MS-DOS.
UNIX
Fue diseñado en los laboratorios Bell de la empresa AT&T, para su empleo en ordenadores marca Digital. Dadas sus características pronto se difundió ampliamente en ambientes universitarios, por lo que hasta hace poco tiempo se ha considerado como un sistema operativo orientado hacia ambientes de investigación y no en aplicaciones de gestión. Actualmente está muy difundido en todo tipo de equipos aunque se ha perdido la estandarización habiendo muchas versiones diferentes poco compatibles entre si. Otra versión es el Solaris de la empresa SUN.
Una ventaja sobre otros sistemas operativos es que este sistema es multiusuario, por lo que un equipo admite gran cantidad de terminales trabajando simultáneamente, además de la robustez y seguridad.
LINUX
Linux es básicamente un sistema operativo compatible con UNIX, que opera principalmente bajo equipos compatibles con el estándar del mercado y servidores. Su ventaja principal es que su costo es prácticamente nulo, .
El núcleo fue escrito por Linus Torvalds (1969-), como un sistema operativo abierto y estandar, siendo desarrollado posteriormente por muchos programadores, de forma independiente. El código fuente, gestores de dispositivos y utilidades están disponibles gratuitamente.
Actualmente supone una gran competencia para Windows, más que para UNIX, de hecho en el futuro puede desbancarlo, no sólo por ser gratis y disponer de los fuentes, sino por superioridad y más seguridad.
Actualmente diversas administraciones públicas, como por ejemplo la junta de Andalucía y la de Extremadura, en España, y otras a nivel mundial lo están considerando como estándar, lo cual implicará una amplia utilización en el futuro.
Un grupo de profesores de la Universidad de Murcia, está desarrollando una versión para la enseñanza, denominada CALDUM.
Como ejemplo de la gran difusión del Linux, se tiene el caso de IBM que junto con Citizen crearon un reloj con este sistema operativo y masa inferior a 250 gramos. Comercialmente se conoce como WatchPad, e incluye tecnología de voz y conectividad por infrarrojos. Para interactuar con él es mediante una pantalla táctil de cristal líquido QVGA. También se ha incoprporado a los teléfonos móviles.
A partir del desarrollo inicial de Torvalds se han difundido distintas distribuciones, la que sigue siendo auténticamente libre es Debian, que ha dado lugar al tan conocido Ubuntu. Otras han acabado siendo distribuidas por empresas, aunque sigue siendo libre y descargable gratuitamente de sus páginas web, las ma? conocidas son: RedHat, SuseLinux y Mandriva. Por lo que respecta a usos en la industria, se ha creado "Open Source Automation Development Lab (OSADL)", cuya finalidad es el uso de Linux en los procesos de automatización.

La magnetorresistencia gigante

Magnetorresistencia
 
La magnetorresistencia gigante (en inglés, Giant Magnetoresistance Effect o GMR) es un efecto mecánico cuántico que se observa en estructuras de película delgada compuestas de capas alternadas ferromagnéticas y no magnéticas. Se manifiesta en forma de una bajada significativa de la resistencia eléctrica observada bajo la aplicación de un campo magnético externo: cuando el campo es nulo, las dos capas ferromagnéticas adyacentes tienen una magnetización antiparalela puesto que están sometidas a un acoplamiento ferromagnético débil entre las capas. Bajo efecto de un campo magnético externo, las magnetizaciones respectivas de las dos capas se alinean y la resistencia de la multicapa cae de manera súbita. Los spines de los electrones de la sustancia no magnética se alinean en igual número de manera paralela y antiparalela al campo magnético aplicado, y por tanto sufren un cambio de difusión magnética en una menor medida respecto a las capas ferromagnéticas que se magnetizan de forma paralela.

hardware redes de ordenadores

Una red de computadoras, también llamada red de ordenadores o red informática, es un conjunto de equipos conectados por medio de cables, señales, ondas o cualquier otro método de transporte de datos, que compartan información (archivos), recursos (CD-ROM, impresoras, etc.), servicios (acceso a internet, e-mail, chat, juegos), etc.
Una red de comunicaciones es, también, un conjunto de medios técnicos que permiten la comunicación a distancia entre equipos autónomos (no jerárquica -master/slave-). Normalmente se trata de transmitir datos, audio y vídeo por ondas electromagnéticas a través de diversos medios (aire, vacío, cable de cobre, cable de fibra óptica, etc.).
Para simplificar la comunicación entre programas (aplicaciones) de distintos equipos, se definió el Modelo OSI (Open System Interconnection) por la ISO, el cual especifica 7 distintas capas de abtracción. Con ello, cada capa desarrolla una función específica con un alcance definido.