Sistemas Operativos

CAPÍTULO I (Materia: SISTEMAS OPERATIVOS)

El Sistema Operativo

Un sistema operativo es aquel programa que se ejecuta continuamente en la computadora (usualmente denominado kernel), siendo todo lo demás programas del sistema y programas de aplicación.

El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación por parte de los distintos usuarios, por ello se suele decir que es la interfaz de comunicación entre el hardware y el usuario.

Existen sistemas operativos para mainframes, y para computadoras personales (PCs), los sistemas operativos para mainframe están diseñados principalmente para optimizar el uso del hardware, los sistemas operativos para PCs soportan desde complejos juegos hasta aplicaciones de negocios.

Punto de vista del usuario.

Desde el punto de vista de un monousuario un sistema debe ser rápido y fácil de manejar, se dice en este caso que el sistema operativo presta cierta atención al rendimiento y ninguna a la gestión de recursos.

En el caso de un mainframe, el sistema operativo se diseña para maximizar la utilización de recursos, asegurar que todo el tiempo de CPU, memoria y E/S disponibles se usen de forma eficiente, y que cada usuario disponga sólo de la parte equitativa que le corresponde.

Cuando se usan estaciones de trabajo conectadas a redes de otras estaciones de trabajo y servidores, el sistema operativo se diseña parar llegar a un compromiso entre la usabilidad individual y la utilización de recursos.

Vista del usuario.

Desde el punto de vista de la computadora, el OS está más íntimamente relacionado con el hardware. En este contexto podemos ver un sistema operativo como un asignador de recursos.

Un sistema operativo es un programa de control, y como tal gestiona la ejecución de los programas de usuario para evitar errores y mejorar el uso de la computadora. Tiene que ver recíprocamente con el funcionamiento y control de los dispositivos de E/S.

Organizacion de una computadora

Funcionamiento.- Para el funcionamiento de una computadora se necesita un programa de arranque, éste normalmente se almacena en la memoria ROM (read only memory), o en la memoria EEPROM (electrically erasable programable read-only-memory), y se conoce con el término de firmware, dentro del hardware de la computadora. Se inician todos los aspectos del sistema, desde los registros de la CPU hasta las controladoras de dispositivos y el contenido de la memoria. El programa de arranque debe saber cómo cargar el sistema operativo e iniciar la ejecución de dicho sistema, para conseguir este objetivo, el programa de arranque debe localizar y cargar en memoria el Kernel(núcleo) del sistema opertarivo. Después el sistema operativo comienza ejecutando el primer proceso, por ejemplo “init”, y espera a que se produzca algún suceso.

La ocurrencia de un suceso normalmente se indica mediante una interrupción.

Interrupción.- Da paso a un suceso, puede ser de hardware o de software. Cuando se interrumpe a la CPU, deja lo que está haciendo e inmediatamente transfiere la ejecución a una posición fijada.

Estructura de almacenamiento.- Los programas de computadora deben hallarse en la memoria principal (RAM - Random Access Memory) para ser ejecutados. El procesador puede acceder directamente a ésta.

La memoria principal es un dispositivo de almacenamiento volátil que pierde su contenido cuando se quita la alimentación (corriente eléctrica), normalmente la memoria principal es demasiado pequeña como para almacenar todos los programas y datos necesarios de forma permanente.

Por esta razón la mayor parte de los sistemas informáticos proporcionan almacenamiento secundario como una extensión de la memoria principal, aquí se almacenan grandes cantidades de datos de forma permanente.

Estructura de E/S.- Las unidades de E/S están conectadas con el procesador y la memoria principal, y cada una de ellas controla uno o más dispositivos periféricos.

Los dispositivos de E/S se pueden clasificar en:

De interacción con e usuario.-Permiten la comunicación con el usuario del computador.

De interacción con máquinas: Permite la comunicación con elementos del equipo.

De comunicación.- Permite la comunicación con dispositivos remotos.

Arquitectura de un sistema informático

Sistemas Multiprocesador.- En un sistema multiprocesador hay una CPU principal capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo instrucciones de los procesos de usuario.

Sistemas Multiprocesador.- Disponen de dos o más procesadores que se comunicación entre sí, compartiendo el bus de la computadora y en ocasiones el reloj, la memoria y los dispositivos periféricos.

Sistemas en clúster.- Es otro tipo de sistema multiprocesador. La diferencia con los sistemas multiprocesamiento es que éstos están formados por dos más sistemas individuales acoplados.

Las computadoras en clúster comparten el almacenamiento y se conectan entre sí a través de una LAN.

Normalmente la conexión en clúster se usa para proporcionar un servicio con alta disponibilidad, es decir un servicio que funcionará incluso si uno o más sistemas del clúster fallaran.

Estructura de un Sistema Operativo

Uno de los aspectos más importantes de los sistemas operativos es la capacidad para multi-programar.

Multiprogramación.- Permite organizar la ejecución de los trabajos a fin de mejorar el aprovechamiento de la CPU. Por ejemplo, al solicitar un trabajo E/S, mientras ésta se realiza se selecciona otro trabajo para ejecutarlo.

Sistemas Multitarea (tiempo compartido).- Pueden ejecutar varias tareas simultáneamente (o cuasi-simultáneamente), aprovechando los tiempos ociosos de la CPU. Alternan entre varias tareas, las que se procesan en partes durante pequeños intervalos de tiempo (quantums).

Operaciones Del So

Los SO están controlados mediante interrupciones, para cada interrupción diferentes códigos del sistema operativo determinan que acción hay que llevar a cabo.

Se debe asegurar que un error que se produzca en un programa de usuario solo genere problemas en el programa que se estuviera ejecutando.

Un SO diseñado apropiadamente debe asegurar que un programa incorrecto no pueda dar lugar a que otros programas se ejecuten incorrectamente.

Operación en modo dual

Para asegurar la correcta ejecución del sistema operativo, tenemos que poder distinguir entre la ejecución del código del sistema operativo y del código definido por el usuario.

Necesitamos dos modos diferentes de operación: modo usuario y modo kernel. Un bit denominado bit de modo, se añade al hardware de la computadora para indicar el modo actual kernel o usuario, también podemos diferenciar entre una tarea que se ejecute en nombre de sistema operativo y otra que se ejecute en nombre de usuario.

El modo dual de operaciones nos proporciona los medios para proteger el sistema operativo de los usuarios que puedan causar errores, y también para proteger a los usuarios de los errores de otros usuarios. Esta protección se consigue designando algunas de las instrucciones de máquina que pueden causar daño como instrucciones privilegiadas. Cuando se ejecuta una llamada al sistema, el hardware la trata como una interrupción software.

Temporizador

Se debe utilizar un temporizador para evitar que un único trabajo monopolice el uso del sistema. El temporizador se actualiza al comienzo de cada trabajo. Si el tiempo termina, se produce una interrupción, y el control vuelve al monitor.

Gestión de Procesos

Un programa no hace nada a menos que una CPU ejecute sus instrucciones. Un proceso necesita para llevar a cabo su tarea ciertos recursos, entre los que incluyen tiempo de CPU, memoria, archivos y dispositivos de E/S. Un proceso es un programa en ejecución puede ser un procesador de textos que ejecuta el usuario.

Un proceso es una unidad de trabajo en un sistema. Cada sistema consta de una colección de procesos, siendo algunos de ellos procesos del sistema operativo y el resto procesos de usuario. Todos estos procesos pueden, potencialmente, ejecutarse de forma concurrente.

Gestión de memoria.- Es uno de los elementos principales que caracterizan un proceso es la memoria que utiliza, la asignación de memoria es exclusiva para el proceso que la requiere, es decir, ésta es lógicamente separada de cualquier otro proceso del sistema.

La gestión de memoria es una tarea, cuya responsabilidad recae en el SO.

Consiste básicamente en cargar y descargar procesos en memoria principal para que sean ejecutados, para ello el SO gestiona lo que se conoce como Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas.

Gestión de Almacenamiento

Gestión del sistema de archivos

La mayoría de los sistemas operativos tienen sistemas de archivos. Se usan para almacenar datos de manera segura. Están compuestos por particiones, archivos y directorios, y opcionalmente también de archivos de enlace (accesos directos en Windows). Los sistemas de archivos se deben montar, aunque esto lo hace automáticamente el sistema operativo al iniciar la sesión. Algunos SO de red permiten montar los sistemas de archivos de otras computadoras en directorios comunes.

