miércoles

2.6 Técnicas de administración del planificador.

Las disciplinas de planificación pueden ser:
• Expropiativas
• No expropiativas

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar una decisión, el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá. Los algoritmos tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. Algunos de estos son:

a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor tan elevado otros aspectos importantes de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.

b) Rendimiento: Es una medida del número de procesos completados por unidad de tiempo.

c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema.

d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida más adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo.

e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento.

2.5 Niveles, objetivos y criterios de planificacion

Se consideran tres niveles importantes de planificación, los que se detallan a continuación:

Planificación de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema.

Planificación de nivel intermedio: En algunos casos, en especial cuando el sistema está sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación. Este subministrador controla los trabajos que se intercambian hacia fuera y de regreso.

Planificación de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. 


Objetivos de la planificación
Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente:

Ser justa: Todos los procesos son tratados de igual manera. Ningún proceso es postergado indefinidamente.

Maximizar la capacidad de ejecución: Maximizar el número de procesos servidos por unidad de tiempo.

Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un máximo de unos segundos.

Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema.

Minimizar la sobrecarga: No suele considerarse un objetivo muy importante.

Equilibrar el uso de recursos: Favorecer a los procesos que utilizarán recursos infrautilizados.

Equilibrar respuesta y utilización: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientes cuando se necesitan, pero la utilización total de recursos podrá ser pobre.

Evitar la postergación indefinida: Se utiliza la estrategia del “envejecimiento” . Mientras un proceso espera por un recurso su prioridad debe aumentar, así la prioridad llegará a ser tan alta que el proceso recibirá el recurso esperado.

Asegurar la prioridad: Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas.

Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podría mantener un recurso clave, que puede ser requerido por un proceso de más alta prioridad.

Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”.

Degradarse suavemente con cargas pesadas: Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema. Se debe evitar una carga excesiva mediante las siguientes acciones: No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. Dando servicio a la carga más pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos.


Criterios de planificación
*  Equidad Garantizar que cada proceso obtiene su proporción justa de la cpu.
*  Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo.
*  Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos.
*  Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para               obtener sus resultados.
*  Rendimiento Maximizar el número de tareas procesadas por hora.

2.4 Concurrencia y secuenciabilidad.

Los procesos son concurrentes si existen simultáneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos, lo cual significa que en ocasiones requieren cierta sincronización o cooperación. Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relación entre ellos como puede ser la cooperación para un determinado trabajo o el uso de información o recursos compartidos, por ejemplo: en un sistema de un procesador, la multiprogramación es una condición necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.


Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar información en común o para cualquier otra cosa.

Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:

Multiprogramacion con un único procesador.

En este modelo todos los procesos concurrentes ejecutan sobre un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultanea.

Multiprocesador.

Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecución sino también superponerla.

Multicomputadora.

Es una maquina de memoria distribuida, en contraposición con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a través de una red de interconexion, empleando el método de paso de mensajes.
Beneficios de la concurrencia
- Trata de evitar los tiempos muertos de la UCP
- Comparte y optimiza el uso de recursos
- Permite la modularidad en las diferentes etapas del proceso
- Acelera los cálculos
- Da mayor comodidad

Desventajas de la concurrencia
- Inanición e interrupción de procesos
- Ocurrencia de bloqueos
- Que dos o más procesos requieran el mismo recurso (no apropiativo)


2.3 Procesos ligeros: hilos ó hebras

En la mayoría de los sistemas operativos, estas dos características son, de hecho, la esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como tales por el sistema operativo. Esta distinción ha conducido en los sistemas operativos actuales a desarrollar la construcción conocida como thread, cuyas traducciones más frecuentes son hilo, hebra y proceso ligero. Si se tiene esta división de características, la unidad de asignación de la CPU se conoce como hilo, mientras que a la unidad que posee recursos se le llama proceso.

Dentro de un proceso puede haber uno o más hilos de control cada uno con:
· Un estado de ejecución (en ejecución, listo, bloqueado).
· Un contexto de procesador, que se salva cuando no esté ejecutándose.
· Una pila de ejecución.
· Algún almacenamiento estático para variables locales.
· Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.


Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria del código, y no varias. Un proceso ligero (thread o hebra) es un programa en ejecución que comparte la imagen de la memoria y otras informaciones con otros procesos ligeros.


Tareas con una y varias hebras
* Es una unidad básica de utilización de la CPU consistente en un juego de registros y un espacio de      pila. Comparte el código, los datos y los recursos con sus hebras pares
* Una tarea (o proceso pesado) está formada ahora por una o más hebras
* Una hebra sólo puede pertenecer a una tarea

Estados de los Procesos ligeros
Un proceso ligero puede estar ejecutando, listo o bloqueado.

Paralelismo
Los procesos ligeros permiten paralelizar una aplicación

martes

2.2 Estados y transiciones de los procesos


El proceso es la unidad de procesamiento gestionada por el sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de elementos de información, que se analizan seguidamente. Estos elementos se organizan en tres grupos: estado del procesador, imagen de memoria y tablas del sistema operativo.

