Datos Personales

Mi foto
Nochistlan de Mejía, Zacatecas, Mexico

jueves, 8 de septiembre de 2011

DEFINICION Y TIPOS DE MEMORIA

Definición / Uso / Función

Una memoria de computadora es un conjunto de pequeñas celdas numeradas. Más aún: cada una de esas celdas puede almacenar sólo entidades binarias (dígitos o símbolos que toman uno de dos valores discretos 0 o 1). Así, utilizando apropiadamente esas celdas es posible guardar fácil -pero exclusivamente- la información X en la celda Y. Sin embargo, la celda Y no puede almacenar otra información en el mismo instante de tiempo.


Dicho de otra forma, la memoria de una computadora es completamente localizada. Por supuesto, el número de celdas es muy grande. Una memoria de computadora es muy sistemática, muy ordenada, de ahí su eficiencia; pero al mismo tiempo es muy rígida. Eso significa que para tener acceso a una información se requiere saber exactamente en qué lugar preciso está almacenada. Así, es necesario dar a la máquina instrucciones del tipo: ``Leer la información que se encuentra almacenada en la celda 32767 y copiarla a la celda 26567''.


El uso de la memoria es para agilizar el flujo de información hacia el CPU. En otras palabras es como decir desde el disco duro al CPU hay mucha mas distancia y mucho mas tiempo es perdido mientras busca en el disco duro y manda al CPU para ser procesado, mientras que si la información que esta en el disco es cargada a la memoria de allí el CPU puede accesar mas rápidamente la información que ha sido pedida. También se puede decir que el uso de la memoria es agilizar la compilación de información.