Entre las estructuras que puede tener tenemos: estructura arbórea, grafo acíclico y grafo general. La estructura arbórea es la más sencilla de implementar. Internamente el disco está dividido en bloques físicos (por ej: 512 bytes) y bloques lógicos o clusters (por ej: 4KB). Es bueno que los clúster sean múltiplo del tamaño de los bloques físicos, por razones de eficiencia.

En la estructura de un sistema de archivos tenemos que considerar que, al igual que con la memoria principal, siempre se produce algo de fragmentación, que puede ser interna (dentro de cada clúster o bloque) o externa (entre archivos).

Cada nodo de la estructura se llama archivo o directorio, y tiene un nombre lógico que está directamente relacionado con una posición física dentro del disco. Es responsabilidad de este sistema recuperar los datos dado un nombre de archivo y su ruta de acceso. Esto lo hace usando tablas o punteros.

Por ejemplo el archivo c:materiasoperativos.doc está vinculado con la ubicación 227E-5294-FF12-437D dentro del disco.

Gestión del almacenamiento masivo

La mayoría de sistemas informáticos modernos usan discos como principal medio de almacenamiento en línea, tanto para los programas como para los datos. Por tanto, la apropiada gestión del almacenamiento en disco tiene una importancia crucial en un sistema informático. El sistema operativo es responsable de las siguientes actividades:

Gestión del espacio libre

Asignación del espacio de almacenamiento

Planificación del disco

El almacenamiento terciario no es crucial para el rendimiento del sistema, aunque también es necesario gestionarlo, algunos SO realizan esta tarea, mientras que otros dejan el control de almacenamiento terciario a los programas de aplicación.

Sistemas de E/S

Uno de los propósitos de un sistema operativo es ocultar al usuario las peculiaridades de los dispositivos hardware específico. El subsistema de E/S consta de varios componentes:

Un componente de gestión de memoria que incluye almacenamiento en búffer, gestión de caché y gestión de colas.

Una interfaz general para controladores de dispositivo.

Controladores para dispositivos hardware específicos.

Almacenamiento en Cache

Para amortiguar la lentitud del almacenamiento en dispositivos E/S se usa un almacenamiento de soporte que evita al procesador solicitar byte por byte, y en vez de ello se leen muchos datos con una sola solicitud. Son los buffers y la caché. Los buffers se usan tanto para lectura y escritura de disco, para impresora, monitor, para placa de red, etc. SU misión es agilizar la transferencia emitiendo una sola petición e interrupción para un conjunto de datos. Los tipos de buffers son:

· buffer sencillo

· buffer doble

· circular

La función de la caché es similar a la de los buffers, pero está implementada con circuitos de muy alta velocidad y tienen algunas ventajas tecnológicas como la búsqueda por asociación (que busca en muchas entradas al mismo tiempo).

Nos puede ser muy útil para mejorar el rendimiento poner partes del sistema de archivos en la caché, y cualesquier otros datos que usemos con frecuencia.

Protección y Seguridad

Un mecanismo que controla el acceso de procesos y usuarios a los recursos definidos por un sistema informático. Los mecanismos de protección pueden mejorar la fiabilidad, permitiendo detectar errores en las interfaces entre componentes del sistema.

Un sistema con protección tiene la capacidad de distinguir entre un uso autorizado y no autorizado. Un sistema puede tener la protección adecuada pero estar expuesto a fallos y permitir accesos inapropiados.

Es responsabilidad de los mecanismos de seguridad defender al sistema frente a ataques internos y externos y los ataques incluyen virus, gusanos, denegación de servicios, etc.

La protección y la seguridad requieren que el sistema pueda distinguir a todos sus usuarios y grupos de usuarios.

Sistemas Distribuidos

Un sistema distribuido es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene. Acceder a un recurso compartido incrementa la velocidad de cálculo, la funcionalidad, la disponibilidad de los datos y la fiabilidad. Algunos sistemas operativos generalizan el acceso a red como una forma de acceso a archivo, manteniendo los detalles de la conexión de red en el controlador de dispositivos de la interfaz de red.

Un sistema operativo distribuido proporciona un entorno menos autónomo. Los diferentes sistemas operativos se comunican de modo que se crea la ilusión de que un único sistema operativo controla la red.

Sistemas de Propósito General

Sistemas embebidos en tiempo real

Computadoras predominantes actualmente (motores de automóviles, robots para fabricación), tienen tareas específicas. Los sistemas en los que operan son primitivos, disponen de interfaz limitada. Por lo general se encargan de monitorizar y gestionar dispositivos hardware.

Los sistemas embebidos casi siempre ejecutan sistemas operativos en tiempo real. Las computadoras con sistemas embebidos pueden ser:

• De propósito general que ejecuta sistemas operativos estándar, con aplicaciones de propósito especial para implementar la funcionalidad.

• Sistemas de hardware con sistemas operativos embebidos de propósito especial que sólo proporcionan la funcionalidad deseada.

Dispositivos de hardware con circuitos integrados específicos de la aplicación, que realizan sus tareas sin ningún SO.

Sistemas Multimedia

La mayor parte de los sistemas operativos están diseñados para gestionar datos convencionales, como archivos de texto, programas. Surgen con la incorporación de datos multimedia.

Las aplicaciones multimedia incluyen archivos de audio, películas de DVD, videoconferencia, webcats.

Sistemas de Mano

Los sistemas de mano incluyen PDA, tales como los Palm muchos de los cuales usan sistemas operativos embebidos de propósito especial. Los desarrolladores de aplicaciones y sistemas de mano se enfrentan a muchos retos, la mayoría de ellos debidos al tamaño.

Los dispositivos tienen muy poca memoria, procesadores lentos y pantallas de visualización pequeñas. Usan SO embebidos de propósito especial. Los problemas básicos que enfrentan son la poca memoria, los procesadores lentos y la E/S.

Entornos informáticos

Sistema informático tradicional

Actualmente proporciona más formas de acceso a estos entornos informáticos. La tecnología web se está extendiendo Portales Servicios, acceso a internet, con cómodos.

Hoy en día, los sistemas tradicionales de tiempo compartido no son habituales. Las mismas técnicas de planificación se usan todavía en estaciones de trabajo y servidores, aunque frecuentemente los procesos son todos propiedad del mismo usuario.

Estructuras De Sistemas Operativos

El sistema operativo presta ciertos servicios a los programas y a los usuarios de dichos programas. Estos servicios del sistema operativo se proporcionan para comodidad del programador, con el fin de facilitar la tarea de desarrollo.

Un cierto conjunto de servicios del sistema operativo proporciona funciones que resultan útiles al usuario:

Interfaz de usuario.- tipos existentes es la interfaz de línea de comandos, que usa comandos de texto, otro tipo es la interfaz de proceso por lotes. Habitualmente se utiliza una interfaz grafica de usuario.

Ejecución de programas.- Para ejecutar un programa es preciso realizar una serie de tareas. Las instrucciones y los datos deben cargarse en memoria principal, los dispositivos de E/S y los ficheros deben iniciarse, y deben prepararse otros recursos. El sistema operativo proporciona todo eso al usuario.

Operaciones de E/S.- Cada dispositivo de E/S necesita su conjunto particular de instrucciones y señales de control para poder operar. El sistema operativo se encarga de esos detalles para que el programador pueda pensar simplemente en términos de lecturas y escrituras.

Manipulación del sistema de archivos.- los programas necesitan ejecutar algunas operaciones sobre archivos y directorios como pueden ser: leer, escribir, crear, borrar, buscar; estos incluyen mecanismos de gestión de permisos para conceder o denegar el acceso a los archivos o directorios.

Comunicaciones.- los procesos necesitan intercambiar información con otros procesos, estas comunicaciones se pueden realizar a través de memoria compartida o por paso de mensajes.

Detección de errores.- El SO necesita detectar los posibles errores que surjan ya sea en el Hardware del procesador y de memoria, en un dispositivo de E/S o en programas de usuario.

Otros servicios orientados a garantizar la eficiencia del propio sistema entre los cuales están:

Asignación de recursos.- El SO gestiona muchos tipos diferentes de recursos; algunos pueden disponer de código software especial que gestione su asignación, otros pueden tener código que gestione de forma general.

Responsabilidad.- Conviene hacer un seguimiento de que usuarios emplean que clase de recursos de la computadora y en que cantidad.

Protección y seguridad.- La protección es asegurar que todos los accesos a los recursos del sistema estén controlados y garantizar la seguridad del sistema frente a posibles intrusos, mediante una contraseña.

