|
Por: 27-04-2009 por EstebanYomairo |
Categorías asociadas: Capitulo 1 y 2, Capitulo 1-2, Capitulo 3, Capitulo 5, Capitulo 7, Capítulos 1-2, Paralelo "C", Planificación de procesos, Resumen de conferencia, Taller_HILOS, Uncategorized
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.
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
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.
Por: 14-04-2009 por acabrera |
Categorías asociadas: Analisis Planificacion SO, DIFERENCIAS PLANIFICACION DE S.O.
PLANIFICACION EN LINUX PLANIFICACION EN WINDOWS XP Por: 14-04-2009 por mariuximaza |
Categorías asociadas: Analisis Planificacion SO, Capitulo 5
SOLARIS - Tiempo Real - Sistema - Tiempo Compartido - Interactiva Teniendo asi cada proceso interactivo un proceso mas alto y los procesos de tiempo WINDOWS XP LINUX Por: 09-04-2009 por fabricioms |
Categorías asociadas: Capitulo 5, DIFERENCIAS PLANIFICACION DE S.O., Paralelo "B"
Planificación en Solaris 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 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 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 Por: Santiago Aguilera Bibliografía Por: 07-04-2009 por acabrera |
Categorías asociadas: Capitulo 5
PLANIFICACIÓN DE LA CPU 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.
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.
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.
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()) .
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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
