* 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.
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.
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 .
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
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.
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.