Interfaz de usuario del sistema operativo

Interprete de comandos

Estos se conoce también como Shell, la función principal es obtener y ejecutar el siguiente comando especificado por el usuario. Algunos SO lo incluyen en el Kernel otros lo tratan como un programa especial que se ejecuta cuando se inicia un trabajo o una sesión.

Interfaz grafica de usuario

Los usuarios emplean un sistema de ventanas y menús controlables por medio del ratón.

Permite que el usuario interactue con el Sistema Operativo a través de una interfaz

Llamadas al sistema

Las llamadas al sistema proporcionan una interfaz con la que poder invocar los servicios que el sistema operativo ofrece. Es la única forma en la que un programa puede solicitar operaciones al SO.

Programas del sistema

Los programas del sistema proporcionan un cómodo entorno para desarrollar y ejecutar programas, pueden dividirse en las siguientes categorías.

Administración de Archivos: Estos programas crean, borran, copian, cambian de nombre, imprimen etc. De forma general manipulan archivos.

Información de Estado: Algunos programas solicitan al sistema la fecha, la hora, cantidad de memoria, espacio en disco, usuario.

Modificación de Archivos: editores de texto para crear y modificar el contenido de los archivos almacenados en el disco o en otros dispositivos.

Soporte de Lenguajes de Programación: Se proporcionan compiladores, ensambladores, depuradores en intérpretes para los lenguajes de programación (C, C++, Java).

Carga y Ejecución de Programas: los programas compilados deben cargarse en memoria para poder ejecutarse.

Comunicaciones: Proporcionan los mecanismos para crear conexiones virtuales entre procesos, usuarios y computadores.

Diseño e implementación del sistema operativo

Objetivos del diseño

Objetivos de Usuario: los usuarios desean ciertas propiedades como: sistema sea cómodo, fácil de utilizar y aprender, fiable, seguro y rápido.

Objetivos del Sistema: el sistema debería ser fácil de diseñar, implementar y mantener, flexible, fiable, libre de errores y eficiente.

Mecanismos y políticas

Un principio importante es el de separar las políticas de los mecanismos. Los mecanismos determinan como hacer algo, las políticas determinan que hacer.

La separación de políticas y mecanismos es importante por cuestiones de flexibilidad.

Implementación

Tradicionalmente los SO tenían que escribirse en lenguaje ensamblador hoy en día se escriben en Lenguaje de Alto Nivel como C o C++.

La Ventajas de usar un lenguaje de alto nivel:

El código puede escribirse más rápido, es más compacto y es más fácil de entender y depurar.

Las posibles desventajas de implementar un SO es un lenguaje de alto nivel se reducen a los requisitos de velocidad y de espacio de almacenamiento.

Estructura del sistema operativo

Un método habitual consiste en dividir la tarea en componentes más pequeños, en lugar de tener un Sistema Monolítico. Cada uno de estos módulos debe ser una parte bien definida del sistema, con entradas, salidas y funciones cuidadosamente especificadas.

Estructura simple

Proporciona la máxima funcionalidad en el menor espacio posible, por lo que no fue dividido en módulos de forma cuidadosa.

El kernel se divide en una serie de interfaces y controladores de dispositivo, que se han ido añadiendo y ampliando a lo largo de los años. El kernel proporciona el sistema de archivos, los mecanismos de planificación de la CPU, la funcionalidad de gestión de memoria y otras funciones del sistema operativo, a través de las llamadas al sistema.

Estructura en niveles

El sistema operativo se divide en una serie de capas, El nivel inferior (nivel 0) es le Hardware y el nivel superior (Nivel N) es la interfaz de usuario, también puede mantener un control mayor sobre la computadora y sobre las aplicaciones que hacen uso de dicha computadora.

Los niveles se seleccionan de manera que cada uno usa sus funciones y servicios de los niveles inferiores. Un nivel no necesita saber cómo se implementan las operaciones solo necesitan saber que hacen esas operaciones. Un problema con la implementación por niveles es que tiende a ser menos eficientes a ser menos que otros tipos de implementación

Microkernels

Normalmente los microkernels proporcionan una gestión de memoria y de procesos mínima, además un mecanismo de comunicaciones.

Su función principal es proporcionar un mecanismo de comunicaciones entre el programa cliente y los distintos servicios que se ejecutan en el espacio de usuario. Otra ventaja del microkernel es la facilidad para ampliar el sistema operativo, proporciona mas seguridad y fiabilidad, dado que la mayor parte de los servicios se ejecutan como procesos de usuario, en lugar de procesos de kernel.

Los microkernel pueden tener un rendimiento peor que otras soluciones debido a la carga de procesamiento adicional impuesta por las funciones del sistema.

Módulos

La mejor metodología es usar técnicas de programación orientada a objetos para crear un kernel modular, Tal estrategia utiliza módulos que se cargan dinámicamente y resulta habitual en las implementaciones modernas de UNIX.

Maquinas Virtuales

La idea fundamental que subyace a una maquina virtual es la de abstraer el hardware de la computadora formando varios entornos de ejecución diferentes, creando así la ilusión de que cada entorno de ejecución esta operando en su propia computadora privada.

Compartir el mismo hardware pero poder operar con entornos de ejecución diferentes (distintos SO) de forma concurrente ya que este proporcionan una interfaz idéntica a la del propio SO.

Implementación

Las acciones que dan lugar a la transferencia del modo usuario al modo kernel en una maquina real también tienen que hacer que se pase del modo usuario virtual al modo kernel virtual en una maquina virtual.

Tal transferencia puede conseguirse cuando se hace una llamada al sistema por parte de un programa que se este ejecutando en una maquina virtual en modo usuario virtual, se produce una transferencia al monitor de la maquina virtual en la maquina real.

Beneficios

Existe una protección completa de los diversos recursos del sistema. Cada maquina esta completamente aislada de las demás, por lo que no existen problemas de protección. Un sistema de maquina virtual es un medio perfecto para la investigación y el desarrollo de SO.

Ejemplos

VMware

Es una popular aplicación comercial que abstrae el hardware de Intel creando una serie de maquinas virtuales aisladas. Permite al sistema Host ejecutar de forma concurrente varios sistemas operativos huésped diferente como máquinas virtuales independientes.

Máquina Virtual Java:

La JVM es una especificación de una computadora abstracta, puede implementarse por software encima de un SO host (Windows, Linux, Mac OS X) o como parte de un explorador Web.


Resumen de cap1 y 2 : POR Esteban Chamba Jiménez

Libro: Fundamentos de sistemas operativos <SILBERSCHAT – GALVIN - GAGNE>

Otras Referencias

STALLINGS Organización y arquitectura de computadores.

PUENTE P. Andrés G. Universidad del BíoBío

http://www.alipso.com/monografias4/Sist_operativos/




Por: 21-04-2009 por rcvalladolid | Categorías asociadas: DIFERENCIAS PLANIFICACION DE S.O., Uncategorized

Roberto Valladolid

Planificación en el sistema operativo Solaris.

El sistema operativo Solaris realiza una planificación de hebras basada en prioridades, definiendo cuatro clases para la planificación:

1.       Tiempo real

2.       Sistema

3.       Tiempo compartido

4.       Interactiva.

La clase de planificación predeterminada para un proceso es la de tiempo compartido. La política de planificación para el tiempo compartido modifica dinámicamente las prioridades y asigna cuantos de tiempo de diferente duración usando colas multinivel realimentadas.

De manera predeterminada, existe una relación inversa entre las prioridades y los cuantos de tiempo. Cuando más alta sea la prioridad, más pequeño será el cuanto de tiempo y cuando menor sea la prioridad, más larga será la franja.

Los procesos interactivos suelen tener la prioridad más alta, los procesos limitados por al CPU tienen la prioridad más baja. Esta política de planificación proporciona un buen tiempo de respuesta para los procesos interactivos y una buena tasa de procesamiento para la clase de tiempo compartido.

Planificación del sistema Windows Xp

La planificación de Windows Xp es también utilizando hebras con un algoritmo de planificación apropiativo basado en prioridades. Windows Xp asegura que siempre se ejecute la hebra de prioridad más alta, la parte del Kernel de Windows xp que gestiona la planificación se denomina despachador.

 

El despachador usa un esquema de prioridades de 32 niveles para determinar el orden de ejecución de las hebras. Las prioridades se dividen en dos clases: la clase variables contiene hebras cuyas prioridades van de 1 a 15, mientras que la clase de tiempo real contiene hebras con prioridades comprendidas en el rango del 16 a 31.

 

