viernes, 29 de mayo de 2015

LINUX

GNU/Linux es uno de los términos empleados para referirse a la combinación del núcleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Su desarrollo es uno de los ejemplos más prominentes de software libre; todo su código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los términos de la GPL (Licencia Pública General de GNU, en inglés: General Public License) y otra serie de licencias libres.
A pesar de que "Linux" se denomina en la jerga cotidiana al sistema operativo, este es en realidad sólo el Kernel (núcleo) del sistema. La verdadera denominación del sistema operativo es "GNU/Linux" debido a que el resto del sistema (la parte fundamental de la interacción entre el hardware y el usuario) se maneja con las herramientas del proyecto GNU (www.gnu.org) y con entornos de escritorio (como GNOME), que también forma parte del proyecto GNU aunque tuvo un origen independiente. Como el Proyecto GNU destaca, GNU es una distribución, usándose el término sistema operativo en el sentido empleado en el ecosistema Unix, lo que en cualquier caso significa que Linux es solo una pieza más dentro de GNU/Linux. Sin embargo, una parte significativa de la comunidad, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la unión de ambos proyectos. Para más información consulte la sección "Denominación GNU/Linux" o el artículo "Controversia por la denominación GNU/Linux".
A las variantes de esta unión de programas y tecnologías, a las que se les adicionan diversos programas de aplicación de propósitos específicos o generales se las denomina distribuciones. Su objetivo consiste en ofrecer ediciones que cumplan con las necesidades de un determinado grupo de usuarios. Algunas de ellas son especialmente conocidas por su uso en servidores y supercomputadoras. donde tiene la cuota más importante del mercado. Según un informe de IDC, GNU/Linux es utilizado por el 78% de los principales 500 servidores del mundo, otro informe le da una cuota de mercado de 89% en los 500 mayores supercomputadores. Con menor cuota de mercado el sistema GNU/Linux también es usado en el segmento de las computadoras de escritorio, portátiles, computadoras de bolsillo, teléfonos móviles, sistemas embebidos, videoconsolas y otros dispositivos.

El nombre GNU, GNU's Not Unix (GNU no es Unix), viene de las herramientas básicas de sistema operativo creadas por el proyecto GNU, iniciado por Richard Stallman en 1983. El nombre Linux viene del núcleo Linux, inicialmente escrito por Linus Torvalds en 1991.
La contribución de GNU es la razón por la que existe controversia siempre y cuando a la hora de utilizar Linux o GNU/Linux para referirse al sistema operativo formado por las herramientas de GNU y el núcleo Linux en su conjunto. 

El proyecto GNU, que se inició en 1983 por Richard Stallman; tiene como objetivo el desarrollo de un sistema operativo Unix completo y compuesto enteramente de software libre. La historia del núcleo Linux está fuertemente vinculada a la del proyecto GNU. En 1991 Linus Torvalds empezó a trabajar en un reemplazo no comercial para MINIX que más adelante acabaría siendo Linux.
Cuando Torvalds liberó la primera versión de Linux en 1992, el proyecto GNU ya había producido varias de las herramientas fundamentales para el manejo del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador, pero como el proyecto contaba con una infraestructura para crear su propio núcleo (o kernel), el llamado Hurd, y este aún no era lo suficiente maduro para usarse, comenzaron a usar a Linux a modo de continuar desarrollando el proyecto GNU, siguiendo la tradicional filosofía de mantener cooperatividad entre desarrolladores. El día en que se estime que Hurd es suficiente maduro y estable, será llamado a reemplazar a Linux.
Entonces, el núcleo creado por Linus Torvalds, quien se encontraba por entonces estudiando la carrera de Ingeniería Informática en la Universidad de Helsinki, llenó el "espacio" final que había en el sistema operativo de GNU.

Entorno gráfico

GNU/Linux puede funcionar tanto en entorno gráfico como en modo consola. La consola es común en distribuciones para servidores, mientras que la interfaz gráfica está orientada al usuario final tanto de hogar como empresarial. Asimismo, también existen los entornos de escritorio, que son un conjunto de programas conformado por ventanas, iconos y muchas aplicaciones que facilitan la utilización del computador. Los escritorios más populares en GNU/Linux son: GNOME, KDE SC, LXDE y Xfce. En dispositivos móviles se encuentra Android, que funciona sobre el núcleo Linux, pero no usa las herramientas GNU. Intel anunció productos de consumo basados en MeeGo para mediados del 2011, por lo que es probable que este entorno tenga también una creciente importancia en los próximos años.

Como sistema de programación

La colección de utilidades para la programación de GNU es con diferencia la familia de compiladores más utilizada en este sistema operativo. Tiene capacidad para compilar C, C++, Java, Ada, Pascal, entre otros muchos lenguajes. Además soporta diversas arquitecturas mediante la compilación cruzada, lo que hace que sea un entorno adecuado para desarrollos heterogéneos.
Hay varios entornos de desarrollo integrados disponibles para GNU/Linux incluyendo, Anjuta, KDevelop, Lazarus, Ultimate++, Code::Blocks, NetBeans IDE y Eclipse. También existen editores extensibles como Emacs o Vim. GNU/Linux también dispone de capacidades para lenguajes de guion (script), aparte de los clásicos lenguajes de programación de shell, o el de procesado de textos por patrones y expresiones regulares llamado awk, la mayoría de las distribuciones tienen instalado Python, Perl, PHP y Ruby.

