martes, 19 de mayo de 2015

Sistemas

Herramientas de medición

* 3 herramientas Open Source Benchmark para medir el rendimiento de nuestro sistema
El Benchmark es una técnica usada para medir el rendimiento de un sistema o un componente y que nos dara una medida de la potencia del mismo. En Linux podemos usar para realizar estas medidas aplicaciones como Hard Info, GtkPerf o Phoronix Test Suite

Indicadores de desempeño

Los indicadores del rendimiento de un computador son una serie de parámetros que conforma una modelo simplificado de la medida del rendimiento de un sistema y son utilizados por los arquitectos de sistemas, los programadores y los constructores de compiladores, para la optimización del código y obtención de una ejecución más eficiente. Dentro de este modelo, estos son los indicadores de rendimiento más utilizados:
Turnaround Time El tiempo de respuesta. Desde la entrada hasta la salida, por lo que incluye accesos a disco y memoria, compilación, sobrecargas y tiempos de CPU. Es la medida más simple del rendimiento. En sistemas multiprogramados no nos vale la medida del rendimiento anterior, ya que la máquina comparte el
tiempo, se produce solapamiento E/S del programa con tiempo de CPU de otros programas. Necesitamos otra medida como es el TIEMPO CPU USUARIO.
Tiempo de cada ciclo ( ) El tiempo empleado por cada ciclo. Es la constante de reloj del procesador. Medida en nanosegundos.
Frecuencia de reloj (f) Es la inversa del tiempo de ciclo. f = 1/ . Medida en Megahertz.
Total de Instrucciones (Ic) Es el número de instrucciones objeto a ejecutar en un programa.
Ciclos por instrucción (CPI) Es el número de ciclos que requiere cada instrucción. Normalmente, CPI = CPI medio.

Roadmap

Un RoadMap (que podría traducirse como hoja de ruta) es una planificación del desarrollo de un software con los objetivos a corto y largo plazo, y posiblemente incluyendo unos plazos aproximados de consecución de cada uno de estos objetivos. Se suele organizar en hitos o "milestones", que son fechas en las que supuestamente estará finalizado un paquete de nuevas funcionalidades. Para los desarrolladores de software, se convierte en una muy buena práctica generar un Roadmap, ya que de esta forma documentan el estado actual y posible futuro de su software, dando una visión general o específica de hacia adónde apunta a llegar el software. La expresión Roadmap se utiliza para dar a conocer el "trazado del camino" por medio del cual vamos a llegar del estado actual al estado futuro. Es decir, la secuencia de actividades o camino de evolución que nos llevará al estado futuro.

martes, 24 de marzo de 2015

