RESUMEN UNIDAD 2 Sistemas Operativos Nuevo
RESUMEN UNIDAD 2 Sistemas Operativos Nuevo
CONCEPTOS BASICOS:
ALGORITMO: Es un conjunto reescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un estado
inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los
algoritmos se pueden expresar de diversas formas: lenguaje natural, lenguaje de programación, pseudocódigo y
diagramas de flujo.
PROCESO: Consiste en un programa que se ejecuta, con valores, información de su estado, y asignación de
los recursos necesarios para que el sistema operativo pueda gestionar la ejecución de dicho proceso.
TAREA O JOB: Una tarea es una unidad de ejecución o una unidad de trabajo. El término es ambiguo; otros
términos más precisos son proceso, hilo (para la ejecución), petición, paso, entre otros. En el sentido de "unidad
de ejecución", en algunos sistemas operativos, una tarea es sinónimo para "proceso"; en tanto en otros
sistemas es sinónimo de hilo. Las tareas usualmente corresponden a una única petición o a una consulta.
1
información sobre el historial de sesión para ser capaz de comunicarse, o sin estado, donde la comunicación
consta de peticiones independientes con respuestas.
Una sesión establecida es el requisito básico para realizar una comunicación orientada a conexión. También es
el paso básico para transmisión en modos de comunicación sin conexión. Sin embargo, cualquier transmisión
unidireccional no define una sesión
LOTE: Se conoce como sistema por lotes (batch processing), o modo batch, a la ejecución de un programa sin
el control o supervisión directa del usuario (que se denomina procesamiento interactivo). Este tipo de programas
se caracterizan porque su ejecución no precisa ningún tipo de interacción con el usuario. Consiste en dedicar un
periodo de tiempo a realizar tareas similares o que requieren los mismos recursos
Un proceso es un programa se ejecuta, con valores, información de su estado, y asignación de los recursos
necesarios para que el sistema operativo pueda gestionar la ejecución de dicho proceso. O bien, una
abstracción de un programa en ejecución también llamada tarea.
Para el control de los mismos internamente son almacenados en una lista, cada uno de los nodos guarda
información de un proceso. En esa información se almacena, el estado en que se encuentra el proceso, el
tiempo que el proceso ha usado el CPU e información de E/S (entrada/salida).
Los sistemas operativos cuentan con un componente llamado planificador, que se encarga de decidir cuál de
los procesos hará uso del procesador. La toma de esta decisión, así como el tiempo de ejecución del proceso,
estará dada por un algoritmo, denominado Algoritmo de Planificación.
Características de un proceso
En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Operativos deben disponer de una
forma de crear y destruir procesos cuando se requiera durante la operación, teniendo además presente que los
procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecución en
paralelo.
Los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos y
con ellos. Tales operaciones incluyen:
Crear un proceso.
Destruir un proceso.
Suspender un proceso.
Reanudar un proceso.
Cambiar la prioridad de un proceso.
Bloquear un proceso.
2
Despertar un proceso.
Despachar un proceso.
Permitir que un proceso se comunique con otro (esto se denomina comunicación entre procesos).
CREACIÓN DE PROCESOS
1.- Jerárquica. En ella cada proceso que se crea es hijo del proceso creador y hereda el entorno de
ejecución de su padre. El primer proceso que ejecuta un usuario será hijo del intérprete de comandos con el
que interactúa.
2.- No jerárquico. Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un
entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos actuales.
Destruir un proceso implica eliminarlo del sistema. Se le remueve de la tabla o listas del sistema, sus recursos
se devuelven al sistema y su bloque de control de proceso se borra (es decir, el espacio de memoria ocupado
por su PCB se devuelve al espacio de memoria disponible.
Durante su existencia un proceso pasa por una serie de estados discretos, siendo varias las circunstancias que
pueden hacer que el mismo cambie de estado. Debido a ello se puede establecer una “Lista de Listos” para los
procesos “listos” y una “Lista de Bloqueados” para los “bloqueados”. La “Lista de Listos” se mantiene en orden
prioritario y la “Lista de Bloqueados” está desordenada, ya que los procesos se desbloquean en el orden en que
tienen lugar los eventos que están esperando.
La asignación de la cpu al primer proceso de la “Lista de Listos” se denomina “Despacho”, que es ejecutado por
una entidad del Sistema Operativo llamada “Despachador”.
El “Bloqueo” es la única transición de estado iniciada por el propio proceso del usuario, puesto que las otras
transiciones son iniciadas por entidades ajenas al proceso.
Cuando el Sistema Operativo cambia la atención de la cpu entre los procesos, utiliza las áreas de preservación
del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la cpu.
Los sistemas que administran los procesos deben poder crear, destruir, suspender, reanudar, cambiar la
prioridad, bloquear, despertar y despachar un proceso. La “creación” de un proceso significa:
Un proceso puede “crear un nuevo proceso”, en cuyo caso el proceso creador se denomina “proceso padre” y el
proceso creado “proceso hijo” y se obtiene una “estructura jerárquica de procesos”.
Un proceso “suspendido” no puede proseguir hasta que otro proceso lo reanude. Reanudar (reactivar) un
proceso implica reiniciarlo en el punto donde fue suspendido. La “destrucción” de un proceso puede o no
significar la destrucción de los procesos hijos, según el Sistema Operativo. Generalmente se denomina “Tabla
de Procesos” al conjunto de información de control sobre los distintos procesos."
Un proceso pasa de un estado a otro desde su creación hasta su destrucción. Los estados por los cuales puede
pasar un proceso son los siguientes:
TRANSICIONES DE UN PROCESO:
Cuando un proceso se crea, pasa a la cola de procesos listos. Se dice que existe una transición de estado
cuando un proceso cambia de un estado a otro.
Nuevo Listo: Cuando un proceso se ha creado y se le es permito para competir por la CPU.
En ejecución Listo: El S.O , cuando un proceso se le expira el intervalo de tiempo asignado para estar
en ejecución (CUANTO), hace que este proceso que se hallaba en estado de ejecución pase al estado
4
de listo y inmediatamente el despachador hace que el primer proceso de la lista pase a estado de
ejecución.
En ejecución Bloqueado: Si un proceso que se encuentra en estado de ejecución inicia una operación
de E/s antes que termine su cuanto, el proceso voluntariamente abandona la CPU, es decir, el proceso
se bloquea a sí mismo.
Bloqueo Listo: La única transición posible en nuestro modelo básico ocurre cuando acaba una
operación de E/S (o alguna otra causa por la que esté esperando el proceso), y esta termina pasa a
estado de listo.
Todos los hilos de un proceso comparten los recursos del proceso. Residen en el mismo espacio de direcciones
y tienen acceso a los mismos datos. Cuando un hilo modifica un dato en la memoria, los otros hilos utilizan el
resultado cuando acceden al dato. Cada hilo tiene su propio estado, su propio contador, su propia pila y su
propia copia de los registros de la CPU. Los valores comunes se guardan en el bloque de control de proceso
(PCB), y los valores propios en el bloque de control de hilo (TCB).
Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas),
mientras otro hilo hace una larga operación internamente. De esta manera el programa responde más ágilmente
a la interacción con el usuario.
Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como
overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de modo (mode switch), en
este caso pasar del estado de Running al estado de Waiting o Bloqueado y colocar el nuevo proceso en
Running.
El concepto de proceso engloba dos conceptos separados y potencialmente independientes: uno relativo a la
propiedad de recursos y otro que hace referencia a la ejecución.
PROCESOS LIGEROS
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.
Los procesos ligeros son 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.
Un proceso ligero, o thread, es un programa en ejecución (flujo de ejecución) que comparte la imagen de
5
memoria y otras informaciones con otros procesos ligeros. Desde el punto de vista de la programación, un
proceso ligero se define como una función cuya ejecución se puede lanzar en paralelo con otras. El hilo de
ejecución primario, o proceso ligero primario, corresponde a la función main.
Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las
informaciones propias se refieren fundamentalmente al contexto de ejecución, pudiéndose destacar las
siguientes:
Contador de programa.
Pila.
Registros.
Estado del proceso ligero (ejecutando, listo o bloqueado).
Todos los procesos ligeros de un mismo proceso comparten la información del mismo. En concreto, comparten:
Espacio de memoria.
Variables globales.
Archivos abiertos.
Procesos hijos.
Temporizadores.
Señales y semáforos.
Contabilidad.
Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de
direcciones de memoria, que incluye el código, los datos y las pilas de los diferentes procesos ligeros. Esto
hace que no exista protección de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre
con los procesos convencionales.
Un proceso es una entidad relativamente independiente que dispone de su propio espacio de direcciones, su
propia información de estado y que utiliza los mecanismos de comunicación entre procesos que le proporciona
el sistema operativo para comunicarse con otros procesos.
Por otro lado, un hilo es una entidad más reducida capaz de convivir junto a otros hilos bajo el contexto de un
único proceso, permitiendo compartir la información de estado, el área de memoria y/o los recursos asociados a
ese 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.
6
Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de una red de área local.
Cada vez que llega una solicitud de una operación sobre un fichero, se puede generar un nuevo hilo para su
gestión. El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco
tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos
de un mismo proceso simultáneamente y en diferentes procesadores.
CONCURRENCIA
Para que dos actividades, sean concurrentes, es necesario que tengan relación entre sí, como puede ser la
cooperación en un trabajo determinado o el uso de información compartida.
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
requiere cierta sincronización y cooperación.
Ejemplo: un editor y un compilador pueden estar ejecutándose simultáneamente en una computadora sin que
exista concurrencia entre ellos. Por otro lado si un programa se está ejecutando y se encuentra grabando datos
en un archivo, y otro programa también en ejecución está leyendo datos de ese mismo archivo, sí existe
concurrencia entre ellos, pues el funcionamiento de uno interfiere en el funcionamiento de otro.
Los procesos son concurrentes si existen simultáneamente. 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 La
concurrencia puede presentarse en tres contextos diferentes:
2. Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación
estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos
concurrentes.
3. Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los
programadores de sistemas y se ha comprobado que algunos sistemas operativos están
implementados como un conjunto de procesos.
Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:
7
1. Multiprogramación con 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 simultánea.
2. Multiprocesador. Es una máquina formada por un conjunto de procesadores que comparten memoria
principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su
ejecución sino también superponerla.
3. Multicomputadora. Es una máquina de memoria distribuida, que está formada por una serie de
computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos
sobre los diferentes procesadores. En general, la concurrencia será aparente siempre que el número de
procesos sea mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso por
procesador. La concurrencia será real cuando haya un proceso por procesador. Aunque puede parecer
que la intercalación y la superposición de la ejecución de procesos presentan formas de ejecución
distintas, se verá que ambas pueden contemplase como ejemplos de procesos concurrentes
Así como existen las razones que motivan la ejecución de procesos concurrentes, también existen sus contras:
Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como: Proceso
independiente y procesos cooperantes.
Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos.
Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma
simultánea en un sistema.
Procesos cooperantes: Son aquellos que están diseñados para trabajar conjuntamente en alguna
actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.
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 relaciones entre ellos como puede ser la cooperación para un determinado trabajo
o el uso de información y 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 ellos sea para utilizar información como para cualquier otra cosa.
8
2.4.1 Exclusión mutua de secciones críticas.
Regiones críticas
Es posible clasificar las interacciones de los procesos en función del nivel de conocimiento que cada proceso
tiene de la existencia de los demás:
• Los procesos no tienen conocimiento de los demás: Estos son procesos independientes que no están
pensados para operar juntos.
• Los procesos tienen un conocimiento indirecto de los otros: Los procesos no conocen necesariamente a los
otros, pero comparten el acceso a algunos objetos.
• Los procesos tienen un conocimiento directo de los otros: Los procesos son capaces de comunicarse con los
demás y están diseñados para trabajar conjuntamente en alguna actividad.
Es en estos procesos concurrentes, donde, se plantean una serie de situaciones clásicas de comunicación y
sincronización, entre ellos el problema de la sección crítica.
Exclusión mutua
La exclusión mutua la podríamos definir como una operación de control que permite la coordinación de
procesos concurrentes, y que tiene la capacidad de prohibir a los demás procesos realizar una acción cuando
un proceso haya obtenido el permiso.
9
En 1965, E.W. Dijkstra sugirió el uso de una variable entera para contar el número de despertares almacenados
para su uso posterior.
En su propuesta se presentó un nuevo tipo de variable, llamada Semáforo. Un semáforo puede tener el valor 0,
lo que indica que no existen despertares almacenados; o bien algún valor positivo si están pendientes uno o
más despertares. Propuso dos operaciones, DOWN y UP (generalizaciones de SLEEP y WAKEUP,
respectivamente). La operación Down verifica si el valor de un semáforo es mayor que 0. En este caso,
decrementa el valor (es decir, utiliza un despertar almacenado) y continúa. Si el valor es cero, el proceso se va
a dormir. La verificación y modificación del valor, así como la posibilidad de irse a dormir se realiza en conjunto,
como una sola e indivisible acción atómica. Se garantiza que al iniciar una operación con un semáforo, ningún
otro proceso puede tener acceso a semáforo hasta que la operación termine o se bloquee. Esta atomicidad es
absolutamente esencial para resolver los problemas de sincronización y evitar condiciones de competencia.
La operación UP incrementa el valor del semáforo correspondiente. Si uno o más procesos dormían en ese
semáforo y no podían completar una operación Down anterior, el sistema elige alguno de ellos (por ejemplo, en
forma aleatoria) y se le permite terminar Down. Así, después de un UP en un semáforo con procesos
durmiendo, el semáforo seguirá con valor cero, pero habrá un menor número de procesos durmiendo. La
operación de incremento del semáforo y despertar de un proceso también es indivisible. Ningún proceso llega a
bloquear mediante un UP.
Un semáforo es una variable protegida, cuyo valor sólo puede ser leído y alterado mediante las operaciones P y
V, y una operación de asignación de valores iniciales y (Inicia semáforo).
Tipos de recursos
1.- Reutilizables
Un recurso reutilizable es aquél que puede ser usado con seguridad por un proceso y no se agota con el uso.
Los procesos obtienen unidades de recursos que liberan posteriormente para que otros procesos las reutilicen.
Como ejemplos de recursos reutilizables se tienen los procesadores, canales de E/S, memoria principal y
secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y semáforos.
2.- Consumibles
Un recurso consumible es aquél que puede ser creado (producido) y destruido (consumido). Normalmente, no
hay límite en el número de recursos consumibles de un tipo en particular. Un proceso productor que no está
bloqueado puede liberar cualquier número de recursos consumibles. Cuando un proceso adquiere un recurso,
éste deja de existir. Como ejemplos de recursos consumibles están las interrupciones, señales, mensajes, e
información en buffers de E/S.
Deben estar presentes estas cuatro condiciones para que ocurra un bloqueo mutuo. Si una o más de estas
condiciones están ausente, no puede haber bloqueo mutuo.
2.4.3.1 Prevención
La estrategia de prevención del interbloqueo consiste, a grandes rasgos, en diseñar un sistema de manera que
esté excluida, a priori, la posibilidad de interbloqueo. Los métodos para prevenir el interbloqueo son de dos
tipos. Los métodos indirectos consisten en impedir la aparición de alguna de las tres condiciones necesarias,
antes mencionadas (condiciones 1 a 3). Los métodos directos consisten en evitar la aparición del círculo vicioso
de espera (condición 4). Se examinarán a continuación las técnicas relacionadas con cada una de las cuatro
condiciones.
Retención y Espera
La condición de retención y espera puede prevenirse exigiendo que todos los procesos soliciten todos los
recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan
concederse simultáneamente. Esta solución resulta ineficiente por dos factores. En primer lugar, un proceso
puede estar suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes de recursos,
cuando de hecho podría haber avanzado con sólo algunos de los recursos. Y en segundo lugar, los recursos
asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual
se priva del acceso a otros procesos.
No apropiación ( no expropiacion )
La condición de no apropiación puede prevenirse de varias formas. Primero, si a un proceso que retiene ciertos
recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursos anteriores y solicitarlos
de nuevo, cuando sea necesario, junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso
que actualmente está retenido por otro proceso, el sistema operativo puede expulsar al segundo proceso y
exigirle que libere sus recursos. Este último esquema evitará el interbloqueo sólo si no hay dos procesos que
posean la misma prioridad. Esta técnica es práctica sólo cuando se aplica a recursos cuyo estado puede
salvarse y restaurarse más tarde de una forma fácil, como es el caso de un procesador.
2.4.3.2 Detección
Las estrategias de prevención del interbloqueo son muy conservadoras; solucionan el problema del interbloqueo
limitando el acceso a los recursos e imponiendo restricciones a los procesos. En el lado opuesto, las estrategias
de detección del interbloqueo no limitan el acceso a los recursos ni restringen las acciones de los procesos. Con
detección del interbloqueo, se concederán los recursos que los procesos necesiten siempre que sea posible.
Periódicamente, el sistema operativo ejecuta un algoritmo que permite detectar la condición de círculo vicioso
de espera. Puede emplearse cualquier algoritmo de detección de ciclos en grafos dirigidos.
11
2.4.3.3 Recuperación
Una vez que se ha detectado el interbloqueo se debe romper para que los recursos puedan finalizar su
ejecución y liberar así los recursos. Para ruptura de la espera se pueden realizar varias opciones. Las idónea
sería suspendiendo algunos de los procesos bloqueados para tomar sus recursos y reanudar sus ejecución una
vez que se hubiera deshecho el interbloqueo. Esta solución solo puede resultar factible en casos muy
particulares; no se podría suspender a un proceso de escribir de escribir en una impresora para pasarla a otro
proceso y reanudar después la impresión, como tampoco se podría suspender indefinidamente un proceso de
tiempo real. Las dos opciones que se suelen utilizar son: reiniciar uno o más de los procesos bloqueados y
expropiar los recursos de algunos de los procesos bloqueados.
Para aplicar la primera de las opciones se deben tener en cuenta una serie de factores con el fin de elegir
aquellos procesos cuya reiniciación resulte menos traumática. Entre los factores a tener en cuenta en cada
proceso se tienen:
1. La prioridad del proceso.
2. El tiempo de procesamiento utilizado y el que le resta.
3. El tipo y número de recursos que posee.
4. El número de recursos que necesita para finalizar.
5. El número de otros procesos que se verían involucrados con su reiniciación
En algunos sistemas de tiempo real el interbloqueo puede tener resultados inaceptables, por lo que no se puede
permitir que se presente dicha situación. En otros sistemas se rechaza el interbloqueo, aunque la situación
pudiera ser aceptable, por el costo en tiempo y medios adicionales que conlleva la recuperación.
Desventajas de la concurrencia:
SECUENCIABILIDAD
Los archivos secuenciales son un tipo de archivo en los que la información puede leerse y escribirse
empezando desde el principio del archivo.
Debemos tomar en consideración algunas características que deben tener los archivos secuenciales:
12
Archivos Secuenciales
Se refiere al procesamiento de los registros, no importa el orden en que se haga, para eso los registros están
organizados en forma de una lista y recuperarlos y procesarlos uno por uno de principio a fin.
Rendimientos de los archivos Secuenciales; dependiendo del dispositivo de almacenamiento utilizado el archivo
se puede mostrar el usuario como si fuera un sistema secuencial.
Al finalizar un archivo secuencial se denota con una marca de fin de archivo. (End end-of-file)
Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema
entre los procesos que los solicitan.
NIVELES DE PLANIFICACIÓN:
La planificación es el proceso por el cual el sistema operativo selecciona que proceso ejecutar. La selección del
proceso se basa en alguno de los algoritmos de planificación.
La planificación de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las funciones del
sistema operativo. Este despacho es llevado a cabo por un pequeño programa llamado planificador a corto
plazo o dispatcher (despachador). La misión del dispatcher consiste en asignar la CPU a uno de los procesos
ejecutables del sistema, para ello sigue un determinado algoritmo.
2. Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la cpu.
Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones”
(“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
13
3. Planificación de bajo nivel: 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. La efectúa el Despachador
del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento
primario.
Cada proceso es único e impredecible, es decir que pueden requerir intensivamente operaciones de Entrada /
Salida o intensivamente cpu; el planificador del Sistema Operativo no tiene la certeza de cuánto tiempo
transcurrirá hasta que un proceso se bloquee, ya sea por una operación de Entrada / Salida o por otra razón .
Para evitar que un proceso se apropie de la cpu un tiempo excesivo, los equipos poseen un dispositivo que
provoca una interrupción en forma periódica, por ejemplo 60 hz, o sea sesenta veces por segundo.
En cada interrupción del reloj el Sistema Operativo decide si el proceso que se está ejecutando continúa o si el
proceso agotó su tiempo de cpu y debe suspenderse y ceder la cpu a otro proceso.
Los principales conceptos relacionados con Planificación del Procesador son los siguientes:
Planificación apropiativa: es la estrategia de permitir que procesos ejecutables (desde el punto de vista
lógico) sean suspendidos temporalmente.
Planificación del procesador: determinar cuándo deben asignarse los procesadores y a qué procesos, lo
cual es responsabilidad del Sistema Operativo.
En esta técnica los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. Una vez
que un proceso tiene el CPU, se ejecuta hasta su terminación. Conocido como FCFS (First Come First Served).
Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada.
Cuando el proceso llega es puesto en su lugar en la cola después del que llegó antes que él y se pone en
estado de listo. Cuando un proceso comienza a ejecutarse no se interrumpe su ejecución hasta que termina de
hacerlo.
14
El tiempo de espera de cada proceso depende del número de procesos que están en la lista de listos al
momento de su ejecución y del tiempo que cada uno tenga en uso el cpu, y es independiente de las
necesidades de ejecución del propio proceso.
2.- Planificación del trabajo más corto (SJF) (Shortest Job First) (Prioridad al más corto)
Favorece a los procesos cortos a costa de los procesos largos. Además, selecciona los trabajos que serán
atendidos y que dejarán el sistema lo antes posible. Esto último traduce en listas de espera cortas. El SJF es no
apropiativo por lo que resulta de poca utilidad en ambientes de tiempo compartido. A cada proceso se le asigna
objetivos
el tiempo que usará cuando vuelva a estar en ejecución, y se irá ejecutando el que tenga un menor tiempo
asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el algoritmo FCFS.
Características: No apropiativa, El tiempo de espera aumenta según la longitud de los procesos, Es poco
predecible, No es justa con los procesos largos, Buen tiempo de servicio, Es difícil de implementar por los datos
necesarios para la planificación
Es apropiativa, en ella el proceso con el tiempo estimado de ejecución menor para llegar a su terminación es el
siguiente en ser ejecutado, incluyendo las nuevas llegadas. En SRT, un proceso en ejecución puede ser
apropiado por un nuevo proceso con n tiempo estimado de ejecución menor. La SRT tiene una sobrecarga
mayor que la SJF. Debe mantener un registro del tiempo de servicio transcurrido del trabajo en ejecución y
debe controlar las apropiaciones ocasionales.
Características: Apropiativa, Puede ser injusta porque un proceso corto puede quitar a uno largo, Tiene un
buen tiempo medio de servicio, Eficiente
Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado quantum o cuanto. Si el proceso
agota su quantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina
antes de agotar su quantum también se alterna el uso de la CPU.
A cada proceso se le asigna un tiempo determinado para su ejecución, el mismo tiempo para todos. En caso de
que un proceso no pueda ser ejecutado completamente en ese tiempo se continuará su ejecución después de
que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un algoritmo basado
en FCFS o FIFO que trata la cola de procesos que se encuentran en estado de listos como una cola circular.
El round robín es muy fácil de implementar. Todo lo que necesita el planificador es mantener una lista de los
procesos listos.
Características:
Baja sobrecarga si el cambio de contexto es eficiente y los procesos siempre están en memoria
principal
15
El tamaño óptimo de q depende de: Las cargas que vaya a soportar el sistema y La cantidad de
procesos
5.- QuevesMultilevel
Un algoritmo de planificación multinivel particiona la cola de listos en colas separadas. Se asignan en forma
permanente los trabajos a una cola, generalmente, basándose en alguna propiedad del mismo (requerimientos
de memoria, tipo de trabajo), teniendo cada cola su propio algoritmo. Por ejemplo, la cola interactiva podría
planificarse usando RR y la batch FIFO.
Ningún trabajo en una cola de baja prioridad puede ejecutarse si las colas con mayor prioridad no están vacías.
Si algún trabajo entra en una cola de mayor prioridad, el trabajo de otras colas es interrumpido.
En colas multinivel realimentadas los trabajos pueden moverse dentro de distintas colas. La idea es separar
procesos con distintos tipos de interrupciones de la CPU. Si un trabajo consume mucho tiempo de CPU, será
movido a una cola con menor prioridad.
En forma similar, si un proceso espera demasiado tiempo en una cola de baja prioridad, lo moveremos a una
cola de mayor prioridad.
TIEMPOS
En la Planificación de procesos se tiene en cuenta diferentes tiempos que pueden ser calculados, como son el:
"Tiempo de espera medio", el "Tiempo de retorno del proceso" y el "Tiempo de retorno medio".
Tiempo de espera medio: Es el promedio de tiempos en que los procesos están en estado de listos. En
algoritmos FCFS este tiempo suele ser bastante largo. En algoritmos SJF para los procesos largos este tiempo
suele ser muy grande, pues se estarán ejecutando constantemente los procesos más cortos y los más largos se
encontrarán constantemente en espera, por lo que pueden entrar en inanición. En Planificación por prioridad los
procesos de prioridad baja podrían no ejecutarse nunca. Para dar solución a este problema el envejecimiento
de un programa eleva su prioridad.
Tiempo de retorno del proceso: Es el tiempo que transcurre desde la creación de un proceso hasta que
termina la ejecución del programa que le dio lugar.
Tiempo de retorno medio: Es la suma de los tiempos de retorno de cada uno de los procesos dividida entre
la cantidad de procesos.
16