Aplicaciones de usuario

Las aplicaciones para GNU/Linux se distribuyen principalmente en los formatos .deb y .rpm, los cuales fueron creados por los desarrolladores de Debian y Red Hat respectivamente. También existe la posibilidad de instalar aplicaciones a partir de código fuente en todas las distribuciones.

Software de código cerrado para GNU/Linux

Durante la etapa temprana había pocas aplicaciones de código cerrado para GNU/Linux. Con el tiempo se fueron portando programas no libres al sistema GNU/Linux, entre ellos Adobe Reader, Adobe Flash, Opera, entre otros.

Cuota de mercado

Numerosos estudios cuantitativos sobre software de código abierto están orientados a temas como la cuota de mercado y la fiabilidad, y ciertamente muchos de estos estudios examinan específicamente a GNU/Linux.42
La medición "cuota de mercado" puede resultar inservible ya que es un concepto basado en ventas comerciales (unidades materiales vendidas). Por otro lado Linux es utilizado frecuentemente en servidores con acceso público desde Internet por lo que la cuota de mercado es extremadamente inferior a la cuota de uso. Baste notar, p.ej, que Facebook, Gmail, LinkedIn o Yahoo funcionan sobre servidores GNU/Linux, de forma que aún cuando estemos accediendo desde un navegador ejecutándose en Windows/Mac, la aplicación real se está ejecutando en servidores Linux y los datos están almacenándose igualmente en dichos servidores.
Hay varias empresas que comercializan soluciones basadas en GNU/Linux: IBM, Novell (SuSE), Red Hat (RHEL), Mandriva (Mandriva Linux), Rxart, Canonical Ltd. (Ubuntu), así como miles de PYMES que ofrecen productos o servicios basados en esta tecnología.

Aplicaciones

Supercomputadoras

Dentro del segmento de supercomputadoras, a noviembre de 2012, el uso de este sistema ascendió al 93,8% de las computadoras más potentes del mundo por su confiabilidad, seguridad y libertad para modificar el código. De acuerdo con TOP500.org, que lleva estadísticas sobre las 500 principales supercomputadoras del mundo, a noviembre de 2012: 469 usaban una distribución basada en GNU/Linux, 20 Unix, 7 mezclas, 1 BSD y 3 Windows.
Las primeras 37 supercomputadoras, incluidas la número 1, la Titan - Cray XK7 con 560.640 procesadores, utilizan distribuciones basadas en GNU/Linux.44
GNU/Linux, además de liderar el mercado de servidores de Internet debido, entre otras cosas, a la gran cantidad de soluciones que tiene para este segmento, tiene un crecimiento progresivo en computadoras de escritorio y portátiles. Además, es el sistema base que se ha elegido para el proyecto OLPC: One Laptop Per Child.
Para saber más sobre las arquitecturas soportadas, lea el artículo "Portabilidad del núcleo Linux y arquitecturas soportadas".

Teléfonos inteligentes y tabletas

Linux tiene un papel imprescindible en el territorio de los teléfonos inteligentes debido a que Android y meego lo utilizan. Actualmente Android es el sistema operativo predominante en los nuevos teléfonos inteligentes y su cuota de mercado mundial supera a iOS de Apple.

Fuerzas Armadas

El sistema operativo del General Atomics MQ-1 Predator está basado en GNU/Linux, así como el del Boeing P-8 Poseidon.

Denominación GNU/Linux

Evolución de los sistemas UNIX
Parte de la comunidad y numerosos medios prefieren denominar a esta combinación como Linux, aunque GNU/Linux (con las variantes GNU con Linux y GNU+Linux) es la denominación defendida por el Proyecto GNU y la FSF junto con otros desarrolladores y usuarios para el conjunto que utiliza el sistema operativo Linux en conjunto con las aplicaciones de sistema creadas por el proyecto GNU y por muchos otros proyectos de software.48 49
Desde 1984, Richard Stallman y muchos voluntarios están intentando crear un sistema operativo libre con un funcionamiento similar al UNIX, recreando todos los componentes necesarios para tener un sistema operativo funcional. A comienzos de los años 90, unos seis años desde el inicio del proyecto, GNU tenía muchas herramientas importantes listas, como editores de texto, compiladores, depuradores, intérpretes de comandos de órdenes etc., excepto por el componente central: el núcleo.
GNU tiene su propio proyecto de núcleo, llamado Hurd. Sin embargo, su desarrollo no continuó como se esperaba al aparecer el núcleo Linux. De esta forma se completaron los requisitos mínimos y surgió el sistema operativo GNU que utilizaba el núcleo Linux.
El principal argumento de los defensores de la denominación GNU/Linux es resolver la posible confusión que se puede dar entre el núcleo (Linux) y gran parte de las herramientas básicas del resto del sistema operativo (GNU), y del sistema completo que usualmente se usa como combinación de GNU, Linux, y otros proyectos de software. Además, también se espera que con el uso del nombre GNU, se dé al proyecto GNU el reconocimiento por haber creado las herramientas de sistema imprescindibles para ser un sistema operativo compatible con UNIX, y se destaque la cualidad de estar compuesto sólo por software libre. La primera distribución que incluyó el GNU en su nombre fue Yggdrasyl en 1992, donde aparecía como Linux/GNU/X. La FSF denominó a este sistema "Linux" hasta al menos junio de 1994 y recién a partir de enero de 1995 empezó a llamarlo "GNU/Linux" (también GNU+Linux y lignux, términos que han caído en desuso a instancias del propio Stallman).