El despachador usa una cola distinta para cada prioridad de planificación y recorre el conjunto de colas desde la más alta a la más baja, hasta que encuentre una hebra que esté preparada para ejecutarse.

 

Existe una relación entre las prioridades numéricas del Kernel de Windows XP y la API Win32. La API WIn32 identifica varias clases de prioridades a las que un proceso puede pertenecer. Las prioridades de todas las clases, excepto REALTIME_PRIORITY_CLASS, son de tipo variable, lo que significa lo que la prioridad de una hebra que pertenezca a una clase puede cambiar.

 

Dentro de cada clase  de prioridad hay una prioridad relativa. Los valores para la prioridad relativa son:

 

-          TIME_CRITICAL

-          HIGHEST

-          ABROVE_NORMAL

-          BELOW_NORMAL

-          LOWEST

-          IDLE

 

Planificación en el sistema operativo Linux.

 

Linux está basado en la planificación tradicional de Unix  añadiendo 2 clases de prioridad para procesos de tiempo real flexibles. Las tres clases de prioridad de Linux son las siguientes:

 

SCHED_FIFO: hilos de tiempo real con planificación FIFO.

 

 SCHED_RR: hilos de tiempo real con planificación por turno rotatorio.

 

 SCHED_OTHER: hilos que no son de tiempo real y otros.

 

Dentro de cada clase se utilizan múltiples prioridades, siendo las prioridades de las clases de tiempo real mayores que la de la clase SCHED_OTHER. Para los hilos FIFO, se aplican las siguientes reglas:

 

1.      El sistema no interrumpe la ejecución de un hilo FIFO, exepto en los siguientes casos:

 

a)   Pasa a estar listo otro hilo FIFO de mayor prioridad.

 

b)   El hilo FIFO en ejecución  se bloquea a la espera de un evento, como una E/S.

 

c)   El hilo FIFO en ejecución abandona el procesador como resultado de la ejecución de la primitiva sched_yield.

 

2. Cuando se interrumpe un hilo FIFO en ejecución, pasa a la cola asociada a su prioridad.

 

3.Cuando un hilo FIFO pasa a listo y tiene mayor prioridad que el hilo que está en ejecución, se expulsa al hilo en ejecución y pasa a ejecutar el hilo de mayor prioridad. Si más de un hilo tiene esta mayor prioridad, se escoge al que lleva más tiempo esperado.

 

La política SCHED_RR es similar a la SCHED_FIFO, excepto por el uso de un cuanto de tiempo asociada a cada hilo. Cuando un hilo SCHED_RR ha consumido su cuanto de tiempo, pasa a suspendido y se escoge un hilo de tiempo real con una prioridad igual o mayor.

La figura 10.9 ilustra las diferencias entre la planificación FIFO y RR. Supóngase un programa de cuatro hilos con tres prioridades relativas asignadas según la figura 10.9. Supóngase que todos los hilos que esperan están listos para ejecutarse cuando termina o se bloquea el hilo actual y no hay ningún hilo de mayor prioridad despierto mientras se está ejecutando un hilo. La figura 10.9 muestra el orden de ejecución si todos los hilos son de la clase SCHED_FIFO. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, aunque los hilos B y C tienen la misma prioridad, se ejecuta el hilo B porque lleva mas tiempo esperando que C. El hilo B se ejecuta hasta que termina o se bloquea; entonces, pasa a ejecutar el hilo C hasta que termina o se bloquea. Por último, se ejecuta el hilo A.

 

 

linux_planificacion

Como muestra el orden de ejecución si todos los hilos son de la clase SCHED_RR. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, los hilos B y C comparten el tiempo porque ambos tienen la misma prioridad. Por último, se ejecuta el hilo A.

La última clase de prioridad es SCHED_OTHER. Un hilo de esta clase ejecuta sólo si no hay hilos de tiempo real listos para ser ejecutados. Dentro de la clase SCHED_OTHER, se utiliza el algoritmo tradicional de Unix.




Por: 15-04-2009 por jdjapon | Categorías asociadas: DIFERENCIAS PLANIFICACION DE S.O., Opinion Conferencia

La comunicación a través de la web

El World Wide Web (WWW) es un sistema hipermedia distribuido, accesible a través de Internet, que permite navegar con facilidad por una gran cantidad de información. Las empresas están utilizando el Web e Internet para comunicarse con clientes y proveedores mediante la publicación de contenidos tales como información técnicas de sus productos, de sus servicios y publicidad. La educación, o mejor dicho, las instituciones cuyo negocio es la educación, también son proveedores de servicios por lo que pueden utilizar esta tecnología para comunicarse con sus “clientes” y “proveedores” mediante la publicación de contenidos especiales, que en esencia son contenidos didácticos. En este trabajo se expone la posibilidad de Internet y el WWW como herramienta de enseñanza y aprendizaje, y qué alternativas plantean algunos estudiosos del tema.

La comunicación a través de la lectura

Una persona puede establecer grades opciones de aprender a comunicarse, de esta manera a través de la lectura puede desarrollar sus grandes dotes de cómo pararse al frente de un publico y transmitir sus ideales.

Se puede transmitir e incentivar la educación por medio de el internet, blog que ilustren modelos de aprendizaje para las personas y alumnos, que incentiven a apreciar la carrera que sigan, tener un conocimiento mas a fondo de lo 0que van a realizar a un futuro y hacer quedar muy en alto lo que ocurrió en el pasado

La comunicacion para el futuro

futuro_informatico

Panasonic Art Nouveau es el nombre de este teléfono de diseño alocado cuyos números -sensibles al tacto, debo aclarar- pareciera que flotaran. Haciendo uso de la tecnología wireless, el dispositivo no tiene pantalla y posee luces LEDs.


panasonic-art-nouveau1




Por: 14-04-2009 por acabrera | Categorías asociadas: Analisis Planificacion SO, DIFERENCIAS PLANIFICACION DE S.O.

PLANIFICACION EN LINUX
Él kernel  de Linux proporciona un algoritmo de planificación que se ejecuta a velocidad constante, independientemente del número de tareas del sistema.
El planificador de Linux es un algoritmo basado en prioridades y apropiativo, con dos rangos: un rango de tiempo real de 0 a 99 y un valor normal de 100 y 140, estos dos rangos se asignan a un esquema de prioridades global, en el que los valores numéricamente más bajos indican las prioridades más altas.
Linux asigna a las tareas de prioridad más alta cuantos de tiempo más largos y a las tareas de prioridad más baja cuánto tiempo más cortos, una tarea se considera elegible para ejecutarse en la CPU cuando todavía le quede tiempo de su cuanto de tiempo, cuando una tarea ha agotado su cuanto de tiempo, se considera caducada y no puede volver a ejecutarse hasta que las otras tareas hayan agotado sus respectivos cuantos de tiempo.
El kernel mantiene una lista de todas las tareas ejecutables en una cola de ejecución, cada procesador mantiene su propia cola de ejecución y la planifica de forma independiente, cada cola de ejecución contiene dos matrices de prioridades, denominadas matriz activa y caducada. La activa contiene toda las tareas que todavía disponen de tiempo en su cuanto de tiempo, mientras que la matriz caducada contiene toda las tareas caducadas.  El planificador elige la tarea de la matriz activa con la prioridad más alta para su ejecución en la CPU.
Linux implementa la planificación en tiempo real, a las tareas en tiempo real se les asignan prioridades estáticas, las restantes tareas tienen prioridades dinámicas que se basan en valores normales, más o menos cinco.
PLANIFICACION EN SOLARIS
Solaris usa una planificación de hebras basada en prioridades, definiendo cuatro tipos para planificación. Estos tipos son por orden de prioridad:
-    Tiempo real
-    Sistema
-    Tiempo compartido
-    Interactiva
Dentro de cada clase hay diferentes prioridades y diferentes algoritmos de planificación. La clase de planificación predeterminada para un proceso es la de tiempo compartido. La política de planificación para tiempo compartido modifica dinámicamente las prioridades y asigna cuartos de tiempo de diferente duración usando colas multinivel alimentadas, existe una relación inversa entre las prioridades en los cuantos de tiempo, cuanto más alta sea la prioridad más pequeño será el cuanto de tiempo, y cuanto más menor sea la prioridad más larga será la franja.
Los procesos interactivos suelen tener la prioridad más alta; los procesos limitados por la CPU tienen la prioridad más baja. La clase interactiva usa la misma política de planificación que la clase de tiempo compartido, pero proporciona a las aplicaciones con interfaz de ventanas una prioridad más alta, para aumentar el rendimiento.

