BLOG 18: (Paginación)

  • El espacio de direcciones lógicas de un proceso no necesariamente es contiguo; los procesos se ubican en memoria física donde luego quedan disponibles.
  • Se divide la memoria física en bloques de tamñano fijo llamados marcos (los tamaños con potencias de 2 entre 512 bytes y 8192 bytes).
  • Se divide la memoria lógica en bloques del mismo tamaño llamados páginas
  • Se mantiene el rastro de todos los marcos.
  • Para correr un programa de tamaño n paginas, se requiere encontrar n marcos libres y cargar el programa.
  • Se debe poner a punto una tabla para traducir las direcciones fisicas a las logicas.
  • Se puede presentar fragmentacion interna.

El tamaño de las paginas no pueden ser muy grandes porque se pierde mucho espacio. La perdida seria del numero de paginas menos uno.

Tabla de páginas: tabla de equivalencias para pasar de memoria virtual a física. dice cuales paginas esta en memoria virtual y cuales en real. ésta tabla existe por cada proceso. y esta se aloja en la memoria real, es ubicada gracias al puntero a tabla de paginas que tiene un registro en el procesador

El  espacio virtual se divide en paginas, algunas paginas estan en memoria principal:

– El so se encarga de que esten en memoria principal las paginas necesarias.

-Para ello trata los fallos de página traducidos por la MMU.

ESQUEMA DE TRADUCCION DE DIRECCIONES

* Las direciones generadas por la cpu se dividen en:

– Numero de pagina (p) – utilizado en la tabla de paginas que continen las direcciones base de cada pagina en la memoria fisica,
– El desplazamiento de pagina (d) – combinado con la direccion base definen la direccion de memoria fisica que  es enviada a la unidad de memoria.

*Traduccion: Proceso referencia (p,d), se busca en la tabla de correspondencia de paginas para ver la p’(p real), La direccion real es p’+d. por agilidad tabla de correspondencia en caché.

*Si no hay residencia de la pagina en memoria princiapal, sucede una falta de pagina. r = 0 si pagina no esta en real, 1 si esta.

EL PROCESADOR TRABAJA CON DIRECCION LOGICAS Y EL MMU CONVIERTE A FISICAS

Ejemplo de paginación:

Buffer de traduccion anticipada (TLB)

  • La tabla de paginas se mantiene en memoria principal.
  • El registro base de la tabla de paginas (PTBR) señala la tabla de paginas.
  • El registro de longitud de tabla de paginas (PRLR) indica el tamaño de la tabla de paginas
  • Toda memoria virtual puede causar dos accesos a memoria fisica

            –  Uno para buscar en la tabla de pagina apropiada
–  Uno para buscar los datos solicitados

  • Para solventar este problema, la mayoria de esqueñas de memoria virtual utillizan una cache especial de de alta velocidad para las entradas de la tabla de pagina.

            – Se le denomina buffer de traduccion anticipada [traslation lookaside buffer(TLB)], tambien llamado registros asociativos.

  • Contiene aquellas entradasd de la tabla de paaginas que han sido usadas de forma más reciente.
  • Dada una direccion virutal, el procesador primero examina la TLB
  • Si la entrada de la tabla de paginas solicitada esta presnete (acierto en TLB), entonces se recupera el numero de marco y se construye la direccion real.
  • Si la enrtrada de la tabla de paginas solicitada no se encuentra (fallo en la TLB), el procesador utiliza el numero de pagina para indexar la tabla de paginas del proceso.
  • Primero comprueba si la pagina solicitada esta todavia en la memoria principal
  •     Si no se encuentra en la memoria principal, se produce un fallo en la memoria, llamado fallo de pagina.
  • La TLB se actualiza para incluir esta nueva entrada de la tabla de paginas.

Operación de paginación y TLB
Registros asociativos/ tiempo de acceso efectivo sin intercambio. (cache)

epsilon: tiempo de busqueda asociativa

t = tiempo de ciclo de memoria, tiempo de acceso a un dato en memoria.

alfa= tasa de aciertos – porcentaje de veces que un numero de pagina se encuentra en los registros asociativos.
EAT = Tiempo de acceso efectivo
EAT= (t + epsilon)alfa + (2t + epsilon )(1-alfa)

Traduccion de direcciones (A’,A’’)

-si A’ es un registro asociativo, saque el marco #

-De otra forma obtenga el marco # de la tabla de paginas de memoria.

VENTAJA DE TABLAS MULTINIVEL

Si un proceso usa una parte pequeña de su espacio lógico: Ahorro en espacio para almacenar TPs.

b=bits
B=Bytes

Sea un procesador con una dir lógico de 32b de 2 niveles (10b/nivel). TP de 4KB, entrada a TP es 4B.

Si el proceso usa 12MB superiores y 4MB inferiores:
Tenemos,
Cada pagina N(sub2) direcciona 4MB
Tamaño tablas de página:
1 TP N(sub1) + 4 TP N(sub2) = 5*4KB = 20KB (frente a 4MB si utilizara todas las paginas).

 

 

EJEMPLO DE PAGINACION DE DOS NIVELES:

Una direccion lógica (en una máquina de 32 bit con tamaño de página de 4K) esta divida en:
– Un numero de pagina de 20bits
-Un desplazamiento de pagina de 12 bits.

Dado que la tabla de pasginas es paginada, el # de pagian adicionalmente se divide en:
-Un numero de pagina de 10 bits.
-Un desplazamiento de pagian de 10 bit.
Asi, la direccion logica es como sigue:

# de pagina # de pagina desplazamiento
P1 p2 p3
10 10 1

Donde p1, es un indice en la tabla de paginas externa, y p2 es el desplazamiento dentro de la pagina de la tabla de paginas externa. EAT=(t+Epsilon)Alfa + (3t + Epsiolon)(1-Alfa)

 