Algoritmos FIFO, SSF, SCAN, CSCAN, LOOK

  • ALGORITMO FIFO (Primero en llegar, primero en salir)

Este algoritmo da servicio a las solicitudes de acceso a disco de la cola según el orden de llegada. Esta planificación hará uso de una cola tipo FIFO (First In, First Out – Primero en entrar, primero en salir).
 
  • ALGORITMO SSF (Shortest Seek First Primero la búsqueda más cercana)

  • De todas las peticiones atiende primero aquella que se encuentra mas cerca de la petición que se está procesando. Es decir, atiende primero la petición que requiere el menor movimiento de la cabeza de lectura/escritura desde su posición actual.
     
    • ALGORITMO SCAN o ALGORITMO DEL ASCENSOR

    Este algoritmo recibe el nombre de algoritmo del ascensor porque se comporta como tal: va atendiendo las solicitudes que va encontrando en el sentido en el que se van desplazando las cabezas de lectura/escritura por el disco. Cuando no hay más solicitudes en ese sentido, o se llega al extremo, se invierte el sentido para hacer lo mismo otra vez pero yendo hacia el otro lado. Por tanto, en este algoritmo es necesario tener un bit que indique el sentido del movimiento.
    SCAN: las cabezas se mueven de un extremo a otro del disco, atendiendo las solicitudes que se van encontrando.

    Tiempos de servicio acotados, y más variables en los extremos que en el centro.
     

    ALGORITMO C-SCAN O ALGORITMO SCAN CIRCULAR

    En esta planificación la cabeza se mueve de un extremo del disco al otro, atendiendo las solicitudes que va encontrando, pero al llegar al extremo opuesto, regresa de inmediato al otro sin servir ninguna solicitud.

    Las cabezas se mueven del primer cilindro al último atendiendo solicitudes, y retornan al principio. ƒƒTiempos de espera más uniformes. El retorno consume relativamente poco tiempo, porque se hace sin paradas.

    Este algoritmo es el nombre de la conducta de un edificio de ascensor , donde el ascensor sigue viajando en su dirección actual (arriba o abajo) hasta que esté vacía, parando sólo para que las personas fuera o para recoger nuevos individuos dirigen en la misma dirección.

    Desde la perspectiva de la aplicación, la unidad mantiene una memoria intermedia de espera de lectura / escritura peticiones, junto con el correspondiente cilindro de serie de la solicitud.Números de cilindro inferior indican que el cilindro está más cerca del husillo, y los números más altos indican el cilindro está más lejos.

    Cuando llega una nueva solicitud mientras la unidad está en reposo, el movimiento inicial del brazo / cabeza será en la dirección del cilindro donde se almacenan los datos, ya sea en o fuera .Como solicitudes adicionales llegan, las solicitudes son atendidas solamente en la dirección actual del movimiento del brazo hasta que el brazo alcanza el borde del disco. Cuando esto sucede, la dirección del brazo invierte, y las peticiones que permanecían en la dirección opuesta son atendidos, y así sucesivamente.
     

     

    DISPOSITIVOS 

     
    - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf

    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fabricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo.
    - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf

    Existen tres tipos de dispositivos según su función:
    Dispositivos de entrada: tienen la tarea de introducir información, órdenes, comandos e instrucciones para que la computadora lo procese con el sistema operativo.
    Entre los más conocidos se encuentran:
    El Teclado.
    El Mouse.
    El Escáner.

    Dispositivos de salida: son los que se encargan de procesar los resultados de salida de los procesos de datos. Y mostrarlos al usuario.
    Entre ellos tenemos: El Monitor.
    La Impresora.

    Dispositivos de Bloques: Estos periféricos almacenan información en bloques de tamaño fijo, estos van desde 128 bytes hasta 1024 bytes.
    Entren los dispositivos de bloques se encuentran:
    Unidad de lectora de CD –ROM.
    Disco Duro.
    Disco IDEcd-rom
    Administración de Dispositivos
    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fábricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo.
    La administración de dispositivos comprende 4 funciones básicas:
    • Controlar el estado de cada dispositivo (como unidades de cinta, unidades de disco, impresoras, grafica dotes y terminales)
    • Utilizar políticas preestablecidas para determinar qué proceso obtendrá un dispositivo y durante cuánto tiempo.
    • Asignar los dispositivos. (A los procesos).
    • Desasignarlos en dos niveles: en el nivel de procesos cuando se ejecute un comando de entrada/salida (Temporal) y cuando el dispositivo se libera de manera permanente (Permanentemente).
    Los dispositivos periféricos del sistema generalmente entran en una de tres clases:
    • Dedicados
    • Compartidos
    • Virtuales
    Dispositivos Dedicados: Se asignan sólo a un trabajo a la vez y le sirven todo el tiempo que está activo.
     Dispositivos Compartidos: Estos se puede asignar a más de un proceso/Varios procesos a un mismo dispositivo. De forma que se puede compartir cualquier dispositivo de almacenamiento de acceso directo al entrelazar sus solicitudes.
    Dispositivos Virtuales: Son una combinación de los dispositivos dedicados y los compartidos; son dispositivos dedicados transformados en dispositivos compartidos. Además, estos son dispositivos que se pueden compartir por red, y utilizan Spooling, el cual genera una cola de espera en un buffer para el dispostivo. Ejemplo: Impresoras
    DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS (DEVICE DRIVERS)
    DISPOSITIVOS DE E/S: se pueden agrupar en tres grandes grupos: Dispositivos de interfaz de usuario. Dispositivos de almacenamiento. Dispositivos de comunicaciones.
    DISPOSITIVOS DE INTERFAZ DE USUARIO Se llama así a los dispositivos que permiten la comunicación entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratón, teclado, etc.) como para salida (impresoras, pantalla, etc.).
    DISPOSITIVOS DE ALMACENAMIENTO Se usan para proporcionar almacenamiento no volátil de datos y memoria. Su función primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la CPU.
    DISPOSITIVOS DE COMUNICACIONES Permiten conectar a la computadora con otras computadoras a través de una red. Los dos tipos de dispositivos más importantes de esta clase son los módem, para comunicación vía red telefónica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de área local.
    MANEJADORES DE DISPOSITIVOS (DEVICE DRIVERS) Las unidades de E/S tienen una parte mecánica que es el propio dispositivo y otra electrónica que se llama controlador del dispositivo y actúa como intermediario entre la computadora y los dispositivos. Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) El controlador convierte el flujo de bits en serie transmitidos desde un dispositivo en un bloque de bytes para la CPU y realizar las correcciones de los errores que se puedan cometer en la transmisión. El controlador dispone de tres capas funcionales: La interfaz del bus, el controlador y la interfaz del dispositivo.
    PUERTOS DE E/S El controlador contiene una serie de registros llamados puertos de entrada/salida. Estos registros son accesibles (pueden ser leídos y modificados) mediante la ejecución de instrucciones máquina. Las operaciones de E/S se realizan a través de la carga y lectura de estos registros. Casi todo controlador dispone de los siguientes registros: Registros De Estado Registro De Ordenes Buffer
    REGISTROS DE ESTADO Indica la situación actual del dispositivo (ocupado o desocupado).
    REGISTROS DE ÓRDENES En este registro se escribe la operación de E/S que se desea que realice el dispositivo. BUFFER Un buffer es un almacén de información.
    El buffer del controlador se utiliza para guardar temporalmente los datos implicados en una operación de E/S. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases: Adaptadores de audio (tarjetas de sonido). Dispositivos de comunicación (infrarrojos, módems, etc). Dispositivos de visualización; pantallas (displays). Teclados. Ratón (“mouse” y otros señaladores gráficos). Dispositivos multimedia. Dispositivos de Red. Impresoras. Almacenamiento
    MECANISMOS Y FUNCIONES DE LOS MANEJADORES DE DISPOSITIVOS (DEVICE DRIVERS)
    Los manejadores de dispositivo (device drivers) se comunican directamente con los dispositivos o sus controladores o canales. Los manejadores de dispositivos tienen la función de comenzar las operaciones de E/S en un dispositivo y procesar la terminación de una solicitud de E/S.
    El sistema de archivos básico trata con bloques de datos que son los que se intercambian con los discos o cintas. Ubica estos bloques en el almacenamiento secundario o en el intermedio en memoria principal.
    El supervisor básico de E/s se responsabiliza de iniciar y terminar la E/s con archivos. Selecciona el dispositivo donde se realizará la E/S, según el archivo seleccionado. Planifica los accesos a disco y cinta, asigna los buffers de E/S y reserva la memoria secundaria.
    .
    ESTRUCTURAS DE DATOS PARA MANEJO DE DISPOSITIVOS.
    Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operación de E/S, el sistema operativo prepara dicha operación y bloquea al proceso hasta que se recibe una interrupción del controlador del dispositivo indicando que la operación está completa. En el manejo de los dispositivos de E/S es necesario, introducir dos nuevos términos: BUFFERING (uso de memoria intermedia). Trata de mantener ocupados tanto la CPU como los dispositivos de E/S. Los datos se leen y se almacenan en un buffer, una vez que los datos se han leído y la CPU va a iniciar inmediatamente la operación con ellos, el dispositivo de entrada es instruido para iniciar inmediatamente la siguiente lectura. La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU esté libre para el siguiente grupo de datos, el dispositivo de entrada habrá terminado de leerlos. La CPU podrá empezar el proceso de los últimos datos leídos, mientras el dispositivo de entrada iniciará la lectura de los datos siguientes. SPOOLING Esta forma de procesamiento se denomina spooling, utiliza el disco como un buffer muy grande para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los ficheros hasta que los dispositivos de salida sean capaces de aceptarlos. Es una característica utilizada en la mayoría de los sistemas operativos.
    OPERACIONES DE ENTRADA/SALIDA Tanto en la E/S programada como la basada en interrupciones, la CPU debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos. Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory Access).
    ACCESO DIRECTO A MEMORIA (DMA) Este dispositivo permite la transferencia directa de información entre la memoria y los periféricos o viceversa, sin requerir intervención alguna por parte del procesador. • El DMA necesita:
    1. Registro: almacena la dirección de memoria desde donde se produce la transferencia.
    2. Registro contador: guarda la longitud de bloque a transferir.
    3. Bits: indica si la operación es de lectura o escritura.
    4. Bloque de control: controla el funcionamiento del sistema.


    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fabricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo. - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf
    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fabricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo. - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf
    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fabricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo. - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf
    La administración de dispositivos, es la administración de todos los recursos del hardware disponible, tanto los estándar que viene de fabricas, como las que se van agregando para hacer más poderosa o actualizar la PC. Todo dispositivo necesita presentarse al sistema operativo, agregando un pequeño programa que permite su uso. Este hp programa es llamado controlador. De aquí el controlador es un software que utiliza el sistema operativo para especificar de hardware, como puede ser cualquier dispositivo. - See more at: http://systope.blogspot.com/2012/06/administracion-de-dispositivos.html#sthash.E1fwbw1f.dpuf

    sábado, 9 de mayo de 2015



    SEMAFOROS

    Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento (en el que se ejecutarán varios procesos concurrentemente).

    Los semáforos se emplean para permitir el acceso a diferentes partes de programas (llamados secciones críticas) donde se manipulan variables o recursos que deben ser accedidos de forma especial. Según el valor con que son inicializados se permiten a más o menos procesos utilizar el recurso de forma simultánea.
    Un tipo simple de semáforo es el binario, que puede tomar solamente los valores 0 y 1. Se inicializan en 1 y son usados cuando sólo un proceso puede acceder a un recurso a la vez. Son esencialmente lo mismo que los mutex. Cuando el recurso está disponible, un proceso accede y decrementa el valor del semáforo con la operación P. El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementarlo tenga que esperar. Cuando el proceso que decrementó el semáforo realiza una operación V, algún proceso que estaba esperando comienza a utilizar el recurso.
    Para hacer que dos procesos se ejecuten en una secuencia predeterminada puede usarse un semáforo inicializado en 0. El proceso que debe ejecutar primero en la secuencia realiza la operación V sobre el semáforo antes del código que debe ser ejecutado después del otro proceso. Éste ejecuta la operación P. Si el segundo proceso en la secuencia es programado para ejecutar antes que el otro, al hacer P dormirá hasta que el primer proceso de la secuencia pase por su operación V. Este modo de uso se denomina señalación (signaling), y se usa para que un proceso o hilo de ejecución le haga saber a otro que algo ha sucedido.

    Los semáforos pueden ser usados para diferentes propósitos, entre ellos:
    • Implementar cierres de exclusión mutua o locks
    • Barreras
    • Permitir a un máximo de N threads (hilos) acceder a un recurso, inicializando el semáforo en N
    • Notificación. Inicializando el semáforo en 0 puede usarse para comunicación entre threads sobre la disponibilidad de un recurso
     Tipos de semaforos
    • Dependiendo de la función que cumple el semáforo, vamos a diferenciar los siguientes tipos:
    • Semáforo de exclusión mutua, inicialmente su contador vale 1 y permite que haya un único proceso simultáneamente dentro de la sección crítica.
    • Semáforo contador, permiten llevar la cuenta del número de unidades de recurso compartido disponible, que va desde 0 hasta N.
    • Semáforo de espera, generalmente se emplea para forzar que un proceso pase a estado bloqueado hasta que se cumpla la condición que le permite ejecutarse. Por lo general, el contador vale 0 inicialmente, no obstante, podría tener un valor distinto de cero.
    Paralelismo
    El paralelismo se basa en la informática, es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios cálculos simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en el paralelo.
    Aplicaciones
    El empleo de la computación paralela se convierte cada día en mas grandes y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática para hacer plegamientos de proteínas, hasta economía para hacer simulaciones en matemáticas financieras.

    Aplicaciones comerciales. Las aplicaciones para sistemas en paralelo se están expandiendo al ganar impulso el mercado de aplicaciones comerciales estratégicas y entrar en sus fases iniciales el mercado de servidores video.

    Proceso de rendimiento global. Tanto los usuarios técnicos como los comerciales están evaluando los sistemas en paralelo como motores de rendimiento global o throughput.

    Escalamiento para gestión de capacidad. En el mercado comercial, los usuarios están explorando el paralelismo como una forma de ofrecer una gestión de la capacidad optimizada y de bajo riesgo.

    - Impulso del software. Los vendedores de software están comenzando a mostrar un mayor interés en desarrollar aplicaciones paralelas como consecuencia de que cierto número de vendedores de hardware importantes están suministrando productos de proceso en paralelo o han anunciado estrategias para penetrar en este mercado.
     
    Tipos de paralelismo Informática
    1.       Nivel bit
    Se basa en el tamaño de la palabra que es capaz de manejar el procesador:
    8 bits
    16 bits
    32 bits
    64 bits .....
    Mientras más grande el tamaño de la palabra menos instrucciones ejecuta el procesador para realizar una operación determinada.
    2. Nivel instrucción
    Mecanismos de la arquitectura son utilizados entonces para ejecutar este tipo de paralelismo:
    • Pipelining
    • Superscalar
    • Ejecución desordenada
    • Ejecución especulativa
    • Renombramiento de registros
    • Predicción de precedencia de memoria
    • Predicción de ramificaciones del flujo

    3. Nivel de Datos
    Este tipo de paralelismo se enfoca en la distribución de los datos entre varios procesadores.
    Se conoce también como paralelismo a nivel de lazos (loop-level paralelism).
    4. Nivel tarea
    •  En este caso un programa paralelo que ejecuta cálculos distintos sobre el mismo conjunto de datos o sobre datos diferentes.  
    • El paralelismo funcional generalmente no escala con el tamaño del problema. 
    •   El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento. Teniendo en cuenta las generaciones de procesadores y sus características.
    Obtener distintos resultados a partir de un mismo conjunto de datos, por ejemplo:
    • Para un matriz hallar
    •  El determinante
    •  La traspuesta
    •  La inversa
      
    Desventajas
    ·         Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos.
    ·         Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.
    Ventajas
    Ø  Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad
    Ø  Ventajas competitiva, parvee una mejora de los tiempos para la producción de nuevos productos y servicios.
    Ø  Colaboración y flexibilidad operacional
    Clacificación de los sistemas paralelos  en los sistemas informáticos
    SISD es un término que se refiere a una arquitectura en la que un sólo procesador, un uniprocesador, ejecuta un sólo flujo de instrucciones, para operar sobre datos almacenados en una única memoria.  
    SIMD: es una técnica empleada para conseguir paralelismo a nivel de datos. 
    MISD: es un tipo de arquitectura de computación paralela donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos. Las arquitecturas segmentadas pertenecen a este tipo, aunque un purista podría decir que los datos son diferentes después de ser procesados por cada etapa en el pipeline.
    MIMD: es una técnica empleada para lograr paralelismo . Las máquinas que usan MIMD tienen un número de procesadores que funcionan asíncronos e independientemente. En cualquier momento, cualquier procesador puede ejecutar diferentes instrucciones sobre distintos datos.
    FLUJO DE CONTROL: Las instrucciones se van ejecutando según el orden en el que se encuentran en memoria.
    FLUJO DE DATOS: el flujo de ejecución es conducido por los datos; una instrucción será ejecutada cuando los operandos estén disponibles.
    REDUCCION: la ejecución se realiza por demanda, una instrucción será ejecutada cuando otra necesite sus resultados. Son una clase de las de flujo de datos.


    BLOQUEO MUTUO

    En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.
    Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.
    En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.

    Representación de Bloqueos Mutuos usando grafos

    El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un cuadrado y el recurso, por un círculo. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.
    En la figura del ejemplo, se pueden ver dos procesos diferentes (A y B), cada uno con un recurso diferente asignado (R1 y R2). En este ejemplo clásico de bloqueo mutuo, es fácilmente visible la condición de espera circular en la que los procesos se encuentran, donde cada uno solicita un recurso que está asignado a otro proceso.



    Condiciones necesarias

    También conocidas como condiciones de Coffman por su primera descripción en 1971 en un artículo escrito por E. G. Coffman.
    Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes entre ellas.
    Sean los procesos P0, P1, ..., Pn y los recursos R0, R1, ..., Rm:
    • Condición de exclusión mutua: existencia de al menos de un recurso compartido por los procesos, al cual sólo puede acceder uno simultáneamente.
    • Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso.
    • Condición de no expropiación: los recursos no pueden ser expropiados por los procesos, es decir, los recursos sólo podrán ser liberados voluntariamente por sus propietarios.
    • Condición de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de procesos original),P0 está esperando un recurso adquirido por P1, que está esperando un recurso adquirido por P2,... ,que está esperando un recurso adquirido por Pm, que está esperando un recurso adquirido por P0. Esta condición implica la condición de retención y espera.

     Evitando bloqueos mutuos

    Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
    • Algoritmo del banquero, introducido por Dijkstra.
    • Algoritmo de grafo de asignación de recursos.
    • Algoritmo de Seguridad.
    • Algoritmo de solicitud de recursos.

     Hilo de ejecución

    un hilo de ejecución o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.
    La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.
    Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.
    Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente.
    Lo que es propio de cada hilo es el contador de programa, la pila de ejecución y el estado de la CPU (incluyendo el valor de los registros).
    El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo. Cuando el proceso finaliza, todos sus hilos de ejecución también han terminado. Asimismo en el momento en el que todos los hilos de ejecución finalizan, el proceso no existe más y todos sus recursos son liberados.

    Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde de manera más ágil a la interacción con el usuario. También pueden ser utilizados por una aplicación servidora para dar servicio a múltiples clientes.

    Diferencias entre hilos y procesos

    Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente independientes, llevan bastante información de estados, e interactúan sólo a través de mecanismos de comunicación dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa. En muchos de los sistemas operativos que dan facilidades a los hilos, es más rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenómeno se debe a que los hilos comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes, no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecución (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecución. En los hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi despreciable.

    Funcionalidad de los hilos

    Al igual que los procesos, los hilos poseen un estado de ejecución y pueden sincronizarse entre ellos para evitar problemas de compartición de recursos. Generalmente, cada hilo tiene una tarea especifica y determinada, como forma de aumentar la eficiencia del uso del procesador.

    Estados de un hilo

    Los principales estados de los hilos son: Ejecución, Listo y Bloqueado. No tiene sentido asociar estados de suspensión de hilos ya que es un concepto de proceso. En todo caso, si un proceso está expulsado de la memoria principal (RAM), todos sus hilos deberán estarlo ya que todos comparten el espacio de direcciones del proceso.

    Cambio de estados

    • Creación: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instrucción y los argumentos del nuevo hilo. El hilo tendrá su propio contexto y su propio espacio de la columna, y pasará al final de los Listos.
    • Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podrá pasar a ejecutar otro hilo que esté al principio de los Listos mientras el anterior permanece bloqueado.
    • Desbloqueo: Cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa a la final de los Listos.
    • Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas.

    Sincronización de hilos

    Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos.
    Una ventaja de la programación multihilo es que los programas operan con mayor velocidad en sistemas de computadores con múltiples CPUs (sistemas multiprocesador o a través de grupo de máquinas) ya que los hilos del programa se prestan verdaderamente para la ejecución concurrente. En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros también están usando), y otros comportamientos no intuitivos. Los hilos generalmente requieren reunirse para procesar los datos en el orden correcto. Es posible que los hilos requieran de operaciones atómicas para impedir que los datos comunes sean cambiados o leídos mientras estén siendo modificados, para lo que usualmente se utilizan los semáforos. El descuido de esto puede generar interbloqueo.

    Formas de multihilos

    Los sistemas operativos generalmente implementan hilos de dos maneras:
    • Multihilo apropiativo: permite al sistema operativo determinar cuándo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenómeno conocido como inversión de prioridades y otros problemas.
    • Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detención, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

    Implementaciones

    Hay dos grandes categorías en la implementación de hilos:
    • Hilos a nivel de usuario.
    • Hilos a nivel de kernel.
    También conocidos como ULT (user level thread) y KLT (kernel level thread)

    Hilos a nivel de usuario (ULT)

    En una aplicación ULT pura, todo el trabajo de gestión de hilos lo realiza la aplicación y el núcleo o kernel no es consciente de la existencia de hilos. Es posible programar una aplicación como multihilo mediante una biblioteca de hilos. La misma contiene el código para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la ejecución de hilos y para salvar y restaurar el contexto de los hilos.
    Todas las operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. El kernel continua planificando el proceso como una unidad y asignándole un único estado (Listo, bloqueado, etc.).

    Ventajas de los ULT

    • El intercambio de los hilos no necesita los privilegios del modo kernel, porque todas las estructuras de datos están en el espacio de direcciones de usuario de un mismo proceso. Por lo tanto, el proceso no debe cambiar a modo kernel para gestionar hilos. Se evita la sobrecarga de cambio de modo y con esto el sobrecoste u overhead.
    • Se puede realizar una planificación específica. Dependiendo de que aplicación sea, se puede decidir por una u otra planificación según sus ventajas.
    • Los ULT pueden ejecutar en cualquier sistema operativo. La biblioteca de hilos es un conjunto compartido.

    Desventajas de los ULT

    • En la mayoría de los sistemas operativos las llamadas al sistema (System calls) son bloqueantes. Cuando un hilo realiza una llamada al sistema, se bloquea el mismo y también el resto de los hilos del proceso.
    • En una estrategia ULT pura, una aplicación multihilo no puede aprovechar las ventajas de los multiprocesadores. El núcleo asigna un solo proceso a un solo procesador, ya que como el núcleo no interviene, ve al conjunto de hilos como un solo proceso.
    Una solución al bloqueo mediante a llamadas al sistema es usando la técnica de jacketing, que es convertir una llamada bloqueante en no bloqueante; esto se consigue comprobando previamente si la llamada al sistema bloqueará el proceso o no. Si es así, se bloquea el hilo y se pasa el control a otro hilo. Más adelante se reactiva el hilo bloqueado y se vuelve a realizar la comprobación, hasta que se pueda realizar la llamada al sistema sin que el proceso completo sea bloqueado.

    Hilos a nivel de núcleo (KLT)

    En una aplicación KLT pura, todo el trabajo de gestión de hilos lo realiza el kernel. En el área de la aplicación no hay código de gestión de hilos, únicamente un API (interfaz de programas de aplicación) para la gestión de hilos en el núcleo. Windows 2000, Linux y OS/2 utilizan este método. Linux utiliza un método muy particular en el que no hace diferencia entre procesos e hilos. Para Linux, si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata como hilos, y lógicamente son manejados por el kernel.

    Ventajas de los KLT

    • El kernel puede planificar simultáneamente múltiples hilos del mismo proceso en múltiples procesadores.
    • Si se bloquea un hilo, puede planificar otro del mismo proceso.
    • Las propias funciones del kernel pueden ser multihilo.

    Desventajas de los KLT

    • El paso de control de un hilo a otro precisa de un cambio de modo.

    Combinaciones ULT y KLT

    Algunas distribuciones de linux y derivados de UNIX ofrecen la combinación de ULTss y KLT, como Solaris, Ubuntu y Fedora.
    La creación de hilos, así como la mayor parte de la planificación y sincronización de los hilos de una aplicación se realiza por completo en el espacio de usuario. Los múltiples ULT de una sola aplicación se asocian con varios KLT. El programador puede ajustar el número de KLT para cada aplicación y máquina para obtener el mejor resultado global.
    En un método combinado, los múltiples hilos de una aplicación se pueden ejecutar en paralelo en múltiples procesadores y las llamadas al sistema bloqueadoras no necesitan bloquear todo el proceso.


    ALGORITMOS DE PLANIFICACION

    Primero llegado, primero servido (FCFS)


    Este algoritmo da servicio a las solicitudes de acceso a disco de la cola según el orden de llegada. Esta planificación hará uso de una cola tipo FIFO (First In, First Out – Primero en entrar, primero en salir).

    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.




    El esquema más simple de planificación es el Primero llegado, primero servido (First come, first serve, FCFS). Este es un mecanismo cooperativo, con la mínima lógica posible: Cada proceso se ejecuta en el órden en que fue llegando, y hasta que suelta el control. El despachador es muy simple, básicamente una cola FIFO. 
     
    ./img/ditaa/planif_fcfs.png
    Round Robin

    Round-robin es un método para seleccionar todos los elementos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Robin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades parejas.
    Una forma sencilla de entender el Round-robin es imaginar una secuencia para "tomar turnos". En operaciones computacionales, un método para ejecutar diferentes procesos de manera concurrente, para la utilización equitativa de los recursos del equipo, es limitando cada proceso a un pequeño período (quantum), y luego suspendiendo este proceso para dar oportunidad a otro proceso y así sucesivamente. A esto se le denomina comúnmente como Planificación Round-Robin.


    El esquema round Robin busca dar una relación de respuesta buena tanto para procesos largos como para los cortos. La principal diferencia entre la ronda y FCFS es que en este caso sí emplearemos multitarea preventiva: A cada proceso que esté en la lista de procesos listos lo atenderemos por un sólo quantum (q). Si un proceso no ha terminado de ejecutar al final de su quantum, será interrumpido y puesto al final de la lista de procesos listos, para que espere a su turno nuevamente. Los procesos que nos entreguen los planificadores a mediano o largo plazo se agregarán también al final de esta lista.
    Con la misma tabla de procesos que encontramos en el caso anterior (y, por ahora, ignorando la sobrecarga administrativa provocada por los cambios de contexto), obtendríamos los siguientes resultados: 

     ./img/ditaa/planif_rr1.png
    El round Robin puede ser ajustada modificando la duración de q. Conforme incrementamos q, la ronda tiende a convertirse en FCFS — Si cada quantum es arbitrariamente grande, todo proceso terminará su ejecución dentro de su quantum; por otro lado, conforme decrece q, mayor frecuencia de cambios de contexto tendremos; esto llevaría a una mayor ilusión de tener un procesador dedicado por parte de cada uno de los procesos, dado que cada proceso sería incapaz de notar las ráfagas de atención que éste le da (avance rápido durante un periodo corto seguido de un periodo sin avance). Claro está, el procesador simulado sería cada vez más lento, dada la fuerte penalización que iría agregando la sobrecarga administrativa. 
    Si repetimos el análisis anterior bajo este mismo mecanismo, pero con un quantum de 4, obtendremos: 

    ./img/ditaa/planif_rr4.png 
    El proceso más corto (SPN) Shortest Process Next
    Esta es la versión no apropiativa del SPN, en la que el planificador siempre elige al proceso que le queda menos tiempo esperado de ejecución. Por lo tanto, el planificador debe disponer de una estimación del tiempo de proceso para poder llevar a cabo la función de selección, existiendo el riesgo de inanición para procesos largos.
    El algoritmo SRT no presenta el sesgo favorable a los procesos largos del FCFS. Al contrario que el turno rotatorio, este algoritmo es más eficiente debido a que no se produce overhead muy frecuente debido a que las interrupciones no son producidos por el reloj del sistema. Por el contrario, se deben tener en cuenta los tiempos de servicio transcurridos, lo que contribuye a la sobrecarga. El SRT también debería producir tiempos de retorno mejores que los del SPN, puesto que los trabajos cortos reciben una atención inmediata y preferente a los trabajos largos.