PLANIFICACION EN WINDOWS XP
Windows XP planifica las hebras  utilizando un algoritmo de planificación apropiativo basado en prioridades. El planificador de Windows XP asegura que siempre se ejecute la hebra de prioridad más alta. La parte del kernel de Windows XP que gestiona la planificación se denomina despachador. Una hebra seleccionada para ejecutarse por despachador se ejecutará hasta que sea desalojada por una hebra de prioridad más alta hasta que termine, hasta que su cuanto de tiempo concluya todo hasta que invoque una llamada bloqueante al sistema. Si una hebra en tiempo real de prioridad más alta pasa al estado preparado mientras está ejecutando una hebra de prioridad más baja, esta última será desalojada, este desalojo proporciona a la hebra de tiempo real un acceso preferencial a la CPU en el momento en que la hebra necesite dicho acceso.
El despachador usa un esquema de prioridades de 32 niveles para determinar el orden de la ejecución de las hebras. Las prioridades se divide en dos clases: la clase variable contiene hebras cuyas prioridades van de uno a 15, mientras que la clase de tiempo real contiene hebras con prioridades comprendidas en el rango de 16 a 31. Existe una hebra que se ejecuta comprendidas 0 y se emplea para la gestión de memoria.
El despachador usa una cola distinta para cada prioridad de planificación y recorre el conjunto de colas desde la más alta a la más baja, hasta que encuentra una hebra que esté preparada para ejecutarse. Si no encuentra una hebra preparada, el despachador ejecuta una hebra especial denominada hebra inactiva.




Por: 14-04-2009 por mariuximaza | Categorías asociadas: Analisis Planificacion SO, Capitulo 5

SOLARIS
Esta planificación se basa en hebras de PRIORIDADES de ejecución para cada proceso,
utilizando cuatro clases que son:

- Tiempo Real

- Sistema

- Tiempo Compartido

- Interactiva

Teniendo asi cada proceso interactivo un proceso mas alto y los procesos de tiempo
real una prioridad mas baja.

WINDOWS XP
Planificacion basada en hebras de Prioridad Apropiativa;trabaja como gestor de la planificación
el despachador asegurando que siempre se ejecute la hebra con la mayor prioridad; teniendo un esquema
de prioridades de 32 niveles.
Sin embargo Windows al igual que Solaris maneja dos clases que son la CLASE
VARIABLE encargada de prioridades del nivel 1 al 15 y la CLASE DE TIEMPO REAL que
se encarga de las prioridades del nivel 16 al 31; y cin una hebra con prioridad
para la gestión de memoria. Este sistema usa una hebra distinta para cada prioridad de
planificación y recorre las colas de la prioridad más alta a la más baja hasta que
encuentre una hebra preparada para ejecutarla; si este caso no se llagara a realizar se ejecuta
una denominada hebra inactiva.

LINUX
Este sistema operativo para la planificación del kernel proporciona un algoritmo
de planificación que se ejecuta a velocidad constante independientemente del número de
tareas en el sistema. Proporcionando de esta forma una partición equitativa de tareas
soportando tareas interactivas.




Por: 09-04-2009 por fabricioms | Categorías asociadas: Capitulo 5, DIFERENCIAS PLANIFICACION DE S.O., Paralelo "B"

Planificación en Solaris

Es una planificación en hebras basada en prioridades, definiendo cuatro clases de planificación.

1.     Tiempo real

2.    Sistema

3.    Tiempo compartido

4.    Interactiva

Dentro de cada clase hay diferentes prioridades y diferentes algoritmos de planificación. La planificación predeterminada para un proceso de tiempo compartido, la política de planificación para los procesos de tiempo compartido modifica dinámicamente las prioridades y asigna cuantos de tiempo de diferente duración. Cuan más larga sea la prioridad más pequeña será el cuanto de tiempo, y cuanto menor sea la prioridad las larga será el cuanto de tiempo.

Los procesaos interactivos tienen las mas alta prioridad mientras que los procesos limitados por la CPU tienes la prioridad más baja.

Solaris usa la clase sistema para ejecutar procesos del kernel una vez escogido las prioridad dl proceso del sistema no cambia, esta clase se reserva para los procesos del kernel (los procesos del usuario que usan el kernel no entra aquí).

Un proceso de tiempo real tienen una más alta prioridad de sesta forma aseguran le respuesta del sistema dentro de un periodo limitado de tiempo.

Planificación en Windows XP

Utiliza algoritmos de planificación apreciativo basado en prioridades, la parte de kernel de Windows que gestiona la planificación se denomina despachador. Cuando el despachador ha seleccionado una hebra se ejecuta hasta que llegue otra con mayor prioridad o hasta que el cuanto de tiempo termine o hasta que invoque una llamada bloqueante al sistema.

El despachador usa un esquema de planificación de 23 niveles para determinar el orden de ejecución. Las hebras se dividen en dos clases: la clase variable contiene las hebras cuyas prioridades van desde 1 a 15, y las hebras de tiempo real que vas de 16 a 31. Hay hebras que se ejecutan en prioridad 0 y que se emplean para gestión de memoria.

Planificación en Linux

Ante de la versión 2.5 Linux ejecutaba una variante del algoritmos de UNIX, con la nueva versión se optimizo el planificador y ahora el kernel proporciona un algoritmo de planificación que se ejecuta en una velocidad constante  independiente del numero de tareas del sistema.

El panificador de Linux es un algoritmo basado en prioridad y apropiativo, con dos rangos distintos de prioridades, un rango de tiempo real 0 a 99 y un valor normal comprendido entre 100 a 140 donde los valore más bajos indican una prioridad más alta. Linux da la prioridad más alta cuando el tiempo es más largo y la prioridad más baja cuando el tiempo es más corto.




Por: 07-04-2009 por sgaguilera | Categorías asociadas: Capitulo 5, Paralelo "B"

Sistemas Operativos
PLANIFICACION DE LA CPU

