U2: ADMINISTRACION DE PROCESOS Y
                 DEL PROCESADOR
                TEMAS: 2.3, 2.4, 2.5




                         Gonzalo Murga Sotelo
                         09560633
Procesos

    Su estado de ejecución en un momento dado, esto es, los valores de los registros
     de la unidad central de procesamiento para dicho programa.

    Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

    Los procesos son creados y destruidos por el sistema operativo, así como también
     este se debe hacer cargo de la comunicación entre procesos,

Hilos

    Es la unidad de procesamiento más pequeña que puede ser planificada por un
     sistema operativo.

    Un hilo es una característica que permite a una aplicación realizar varias tareas a la
     vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de
     recursos tales como el espacio de memoria, los archivos abiertos, situación de
     autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que
     debe llevar a cabo distintas funciones simultáneamente.

    Es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.



CARACTERISTICAS:

       La memoria y los recursos son asignados a los procesos.
       Todos los hilos de un proceso comparten la memoria y los recursos asignados a ese
        proceso.
       Sin embargo, cada hilo tiene un contexto diferente.
       El procesador es el único recurso que no se comparte entre los hilos.
       Cada hilo tiene una pila diferente
       Un proceso puede ser formado por uno o más hilos
Concurrencia

    Es el punto clave de la gestión de procesos y fundamental para el diseño de
    sistemas operativos. Comprende un gran numero de cuestiones de diseño,
    incluyendo la comunicación entre procesos, compartición y competencia por los
    recursos, sincronización de la ejecución de varios procesos.

    Gestión de procesos

 Multiprogramación

 Multiproceso

 Proceso Distribuido

    Puede presentarse en 3 contextos diferentes que son:

    Varias aplicaciones: La multiprogramación se creo para permitir que el tiempo de
    procesador de las maquinas fuese compartido dinámicamente entre varios
    trabajos o aplicaciones activas.

    Aplicaciones estructuradas: Estas pueden implementarse eficazmente como un
    conjunto de procesos concurrentes.

    Estructura del sistema operativo: Son aplicables a los programadores de sistemas
    y se ha comprobado que algunos sistemas operativos están implementados como
    un conjunto de procesos.

    Exclusión mutua

 El uso adecuado de la concurrencia entre procesos exige la capacidad de definir
  secciones criticas y hacer cumplir la exclusión mutua.

 Una manera es dejar la responsabilidad a los procesos que deseen ejecutar
  concurrentemente, así pues tanto si son programas del sistema, como de
  aplicación, los procesos deben coordinarse unos con otros para ser cumplida la
  exclusión mutua, sin ayuda por parte del lenguaje de programación o del sistema
  operativo.


El método mas sencillo de comunicación entre los procesos de un programa concurrente
es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación
puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede
hacer que la acción de un proceso interfiera en las acciones de otro de una forma no
adecuada. Aunque nos vamos a fijar en variables de datos, todo lo que sigue seria valido
con cualquier otro recurso del sistema que solo pueda ser utilizado por un proceso a la
vez.

Por ejemplo una variable x compartida entre dos procesos A y B que pueden incrementar
o decrementar la variable dependiendo de un determinado suceso. Esta situación se
plantea, por ejemplo, en un problema típico de la programación concurrente conocido
como el Problema de los Jardines. En este problema se supone que se desea controlar el
número de visitantes a unos jardines. La entrada y la salida a los jardines se pueden
realizar por dos puntos que disponen de puertas giratorias. Se desea poder conocer en
cualquier momento el número de visitantes a los jardines, por lo que se dispone de un
computador con conexión en cada uno de los dos puntos de entrada que le informan cada
vez que se produce una entrada o una salida.

Asociamos el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada.
Ambos procesos se ejecutan de forma concurrente y utilizan una única variable x para
llevar la cuenta del número de visitantes.

El incremento o decremento de la variable se produce cada vez que un visitante entra o
sale por una de las puertas. Así, la entrada de un visitante por una de las puertas hace que
se ejecute la instrucción