Componentes de un sistema operativo

  • El sistema operativo y los procesos
    • Todos los SO de multiprogramación están construidos entorno al concepto de proceso
    • Los requerimientos principales que debe cumplir un SO para con los procesos son los siguientes:

    • 1._ El SO debe intercalar la ejecución de procesos para optimizar la utilización de l procesador ofreciendo alavés un tiempo de respuesta razonable
    • 1._ El SO debe asignar los recursos del sistema a los procesos en conformidad con una política especifica que evite situaciones de ínter bloqueo
    • 1._ El SO podría tener que dar soporte ala comunicación entre procesos y ofrecer mecanismos para su creación

  •  Creación y terminación de procesos
    • El sistema de operación debe crear un mecanismo para la creación y terminación de procesos.
    • 1._ Creación de procesos
    • Cuando un nuevo proceso se agrega el sistema de operación construye las estructuras de datos que son usadas para administrar los procesos y le asigna espacio de direcciones. Estas acciones constituyen la creación de un nuevo proceso.

  • Los eventos comunes para la creación de procesos

    • - En un ambiente batch , un proceso es creado en respuesta al sometimiento a ejecución de un trabajo.
    • - En un ambiente interactivo, un proceso es creado cuando un nuevo usuario entra al sistema.
    • - El sistema de operación puede crear un proceso para que realice una función en respuesta a una petición de un programa usuario, sin que el usuario tenga que esperar.
    • - Creación de procesos hijos por parte de procesos usuarios ya existentes el proceso que crea se llama proceso padre.

  •        2._ Terminación de procesos
    • Un proceso termina cuando ejecuta su última instrucción y pide al sistema operativo que lo elimine. En este momento, el proceso puede devolver un valor de estado a su proceso padre.
    • El sistema operativo libera la asignación de todos los recursos del proceso, incluyendo las memorias física y virtual, los archivos abiertos y los búferes de ES.


    • La terminación puede producirse también en otras circunstancias.
    • Un proceso puede causar la terminación de otro proceso a través de la adecuada llamada al sistema.
    • Dicha llamada al sistema al sistema sólo puede ser invocada por el padre del proceso que va a terminar.
    • En caso contrario, los usuarios podrían terminar arbitrariamente los trabajos de otros usuarios.

    • Adicionalmente, un número de error  o una condición de fallo puede llevar a la finalización de un proceso. Las condiciones mas habituales son las siguientes:
    • Finalización normal .
    • Limite de tiempo excedido.
    • Memoria no disponible.
    • Violaciones de frontera .
    • Error de protección .

    • Limite de tiempo.
    • Fallo de E/S.
    • Instrucción no válida.
    • Instrucción privilegiada.
    • Uso inapropiado de datos.
    • Intervención del operador por el sistema operativo.
    • Terminación del proceso padre.
    • Solicitud del proceso padre.

  •  ESTADOS DE UN PROSESO 

  • El SO gestiona los recursos disponibles (memoria, CPU, etc.) entre los procesos que en ese momento trabajan en el sistema, de tal forma que, para ellos, el sistema se comporte como si fuera monousuario. Así que, en un sistema monoprocesador, la CPU se reparte entre los procesos que se tengan en ese momento.

  • ESTADOS DE UN PROSESO

    • El SO gestiona los recursos disponibles (memoria, CPU, etc.) entre los procesos que en ese momento trabajan en el sistema, de tal forma que, para ellos, el sistema se comporte como si fuera monousuario. Así que, en un sistema monoprocesador, la CPU se reparte entre los procesos que se tengan en ese momento.

    •  Modelo de dos estados
    • Se trata de la utilización de dos archivos, un objeto ejecutable y una biblioteca del sistema, que después se colocan en la imagen del proceso dentro de la memoria RAM y posteriormente también se dan de alta dentro de la tabla de procesos, bloqueo de control del proceso.

    • En ese modelo, un proceso puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en estado de No ejecución. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución. Es necesario q el SO pueda seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en memoria, y procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar.

  • Modelo de cinco estados

    • El modelo anterior de 2 estados funcionaría bien con una cola FIFO y planificación por
    • turno rotatorio para los procesos que no están en ejecución, si los procesos estuvieran siempre listos para ejecutar, se deba esperar algún suceso antes de continuar. Es por esto que se necesita un estado donde los procesos permanezcan esperando la realización de la operación de Entrada Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Espera . Se agregan además un estado Nuevo y otro Terminado .

  •  Los cinco estados de este diagrama

    • Nuevo : El proceso recién fue creado y todavía no fue admitido por el SO . En general los procesos que se encuentran en este estado
    • Todavía no fueron cargados en la memoria principal.
    • Listo: el proceso está listo para ser ejecutado, sólo está esperando que el planificador de corto plazo así lo disponga.
    • Ejecución: Se encuentra el proceso que tiene el control del procesador. Dado que en un instante determinado solo un proceso puede encontrarse en este estado.
    • Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso, como la finalización de una operación de E/S solicitada por una llamada al SO .
    • Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea porque terminó o por algún fallo, como un error de protección, aritmético, etc.

  •  ESTADOS DE UN PROCESO DE SISTEMAS

    • Preparado (R).- Proceso que está listo para ejecutarse
    • Ejecutando (O).- Sólo uno de los procesos preparados se está ejecutando en cada momento
    • Suspendido (S).- Se esta suspendido si no entra en el reparto de CPU, el proceso pasa a formar parte del conjunto de procesos preparados .
    • PARADO (T).- Será cuando pasarán a estar preparados cuando reciban una señal determinada que les permita continuar.
    • Zombie (Z).- Todo proceso al finalizar avisa a su proceso padre . En vaso de que el padre no lo reciba, el proceso hijo queda en estado zombie , no está consumiendo CPU, pero sí continua consumiendo recursos del sistema .