Los mecanismos de planificación de la CPU son la base de los sistemas operativos multiprogramados. Mediante la comunicación de CPU entre distintos procesos, el sistema operativo puede hacer que la computadora sea más productiva.
En un sistema de un único procesador, sólo puede ejecutarse un proceso cada vez; cualquier otro procesador tendrá que esperar hasta que la CPU quede libre y pueda volver a planificarse. El objetivo de la multiprogramación es tener continuamente varios procesos en ejecución, con el fin de maximizar el uso de la CPU. La idea es bastante simple: un proceso se ejecuta hasta que tenga que esperar, normalmente porque es necesario completar alguna solicitud de E/S.
La planificación de la CPU es la tarea de seleccionar un proceso en espera de la cola de procesos preparados y asignarle la CPU. EL despachador asigna la CPU al proceso seleccionado.
La planificación FCFS (firts – come, firts – serverd; primero en llegar, primero en ser servido) es el algoritmo de planificación más sencillo, pero puede dar lugar a que los procesos de corta duración tengan que esperar a que se ejecuten otros procesos de duración mucho más grande.
Probablemente, el algoritmo de planificación SJF(shortest-job-first, primeo el trabajo más corto) es el óptimo, proporcionando el tiempo medio de espera más corto. Sin embargo, la implementación del mecanismo de planificación SJF es complicada, ya que resulta difícil predecir la duración de la siguiente ráfaga de CPU. El algoritmo SJF es un caso especial del algoritmo de planificación general mediante planificación por prioridades, que simplemente asigna la CPU al proceso con prioridad más alta. Tanto la planificación por prioridades como planificación SFJ presentan el problema de que los procesos pueden sufrir bloques indefinidos. El envejecimiento es una técnica que trata, precisamente, de evitar los bloques indefinidos.
Las planificación por turnos es más apropiada para los sistemas de tiempo compartido (interactivos). La planificación por turnos asigna la CPU al primer proceso de la cola de procesos preparados durante q unidades de tiempo, donde q es el cuando de tiempo. Después de q unidades de tiempo, si el procesado no ha cedido la CPU, es desalojado y se coloca al final de la cola de procesos preparados. El problema principal es la selección del tamaño del cuanto de tiempo. Si es demasiado largo, la planificación por turnos degenera en una planificación FCFS; si el cuanto de tiempo es demasiado corto, la carga de trabajo adicional asociada a las aéreas de planificación (debido a los cambios de contexto) se hace excesiva.
El algoritmo FCFS es cooperativo; el algoritmo de planificación por turnos es apropiativo. Los algoritmos de planificación por prioridades y SFJ pueden ser apropiativo o sin desalojo (cooperativos).
Los algoritmos de colas multinivel permiten utilizar diferentes  algoritmos para las diferentes clases de procesos. El modelo más común incluye una cola de procesos interactivos de primer plano que usa la planificación por turnos y una cola de procesos por lotes de segundo plano usa la planificación FCFS. Las colas multinivel realimentadas permiten pasar los procesos de una cola a otra.
Muchos sistemas informáticos actuales soportan múltiples procesadores y permiten que cada procesador se auto-planifique de forma independiente. Normalmente, cada procesador mantiene su propia cola privada de procesos (o hebras), disponibles para ejecutarse. Entre los problemas relativos a la planificación de sistemas multiprocesador se encuentran los mecanismos de afinidad al procesador y de equilibrio de carga.
Los sistemas operativos que soportan hebras en el nivel de Kernel deben planificar hebras, no procesos, para que se ejecuten en los `procesadores disponibles; éste es el caso de Solaris y Windows XP. Ambos sistemas planifican las hebras usando algoritmos de planificación basados en prioridades y apropiativos, incluyendo soporte para hebras en tiempo real. El planificador de procesos Linux usa unos algoritmos basado en prioridades, también  con soporte para tiempo real. Los algoritmos de planificación para estos tres sistemas operativos normalmente favorecen los procesos interactivos frente a los procesos por lotes y los procesos limitados por la CPU.
La amplia variedad de algoritmos de planificación obligada a emplear métodos para elegir entre ellos. Los métodos analíticos usan el análisis matemático para determinar el rendimiento de un algoritmo. Los métodos de simulación determinan el rendimiento imitando el algoritmo de planificación sobre una muestra “representativa” de procesos y calculando el rendimiento resultante.

Por: Santiago Aguilera
Fecha: 04/07/2009

Bibliografía
SILBERSCHATZ GALVIN GAGNE – Fundamentos de Sistemas Operativos
Séptima Edición
Capitulo 5 - PLANIFICACION DE LA CPU




Por: 07-04-2009 por acabrera | Categorías asociadas: Capitulo 5

PLANIFICACIÓN DE LA CPU
Los mecanismos de planificación de la CPU son la base de los sistemas operativos multiprogramados.  Mediante la planificación de la CPU entre distintos procesos, el sistema operativo puede hacer que la computadora sea más productiva.
CICLO DE RÁFAGAS DE LAS CPU Y DE E/S.
La ejecución de un proceso consta de un ciclo de ejecución en la CPU, seguido de una espera DE E/S, los procesos alternan entre estos dos estados. La ejecución del proceso comienza con una ráfaga de CPU, que va seguida de una ráfaga de E/S, a la cual sigue otra ráfaga de CPU luego otra ráfaga de E/S, finalmente, la ráfaga final de CPU concluye con una solicitud del sistema para terminar la ejecución.
PLANIFICACION APROPIATIVA.- Se debe tomar decisiones sobre planificación cuando:
- Un proceso cambia del estado de ejecución al estado de espera
- Un proceso cambia del estado de ejecución al estado preparado
- Un proceso cambia del estado de espera al estado preparado
- Un proceso termina
PLANIFICADOR de la CPU.- Lleva a cabo el proceso de que cuando la CPU quede inactiva, el sistema operativo debe seleccionar uno de los procesos que se encuentran en la cola de procesos preparados para la ejecución.
DESPACHADOR.-  Módulo que proporciona el control de la CPU a los procesos seleccionados por el planificador a corto plazo, esto implica:
- Cambio de contexto
- Cambio al modo  usuario
- Salto a la posición correcta dentro del programa y usuario para reiniciar dicho programa
CRITERIOS DE PLANIFICACIÓN
UTILIZACIÓN DE LA CPU.-
Se define en el rango comprendido entre el 0 y el 100 por cien, mantener a la CPU ocupada.
TASA DE PROCESAMIENTO.- Número de procesos que se completan por unidad de tiempo
TIEMPO DE EJECUCIÓN.- El intervalo que va desde el instante en que se ordena la ejecución de un proceso hasta el instante en que se completa.
TIEMPO DE ESPERA.- Es la suma de los periodos invertidos en esperar en la cola de procesos preparados.
TIEMPO DE RESPUESTA.- Tiempo que el proceso tarda en empezar a responder, no es el tiempo que tarda en enviar a la salida toda la información de respuesta
ALGORITMOS DE PLANIFICACIÓN.- Tienen por objeto maximizar la utilización de la CPU y la tasa de procesamiento y minimizar el tiempo de ejecución, tiempo de espera y tiempo de respuesta.
PLANIFICACIÓN FCFS (primero en llegar, primero en ser servido).- asigna primero la CPU al proceso de primero la solicite, cuando un proceso entre la cola su PCB se coloca al final de la cola, cuando la CPU queda libre asesina al proceso que esté al principio de la cola
 PLANIFICACIÓN SJF (selección del trabajo más corto).- Cuando la CPU está disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más corta, si es siguiente ráfaga de CPU de los procesos o iguales, se usa la planificación FCFS para romper el empate.
PLANIFICACIÓN POR PRIORIDADES.-  El algoritmo SJF es un caso especial del algoritmo de planificación por prioridades, la CPU se asigna al proceso que tenga la prioridad más alta, para la cual se asocia el proceso con un número entero
PLANIFICACIÓN POR TURNOS.- Se añade la técnica de desalojo para conmutar entre procesos, en este tipo de sistema se define una pequeña unidad de tiempo, denominada cuanto de tiempo, con franja temporal que se encuentra en el rango comprendido entre 10 y 100 ms, la cola de procesos preparados se trata como una cola circular que es recorrida por el planificador de la CPU asignando la CPU a cada proceso durante un intervalo de tiempo de esta 1 cuanto de tiempo.
PLANIFICACIÓN MEDIANTE COLAS MULTINIVEL.- Aquí se clasifica los procesos en grupos diferentes, es terrorismo divide la cola de procesos preparados en varias colas distintas los procesos asesinan permanentemente a una cola, cada cola tiene su propia algoritmo de planificación.
PLANIFICACIÓN MEDIANTE CON las MULTINIVEL REALIMENTADAS.- Este algoritmo permite mover un proceso de una cola a otra para separar los procesos en función de las características de sus ráfagas de CPU.
PLANIFICACIÓN DE SISTEMAS MULTIPROCESADOR
Si hay disponibles múltiples CPU se puede compartir la carga
MULTIPROCESAMIENTO ASIMÉTRICO.- Consiste en que toda las decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean gestionados por un microprocesador.
MULTIPROCESAMIENTO SIMÉTRICO.- Cada uno de los procesadores se auto-planifica.  Todos los procesos pueden estar en una cola como de procesos preparados, o cada procesador puede tener su propia cola privada de procesos preparados.
MECANISMOS MULTIHEBRA SIMÉTRICOS.- Permiten que varias hembras se ejecuten de forma concurrente, ya que proporcionan varios procesadores físicos.
PLANIFICACIÓN DE HEBRA
ÁMBITO DE CONTIENDA.-
Se refiere a que en los sistemas que implementan unos modelos muchos a uno y muchos a muchos, la biblioteca de hebras planifica las hebras de nivel de usuario para que se ejecute sobre un proceso LWP disponible.
EVALUACIÓN DE ALGORITMOS.- Podemos incluir algunos criterios para evaluar algoritmos.
- Maximizar la utilización de la CPU bajo la restricción de que el tiempo máximo de respuesta sea igual a un segundo.
- Maximizar la tasa de procesamiento de modo que el tiempo de ejecución sea proporcional al tiempo total de ejecución.
 MODELADO DETERMINISTA.- Es un tipo de valoración analítica, este método toma una carga de trabajo predeterminada concreta y decide el rendimiento de cada algoritmos para dicha carga de trabajo.
MODELOS DE COLAS.- El análisis de colas puede resultar útil para comparar los distintos algoritmos de planificación, aunque también tiene sus limitaciones.
SIMULACIONES.- Nos sirven para obtener una evaluación más precisa de los algoritmos de planificación, ejecutar las simulaciones requiere programar un modelo del sistema informático.
IMPLEMENTACIÓN.- La única forma completamente precisa de evaluar un algoritmo de planificación es codificándolo, incluyéndolo en el sistema operativo y viendo cómo funciona.  Este método introduce el algoritmo real en el sistema para su evolución bajo condiciones de operación reales.




Por: 07-04-2009 por rasisalima | Categorías asociadas: Capitulo 5, Paralelo "B"

Por: Ronald Sisalima

Capitulo 5

Los mecanismos de la planificación de la CPU son la base de los sistemas operativos multiprogramados mediante la conmutación de la CPU entre distintos procesos, se selecciona el mejor algoritmo para un sistema en particular.

5.1 Conceptos básicos

En un sistema de un único procesador, solo puede ejecutarse un proceso cada vez; cualquier otro proceso tendrá que esperar hasta que la CPU quede libre y pueda volver a planificarse. El objetivo de la multiprogramación es tener varios procesos en ejecución. Con el fin de maximizar el uso de la CPU.

Un proceso se ejecuta hasta que tenga que esperar, normalmente porque es necesario completar algunas solicitudes de E/S. Cuando un proceso tiene que esperar, el sistema operativo retira el uso de la CPU a ese proceso y se lo sede a este proceso.

5.1.1 Ciclo de ráfagas de CPU y de E/S

La adecuada planificación de la CPU depende de una apropiada observación de los procesos, la ejecución de un proceso consta de un ciclo de ejecución de la CPU. Seguido de una espera de E/S, los procesos alternan entre estos dos estados. La ejecución del proceso comienza con una ráfaga de CPU. Esta va seguido con una ráfaga de E/S, a la que le sigue otra ráfaga de CPU, luego otra ráfaga de E/S, etc. Finalmente la ráfaga de CPU constituye con una solicitud al sistema para terminar la ejecución.

5.1.2 Planificador de la CPU

Cuando la CPU queda inactiva, el sistema operativo debe seleccionar uno de los procesos que se encuentran en la cola de procesos preparados para ejecución. El planificador de corto plazo lleva a cabo esa planificación del proceso. El planificador elige uno de los procesos que están en memoria preparados para ejecutarse y así mismo la CPU a dicho proceso.

Para la cola de procesos se puede utilizar cualquier algoritmo de planificación de procesos no necesaria mente el FIFO.

5.2.3 Planificación apropiativa

Decisiones apropiadas sobre la planificación de la CPU:

1. Cuando un proceso cambia del estado de ejecución al estado de espera.

2. Cuando un proceso cambia del estado de ejecución al estado de preparado.

3. Cuando un procesos cambia del estado de espera al estado preparado

4. Cuando un proceso termina.

Cuando las decisiones de planificación sólo tienen lugar en las circunstancias 1 y 4 decimos que el esquema de planificación es sin desalojo o cooperativo; en caso contrario se trata de un esquema apropiativo. En la planificación si desalojo, una vez que se ha asignado la CPU a un proceso, el procesos se mantienen en la CPU hasta que el proceso es terminado bien por la terminación del proceso o bien por la conmutación al estado de espera.

5.1.4 Despachador

Es el módulo que proporciona el control de la CPU a los procesos seleccionados por el planificador a corto plazo. Esta función implica.

· Cambio de contexto

· Cambio al modo usuario

· Salto a la posición correcta dentro del programa de usuario para reiniciar dicho programa.

El despachador debe ser rápido. El tiempo que tarda en detener un proceso e iniciar la ejecución de otro se conoce como latencia de despacho.

5.2 Criterios de planificación

Los distintos algoritmos de planificación de la CPU tiene distintas propiedades y la elección de un algoritmo en particular puede favorecer una clase de procesos sobre otros. Se an sugerido algunos criterios para comparar los distintos algoritmos de planificación.

· Utilización de la CPU.- Deseamos mantener la CPU tan ocupada como sea posible.

· Tasa de procesamiento.- Cuando la CPU está ocupada, está realizando un tipo de trabajo. Un medidor de la cantidad de trabajo es el número de procesos que se completan por unidad de tiempo, y dicha medida se llama tasa de procesamiento.

· Tiempo de ejecución.- El intervalo que va desde el instante en que se ordena la ejecución de un proceso hasta el instante en que se completa es el tiempo de ejecución.

· Tiempo de espera.- El algoritmo de planificación de la CPU afecta al periodo de tiempo que un proceso invierte en esperar en la cola de procesos preparados, el tiempo de espera es la suma de estos periodos.

· Tiempo de respuesta.- El tiempo trascurrido desde que se envía una solicitud hasta que se produce la primera respuesta. Esta medida, denominada tiempo de respuesta, es el tiempo que el proceso tarda en empezar a responder, no el que tarda en enviar toda la información.

5.3 Algoritmos de planificación

Existen muchos algoritmos de planificación:

5.3.1 Planificación FCFS

El algoritmo FCFS que es el primero en llegar el primero en ser servido, con este esquema se asigna primero la CPU al proceso que primero lo solicite. La implementación de de la política FCFS se gestiona fácilmente con una cola FIFO. Cuando un proceso entra en la cola de procesos preparados, su PCB se coloca al final de la cola.

Proceso

Tiempo de llegada

Tiempo de Servicio

Tiempo de Comienzo

Tiempo de Finalización

Turnaround

Tiempo de Espera

A

0

1

0

1

1

0

B

1

100

1

101

100

0

C

2

1

101

102

100

101-2=99

D

3

100

102

202

199

102-3=99

Promedio

100

49.50

5.3.2 Planificación SJF

Otro método es la selección de trabajo más corto. Este algoritmo asocia con cada proceso la duración de la siguiente ráfaga de CPU del proceso. Cuando la CPU está disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más corto. Si las siguientes ráfagas de CPU de dos procesos o más son iguales, se usa la planificación FCFS para romper el empate.

SJF

Proceso

Tiempo de llegada

Tiempo de Servicio

Tiempo de Comienzo

Tiempo de Finalización

Turnaround

Tiempo de Espera

A

0

8

0

8

8

0

B

1

4

8

12

12-1=11

8-1=7

C

2

9

17

26

26-2=24

17-2=15

D

3

5

12

17

17-3=14

12-3=9

Promedio

14.25

10.33

5.3.3 Planificación por prioridad

El algoritmo de planificación SJF es un caso especial del algoritmo de planificación por prioridades general. A cada proceso se asigna una prioridad y la CPU se asigna al proceso que tenga la prioridad más alta. Los procesos con la misma prioridad se asignan en orden FCFS. Cuando más larga sea la ráfaga de CPU, menos será la prioridad y viceversa.

5.3.4 Planificación por turnos

El algoritmo de planificación por turnos (RR, round robin) está diseñado especialmente para los sistemas de tiempo compartido. Es similar al sistema FCFS, pero se añade el sistema de desalojo para conmutar entre procesos. En este tipo de sistemas se define una pequeña unidad de tiempo, denominada cuanto de tiempo o franja temporal. El planificador de la CPU toma un proceso de la cola de procesos preparados configura un temporizador para un intervalo pasado 1 cuanto de tiempo y despacha el proceso.

Bajo este esquema es importante considerar el efecto del cambio de contexto.

Round Robin (RR q=3)

Proceso

Tiempo de llegada

Tiempo de Servicio

Tiempo de Comienzo

Tiempo de Finalización

Turnaround

Tiempo de Espera

A

0

8

0, 12, 21

3, 15, 23

23

15

B

1

4

3, 15

6, 16

16-1=15

11

C

2

9

6, 16, 23

9, 19, 26

26-2=24

15

D

3

5

9, 19

12,21

21-3=18

11

Promedio

20

13

5.3.5 Planificación mediante colas multinivel

Otro algoritmo es en el que los procesos pueden clasificarse fácilmente en grupos diferentes, por ejemplo clasificados en procesos de primer plano (interactivos) y procesos de segundo plano (por lotes), estos dos tienen requisitos diferentes de tiempo de respuesta, además los de primer plano pueden tener prioridad.

La cola de primer plano puede planificarse mediante un algoritmo por turnos, y al cola de segundo plano un algoritmo FCFS.

Las colas según un orden de prioridad:

1. Procesos del sistema.

2. Procesos interactivos

3. Procesos de edición interactivos

4. Proceso por lotes

5. Procesos de estudiantes

Cada cola tiene prioridad absoluta sobre las colas de prioridad más baja.

5.3.6 Planificación mediante colas multinivel realimentadas

El algoritmo permite mover un proceso de una cola a otra lo que no ocurre con el de colas multinivel, el propósito es separar los procesos en función de las características de sus ráfagas de CPU. Si un proceso utiliza demasiado tiempo de CPU se pasa a una cola de prioridad más baja, este esquema deja a los procesos limitados por E/S y los procesos interactivos en las olas de prioridad más altos, esto puede realizarse viceversa un proceso de nivel bajos se puede pasar a un nivel más alto. Este mecanismo de envejecimiento evita el bloqueo indefinido.

5.4 Planificador de sistemas multiprocesador

Se puede compartir la carga en sistemas múltiples, sin embargo el problema d la planificación se hace más compleja, en cuanto a la funcionalidad de los sistemas homogéneos, en este tipo de sistemas podemos usar cualquiera de los procesos disponibles para ejecutar cualquier proceso de la cola.

5.4.1 Métodos de planificación en los sistemas multiprocesador

Un método consiste en que todas las decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean gestionados por un mismo procesador, el servidor maestro. Los demás procesadores solo ejecutan código de usuario. Este multiprocesamiento asimétrico resulta simple, porque solo hay un procesador que acede a la estructura de datos del sistema, reduciendo la necesidad de compartir datos.

En el multiprocesamiento simétrico (SMP), en que cada uno de los procesos se auto planifica. Todos los procesos pueden estar en una cola común de procesos preparados o cada proceso puede tener una cola privada de procesos.

Resulta de gran ayuda compartir la carga para la ejecución de procesos, pero muchas veces surgen problemas en la planificación de múltiples CPU en ciertos casos de no existir afinidad o equilibrio de carga.

Los sistemas operativos Windows XP y Solaris trabajan en torno a planificación de hebras, las mismas que permiten su ejecución en los procesadores disponibles, usando algoritmos de planificación por prioridades, al igual que Linux y otros sistemas operativos.

El método por simulación proporciona una aproximación muy cercana a la realidad en la utilización de alguna de las planificaciones antes mencionadas. Por tal motivo si se desea usar un método más fiable es aconsejable hacerlo por nuestra cuenta, implementando el método elegido en un sistema real para sacar conclusiones de acuerdo a su rendimiento en un entorno real.

5.6 Evaluación de algoritmos

El problema consiste en definir los criterios que se van a emplear para seleccionar un algoritmo, como hemos visto los criterios se define a menudo en términos de utilización de la CPU, del tiempo de respuesta o de la tasa de procesamiento; para seleccionar un algoritmo.

5.6.1 Modelo determinista

La evaluación analítica es un tipo de evaluación que utiliza el algoritmo especificado y la carga de trabajo del sistema para generar una fórmula o número que evalué el rendimiento del algoritmo para dicha carga de trabajo.

Uno de los tipos de evaluación analítica es el modelo determinista. Este método toma una carga de trabajo predeterminada concreta y define el rendimiento de cada algoritmo para dicha carga de trabajo.

5.6.2 Modelos de colas

Los procesos que se ejecutan varían de un día a otro, por lo que no existe ningún conjunto estático de procesos que se pueden emplear en el modelo determinista.

Lo que si es posible determinar es la distribución de las ráfagas de CPU y de E/S. Estas distribuciones pueden medirse y luego aproximarse, o simplemente estimarse. El resultado es la aparición de una fórmula matemática apropiada que describe la probabilidad de aparición de una ráfaga de CPU concreta. De forma similar se puede describir la distribución de los tiempos de llegada de los procesos al sistema. A partir de estas dos distribuciones, resulta posible calcular la tasa media de procesamiento, la utilización media, el tiempo medio de espera, etc. Para la mayoría de los algoritmos.

5.6.3 Simulaciones.

La simulación consiste en programar un sistema informático. Los componentes principales del sistema se representan mediante estructuras de datos software, el simulador tiene una variable que representa una señal de reloj y cuando el valor de esta variable se incrementa, el simulador modifica el estado del sistema para reflejar las actividades de los dispositivos de los procesos y del planificador.




Por: 07-04-2009 por pecaamano | Categorías asociadas: Capitulo 5, Paralelo "B"

La planificación de uso de la CPU, es la base de todo sistema operativo, ya que una planificación correcta permitirá un uso máximo, lo que causaría un rendimiento “optimo”.

ALGORITMOS DE PLANIFICACION DE LOS SISTEMAS OPERATIVOS: LINUX, WINDOWS 2000 Y SOLARIS.

EN LINUX

Puede haber a la vez en el sistema procesos con distinta política de planificación establecida. En realidad cada proceso se puede planificar de varias maneras, las políticas de planificación de un proceso se pueden cambiar en tiempo de ejecución.

Linux está basado en la planificación tradicional de Unix añadiendo 2 clases de prioridad para procesos de tiempo real flexibles. Las clases de planificación de Linux son las siguientes:

SCHED_OTHER : Es la planificación clásica de UNIX. No es aplicable a tiempo real. Examina las prioridades dinámicas (calculadas como combinación de las especificadas por el usuario y las calculadas por el sistema). Los procesos que llevan más tiempo en el sistema van perdiendo prioridad.

SCHED_FIFO : El sistema FIFO o FCFS (First to Come is First Served). Los procesos esperan en cola y se ejecutan secuencialmente. Se sigue calculando un cuantum de tiempo para el proceso, generalmente no se usa porque con esta planificación no se fuerza al proceso a abandonar la CPU. Se usa en procesos de tiempo real.

SCHED_RR : Round Robin o turno rotatorio. Funciona como el FIFO pero ahora cuando un proceso acaba su cuanto de tiempo (time slice) se le desaloja. El siguiente proceso se escoge de la lista de procesos con SCHED_RR o de la lista SCHED_FIFO. Son procesos en tiempo real.

SCHED_YIELD : No es una política de planificación, sino un modificador que afecta a las tres políticas anteriores. El proceso cede la CPU a cualquier otro que esté listo. Se activa con una llamada al sistema (sched_yield()) .

* Tienen más prioridad aquellos a los que les quede más tiempo de CPU.

* La función schedule realiza el ciclo de planificación.

Dentro de cada clase se utilizan múltiples prioridades, siendo las prioridades de las clases de tiempo real mayores que la de la clase SCHED_OTHER. Linux usa la misma estructura de datos (task_struct) para representar un proceso y para representar un hilo. Esto supone una ventaja importante para la planificación: se planifica cada hilo como si fuera un proceso. A veces a esto se le llama proceso ligero (LWP- Light Weight Process). La peculiaridad es que esta estructura tiene unos campos que son punteros al espacio de direcciones de un proceso.

Planificación en Windows 2000

Por lo general en Windows se utiliza una política de planificación: Round Robin. La desventaja principal es que cambia los procesos en ejecución con demasiada frecuencia. Lo que supone una pequeña pérdida de tiempo.

Además Las prioridades en W2K se organizan en dos bandas o clases: tiempo real y variable. Cada una de estas bandas consta de 16 niveles de PRIORIDAD. Los hilos que requieren atención inmediata están en clase de tiempo real, que incluye funciones como comunicaciones tareas de tiempo real. En general, puesto que W2K utiliza un planificador preferente con prioridades, los hilos con prioridades de tiempo real tienen preferencia sobre los otros hilos. En un monoprocesador, cuando un hilo cuya prioridad es mayor que la del que se ejecuta en ese momento pasa a estar Listo, el hilo de menor prioridad es expulsado y se asigna el procesador al de mayor prioridad. En la clase de prioridad de tiempo real, todos los tienen una prioridad fija que no cambia nunca.

Hay una cola FIFO en cada nivel de prioridad, pero un proceso puede emigrar a una de las otras colas dentro de la clase de prioridad variable. Sin embargo un hilo de prioridad no puede promocionarse a ningún otro nivel de la clase de tiempo real.

Solaris

El manejo de procesos en Solaris es por prioridad y round robin. En algunas versiones se maneja también un ajuste dinámico de la prioridad de acuerdo al tiempo que los procesos han esperado y al tiempo que ya han usado el CPU. El sistema provee facilidades para crear ‘pipes’ entre procesos, contabilizar el uso de CPU por proceso y una pila común para todos los procesos cuando necesitan estarse ejecutando en modo privilegiado (cuando hicieron una llamada al sistema). Solaris permite que un proceso haga una copia de sí mismo por medio de la llamada ‘fork’, lo cual es muy útil cuando se realizan trabajos paralelos o concurrentes; también se proveen facilidades para el envío de mensajes entre procesos. Recientemente Sun Microsystems, AT&T, IBM, Hewlett Packard y otros fabricantes de computadoras llegaron a un acuerdo para usar un paquete llamado ToolTalk para crear aplicaciones que usen un mismo método de intercambio de mensajes.