RENDIMIENTO EN PAGINACION POR DEMANDA CON INTERCAMBIO

  • tasa de fallo de pagina 0 <=p <=1.0
    • si p=0 no hay fallo de pagina.
    • si p = 1 cada referencia es un fallo de pagina.

Tiempo de aceso efectivo con intercambio = EATS = (1-p) * acceso a memoria
+p*(Sobrecarga de fallo de pagina
+[descarga]
+carga
+reinicio)

Si asumimos un valor global para el tiempo requerido en fallo de pagina(f) tendremos:

EATS=(1-p)*t+p*f
Donde,

t: el tiempo de acceso a memoria,
p: la probabilidad de fallo de pagina y
f: el tiempo de fallo de pagina.

Anuncios

BLOG 17: (Administración de Memoria)

  • Los metodos actuales tiene como base la administración de memoria que se usaban antiguamente.

Introduccion

– Los programas deben ser llevados a la memoria y convertirse en procesos para ser ejecutados

– Cola de entrada – coleccion de programas en disco que esperan para ser llevados a la memoria para ejecucion.

– La parte del sistema operativo que administra la memoria se llama administrados de memoria.

– La memoria principal es un deposito de datos a los que se puede acceder rapidamente y que son compartidos por la cpu y los dispositivos de E/S.

– Funciones: Que memoria se esta usando, quien la usa, que procesos pueden cargarse, asignacion y liberaciones de memoria.

Cuando un programa se carga en memoria principal se convierte en procesos.

Vinculacion de las instrucciones y los datos a la memoriaPueden realizarse en tres estadios

  • Tiempo de compilacion: si se conoce previamente la ubicacion de memoria, puede generarse codigo absoluto, el codigo debe ser recompilado si la direccion de inicion cambia.
  • – Tiempo de carga: Si se conocen las idrecciones en tiempo de compilacion, debe generarse codigo reubicable
  • – Tiempo de ejecucion: La vinculacion se retarda hasta el tiempo de corrida si los procesos pueden ser movidos durante su ejecucion de una posicion de memoria a otra.
Overlays (Superposiciones)– Mantiene en memoria solo aquellas instrucciones y datos que se requieren en un momento determinado.- Se utilizaba cuando el proceso era mayor que la cantidad de memoria destinada para él- Se implementaba por el usuario, no se requeria un soporte especial del sistema operativo, su programacion era compleja.
Antiguamente los programas no corrian si no tenia la memoria requerida, hoy si se puede debido a que se carga por partes.

Ejemplo:

Cobol se escribe por secciones, Overlays es una seccion.
Asignacion contigua

*
Generalmente la memoria pricipal tiene dos particiones.-Para el sistema operativo residente que puede ser colocado en memoria baja o alta de acuerdo a la ubicacion del vector de interrupciones-Los procesos delos ususarios se colocan en otra particion

Asignación de particion unica
– Se usa el esquema de registro de reubicacion para proteger a los procesos de los usuarios entre si, y para proteger el codigo y los datos del SO.
– El registro de ubicacion tiene el valor de la direccion fisica mas pequeña; el registro limite…

* Asignacion con multiples particiones

-Hueco: Bloque de memoria disponible; se establecen varios huecos(particione) de diferentes tamaños a traves de la memoria.
-Cuando un proceso llega, es asignado a un hueco lo suficientemente grande para contenerlo
-El SO mantiene informacion acerca de las particiones asignadas.

Asignación con multiples particiones fijas