Estado del procesador
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparente al usuario.

Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:

Ejecución: Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa.

Bloqueado: Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible

2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.

Son de dos tipos:

* Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
* Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

Estados de los procesos
•Nuevo: El proceso es creado.
•Ejecución: Se ejecutan instrucciones.
•Espera: El proceso está en espera por la ocurrencia de algún evento.
•Listo: El proceso está esperando a que le asignen el procesador.
•Terminado: El proceso finaliza su ejecución.
•Diagrama de estados de los procesos.

Información del proceso
  • Estado del proceso
  • Program counter
  • Registros del CPU
  • Información de planificación del CPU
  • Memoria
  • Información para administración
  • Información de estatus de E/S


Transiciones

            1. El proceso se bloquea en la entrada.
            2. El planificador elige otro proceso.
            3. El planificador elige este proceso.
            4. La entrada se vuelve disponible.

            Estados:

            1. Ejecución (que en realidad hace uso del CPU en ese instante).
            2. Bloqueado (incapaz de correr hasta que suceda algún evento externo.
            3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro
                 proceso).

Unidad 2 Administracion de procesos y del procesador. 2.1 Concepto de proceso.


Un proceso es  básicamente como un programa en ejecución. Consta del programa ejecutable, los datos y la pila del programa, su contador de programa, apuntador de pila y otros registros, y la  otra información que se necesita para ejecutar el programa. La manera sencilla de tener una noción intuitiva de lo que es un proceso consiste en pensar en los sistemas con tiempo compartido. En forma periódica el sistema operativo decide suspender la ejecución de un proceso y dar inicio a la ejecución de otro. En muchos sistemas operativos, toda la información referente a cada proceso, diferente del contenido de su espacio de direcciones, se almacena en una tabla de sistema operativo, llamada tabla de procesos, la cual es un arreglo o lista enlazada de estructuras, una para cada proceso en existencia corriente. Si un proceso puede crear uno o más procesos diferentes (conocidos como proceso hijo) y estos procesos a la vez originan procesos hijos, se llega rápidamente a la estructura del árbol de procesos.


Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios.
•  Proceso - un programa en ejecución; la ejecución del proceso debe progresar de manera secuencial.
•  Un proceso incluye:
              – program counter
              – stack
              – data section

Características:
· Un proceso consta de código, datos y pila.
· Los procesos existen en una jerarquía de árbol (varios Hijos, un sólo padre).
· El sistema asigna un identificador de proceso (PID) único al iniciar el proceso.
· El planificador de tareas asigna un tiempo compartido para el proceso según su prioridad (sólo root puede cambiar prioridades).

1.6 Núcleo


El Núcleo (o kernel) es una colección de módulos de software que se ejecutan en forma privilegiada. El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. El núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan. El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas:


Nivel 1 Gestión de Memoria:
Que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos.


Nivel 2. Procesador:
Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.


 Nivel 3. Entrada/Salida:
Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos.


Nivel 4. Información o Aplicación o Intérprete de Lenguajes:
Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.


Nivel 5. Control de Archivos:
Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria.

1.5 Estructuras de niveles y estratos

Estructura monolítica
Es la estructura de los primeros sistemas operativos. Fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.
Características
- Construcción de programa final a base de módulos compilados separadamente que se une a través del editor de enlaces.
- Buena definición de parámetros de enlace entre las rutinas existentes.
- Carecen de protección y privilegios al entrar y manejan diferentes aspectos de la computadora.
- Generalmente están hechos a la medida
- Por ejemplo los cajeros automáticos donde sólo tienen que cumplir una determinada función siguiendo una serie de procesos ya determinados.


Estructura jerárquica
Consiste en organizar el sistema operativo con una jerarquía de capas cada una construida sobre la que está bajo ella.
Características.
- Las zonas más intensas o núcleo están más protegidas de posibles accesos indeseados desde las capas más externas.
- Tienes un contacto más próximo con el hardware
- Núcleo mínimo, más seguro y ágil.
En esta estructura se basan prácticamente la mayoría de los SO actuales. Otra forma de ver este tipo de sistema es la denominación de anillos concéntricos o “RINGS”


Estructura de maquina virtual
Se trata de un SO que presenta una interfaces cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos SO separan dos conceptos: Multiprogramación y La Máquina Extendida Su objetivo es distinguir distintos SO dando la sensación de ser varias máquinas. Tiene capacidad de utilizar varios SO simultáneamente.
Características
- Se puede hacer varios sistemas operativos sin necesidad de crear particiones.
- Se puede simular el hardware
- Gran capacidad de disco duro-memoria RAM
- Protección cada máquina virtual está aislada de las otras y no puede inferir.