martes, 17 de marzo de 2015

Software Propietario

Software propietario

Este dice a aquel conjunto de aplicaciones o programas,  en el  cual tiene un registro o tiene restricciones, tiene protección  bajo los derechos del uso del software, el de redistribución o modificación de un software o aplicaciones, siendo entonces mantenidos bajo una reserva o por claves  por parte de quienes lo han creado, publicado o publicitado, o bien sobre quienes mantienen y hacen uso de dichos derechos de poder usar o modificar este tipo de software. Con esto no se dice de que el software propietario no es más bien de que sea solo dueño o propietario en si aquel quien lo distribuye o lo haya creado, si no propietario aquel el cual hace uso de dicho software y tiene derechos de propiedad de hacer con el software o sistemas sobre el mismo.







Características del software propietario

Una de las características es:

-Falta de soporte en el uso de dicho programa o aplicaciones

-Falta de garantías de uso

-Dependen de un propietario en si o de un proveedor

-No se puede distribuir sin la autorización del proveedor





Características de instalación para servidores

En este caso el sistema operativo será Windows Server

1.- Escoger configuraciones como idioma, país, moneda.

2.- Introducir la clave de licencia  y elegir que edición de Windows Server 2008      instalar.

3.- Si estamos instalando el Windows Server 2008 sobre otro
sistema operativo, entonces tendremos las dos opciones
 habilitadas (Updgrade o Custom).Si no es así solo tendremos habilitado la opción de Custom.

4.-Instalar el sistema.

5.- Reiniciar  el ordenador.

Cuando estamos identificados se nos abre el componente Initial Configuration
Tasks, una de las mejoras que lleva el Windows Server 2008.
En esta ventana podemos configurar todos aquellos aspectos que nos quedan pendientes como: networking, computer name and domain, updating, y más.

En Windows 2008, la contraseña debe tener por los menos siete caracteres, no incluir
parte o nombre del propio usuario y contener tres clases de caracteres (entre
mayúsculas, minúsculas, números y símbolos).



martes, 17 de febrero de 2015

Evolución e Historia de los Sistemas Operativos



Evolución e Historia de los Sistemas Operativos






1969: Tres programadores de los laboratorios Bell (Ken Thompson, Dennis Ritchie y Douglas MCIlroy) crean el sistema operativo UNIX, aún en tiempos de terminal y sin entornos graficos existentes. 




1973: Xerox crea lo que podemos llamar la “primera computadora personal mas o menos decente”, la Xerox Alto con su sistema operativo propio. 



1974: Empieza la creación de BSD 1.0, que es rápidamente sucedida por BSD 2.0 en 1978. 




1979: Tim Paterson crea su sistema operativo 86-DOS, que posteriormente pasó a llamarse QDOS (Quick and Dirty Operative System). Dos años después Bill Gates compra QDOS por una suma entre 25 y 50 mil dólares y rebautiza dos veces, en primer lugar como PC-DOS, el cual vende como sistema operativo a IBM para que estos lo usen en sus PCs (IBM-PC), y en segundo lugar (un año más tarde) como MS-DOS, el cual, siendo una copia casi identica a PC-DOS, vende como sistema propio (el sistema operativo sólo, en disketes). 




1983: Apple muestra su primera gran obra, la Apple Lisa System 1. 




1984: Mac OS System de la mano de Apple. 




1985: Microsoft Windows 1.0 ve la luz, aunque tras un grave fracaso debido a los errores que tenía, se ve rápidamente sucedido por Windows 1.01. 




1987: Andrew S. Tanenbaum crea MINIX, un sistema operativo basado en Unix y escrito en lenguaje C, cuyo principal objetivo era el aprendizaje informático (aprender como funciona un sistema operativo por dentro). Este sistema inspiró a Linus Torvalds para la creación del Núcleo Linux. Imágen de MINIX3. 




1987: Windows 2.0 aparece. 




1989: NeXTSTEP / OPENSTEP 