La memoria tiene como función primordial almacenar temporalmente(en el caso del RAM) información del disco para ser ejecutada por el CPU, de una manera más ágil y veloz.


  • Tipos de Memoria


    • Memorias con paridad consiste en añadir a cualquier de los tipos anteriores un chip que realiza una operación con los datos cuando entran en el chip y otra cuando salen. Si el resultado ha variado, se ha producido un error y los datos ya no son fiables. Dicho así, parece una ventaja; sin embargo, el ordenador solo avisa de que el error se ha producido, no lo corrige. Es mas, estos errores son tan improbables que la mayor parte de los chips no los sufren jamas aunque estén funcionando durante años; por ello, hacen que todas las memorias se fabrican sin paridad.
    • Primaria:
    • RAM: abreviatura para random access memory, en español vendría siendo memoria de acceso randomico. Este tipo de memoria se considera volátil ya que cada vez que la computadora es apagada esta memoria es totalmente eliminada y puesta en 0. Hay muchos tipos de RAM, como por ejemplo:
    • DRAM: Dinamic - RAM, o RAM a secas, ya que es “la original”, y por tanto la más lenta. Este tipo de memoria fue usada desde la época del 386, su velocidad de refresco típica es de 80 ó 70 nanosegundos, tiempo este que tarda en vaciarse para poder dar entrada a la siguiente seria de datos. Por ello, es más rápida la de 70ns que la de 80ns. Físicamente, aparece en forma de DIMMs o de SIMMs, siendo estos últimos de 30 contactos.
    • Fast Page(FPM): aveces llamado DRAM, puesto que evoluciona directamente de ella, y se usa desde hace tanto que pocas veces se las diferencia. Algo más rápida, tanto por su estructura(el modo de pagina rápida) como por ser de 70 ó 60 nanosegundos.

    Usada hasta con los primeros Pentium, físicamente aparece como SIMMs de 30 ó 72 contactos.
    • EDO: o EDO - RAM, extended data output - RAM. Evoluciona de la Fast Page; permite empezar a introducir nuevos datos mientras los anteriores estan saliendo, lo que la hace algo mas rapida. Muy común en los Pentium MMX y AMD K6, con refrescos de 70, 60 ó 50nonasegundos. Se instala sobre todo en SIMMs de 72 contactos, aunque existe en forma de DIMMs de 168 contactos.
    • SDRAM: Sincronic - RAM. Funciona de manera sincronizada con la velocidad de la placa, para lo que debe ser rápidisima, de unos 25 a 10 nonasegundos. Solo se presenta en forma de DIMMs de 168 contactos; es usada en los Pentium II de menos de 350MHz y en los Celeron.
    • PC100: SDRAM de 100MHz. Memoria SDRAM capaz de funcionar a esos 100MHz, que utilizan los AMD K6-2, Pentium II 350MHz y micros más modernos; teóricamente se trata de unas especificaciones mínimas que se deben cumplir para funcionar correctamente a dicha velocidad, aunque no todas las memorias vedidas como “de 100MHz” las cumplen
    • PC133: SDRAM de 133MHz. La más moderna. Es el mismo principio de la PC100.
    • BEDO: (Burst - EDO) una evolución de la EDO, que envía ciertos datos en “ráfagas”. Poco extendida, compite en prestaciones con al SDRAM.
    • ECC: memoria con corrección de errores. Puede ser cualquier tipo, aunque sobre todo EDO - ECC o SDRAM - ECC. Detecta errores de datos y los corrige; para aplicaciones realmente criticas. Usadas en servidores y mainframes.
    • Memoria de Vídeo: para tarjetas gráficas. De menor a mayor rendimiento pueden ser: DRAM -> FMP -> EDO -> VRAM -> WRAM -> SDRAM ->SGRAM.
    • Secundario
    • Memoria Cache:

    Aunque siempre hablamos de caches de hardware o software, lo cierto es que se trata de una palabra mal utilizada puestoque proviene del inglés cash (de hecho, en círculos especializados se habla de memorias cache, sin acento). Pero dejando aparte las puntualizaciones lingüísticas, nos limitaremos a definir su función. La memoria caché es una memoria de tipo estático (SRAM), rápida pero cara, que se sitúa entre el procesador y la memoria principal. Su misión principal consiste en acelerar los accesos del procesador a aquellos datos que necesita, ya que su tiempo medio de acceso es sensiblemente inferior al de una RAM normal. Cuando el procesador intenta acceder a un dato que no se encuentra en dicha memoria, se produce lo que se conoce como fallo de caché, fallo que ha de ser subsanado trasladando un bloque adecuado de información desde la memoria principal a la caché. La decisión de qué bloque hemos de retirar, cuándo hemos de actualizar la información, etc., dan lugar a las denominadas políticas de reemplazo y actualización. Pero a la hora de hablar de este tipo de memorias se suele distinguir entre caché de primer nivel y caché de segundo (ésta última es a la que habitualmente nos referimos cuando decimos que un equipo tiene tantos kilobytes de caché). La de primer nivel es la que se encuentra integrada dentro del propio microprocesador y resulta, lógicamente, más efectiva que la de segundo nivel, ya que dispone de una vía directa de 128 bits en el interior del chip. En las máquinas actuales, pensar en menos de 256 Kbytes de memoria caché es desaprovechar las posibilidades del equipo. Las tarjetas madres se venden habitualmente con dicha memoria ya instalada, por lo que es otro detalle a tener en cuenta. En el caso de los Pentium, resulta cada vez más habitual encontrarse con cantidades de 512 Kbytes de cache. Un último detalle a tener en cuenta es que existen dos tipos de caché: write-through y write-back. No entraremos en detalle acerca de las mismas, pero basta con saber que la segunda resulta más efectiva que la primera (aunque su implementación también es más compleja, lo que suele redundar en un mayor coste económico).


    ¿Para qué sirve?

    La Memoria en un OrdenadorPara empezar, digamos que la caché no es sino un tipo de memoria de la computadora; por tanto, en ella se guardarán datos que la PC necesita para trabajar. ¿Pero no era eso la RAM?, Te preguntarás. Bueno, en parte sí. A decir verdad, la memoria principal de la computadora (la RAM con sus famosos 8, 16, 32, 64, 128... "megas") y la memoria caché son básicamente iguales en muchos aspectos; la diferencia está en el uso que se le da a la caché. Debido a la gran velocidad alcanzada por los microprocesadores desde el 386, la RAM de la computadora no es lo suficientemente rápida para almacenar y transmitir los datos que el microprocesador (o "micro") necesita, por lo que tendría que esperar a que la memoria estuviera disponible y el trabajo se ralentizaría. Para evitarlo, se usa una memoria muy rápida, estratégicamente situada entre el micro y la RAM: la memoria caché.



    La memoria caché es muy rápida

    ¿Cuánto es "muy rápida"? Bien, unas 5 o 6 veces más que la RAM. Esto la encarece bastante, claro está, y ése es uno de los motivos por los cuales su capacidad es mucho menor que el de la RAM: un máximo cercano a 512 kilobytes (512 Kb), es decir, medio "mega", frente a 16 ó 32 megas de RAM. Además, este precio elevado la hace candidata a falsificaciones y engaños.

    Pero la caché no sólo es rápida; además, se usa con una opera en ocasiones con un número reducido de datos, pero que tiene que traer y llevar a la memoria en cada operación. Si situamos en medio del camino de los datos una memoria intermedia que almacene los datos más usados, los que casi seguro necesitará el micro en la próxima operación que realice, se ahorrará mucho tiempo del tránsito y acceso a la lenta memoria RAM; esta es la segunda utilidad de la caché.


    El tamaño de la caché

    Leído lo anterior pensarás: cuanto más grande, mejor. Cierto, pero no; o más bien, casi siempre sí. Aunque la caché sea de mayor velocidad que la RAM, si usamos una caché muy grande, el micro tardará un tiempo apreciable en encontrar el dato que necesita. Esto no sería muy importante si el dato estuviera allí, pero ¿y si no está? Entonces habrá perdido el tiempo, y tendrá que sumar ese tiempo perdido a lo que tarde en encontrarlo en la RAM.

    Por tanto, la caché actúa como un resumen o "atajo" de los datos de la RAM, y todos sabemos que un resumen de 500 páginas no resulta nada útil. Se puede afirmar que, para usos normales, a partir de 1 MB (1024 Kb) la caché resulta ineficaz, e incluso pudiera llegar a ralentizar el funcionamiento de la computadora. El tamaño idóneo depende del de la RAM.
    RAM(MB)
    Cache(Kb)
    1 a 4
    128 ó 256
    4 a 12
    256
    12 a 32
    512
    Mas de 32
    512 ó 1024



    La caché interna o L1

    La caché a la que nos hemos referido hasta ahora es la llamada "caché externa" o de segundo nivel (L2). Existe otra, cuyo principio básico es el mismo, pero que está incluida en el interior del micro; de ahí lo de interna o de primer nivel (L1). Esta caché funciona como la externa, sólo que está más cerca del micro, es más rápida y más cara, además de complicar el diseño del micro, por lo que su tamaño se mide en pocas decenas de kilobytes. Se incorporó por primera vez en los micros 486, y por aquel entonces era de 8 Kb (aunque algunos 486 de Cyrix tenían sólo 1 Kb). La importancia de esta caché es fundamental; por ejemplo, los Pentium MMX son más rápidos que los Pentium normales en aplicaciones no optimizadas para MMX, gracias a tener el doble de caché interna.


    La caché de los Pentium II / III y Celeron

    Puede que hayas oído hablar de que el Pentium III (y sus antecesores extintos Pentium Pro y Pentium II ) tienen 512 Kb de caché interna; esto es inexacto, cuando no una "confusión interesada" por parte de Intel y los vendedores. Los Pentium II y III tienen 32 Kb de caché interna, y 512 Kb de caché dentro del cartucho SEC pero externa al encapsulado del microchip. Los que casi pueden presumir de tener una gran caché interna son los Celeron Mendocino (no los antiguos Celeron, que carecían de caché L2 en absoluto). Estos micros tienen 128 Kb de caché L2 integrada en el propio encapsulado del micro y la hacen funcionar a la misma velocidad que éste, de forma que no llega a ser tan rápida como la caché L1 pero sí lo bastante como para permitirles competir con los Pentium II pese a tener sólo la cuarta parte de caché. Digamos, en fin, que los Pentium II y III y los Celeron Mendocino tienen una caché interna y una semi-externa, lo cual no es poco mérito en absoluto; pero las cosas son como son, mal que le pese a los magos de la publicidad.


    Tecnologías usadas en la caché

    Aunque en general no se puede elegir qué memoria caché adquirir con la computadora, puesto que se vende conjuntamente con la placa base (o con el micro, si es un Pentium III, un Mendocino...), conviene tener claros unos cuantos conceptos por si se diera el caso de tener varias opciones a nuestra disposición.

    Ante todo, el tipo de memoria empleada para fabricar la caché es uno de los factores más importantes. Suele ser memoria de un tipo muy rápido (como por ejemplo SRAM o SDRAM) y con características especiales, como burst pipeline: transmitir datos "a ráfagas" (burst). La velocidad de la caché influye en su rendimiento, como es obvio. Las cachés se mueven en torno a los 10 nanosegundos (ns) de velocidad de refresco; es decir, que cada 10 ns pueden admitir una nueva de datos. Por tanto, a menor tiempo de refresco, mayor velocidad.


  • Como se Implemente la Memoria Principal



    • SIMMs y DIMMs:

    Se trata de la forma en que se juntan los chips de memoria, del tipo que sean, para conectarse a la placa base del ordenador. Son unas plaquitas alargadas con conectores en un extremo; al conjunto se le llama módulo. El número de conectores depende del bus de datos del microprocesador, que más que un autobús es la carretera por la que van los datos; el número de carriles de dicha carretera representaría el número de bits de información que puede manejar cada vez.
    • SIMMs: Single In-line Memory Module, con 30 ó 72 contactos. Los de 30 contactos pueden manejar 8 bits cada vez, por lo que en un 386 ó 486, que tiene un bus de datos de 32 bits, necesitamos usarlos de 4 en 4 módulos iguales. Miden unos 8,5 cm (30 c.) ó 10,5 cm (72 c.) y sus zócalos suelen ser de color blanco. Los SIMMs de 72 contactos, más modernos, manejan 32 bits, por lo que se usan de 1 en 1 en los 486; en los Pentium se haría de 2 en 2 módulos (iguales), porque el bus de datos de los Pentium es el doble de grande (64 bits).
    • DIMMs: más alargados (unos 13 cm), con 168 contactos y en zócalos generalmente negros; llevan dos muescas para facilitar su correcta colocación. Pueden manejar 64 bits de una vez, por lo que pueden usarse de 1 en 1 en los Pentium, K6 y superiores. Existen para voltaje estándar (5 voltios) o reducido (3.3 V). Y podríamos añadir los módulos SIP, que eran parecidos a los SIMM pero con frágiles patitas soldadas y que no se usan desde hace bastantes años, o cuando toda o parte de la memoria viene soldada en la placa (caso de algunos ordenadores de marca).

    • Configuración de SIMMs
    • 30 Pines

    La Memoria en un Ordenador
    Pin NombreDescripción
    1VCC+5 VDC
    2/CASColumn Address Stobe
    3DQ0Data 0
    4A0Address 0
    5A1Address 1
    6DQ1Data 1
    7A2Address 2
    8A3Address 3
    9GNDGround
    10DQ2Data 2
    11A4Address 4
    12A5Address 5
    13DQ3Data 3
    14A6Address 6
    15A7Address 7
    16DQ4Data 4
    17A8Address 8
    18A9Address 9
    19A10Address 10
    20DQ5Data 5
    21/WEWrite Enable
    22GNDGround
    23DQ6Data 6
    24A11Address 11
    25DQ7Data 7
    26QPData Parity Out
    27/RASRow Address Strobe
    28/CASPSomething Parity???
    29DPData Parity In
    30VCC+5 VDC
    • Configuración de DIMMs
    • 72 Pines

    La Memoria en un Ordenador



    Memoria: dicese de la capacidad de un ser de recordar algo.

    Ya no, el significado de memoria se ha amplificado un 100 por ciento ya que ahora las computadoras tienen la capacidad de recordar cosas a su propia manera.


    En este trabajo explicaremos como es esa manera por la cual las computadoras con su memoria recuerdan datos. Veremos los diferentes tipos de memoria sus diferencias y comparaciones ya sea según su tecnología, rapidez, conexión, capacidad entre otras. Con respecto a los tipos de memoria veremos como ayudan y cooperan con el CPU ya sea ayudando a que sea más rápido o eficiente.


    CONCLUSION
    Este trabajo nos ayudo a comprender y ver los diferentes tipos y usos de las memorias y la diferencia entre una y otra ya que en el proceso de investigación hemos visto y analizado como es el comportamiento de la memoria de un computador y también hemos entendido que tan importante es la memoria en un computador y la gran diferencia de tiempo que hace el tamaño de memoria con respecto a la rapidez de reacción de una computadora.

    También hemos visto que hay una gran diversidad de memoria en el mercado y la cantidad de información que hay accesible sobre ellas en la internet y que sin la memoria dentro de nuestro computador no hubiéramos podrido lograr.

    jueves, 1 de septiembre de 2011

    Algoritmos de Planificación

    En los siguientes subapartados vamos a estudiar ciertos algoritmos utilizados para planificar la CPU, la elección de uno (o de una mezcla de varios) depende de decisiones de diseño. Antes de exponer los algoritmos vamos a explicar ciertas medidas que se utilizan para evaluarlos. Porcentaje de utilización de la CPU por procesos de usuario. La CPU es un recurso caro que necesita ser explotado, los valores reales suelen estar entre un 40% y un 90%.

    Rendimiento (throughput) = nº de ráfagas por unidad de tiempo. Se define una ráfaga como el período de tiempo en que un proceso necesita la CPU; un proceso, durante su vida, alterna ráfagas con bloqueos. Por extensión, también se define como el nº de trabajos por unidad de tiempo.

    Tiempo de espera (E) = tiempo que una ráfaga ha permanecido en estado listo.

    Tiempo de finalización (F) = tiempo transcurrido desde que una ráfaga comienza a existir hasta que finaliza. F = E + t (t = tiempo de CPU de la ráfaga).

    Penalización (P) = E + t / t = F / t, es una medida adimensional que se puede aplicar homogéneamente a las ráfagas independientemente de su longitud.
    En general, hay que maximizar los dos primeros parámetros y minimizar los tres últimos. Sin embargo, estos objetivos son contradictorios, el dedicar más tiempo de CPU a los usuarios se hace a costa de llamar menos al algoritmo de planificación (menos cambios de proceso), y de simplificarlo. Esto provoca que la CPU se reparta menos equitativamente entre los procesos, en detrimento de los últimos tres parámetros.
    Así pues, dependiendo de los objetivos se elegirá cierto algoritmo. En los sistemas por lotes suele primar el rendimiento del sistema, mientras que en los sistemas interactivos es preferible minimizar, por ejemplo, el tiempo de espera.
     Planificación de Plazo Fijo
    En la planificación de plazo fijo se programan ciertos trabajos para terminarse en un tiempo específico o plazo fijo. Estas tareas pueden tener un gran valor si se entregan a tiempo, y carecer de él si se entregan después del plazo. Esta planificación es compleja por varios motivos:
    El usuario debe informar por adelantado de las necesidades precisas de recursos del proceso. Semejante información rara vez está disponible.
    El sistema debe ejecutar el proceso en un plazo fijo sin degradar demasiado el servicio a los otros usuarios y debe planificar cuidadosamente sus necesidades de recursos dentro del plazo. Esto puede ser difícil por la llegada de nuevos procesos que impongan demandas imprevistas al sistema.
    Si hay muchas tareas a plazo fijo activas al mismo tiempo, la planificación puede ser tan compleja que se necesiten métodos de optimización avanzados para cumplir los plazos.
    La administración intensiva de recursos requerida por la planificación de plazo fijo puede producir un gasto extra substancial.

    Planificación Primero en Entrar-Primero en Salir (FIFO, First In First Out

    Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente.

    La ventaja de este algoritmo es su fácil implementación, sin embargo, no es válido para entornos interactivos ya que un proceso de mucho cálculo de CPU hace aumentar el tiempo de espera de los demás procesos . Para implementar el algoritmo (ver figura 2) sólo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola.
    En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados. En b) P7 se bloquea (ya sea al realizar una E/S, una operación WAIT sobre un semáforo a cero u otra causa) y P2 pasa a ocupar la CPU. En c) ocurre un evento (finalización de la operación de E/S, operación SIGNAL, ...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos.





    ENLACE A LA SIMULACIÓN FIFO
    Algunas de las características de este algoritmo es que es no apropiativo y justo en el sentido formal, aunque injusto en el sentido de que: los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. Por otro lado es predecible pero no garantiza buenos tiempos de respuesta y por ello se emplea como esquema secundario.



    3.6.3 Planficación por Turno Rotatorio (Round Robin)
    Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy válido para entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU. El round robin es muy fácil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos, como se muestra en la figura 6.2.

    En esta figura en a) el proceso P7 ocupa la CPU. En b) P7 se bloquea pasando P2 a ocupar la CPU. En c) P2 agota su cuantum con lo que pasa al final de la lista y P4 ocupa la CPU. La figura 4 representa un ejemplo más largo de la ocupación de la CPU utilizando el algoritmo round robin.





    ENLACE A LA SIMULACIÓN COLAS RR
    Este algoritmo presupone la existencia de un reloj en el sistema. Un reloj es un dispositivo que genera periódicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en concreto la rutina de servicio de interrupción del reloj) coge el mando de la CPU periódicamente. El cuantum de un proceso equivale a un número fijo de pulsos o ciclos de reloj. Al ocurrir una interrupción de reloj que coincide con la agotación del cuantum se llama al dispatcher.





    3.6.4 Tamaño del Cuanto

    La determinación del tamaño del cuanto es vital para la operación efectiva de un sistema de cómputo. ¿Debe el cuanto ser pequeño o grande?, ¿fijo o variable?, ¿el mismo para todos los usuarios o debe determinarse por separado para cada uno?
    Si el cuanto de tiempo es muy grande, cada proceso tendrá el tiempo necesario para terminar, de manera que el esquema de planificación por turno rotatorio degenera en uno de primero-en-entrar-primero-en-salir. Si el cuanto es muy pequeño, el gasto extra por cambio de proceso se convierte en el factor dominante y el rendimiento del sistema se degradará hasta el punto en que la mayor parte del tiempo se invierte en la conmutación del procesador, con muy poco o ningún tiempo para ejecutar los programas de los usuarios.
    ¿Exactamente dónde, entre cero e infinito, debe fijarse el tamaño del cuanto? La respuesta es, lo bastante grande como para que la mayoría de las peticiones interactivas requieran menos tiempo que la duración del cuanto.

    Pongamos un ejemplo, supongamos que el cambio de proceso tarda 5 mseg., y la duración del cuantum es de 20 mseg.. Con estos parámetros, se utiliza un mínimo del 20% del tiempo de la CPU en la ejecución del sistema operativo. Para incrementar la utilización de la CPU por parte de los procesos de usuario podríamos establecer un cuantum de 500 mseg., el tiempo desperdiciado con este parámetro sería del 1%. Pero consideremos lo que ocurriría si diez usuarios interactivos oprimieran la tecla enter casi al mismo tiempo. Diez procesos se colocarían en la lista de procesos listos. Si la CPU está inactiva, el primero de los procesos comenzaría de inmediato, el segundo comenzaría medio segundo después, etc. Partiendo de la hipótesis de que todos los procesos agoten su cuantum, el último proceso deberá de esperar 4'5 seg. para poder ejecutarse. Esperar 4'5 seg. para la ejecución de una orden sencilla como pwd parece excesivo.

    En conclusión, un cuantum pequeño disminuye el rendimiento de la CPU, mientras que un cuantum muy largo empobrece los tiempos de respuesta y degenera en el algoritmo FIFO. La solución es adoptar un término medio como 100 mseg.

    3.6.5 Planificación por Prioridad al más corto (SJF, Short Job First)
    Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción, por tanto, sólo es útil para entornos batch. Su característica es que cuando se activa el planificador, éste elige la ráfaga de menor duración. Es decir, introduce una noción de prioridad entre ráfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecución de los procesos.
    La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalización promedio, como puede verse en el siguiente ejemplo:
    Ej: Supongamos que en un momento dado existen tres ráfagas listos R1, R2 y R3, sus tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al que pertenece la ráfaga R1 es la que lleva más tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalización (F) de las ráfagas aplicando FIFO y SJF:

    FIFO F = (24 + 27 + 30) / 3 = 27 ms.
    SJF F = (3 + 6 + 30) / 3 = 13 ms.

    Se puede demostrar que este algoritmo es el óptimo. Para ello, consideremos el caso de cuatro ráfagas, con tiempos de ejecución de a, b, c y d. La primera ráfaga termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalización es (4a+3b+2c+d)/4. Es evidente que a contribuye más al promedio que los demás tiempos, por lo que debe ser la ráfaga más corta, b la siguiente, y así sucesivamente. El mismo razonamiento se aplica a un número arbitrario de ráfagas.


    ENLACE A LA SIMULACIÓN SJF
    No obstante, este algoritmo sólo es óptimo cuando se tienen simultáneamente todas las ráfagas. Como contraejemplo, considérense cinco ráfagas desde A hasta E, con tiempo se ejecución de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que las demás ráfagas no han llegado aún. Con el algoritmo SJF las ejecutaríamos en orden A, B, C, D, y E con un tiempo de finalización promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de finalización de 4.4.



    3.6.6 Planificación por Prioridad al Tiempo Restante más Corto (SRTF, Short Remaining Time First)
    .



    Es similar al anterior, con la diferencia de que si un nuevo proceso pasa a listo se activa el dispatcher para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es así el proceso en ejecución pasa a listo y su tiempo de estimación se decrementa con el tiempo que ha estado ejecutándose. En la figura 6.5 tenemos un ejemplo de funcionamiento del algoritmo en el que se observa cómo se penalizan las ráfagas largas (como en SJF). Un punto débil de este algoritmo se evidencia cuando una ráfaga muy corta suspende a otra un poco más larga, siendo más largo la ejecución en este orden al ser preciso un cambio adicional de proceso y la ejecución del código del planificador.

    Planificación a la Tasa de Respuesta más Alta
    Brinch Hansen desarrolló la estrategia de prioridad a la tasa de respueta más alta (HRN, highest-response-ratio-next) que corrige algunas deficiencias de SJF, particularmente el retraso excesivo de trabajos largos y el favoritismo excesivo para los trabajos cortos. HRN es un disciplina de planificación no apropiativa en la cual la prioridad de cada proceso no sólo se calcula en función del tiempo de servicio, sino también del tiempo que ha esperado para ser atendido. Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar. Las prioridades dinámicas en HRN se calculan de acuerdo con la siguiente expresión: prioridad = (tiempo de espera + tiempo de servicio) / tiempo de servicio
    Como el tiempo de servicio aparece en el denominador, los procesos cortos tendrán preferencia. Pero como el tiempo de espera aparece en el numerador, los procesos largos que han esperado también tendrán un trato favorable. Obsérvese que la suma tiempo de espera + tiempo de servicio es el tiempo de respuesta del sistema para el proceso si éste se inicia de inmediato.


    3.6.8 Planificación por el Comportamiento

    Con este tipo de planificación se pretende garantizar al usuario cierta prestación del sistema y tratar de cumplirla. Si en un sistema tenemos 'n' usuarios lo normal será garantizar a cada uno de ellos al menos 1/n de la potencia del procesador. Para ello necesitamos del tiempo consumido por el procesador y el tiempo que lleva el proceso en el sistema. La cantidad de procesador que tiene derecho a consumir el proceso será el cociente entre el tiempo que lleva en el sistema entre el número de procesos que hay en el sistema. A esa cantidad se le puede asociar una prioridad que vendrá dada como el cociente entre tiempo de procesador que ha consumido y el tiempo que se le prometió (el tiempo que tiene derecho a consumir). De tal modo que si esa proporción es de 0'5 significa que tan sólo ha consumido la mitad del tiempo prometido pero si es de 2 quiere decir que ha consumido más de lo debido, justamente el doble.

    En sistemas de tiempo real se puede adoptar una variante de este algoritmo en el que se otorgue mayor prioridad al proceso cuyo riesgo de no cumplir el plazo sea mayor.

    T.I.:Felipe Fregoso Jiménez
    ITSN (Instituto Tecnológico Superior de Nochistlán)