x:=x+1          mientras que la salida de un visitante hace que se ejecute la instrucción
x:=x-1
En muchos casos, los procesos se reúnen para realizar tareas en conjunto, a este tipo de
relación se le llama procesos cooperativos. Para lograr la comunicación, los procesos
deben sincronizarse, de no ser así pueden ocurrir problemas no deseados. La
sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo
el trabajo de un grupo de procesos cooperativos.

Es la coordinación y cooperación de un conjunto de procesos para asegurar la
comparación de recursos de cómputo. La sincronización entre procesos es necesaria para
prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos
compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos
contendientes. La sincronización entre procesos también permite intercambiar señales de
tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones
específicas de precedencia impuestas por el problema que se resuelve.

Sin una sincronización adecuada entre procesos, la actualización de variables compartidas
puede inducir a errores de tiempo relacionados con la concurrencia que son con
frecuencia difíciles de depurar. Una de las causas principales de este problema es que
procesos concurrentes puedan observar valores temporalmente inconsistentes de una
variable compartida mientras se actualizan. Una aproximación para resolver este
problema es realizar actualizaciones de variables compartidas de manera mutuamente
exclusiva. Se pueden mejorar permitiendo que a lo más un proceso entre a la vez en la
sección crítica de código en la que se actualiza una variable compartida o estructura de
datos en particular.

Para que los procesos puedan sincronizarse es necesario disponer de servicios que
permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un
proceso. Los principales mecanismos de sincronización que ofrecen los sistemas
operativos son:



                     Señales

                     Tuberías

                     Semáforos

                     Mutex y variables condicionales

                     Paso de mensajes
Semáforos es un algoritmo de control de procesos



Que a su vez tiene varios tipos de semáforos los cuales se dividen en:

Semáforo binario:

Un semáforo binario es un indicador de condición (S) que registra si un recurso está
disponible o no. Un semáforo binario sólo puede tomar dos valores: O y 1.

Semáforo robusto:

Es el que se encarga de liberar los procesos que llevan mas tiempo bloqueados.



EJEMPLO

wait (variable)
begin
 while (variable)>=0 do {esperar}
 variable=variable-1
end

signal (variable)
begin
  variable=variable+1
end



El semáforo se inicializa con el numero total de recursos disponibles (n) y las operaciones
de espera y señal se diseñan de modo que se impida el acceso al recurso protegido por el
semáforo cuando el valor de éste es menor o igual que cero
Los monitores son una herramienta de sincronización

Posee una estructura propia, es una colección de procedimientos, variables y estructuras
de datos que se agrupan en un módulo especial.

Los procesos pueden llamar a los procedimientos de un monitor siempre que lo requieran,
pero no pueden acceder directamente las estructuras de datos internas del monitor.

Implementan un nivel aún más alto de abstracción facilitando el acceso a recursos
compartidos.

Componentes

Inicialización: contiene el código a ser ejecutado cuando el monitor es creado

Datos privados: contiene los procedimientos privados, que sólo pueden ser usados desde
dentro del monitor y no son visibles desde fuera

Procedimientos del monitor: son los procedimientos que pueden ser llamados desde
fuera del monitor.

Cola de entrada: contiene a los threads que han llamado a algún procedimiento del
monitor pero no han podido adquirir permiso para ejecutarlos aún.

La sincronización se usan dos instrucciones:

wait (c): suspende la ejecución del proceso que llama bajo la condición c. El monitor está
ahora disponible para ser usado por otros procesos.

signal(c): reanuda la ejecución de algún proceso suspendido después de un cwait bajo la
misma condición. Si hay varios procesos, se elige uno de ellos; si no hay ninguno, no hace
nada.
El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos
que compiten por los recursos del sistema o bien se comunican unos con otros. A
diferencia de otros problemas de la gestión concurrente de procesos, no existe una
solución eficiente para el caso general.

Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de
dos o más procesos.

Ejemplo :

Interbloqueo de tráfico

Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro
caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los
que se demanda control; por tanto, si los coches desean atravesar el cruce, las
necesidades de recursos son las siguientes:



-    El coche que va hacia el norte necesita los cuadrantes 1 y 2.