Estructura cliente-servidor
Es el tipo más reciente de los SO, que pueden ser ejecutados en la mayoría de las computadoras, ya sean grandes o pequeñas. Este sistema sirve para todo, por lo tanto es de propósito general y se basa en lo mismo que el resto de los SO convencionales: núcleo y procesos, presentando grandes diferencias en cuanto a la forma de distribuir los trabajos entre sus diferentes partes.
Características
- Coordina, permite el trabajo entre iguales.
- Cliente; inicia las solicitudes o peticiones (maestro)
- Espera y recibe respuesta del servidor
- Se puede conectar a varios servidores a la vez.
- Servidor:
- Esclavo, espera las solicitudes del cliente
- Aceptan conexiones desde un gran número de clientes.

viernes

1.4 Clasificación

Sistemas Operativos de Multitarea: Es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.

Sistemas Operativos Monotarea: Son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.

Sistemas Operativos Monousuario: Son aquéllos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo.

Sistemas Operativos Multiusuario: Son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.

Sistemas Operativos Uniproceso: Es aquél que es capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil.

Sistemas Operativos Multiproceso: se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.



jueves

1.3 Evolución Histórica

Los S. O. han estado relacionados históricamente con la arquitectura de las computadoras en las cuales se ejecutan, razón por la cual su historia puede analizarse según las siguientes generaciones y sus principales característica:

·         Generación Cero (década de 1940):
o    Carencia total de S. O.
o    Completo acceso al lenguaje de máquina.

·         Primera generación (1945-1955): bulbos y conexiones:
o    Carencia de S. O.
o    En los años cincuenta comienzan como transición entre trabajos, haciendo la misma más simple.

·         Segunda generación (1955-1965): transistores y sistemas de procesamiento por lotes (batch):
o    En los años sesenta aparecen los S. O. para sistemas compartidos con:
§  Multiprogramación: varios programas de usuarios se encuentran al mismo tiempo en el almacenamiento principal, cambiando el procesador rápidamente de un trabajo a otro.
§  Multiprocesamiento: varios procesadores se utilizan en un mismo sistema para incrementar el poder de procesamiento.
o    Posteriormente aparece la independencia de dispositivo:
§  El programa del usuario especifica las características de los dispositivos que requieren los archivos.
§  El S. O. asigna los dispositivos correspondientes según los requerimientos y las disponibilidades.

·         Tercera generación (1965-1980): circuitos integrados y multiprogramación:
o    Difusión de la multiprogramación:
§  Partición de la memoria en porciones, con trabajos distintos en cada una de ellas.
§  Aprovechamiento del tiempo de espera consecuencia de operaciones de e / s, para utilizar la CPU para otros procesos.
o    Protección por hardware del contenido de cada partición de memoria.
o    Aparición de técnicas de spooling:
§  Simultaneous Peripheral Operation On Line: operación simultánea y en línea de periféricos.
§  Almacenamiento de trabajos de entrada y de salida en dispositivos transitorios rápidos (discos), para disminuir el impacto de los periféricos mas lentos.
o    Son sistemas de modos múltiples, es decir que deben soportar sistemas de propósitos generales; son grandes y complejos pero muy poderosos.
o    Interponen una capa de software entre el usuario y el hardware.
o    Aparecen los lenguajes de control de trabajos, necesarios para especificar el trabajo y los recursos requeridos.
o    Soportan timesharing (tiempo compartido), variante de la multiprogramación con usuarios conectados mediante terminales en línea, permitiendo la operación en modo interactivo o conversacional.
o    Aparecen los sistemas de tiempo real, que requieren tiempos de respuesta muy exigentes, especialmente para usos industriales o militares.
o    Se difunden las computadoras de rango medio.

·         Cuarta generación (1980-1990): computadoras personales:
o    Aparición de software amigable con el usuario, destinado a usuarios no profesionales y con una interfase gráfica muy desarrollada.
o    Desarrollo de sistemas operativos de red y sistemas operativos distribuidos.
o    Sistemas operativos de red:
§  Los usuarios están conscientes de la existencia de varias computadoras conectadas.
§  Cada máquina ejecuta su propio S. O. local.
§  Son similares a los S. O. de un solo procesador pero con el agregado de:
§  Controlador de interfaz de la red y su software de bajo nivel.
§  Software para conexión y acceso a archivos remotos, etc.
o    Sistemas operativos distribuidos:
§  Aparece ante los usuarios como un S. O. de un solo procesador, aún cuando de soporte a varios procesadores.
§  Los usuarios no son conscientes del lugar donde se ejecutan sus programas o donde se encuentran sus archivos, ya que lo debe administrar el S. O. automáticamente.
§  Deben permitir que un programa se ejecute mediante varios procesadores a la vez, maximizando el paralelismo.
o    Aparición de emuladores de terminal para el acceso a equipos remotos desde computadoras personales (PC).
o    Gran énfasis en la seguridad, en especial por el desarrollo de los sistemas de comunicaciones de datos.
o    El S. O. crea un ambiente de trabajo según el concepto de máquina virtual, que lo aísla del funcionamiento interno de la máquina.
o    Proliferación de sistemas de bases de datos, accesibles mediante redes de comunicación.