1990: BeOS de la mano de Be Incorporated. Imágen moderna. 




1990: Windows 3.0. Cuya famosa actualización gratuita a 3.11 (para Windows 3.1) salió 2 años después.




1990: Richard Stallman crea el sistema GNU de software libre y el Núcleo Hurd, el cual no parece ser tan bueno para el sistema GNU como lo que Linus Torvalds crearía un año después, el Núcleo Linux. En 1992, el sistema GNU y el Núcleo Linux se unen formalmente para crear GNU/Linux, un sistema con docenas de distribuciones (“versiones” que son creadas en paralelo por diversos grupos independientes de programadores) 




1997: Mac OS System 8





1998: Windows 98




1998: GNU/Linux sigue avanzando y una de sus más famosas distribuciones, Mandrake Linux, saca su primera versión (5.1). 




2001: Mac OS X





2001: Windows XP




2006: Amiga Workbench 4.0 




2006: Ubuntu, la más famosa distribución de GNU/Linux de la actualidad, nace (en varios idiomas).




2006: Empiezan a aparecer los sistemas operativos en la Nube (Internet), como es el caso de EyeOS



2007: Windows Vista.





2009: Windows 7 aparece





2011: Ubuntu saca su versión 11.04, cambiando de interfáz Gnome a Unity.






2011: Google saca una beta de su sistema operativo ChromeOS, otro más que se aloja en la nube. 






2012: Firefox OS




2012: Lanzamiento de Windows 8










Historia de los S.O.









Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando estos con el tiempo.

Existen diferentes enfoques o versiones de cómo han ido evolucionando los Sistemas Operativos     La primera de estas versiones podría ser esta: 
En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el lenguaje máquina que trabajaba por tarjetas perforadas. 
    Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje maquina (bits) o a través de interruptores.


Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos.


En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo.


En los 80's, inicio el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales.




Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador.


Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añada o elimine de las redes a través de procesos de registro y localizadores.


La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la Organización Internacional de normas, fundación de software abierto, todo estará más controlado por los protocolos de comunicación OSI y por la red de servicios digital ISDN.
 Se ha desarrollado otra versión, la cual se ha hecho en base a etapas o generaciones: 




1a. Etapa (1945-1955): Bulbos y conexiones. 





Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), así como Conrad Zuse (Alemania), entre otros lograron construir máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas que la computadora casera más económica en nuestros días.
Toda la programación se llevaba a cabo en lenguaje de maquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. Los lenguajes de programación eran desconocidos (incluso el lenguaje ensamblador). No se oía de los Sistemas Operativos el modo usual de operación consistía en que el programador reservaba cierto periodo en una hoja de reservación pegada a la pared, iba al cuarto de la máquina, insertaba su conexión a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o más bulbos se quemara durante la ejecución. La inmensa mayoría de los problemas eran cálculos numéricos directos, por ejemplo, el cálculo de valores para tablas de senos y cosenos. 
A principio de la década de los 50's la rutina mejoro un poco con la introducción de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo demás el proceso era el mismo. 





2a. Etapa. (1955-1965): Transistores y Sistemas de Procesamiento por lotes.







La introducción del transistor a mediados de los años 50's modifico en forma radical el panorama. Las computadoras se volvieron confiables de forma que podían fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. 
Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demás rápidas vías para reducir el tiempo invertido. La solución que, por lo general se adoptó, fue la del sistema de procesamiento por lotes. 




3ra Etapa (1965-1980): Circuitos integrados y multiprogramación.

    





La 360 de IBM fue la primera línea principal de computadoras que utilizo los circuitos integrados, lo que proporciono una gran ventaja en el precio y desempeño con respecto a las máquinas de la segunda generación, construidas a partir de transistores individuales. Se trabajó con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el sistema operativo de la línea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayoría de sus clientes. También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la segunda generación, de las cuales la más importante era la de multiprogramación.


Otra característica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cómputo. Así, siempre que concluyera un trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la partición que quedara desocupada y ejecutarlo.






4a Etapa(1980-Actualidad): Computadoras personales

Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. 
En los sistemas operativos de red, los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una maquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario. 
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando está compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema operativo.