-    El coche que va hacia el oeste necesita los cuadrantes 2 y 3.

-    El coche que va hacia el sur necesita los cuadrantes 3 y 4.

-    El coche que va hacia el este necesita los cuadrantes 4 y 1.
Condiciones para producir un interbloqueo

1- Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta
disponible.



2- Condición de posesión y espera: Los procesos que tienen, en un momento dado,
recursos asignados con anterioridad, pueden solicitar nuevos recursos.



3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser
forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita.

Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca
interbloqueo, se necesita una cuarta condición:



4- Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena
circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el
siguiente miembro de la cadena.

Prevención de interbloqueo

- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres
condiciones necesarias para que se de el interbloqueo.



- Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.
NIVELES DE PLANIFICACIÓN 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.

o      También se denomina Planificación de trabajos.
o      Determina a qué trabajos se les va a permitir competir activamente por los
recursos del sistema, lo cual se denomina Planificación de admisión.
o      Administrar todos los recursos del sistema excepto el CPU.
o      Mantiene las colas de procesos bloqueados y suspendidos.
o      Controla la creación de procesos.
o      Maneja el nivel de multiprogramación.

• 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, y por lo tanto, permitir que los
trabajos se completen más aprisa. Este subadministrador controla los trabajos que se
intercambian hacia fuera y de regreso.

o      Determina a qué procesos se les puede permitir competir por la CPU.
o      Efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos.
o      Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
o      Equilibrar la administración de trabajos en el sistema con la asignación del CPU a
dichos procesos.
o      Nivelar la carga del sistema (procesos activos y pasivos).
• 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.

o       Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y
asigna la CPU al mismo, es decir que “despacha” la CPU al proceso.



OBJETIVOS DE PLANIFICACIÓN

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

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

•Maximizar la capacidad de ejecución:
o     Maximizar el número de procesos servidos por unidad de tiempo.
o     Maximizar el número de usuarios interactivos que reciban unos tiempos de
respuesta aceptables: En un máximo de unos segundos.

•Ser predecible:
o      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:
o      Favorecer a los procesos que utilizarán recursos infrautilizados.

•Equilibrar respuesta y utilización:
o      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:
o       Se utiliza la estrategia del “envejecimiento”. o 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:
o      Los mecanismos de planificación deben favorecer a los procesos con prioridades
más altas.

•Dar preferencia a los procesos que mantienen recursos claves:
o      Un proceso de baja prioridad podría mantener un recurso clave, que puede ser
requerido por un proceso de más alta prioridad. O si el recurso es no apropiativo, el
mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le
correspondería normalmente, puesto que es necesario liberar rápidamente el recurso
clave.

•Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”:
o     Un ejemplo de comportamiento deseable es una tasa baja de paginación.

•Degradarse suavemente con cargas pesadas:
o       Un mecanismo de planificación no debe colapsar con el peso de una exigente carga
del sistema.

o       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.