Particiones configuradas por usuario, predeterminadas, se uso en OS/360/MFT (multiprogramacion con un # fijo de tareas).
Recolocacion: El enlazador debe determinar que direcciones recolocarse vs Carga absoluta x part.
Proteccion: Bloques de 2K con clave, o Registro de base y limite. FRAGMENTACION.
no se puede aplicar overlays en este esquema de administracion de memoriaSistemas de proteccion:-registro limite y base
-proteccion por clavefragmentacion interna: desperdicio de espacios de memoria.

Asignacion con particiones variables

El tamaño de la particion se establece en el momento de cargar el programa y dependiendo su tamaño

Los procesos tienen que correr en memoria contigua.

Tiene un problema de fragmentacion externa, por los huecos que quedan después de ejecución; La solución es mover el proceso, que se están ejecutando, proceso de compresión.

Condensación: Fusión de dos huecos contiguos

El esquema actual de administracion de memoria nace de los dos anteriores. Nace la paginación y la segmentación.

.::Problema de la asignación dinámica de memoria::.

Cómo satisfacer la solicitud de un tamaño n a partir de huecos libres

Estrategia de colocación:

  • -Peor ajuste: Hueco mas grande
  • -Siguiente ajuste
  • -Estrategia mas sofisticada: Sistema Buddy -Listas de huecos con tamaños potencias de 2

El primer ajuste y el mejor ajuste son mejores que el peor ajuste en terminos de velocidad y utilizacion de almacenamiento.

Almacenamiento virtual
  • Capacidad de obtener acceso a direcciones en un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario del sistema.
  • SO Atlas, Manchester 1960
  • Disociacion de las direcciones (V) a las que hace referencia un proceso en ejecución de las direcciones disponibles en el almacemamiento primario (R)
  • Las direcciones calculadas por procesos no necesariamente las disponibles en el almacenamiento primario
  • Direccion real: direccion disponible en memoria.
  • Direccion virtual: direcciones usadas por procesos.
Para pasar eficientemente los programas de la memoria de intercambio a la principal, se debe hacer por hw

.:: Intercambio/ Swap ::.

  • Un proceso puede intercambiarse temporalmente de memoria a un almacenamiento de respaldo y luego puede ser retomado hacia la memoria para su ejecución.
  • El almacenamiento de respaldo se hace en el disco, que debe ser rapido y tener suficiente espacio para ubicar copia de todas las imagenes  de memoria para todos los usuarios; debe proveer acceso directo a estas imagines de memoria.
  • Descargar (swap out), cargar (swap in) – Variante de intercambio en algoritmos de planificación por prioridad; los procesos de baja prioridad se saca de memoria de tal forma que el proceso de mayor prioridad pueda ser cargado y ejecutado
  • La mayor parte del tiempo es tiempo de transferencia; este es directamente proporcional a la cantidad de memoria intercambiada.
  • Existen versiones modificadas de intercambio de los diferentes sistemas, ejemplo Unix, Linux y Windows.
FUNDAMENTOS DE LA MEMORIA VIRTUAL-El procesador utiliza y genera direcciones virtuales.-Parte del mapa de memoria (virtual) está en disco (swap) y parte en memoria principal-La MMU (memory management unit) traduce las direcciones virtuales en fisicas.

-La MMU produce un fallo de pagina (trap) cuando la direccion no esta en memoria principal.

-El SO trata el fallo de página, haciendo un transvase entre la memoria principal y el área de intercambio (swap disco)

En el esquema de MMU, el valor del registro de reubicacion de suma a cada direccion generada por el proceso del usuario al momento de ser enviado a la memoria.

El programa del ususario se preocupaba de las direcciones logicas; nunca tenia que preocuparse por las direcciones físicas.

ALMACENAMIENTO VIRTUAL
-Espacio de direcciones virtuales, V:espacio de direcciones a las que puede hacer referencia un proceso
Espacio de direcciones reales, R:Almacenamiento fisico disponible, en gral V >> R
Traduccion dinamica de direcciones (DAT): V ===> R
Mapa de correspondencia de traduccion de direcciones: por bloques: =s paginas, <> segmento.Direccionamiento bidimensional : Bloque, desplazamiento

EVOLUCION DE LAS ORGANIZACIONES DE MEMORIA


Real Real Real Real Virtual Virtual Virtual
Sistemas dedicados con un solo usuario Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria virtual Sistemas multiprogramados de memoria virtual Sistemas multiprogramados de memoria virtual
Multiprogramacion de particiones fijas Multiprogramacion de particiones fijas Multiprogramacion de particiones variables Paginacion pura Segmentacion Pura Paginacion y segmentacion combinados
Absoluto Relocalizable
Direccion fija Cambian de direccion de forma interna
Paginacion: Division de la memoria y de los programas en tamaños iguales.
Segmentación:  Division de la memoria en tamaños correspondientes a los componentes del programa y los programas son dividos en sus componentes basicos (ej, sub-rutinas)“La paginacion es a la particion fija como la segmentacion a las particiones variables”

EL almacenamiento virtual de un usuario no tiene que ser contiguo ni siquiera en almacenamiento secundario

Conjunto de trabajo: Conjunto de lineas de codigo cargadas en memoria real necesarias para realizar una tarea determinada (para realizar una tarea no se necesitan todas las lineas de codigo del programa) ¿Working Set?

PAGINACION

  • El espacio de direcciones lógicas de un proceso no necesariamente es contiguo; los procesos se ubican en memoria física donde luego quedan disponibles.
  • Se divide la memoria física en bloques de tamñano fijo llamados marcos (los tamaños con potencias de 2 entre 512 bytes y 8192 bytes).
  • Se divide la memoria lógica en bloques del mismo tamaño llamados páginas
  • Se mantiene el rastro de todos los marcos.
  • Para correr un programa de tamaño n paginas, se requiere encontrar n marcos libres y cargar el programa.
  • Se debe poner a punto una tabla para traducir las direcciones fisicas a las logicas.
  • Se puede presentar fragmentacion interna.

 

 

BLOG 16: (Colas Multinivel, Colas Multinivel con retroalimentación, Planificación de múltiples procesadores, Planificación de Tiempo real, Planificación por plazos y Perfil de ejecución de tareas)

COLAS MULTINIVEL

La cola de listos se divide en colas separadas:
  • Primer plano (interactiva).
  • Segundo plano (lotes)

Cada cola tiene su propio algoritmo de planificación.

  • Primer plano RR
  • Segundo plano FCFS


La planificacion debe hacerse entre las colas:

  • Planificacion de prioridad fija; es decir, sirva todos los procesos de primer plano y luego los de segundo plano. Existe la n posibilidad de inanicion.
  • Cuanto de tiempo -cada cola tiene cierta cantidad de tiempo que puede ser planificado entre sus procesos; por ejemplo:

             80% para primer plano RR

             20% para segundo plano en FCFS

COLAS MULTINIVEL CON RETROALIMENTACIÓN
Un proceso puede moverse entre varias colas; de esta manera puede implementarse el envejecimiento.

La planificacion de Colas Multinivel con retroalimentacion esta definida por los siguientes parámetros:
  • Numero de colas
  • Algoritmos de planificacion por cola
  • Método usado para determinar cuando promover un proceso.
  • Método usado para determinar cuando degradar un proceso.
  • Método usado para determinar que cola entrara en el proceso cuando requiera de servicio.

Las colas de retroalimentacion estan discriminadas por tiempo de ejecucion (entre mas tiempo mas rapido).
Planificacion en Solaris 2
Pueden correr procesos de tiempo real, procesos interactivos, del sistema, etc
Solaris da la mayor prioridad a los procesos de tiempo real.
Tiene diferentes quantum y se asignan con prioridad descendente.
Planificación sistemas tipo Posix ()
– Cada politica de planificacion lleva asociado un rango con al menos 32 niveles de prioridad.
– El planificador elegirá el proceso o proceso ligero con la prioridad más alta.
– Políticas de planificación
  • FIFO
  • Cíclica
  • Otra
Planificación de procesos en Linux
Dos algoritmos: tiempo compartido y tiempo real .
  • Tiempo compartido:
 – Prioridad basada en créditos el proceso con mas creditos se despacha.
– Se restan los creditos cuando suceden interrupciones de temporizador.
– Cuando el crédito= 9, se elige otro proceso.
– Cuando todos los procesos tienen credito=0, se reacreditan (Cr=Cr/2+Pr)
      * Con base en factores como prioridad e historia.
  • Tiempo real:
– Tiempo real blando
–Cumple con Posix.1b – de dos clases
    * TFCFS y RR
    * TEl proceso de mayor prioridad siempre corre primero.
Planificación en Windows
Las prioridades de Windows se organizan en dos bandas o clases
– Tiempo real
– Variable
Planificador expropiativo basado en prioridades.
 
PLANIFICACIÓN DE MÚLTIPLES PROCESADORES
  • La planificación es mas compleja cuando se tienen varios procesadores.
  • Escenarios: Asignacion de procesos a procesadores, Uso de la multiprogramacion en cada procesador individual, Activacion del proceso, propiamente dicho.
  • La carga se comparte (una cola por procesador?)
  • Un cola para  todos los procesadores?
  • Multiplrocesamiento Simétrico (SMP)- cada procesador tiene sus propias decisiones de planificación y consulta de la cola de listos.
  • MultiProcesamiento Asimetrico (ASMP) – Solo un procesador accede a las estructuras de datos del sistema, obviando la necesidad de compartir datos.

Asignación de Procesos a Procesadores
Trata cada procesador como un recurso colectivo y asigna procesos a procesadores por demanda.
Un proceso se vincula permanentemente a un procesador
  • estrategia conocida como plantificación de grupo o pandilla (gang)
  • dedica una cola a corto plazo por cada procesador
  • menos sobrecarga
  • el procesador puede estar ocioso mientras otro procesador tiene trabajo acumulado
Cola global
  • proceso planificados sobre cualquier procesador disponible.
Arquitectura maestro/esclavo
  • las funciones clave del nucleo ejecutan siempre en un procesador concreto
  •  El maestro es responsable de la planificacion de trabajos
  • El esclavo envía una solicitud al maestro
  • Desventajas:
         * Un fallo en el maestro hace que falle el sistema completo
* El maestro puede llegar a ser un cuello de botella para el rendimiento del sistema
Arquitectura camaradas
  •  el núcleo puede ejecutarse en cualquier procesador
  •  Cada procesador se auto-planifica
  • complica el sistema operativo
Escenarios de Planificacion de procesos de tiempo real:
La planificacion en tiempo real tiene sentido cuando se trata de multiprocesadores.
Hoy en dia las maquinas son tan potentes que podemos hablar de multitarea en ambiente real.

PLANIFICACIÓN DE TIEMPO REAL 


Planeacion de tiempo real estática
No se ajustan las prioridades con el tiempo, poca recarga en el sistema, para procesos donde las condiciones eventualmente cambian.
  • -Estática dirigida por tabla(plan): Determina, en tiempo de ejecución, cuándo debe comenzar a ejecutarse cada tarea. se aplica a tareas peri+odicas.
  • -Estática con expropiación dirigida por prioridad(sin plna): se utiliza un planificador expropiativo tradicional basado en prioridades. Usado en los sistemas multiprogramados que no son de tiempo real. en tiempo real la prioridad se ajusta con base a  las restricciones de tiempo de la tarea. Ej. Planificacion monotona en frecuencua (RMS).
Planeacion de tiempo real dinamica
Ajusta las prioridades en respuesta a condiciones cambiantes, puede tener una significativa sobrecarga, pero debe asegurar que ella no genere incumplimiento en los tiempos.
  • -Dinamica basada en un plan: la factibilidad se determina en tiempo de ejecucion.
  • -Dinamica basada en el mejor esfuerzo: No se realiza analisis de factibilidad. El sistema trata de cumplir con todos los plazos y abandona cualquier proceso ya iniciado y cuyo plazo no se haya cumplido.
PLANIFICACIÓN POR PLAZOS 
Las aplicaciones de tiempo real no se peocupan tanto de la velocidad de ejecucion como de completar sus tareas.
El proceso debe completarse en un tiempo especifico
  • -Se utiliza cuando los resultados serian inutiles si no se realiza el proceso a tiempo.
  • -Dificil de implementar:

-Debe prever un plan de requerimientos de recursos

-Genera significativa sobrecarga

-El servicio proporcionado a los otros procesos de puede degradar.

Información utilizada: tiempo de activacion, plazo de incio, plazo de conclusion, tiempo de proceso, recursos requeridos, prioridad, estructura de subtareas.

Las prioridades en general se basan en los tiempos limites de los procesos.

-El tiempo limite mas temprano primero (EDF Earliest-deadline-first)
-Minima laxitud primero

-Similar a EDF, pero la prioridad se basa en la laxitud , la cual se basa en el tiempo limite de los procesos y su restante para completar su objetivo.

Perfil de ejecución de dos tareas periódicas con plazos de terminación.

Considere un sistema que recoge y procesa datos de 2 sensores, A y B, el plazo para tomar los datos del sensor A debe ser de 20 ms y el B 50 ms. Se tarda 10 ms, incluyendo la sobrecarga del so, para procesar cada muestra de datos A y 25 ms para B. El sistema es capaz de tomar una decision de planificacion c/10ms

Posteriormente a esto se utiliza un metodo de planificación de tablas dinamicas.


Conferencia Cloud Computing

Conferencista: Andrés Zapata

Qué es la nube?

La computación en nube es un sistema informatico basado en Internet y centros de datos remotos para gestionar servicios de información y aplicaciones. La computación en nube permite que los consumidores y las empresas gestionen archivos y utilicen aplicaciones sin necesidad de instalarlas en cualquier computadora con acceso a Internet. Esta tecnología ofrece un uso mucho más eficiente de recursos, como almacenamiento, memoria, procesamiento y ancho de banda, al proveer solamente los recursos necesarios en cada momento.

El término “nube” se utiliza como una metáfora de Internet y se origina en la nube utilizada para representar Internet en los diagramas de red como una abstracción de la infraestructura que representa.

Un ejemplo sencillo de computación en nube es el sistema de documentos y aplicaciones electrónicas Google Docs / Google Apps. Para su uso no es necesario instalar software o disponer de un servidor, basta con una conexión a Internet para poder utilizar cualquiera de sus servicios.

El servidor y el software de gestión se encuentran en la nube (Internet) y son directamente gestionados por el proveedor de servicios. De esta manera, es mucho más simple para el consumidor disfrutar de los beneficios. En otras palabras: la tecnología de la información se convierte en una servicio, que se consume de la misma manera que consumimos la electricidad o el agua.

Es distribuida y orientada a servicios.

Patrones óptimos para computación en la nube

  • On and off:  Sobre la capacidad de aprovisionar se desperdicia, el tiempo de comercialización puede ser engorroso.
  • Crecimiento rápido:  El éxito de los servicios que necesita para crecer / escalar, mantenerse al día w / crecimiento es grande IT Challenge, no se puede hardware de la prestación lo suficientemente rápido.
  • Crecimiento inesperado: Inesperado / no planificado pico en la demanda, súbita alza afecta al rendimiento, no se puede excesivo para atender casos extremos.
  • Crecimiento predecible: Servicios con las tendencias estacionales micro, los picos debido a la creciente demanda periódica, la complejidad de TI y la capacidad desperdiciada.

Servicios de computación en la nube

La computación en nube se sustenta en tres pilares fundamentales de los que depende intrínsecamente para su correcto funcionamiento: software, plataforma, e infraestructura. Cada uno de estos pilares cumple un propósito diferente en la nube al sustentar las distintas áreas de productos y tipos de servicios de cloud computing prestados a corporaciones, empresas y particulares de todo el mundo.

En el segmento de software, la computación en la nube ha demostrado ser útil como un modelo de negocio. Ejecutando el software mediante servidores centralizados en Internet en lugar de servidores locales, los costes se reducen enormemente. Por otra parte, al eliminar los gastos de mantenimiento, licencias y hardware necesario para mantener estos servidores, las empresas son capaces de ejecutar aplicaciones de forma mucho más fluida y eficiente desde el punto de vista informático.

La plataforma de computación en nube (Platform as a Service (PaaS)) permite a los usuarios acceder a aplicaciones en servidores centralizados, sustentándose en la infraestructura de la nube. De esta manera, permite el funcionamiento de las aplicaciones en nube, facilitando  la implementación de las mismas sin el costo y la complejidad de mantener múltiples capas de hardware y software como ha ocurrido hasta ahora.

El último segmento de la computación en nube, la infraestructura como servicio (Infrastructure as a Service (IaaS)), representa en gran medida la columna vertebral de todo el concepto. La infraestructura es la que permite a los usuarios crear y usar el software y las aplicaciones. En lugar de mantener centros de datos o servidores, los clientes compran los recursos como un servicio completamente externo. Los proveedores cobran los servicios según la base establecida y por la cantidad de recursos consumidos.

Windows Azure

Windows Azure es una plataforma de nube abierta y flexible que permite compilar, implementar y administrar aplicaciones rápidamente, en una red global de centros de datos administrados por Microsoft. Puede compilar aplicaciones en cualquier lenguaje, herramienta o marco. Y puede integrar sus aplicaciones de nube públicas con el entorno de TI existente.

Core Services:

  • Calcular
  • Almacenamiento
  • Bases de datos

Lo que se ve…

* Simple aplicación ASP.NET MVC

* Visual Studio 2010

* Roles y los casos son los modelos de configuración en XML

* Depuración F5 Local

* Desplegado a la nube

* Experiencia de portal simple

* Etapas de la producción

Windows Azure proporciona

* Entornos para tus aplicaciones.

* Las máquinas, el espacio de rack, interruptores, conectividad.

* La implementación automatizada y configuración.

* El aislamiento, la redundancia, balanceo de carga.

* Abstracción y flexibilidad.

Windows Azure: Almacenamiento

  • De almacenamiento escalable en la nube: 100 TB de almacenamiento por cuenta, auto-escala para satisfacer gran volumen y rendimiento.
  • Accesible a través de servicios REST: El acceso desde Windows Azure, acceso desde cualquier lugar a través de Internet, apoyo. NET Client Library.
  • Varios tipos de almacenamiento: Tabla – grupo de entidades (pares nombre / valor), Cola – Simple no transaccional cola de mensajes, blob – almacenamiento binario grande, unidades montadas en NTFS – disco duro virtual en la instancia de cómputo.

Bases de datos SQL Azure

  • SQL modelo de servidor de base de datos relacional ofrece como un servicio

        Soporte para las API existentes y herramientas. Construido para la nube con una alta disponibilidad y tolerancia a fallos.

       Fácilmente la provisión y gestión de bases de datos a través de múltiples centros de datos

  • SQL Azure proporciona servidor lógico

Puerta de enlace de servidor en el que entiende de protocolo TDS. Parece que SQL Server TDS Cliente.

Los datos reales almacenados en múltiples nodos de datos back-end.

  • Optimizaciones lógica admitida

Los índices, los planes de consulta, etc. Optimizaciones físicas no son compatibles. Grupos de archivos, etc … Las particiones

  • Gestiona de forma transparente de almacenamiento físico
Escenarios de Windows Azure
* Ideal para aplicaciones que necesitan:Escalabilidad
disponibilidad
Tolerancia a fallos

* Solicitud de Usos Comunes:Sitios Web
Calcule aplicaciones intensivas
aplicaciones de dispositivos
API Web
Juegos sociales

BLOG 15: (Despachador y Algoritmos de Planificación)

DESPACHADOR

El modulo despachador le da el control de la CPU al proceso seleccionado por el planificador de corto plazo; esto incluye:
  • Conmutacion de contexto
  • Conmutacion al modo usuario
  • Saltar a la ubicación adecuada en el programa del usuario para reiniciar el programa.
    Latencia en el despacho: Es el tiempo que se toma el despachador para parar un proceso e iniciar otro.

    CRITERIOS DE PLANIFICACIÓN

  • Utilizacion de CPU: Mantener la cpu tan ocupada como sea posible
  • Rendimiento: numero de procesos que culminan su ejecución por unidad de tiempo.
  • Tiempo de entrega/estancia/retorno(turnaround time):Tiempo transcurrido desde que se lanza un proceso hasta que finaliza. Incluye el tiempo de jecucion sumado con el tiempo de espera por los recursos, incluyendo el procesador. Es una medidad apropiada para trabajos por lotes.
  • Tiempo de Espera: Cantidad de tiempo que un proceso gasta en la cola de listos.
  • Tiempo de Respuesta (response time): Para un proceso interactivo, es el tiempo que transcurre desde que se lanza una peticion hasta que se comienza a recibir la respuesta. cantidad de tiempo que se hace desde una solicitud y se produce la primera respuesta, no incluye el tiempo que toma en exhibir la respuesta.
  • Previsibilidad: Un trabajo deberia ejecutarse aproximadamente en el mismo tiempo y con el mismo coste a pesar de la carga del sistema. Una gran variacion en el tiempo de respuesta o en el tiempo de estancia es malo desde el punto de vista de los usuarios. Puede significar una gran oscilacion en la sobrecarga del sistema o la necesidad de poner a punto el sistema para eliminar las inestablidades.

CRITERIO DE OPTIMIZACIÓN

  • Maxima utilizacion de CPU
  • -Maximo rendimiento
  • Minimizar el tiempo de entrega
  • Minimizar el tiempo de espera
  • Minimizar el tiempo de respuesta
  • Justicia
  • maximo # de usuarios interactivos
  • Maxima capacidade de ejecucion
  • Predictibilidad
  • Minimizacion de sobrecarga
  • Equilibrio en uso de recursos
  • consistencia en seguridad


ALGORITMOS DE PLANIFICACIÓN

Es el procedimiento que el sistema utiliza para establecer los tiempos de ejecucion y el orden de ejecucion.

  • FCFS/PEPS: los procesos Cortos sufren, justa, predecible
  • SJF/SPN (short job first): El siguiente proceso el mas corto
  • SRTN (short remain time next), el < tiempo restante, compensa cortos
  • Round-Robin, RR, asignacion Ciclica/turno. Equilibra FCFS / SRTN, usa cola circular con FCFS/prioridades con slice / quantum para c/proceso
  • Por Prioridad, siempre se elige el de > prioridad, hay problema por inanición y es compensada X prioridad de Envejecimiento. Envuelve los demas metodos, excepto RR.
  • HRN, Tasa de respuesta mas alto, es costosa Prioridad = (w+s)/s
  • MLQ, Colas multinivel: Combinar, proceso del Sistema (x prioridad), interactivos (RR), lotes(FCFS/SRTN)
  • MLQ con Retroalimentación: Los procesos se pueden reubicar en diferentes colas de acuerdo a comportamiento. Los procesos limitados por procesador se envían a la cola de < Prioridad, los interactivos ubican la mayor prioridad.
  • FSS(Fair share schedule), Porcion justa, o reparto equitativo, los grupos de porcion justa obtiene prioridades de acuerdo con su proximidad al logro de sus metas en la utilizacion de recursos. Los grupos que van mal tienen > prioridad.

w= tiempo de espera y ejecucion hasta el momento

e= tiempo de ejecucion hasta el momento

s = tiempo total se servicio requerido por el proceso incluyendo  e.

turno-quantum-porcion= tiempo que se le da a un proceso.

Planificación el tiempo más corto Primero (SJF)

-Asocia con cada proceso la longitud de su proxima rafaga de cpu. Usa estas longitudes para planificar el proceso con el menor tiempo.

-Hay dos esquemas:

  • -No expropiativo – una vez la cpu es asignada al proceso no puede ser expropiado hasta que termine su rafaga(SPN)
  • -Expropiativo – Si llega un nuevo proceso con una longitud de rafaga menor que el tiempo restante del proceso en ejecucion, este es expropiado. Este esquema es conocido como EL menor tiempor restante primero (SRTF).

-SJF es optimo  -da un tiempo de espera minimo para un conjunto de procesos.

Planificacion por prioridad

– Se asocia un numero (entero) a cada proceso.

– La CPU es asiganda al proceso con mayor prioridad (por ej, EL numero más pequeño significa mayor prioridad en UNIX o prioridad ascendete como Windows a mayor # mayor prioridad)

*Expropiativo
*No expropiativo

-SJF es un esquema de planificacion por prioridad, donde la prioridad es el tiempo de rafaga de cpu que se calcula.

-Problema = La inanicion- los procesos de baja prioridad puede que nunca se ejecuten.

-Solucion = Envejecimiento – a medida que se transcurre el tiempo aumenta la prioridad.

Turno circular (RR)

-Cada proceso toma una pequeña unidad de tiempo CPU (quantum de tiempo), por lo general  de 10-100ms. Despues de transcurrido este lapso de tiempo, el proceso es expropiado y ubicado en la cola de listos.

-Si hay n procesos en la cola de listos y el quantum es q, entonces cada proceso toma 1/n de tiempo de Cpu en bloques de a lo mas q unidades de tiempo a la vez. Ningun proceso espera mas que (n-1)* q unidades de tiempo.

-Rendimiento:
-* si q>> → FIFO
-*q <<  → q debe ser mayor que la conmutacion de contexto, de otra forma la sobrecarga es grande.
Interrupcion por hardware no por software

Porcion Justa (Fair Share Scheduling)

Divide la capacidad de recursos del sistema en prociones, que son asignadas a planificadores asignados a varios grupos.

*Las aplicaciones o trabajos de usuario se pueden organizar como un conjunto de procesos (hilos), algunos grupos son mas importantes que otros.

*Desde el punto de vista del usuario, la preocupacion es como ejecutan su aplicacion.

*Es necesario tomar decisiones de planificacion basadas en estos conjuntos de procesos, los grupo menos importantes no pueden monopolizar los recursos.

Loteria

Se da a cada proceso un tiquete para varios recursos del sistema, tal como la cpu. Cuando se requiere planificar se selecciona al alzar un tiquete, y el proceso que lo tienen obtiene el recurso. Si queremos que un proceso tenga más oportunidades se le entregan más tiquetes. Los procesos cooperativos pueden intercambiar sus tiquetes.

Un ejemplo es un servidor de video: supongamos que los procesos necesitan velocidades de 10, 20, 25 f/s. Podemos entregar a c/proceso 10, 20 , 25 tiquetes respectivamente.

BLOG 14: (Planeación de la CPU, Hilos y Multihilos)

PLANEACIÓN DE LA CPU  

-Conceptos Básicos.

La maxima utilizacion de la CPU se obtiene con multiprogramacion.

El ciclo de rafagas de CPU-E/S- el proceso de ejecucion consiste en un ciclo de ejecucion de cpu y un cliclo de espera E/S
Distirbucion de rafagas de CPU

Limitados por CPU – Grandes rafagas
Limitados por Usuario I/O

Criterios planificacion

Selecciona de los procesos en memoria aquellos que estan listos para ejecutar, y le entrega la CPU a uno de ellos.

Las deciciones de planificacion de CPU tienen lugar cuando un proceso:

1. Conmuta de un estado de corrida a un estado de espera.
2.Conmuta de un estado de corrida a un estado de listo.
3. Conmuta de esperando a listo
4.Termina

La planificacion en 1 y 4 no es expropiativa, en los otros casos es expropiativa.

expropiativo: signifca que se quita.

-Algoritmos de Planificacion

-Planificacion Multiple-Procesadores
-Planificacion en tiempo Real
-Evaluacion de Algoritmos

PLANIFICADORES 

  • El planificador de corto plazo o planificador de CPU selecciona que proceso debe ser ejecutado enseguida y se le asigna la Cpu. bajo nivel, Scheduler/depachador es soluicitado muy frecuentemente (milisegundos) (debe ser rapido).
  • Planificador de medio plazo: intermedio
  • El planificador de largo plazo o planificador de trabajos selecciona que debe ser traido  a la cola de listos, es solicitado con poca frecuencia (segs, minutos) (puede ser lento).
  • El planificador de largo plazo controla el grado multiprogramacion.
  • Los procesos pueden ser descritos como:
    • Procesos limitados por E/S consumen mas tiempo realizado operaciones de E/S que cálculos, causan muchas ráfagas cortas a la cpu.
    • Procesos limitados por CPU consumen mas tiempo realizando cálculos; emplean pocas ráfagas fuertes a la cpu.
Adición de planificación de mediano plazo 


HILOS Y MULTIHILOS  

Un programa en Windows

En el nivel más básico, un programa en Windows inicializa algunas cosas y entra en algo llamado un “Ciclo de Eventos” (Event Loop). En este ciclo el programa sigue recibiendo mensajes de Windows hasta que encuentre un mensaje llamado WM_QUIT o WM_CLOSE.

Utilicemos un poco de “pseudocódigo” para ver a qué nos referimos:

  Programa MyPrograma;

    Comenzar
       Inicializa;
       CreaFormasYVentanas;
       MensajeWindows = HayNuevosMensajes;
       mientras ( MensajeWindows <> WM_CLOSE o MensajeWindows <> WM_QUIT )
       comenzar
	  ProcesaMensaje(MensajeWindows);
       terminar;
       CierraFormasyVentanas;
       Finaliza;
    Terminar.

  procedimiento ProcesaMensaje( MensajeWindows );
  comenzar
    en caso de 
      MensajeWindows = WM_RESIZE : CambiaTamaño;
      MensajeWindows = WM_CLICK  : ProcesaClicks;
      MensajeWindows = WM_PAINT  : RedibujarPantallas;
      { Aquí listamos todos los posibles mensajes que debemos procesar }
    fin caso;
  terminar;

Desde el punto de vista del procedimiento el programa no es más que un programa que entra en un ciclo infinito. Así que, aún cuando “se siente” que el programa puede hacer varias cosas al mismo tiempo, en realidad cada proceso de un mensaje de windows prohibe el proceso de otros mensajes hasta que el programa termine.

Este es el motivo por el cual entra en un ciclo infinito, el programa “se atora”. Se atora porque no puede procesar mensajes hasta que  termine el ciclo, y esperará pacientemente a que su ciclo termine. Cuando su programa se atora, si pasa una ventana sobre las ventanas del programa, el programa “se borra”. Esto es porque uno de los mensajes de Windows que su programa procesa es el mensaje WM_PAINT. Como el mensaje no puede ser procesado, las porciones de la ventana que están en blanco no son “redibujadas”. El usuario tampoco puede mover las ventanas o minimizarlas, porque estos también son mensajes que hay que procesar.

Concepto de Hilos de Ejecución

Para solucionar este problema, los programadores han creado lo que se llaman “hilos de ejecución” (Threads). Su razonamiento es que cada proceso es una colección de uno o más “hilos”. Todos los programas tienen al menos un hilo, que es en el caso de los programas de Delphi (y de casi todos los lenguajes de Windows) el mismo hilo que procesa todos los mensajes. Pero cualquier hilo puede crear otro “hilo” con un pedazo de código, y este hilo podrá ejecutar al mismo tiempo que el programa, sin necesidad de interrumpirlo.

Esto puede ser bastante complejo; ya que aunque Windows puede protegerlo de accesar memoria que pertenece a otros procesos, no lo va a ayudar si varios hilos tratan de accesar la misma memoria. Así que se debe tener cuidado, cuando accesa las variables de un hilo, de que el hilo no la esté utilizando, porque si no se hace, los resultados pueden ser impredecibles.

Una de las tareas más complicadas de un desarrollador experto es la depuración de errores causados por hilos de ejecución. Es por esto muy importante  comprender todos los conceptos. Los errores de hilos de ejecución no siempre son evidentes, y pueden causar que los programas se traben (sin dar mensajes de error) en circunstancias muy diversas y por motivos que muchas veces no son obvios.

Comunicación Entre Hilos

Así se puede hacer que varios hilos de ejecución ejecuten simultáneamente en su programa, pero no puede hacer que los hilos accesen memoria de otros hilos al mismo tiempo. ¿Entonces, cómo hacer para comunicarnos?

El caso más común donde se comunica con el hilo de ejecución principal sería para escribir algo en la pantalla. Para comunicarse entre diversos hilos, se debe detener todos los hilos en favor del hilo principal, y decirle a este hilo que actualice la pantalla por el usuario. Este procedimiento se llama “sincronización”.

Obviamente, es muy importante evitar que cualquier sincronización tome demasiado tiempo, porque haría a el programa sentirse lento en vez de ayudar.

Prioridad y Señales

Los hilos de ejecución pueden tener varios niveles prioridad. El hilo puede cambiar su propia prioridad, pero se debe tener en cuenta de que otros hilos en su programa (o el sistema operativo mismo) puede cambiar su prioridad, así que es necesario procurar depender en la prioridad.

Ya se ha visto que otros hilos de ejecución pueden pedir que se termine el programa, y eso se debe manejar . Esta es una de las señales que el programa puede enviar, pero también puede suspenderse y continuar (Suspend/Resume).  Por ejemplo, si usted utiliza un recurso en un loop, debe asegurarse de que el recurso exista dentro del loop. Esa clase de cosas.

Uso de Recursos

Los hilos de ejecución que se implementen deben estar programados de tal manera que “jueguen limpio” con los recursos. Esto quiere decir verificar que el recurso no esté en uso por otra tarea.

Relación entre hilos y procesos 

Hilos:procesos Descripcion Ejemplo
1:1 Cada hilo es un unico proceso con su propio espacio de direcciones y sus recursos Implementaciones Tradicionales de Unix
M:1 Un proceso define un espacio de direcciones y la propiedad sobre los recursos es dinamica. Dentro del mismo proceso se pueden Crear y ejecutar multiples hilos Windows NT, Solaris, OS/2, OS/390, Mach
1:M Un hilo puede migrar desde un ambiente de proceso a otro. Esto permite que un hilo se puede mover facilmente entre sistemas distintos Ra (clouds), Emerald
M:M Combina los atributos de M:1 y 1:M TRIX

 Hilos Solaris 

 Hilos Java

Los Hilos de Java pueden ser creados por:

-Extension de la clase hilos
-Implementando una interface que los corra

Los hilos de java son administrado por la JVM

suspend() – suspende la ejecucion del hilo que se esta ejecutando
sleep() – coloca el hilo que actualmente esta corriendo a dormir durante un periodo de tiempo.
resume()
stop()

Multihilos

  • El ambiente de ejecución Java utiliza un solo proceso con múltiples hilos.

BLOG 13: (Creación de procesos, Procesos Cooperativos, Problema de productores y consumidores)

CREACIÓN DE PROCESOS

  • Los procesos padres crean procesos hijos, los cuales, a su vez crean otros procesos, conformando un arbol de procesos.
  • Recursos compartidos
    • Los procesos padres e hijos comparten los recursos
    • Los hijos comparten un subconjunto de los recursos del padre
    • El padre y el hijo no comparten recursos
  • Ejecución
    • El padre y el hijo se ejecutan concurrentemente
    • El padre espera a que termine el hijo
  • Espacio de direcciones
    • El hijo deplica el del padre
    • Se carga un programa en el proceso hijo.
  • Ejemplos Unix.
    • La llamada al sistema fork crea nuevos procesos.
    • La llamada al sistema es utilizda despues de fork para reemplazar el espacio de memoria del proceso con un nuevo programa.
PROCESOS COOPERATIVOS 
Los porcesos independientes no pueden afectar
  • Ser afectados por la ejecución de otros procesos.
  • Los procesos cooperativos pueden afectar o ser afectados por la ejecución de otros procesos.
  • Ventajas de cooperación entre procesos
    • Se comparte información
    • Agiliza los cálculos
    • Modularidad
    • Conveniencia
 
PROBLEMA DE PRODUCTORES Y CONSUMIDORES 
  • El problema de productores y consumidores es un paradigma de los procesos cooperativos, los productores producen información que es consumida por los procesos consumidores.
    • buffer ilimitado no establece un limite practico para el tamaño del buffer.
      B [0] B [1] B [2] B [3] B [4] B [5]
    • el buffer limitado asume que hay un tamaño fijo de buffer.
      B [0] B [1] B [2] B [3] B [4] B [5] B [n-1]
Spool es un sistema que garantiza la impresión (administrador de impresoras)