Procesos_so

  • 1.
    U2: ADMINISTRACION DEPROCESOS Y DEL PROCESADOR TEMAS: 2.3, 2.4, 2.5 Gonzalo Murga Sotelo 09560633
  • 2.
    Procesos  Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.  Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.  Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, Hilos  Es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.  Un hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.  Es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea. CARACTERISTICAS:  La memoria y los recursos son asignados a los procesos.  Todos los hilos de un proceso comparten la memoria y los recursos asignados a ese proceso.  Sin embargo, cada hilo tiene un contexto diferente.  El procesador es el único recurso que no se comparte entre los hilos.  Cada hilo tiene una pila diferente  Un proceso puede ser formado por uno o más hilos
  • 3.
    Concurrencia Es el punto clave de la gestión de procesos y fundamental para el diseño de sistemas operativos. Comprende un gran numero de cuestiones de diseño, incluyendo la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos. Gestión de procesos  Multiprogramación  Multiproceso  Proceso Distribuido Puede presentarse en 3 contextos diferentes que son: Varias aplicaciones: La multiprogramación se creo para permitir que el tiempo de procesador de las maquinas fuese compartido dinámicamente entre varios trabajos o aplicaciones activas. Aplicaciones estructuradas: Estas pueden implementarse eficazmente como un conjunto de procesos concurrentes. Estructura del sistema operativo: Son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. Exclusión mutua  El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones criticas y hacer cumplir la exclusión mutua.  Una manera es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente, así pues tanto si son programas del sistema, como de aplicación, los procesos deben coordinarse unos con otros para ser cumplida la exclusión mutua, sin ayuda por parte del lenguaje de programación o del sistema operativo. 
  • 4.
    El método massencillo de comunicación entre los procesos de un programa concurrente es el uso común de unas variables de datos. Esta forma tan sencilla de comunicación puede llevar, no obstante, a errores en el programa ya que el acceso concurrente puede hacer que la acción de un proceso interfiera en las acciones de otro de una forma no adecuada. Aunque nos vamos a fijar en variables de datos, todo lo que sigue seria valido con cualquier otro recurso del sistema que solo pueda ser utilizado por un proceso a la vez. Por ejemplo una variable x compartida entre dos procesos A y B que pueden incrementar o decrementar la variable dependiendo de un determinado suceso. Esta situación se plantea, por ejemplo, en un problema típico de la programación concurrente conocido como el Problema de los Jardines. En este problema se supone que se desea controlar el número de visitantes a unos jardines. La entrada y la salida a los jardines se pueden realizar por dos puntos que disponen de puertas giratorias. Se desea poder conocer en cualquier momento el número de visitantes a los jardines, por lo que se dispone de un computador con conexión en cada uno de los dos puntos de entrada que le informan cada vez que se produce una entrada o una salida. Asociamos el proceso P1 a un punto de entrada y el proceso P2 al otro punto de entrada. Ambos procesos se ejecutan de forma concurrente y utilizan una única variable x para llevar la cuenta del número de visitantes. El incremento o decremento de la variable se produce cada vez que un visitante entra o sale por una de las puertas. Así, la entrada de un visitante por una de las puertas hace que se ejecute la instrucción x:=x+1 mientras que la salida de un visitante hace que se ejecute la instrucción x:=x-1
  • 5.
    En muchos casos,los procesos se reúnen para realizar tareas en conjunto, a este tipo de relación se le llama procesos cooperativos. Para lograr la comunicación, los procesos deben sincronizarse, de no ser así pueden ocurrir problemas no deseados. La sincronización es la transmisión y recepción de señales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinación y cooperación de un conjunto de procesos para asegurar la comparación de recursos de cómputo. La sincronización entre procesos es necesaria para prevenir y/o corregir errores de sincronización debidos al acceso concurrente a recursos compartidos, tales como estructuras de datos o dispositivos de E/S, de procesos contendientes. La sincronización entre procesos también permite intercambiar señales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones específicas de precedencia impuestas por el problema que se resuelve. Sin una sincronización adecuada entre procesos, la actualización de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difíciles de depurar. Una de las causas principales de este problema es que procesos concurrentes puedan observar valores temporalmente inconsistentes de una variable compartida mientras se actualizan. Una aproximación para resolver este problema es realizar actualizaciones de variables compartidas de manera mutuamente exclusiva. Se pueden mejorar permitiendo que a lo más un proceso entre a la vez en la sección crítica de código en la que se actualiza una variable compartida o estructura de datos en particular. Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecución de un proceso. Los principales mecanismos de sincronización que ofrecen los sistemas operativos son: Señales Tuberías Semáforos Mutex y variables condicionales Paso de mensajes
  • 6.
    Semáforos es unalgoritmo de control de procesos Que a su vez tiene varios tipos de semáforos los cuales se dividen en: Semáforo binario: Un semáforo binario es un indicador de condición (S) que registra si un recurso está disponible o no. Un semáforo binario sólo puede tomar dos valores: O y 1. Semáforo robusto: Es el que se encarga de liberar los procesos que llevan mas tiempo bloqueados. EJEMPLO wait (variable) begin while (variable)>=0 do {esperar} variable=variable-1 end signal (variable) begin variable=variable+1 end El semáforo se inicializa con el numero total de recursos disponibles (n) y las operaciones de espera y señal se diseñan de modo que se impida el acceso al recurso protegido por el semáforo cuando el valor de éste es menor o igual que cero
  • 7.
    Los monitores sonuna herramienta de sincronización Posee una estructura propia, es una colección de procedimientos, variables y estructuras de datos que se agrupan en un módulo especial. Los procesos pueden llamar a los procedimientos de un monitor siempre que lo requieran, pero no pueden acceder directamente las estructuras de datos internas del monitor. Implementan un nivel aún más alto de abstracción facilitando el acceso a recursos compartidos. Componentes Inicialización: contiene el código a ser ejecutado cuando el monitor es creado Datos privados: contiene los procedimientos privados, que sólo pueden ser usados desde dentro del monitor y no son visibles desde fuera Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera del monitor. Cola de entrada: contiene a los threads que han llamado a algún procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos aún. La sincronización se usan dos instrucciones: wait (c): suspende la ejecución del proceso que llama bajo la condición c. El monitor está ahora disponible para ser usado por otros procesos. signal(c): reanuda la ejecución de algún proceso suspendido después de un cwait bajo la misma condición. Si hay varios procesos, se elige uno de ellos; si no hay ninguno, no hace nada.
  • 8.
    El interbloqueo sepuede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos. Ejemplo : Interbloqueo de tráfico Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes: - El coche que va hacia el norte necesita los cuadrantes 1 y 2. - El coche que va hacia el oeste necesita los cuadrantes 2 y 3. - El coche que va hacia el sur necesita los cuadrantes 3 y 4. - El coche que va hacia el este necesita los cuadrantes 4 y 1.
  • 9.
    Condiciones para producirun interbloqueo 1- Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible. 2- Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos. 3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita. Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición: 4- Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena. Prevención de interbloqueo - Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqueo. - Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.
  • 10.
    NIVELES DE PLANIFICACIÓNSe 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. o También se denomina Planificación de trabajos. o Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión. o Administrar todos los recursos del sistema excepto el CPU. o Mantiene las colas de procesos bloqueados y suspendidos. o Controla la creación de procesos. o Maneja el nivel de multiprogramación. • 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, y por lo tanto, permitir que los trabajos se completen más aprisa. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso. o Determina a qué procesos se les puede permitir competir por la CPU. o Efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. o Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. o Equilibrar la administración de trabajos en el sistema con la asignación del CPU a dichos procesos. o Nivelar la carga del sistema (procesos activos y pasivos).
  • 11.
    • Planificación debajo 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. o Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y asigna la CPU al mismo, es decir que “despacha” la CPU al proceso. OBJETIVOS DE PLANIFICACIÓN Los objetivos de la planificación del procesador son los siguientes e involucran a los conceptos detallados seguidamente: •Ser justa: o Todos los procesos son tratados de igual manera. o Ningún proceso es postergado indefinidamente. •Maximizar la capacidad de ejecución: o Maximizar el número de procesos servidos por unidad de tiempo. o Maximizar el número de usuarios interactivos que reciban unos tiempos de respuesta aceptables: En un máximo de unos segundos. •Ser predecible: o 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: o Favorecer a los procesos que utilizarán recursos infrautilizados. •Equilibrar respuesta y utilización: o 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.
  • 12.
    •Evitar la postergaciónindefinida: o Se utiliza la estrategia del “envejecimiento”. o 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: o Los mecanismos de planificación deben favorecer a los procesos con prioridades más altas. •Dar preferencia a los procesos que mantienen recursos claves: o Un proceso de baja prioridad podría mantener un recurso clave, que puede ser requerido por un proceso de más alta prioridad. O si el recurso es no apropiativo, el mecanismo de planificación debe otorgar al proceso un tratamiento mejor del que le correspondería normalmente, puesto que es necesario liberar rápidamente el recurso clave. •Dar mejor tratamiento a los procesos que muestren un “comportamiento deseable”: o Un ejemplo de comportamiento deseable es una tasa baja de paginación. •Degradarse suavemente con cargas pesadas: o Un mecanismo de planificación no debe colapsar con el peso de una exigente carga del sistema. o 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.