0% encontró este documento útil (0 votos)
72 vistas16 páginas

RESUMEN UNIDAD 2 Sistemas Operativos Nuevo

La gestión de procesos es la tarea fundamental de cualquier sistema operativo. El documento describe los conceptos básicos relacionados con la administración de procesos, incluidos algoritmo, programa, proceso, procesador, tarea, sesión y lote. Explica que un proceso es un programa en ejecución con información de estado y recursos asignados, y que pasa por diferentes estados como listo, bloqueado y ejecutando.

Cargado por

Lopez Olga
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas16 páginas

RESUMEN UNIDAD 2 Sistemas Operativos Nuevo

La gestión de procesos es la tarea fundamental de cualquier sistema operativo. El documento describe los conceptos básicos relacionados con la administración de procesos, incluidos algoritmo, programa, proceso, procesador, tarea, sesión y lote. Explica que un proceso es un programa en ejecución con información de estado y recursos asignados, y que pasa por diferentes estados como listo, bloqueado y ejecutando.

Cargado por

Lopez Olga
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

INSTITUTO TECNOLOGICO DE TAPACHULA

INGENIERIA EN SISTEMAS COMPUTACIONALES


ASIGNATURA: SISTEMAS OPERATIVOS -- SEMESTRE: 5º. “A”
DOCENTE: OLGA LUZ LOPEZ LOPEZ

UNIDAD 2.- ADMINISTRADOR DE PROCESOS Y DEL PROCESADOR


La gestión de procesos es la tarea fundamental de cualquier sistema operativo moderno. El sistema operativo
debe asignar recursos a los procesos, permitir el intercambio de información entre los mismos, proteger los
recursos de un proceso del resto y facilitar la sincronización de procesos. Para alcanzar estos objetivos, el
sistema operativo mantiene una estructura de datos para cada proceso que describe su estado y los recursos
que posee y que permite al sistema operativo imponer un control sobre los procesos (PCB Bloque de Control de
Proceso).

En un monoprocesador multiprogramado, debe intercalarse en el tiempo, la ejecución de múltiples procesos. En


un multiprocesador, no sólo puede intercalarse la ejecución sino que los procesos se pueden ejecutar
simultáneamente. La intercalación y ejecución simultánea, son formas de concurrencia y llevan a una multitud
de problemas complejos, tanto para el programador de aplicaciones como para el sistema operativo. El sistema
operativo debe llevar a cabo la función de planificar y ofrecer mecanismos para compartir y sincronizar
procesos.

CONCEPTOS BASICOS:

ALGORITMO, PROGRAMA, PROCESO, PROCESADOR, TAREA O JOB, SESIÓN Y LOTE

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.

PROGRAMA: Colección de instrucciones que el procesador interpreta y ejecuta, construido por un


desarrollador de software, utilizando algún lenguaje de programación.

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.

PROCESADOR: El procesador es el cerebro de la computadora, encargado de procesar toda la información.


Justamente Procesa todo lo que ocurre en la PC. Es el responsable de ejecutar todas las instrucciones
existentes. Mientras más rápido sea el procesador, más rápido serán ejecutadas las instrucciones. Este
componente es parte del hardware de muchos dispositivos, no solo de tu computadora.

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.

SESION: Una sesión es un intercambio de información interactiva semipermanente, también conocido como


diálogo, una conversación o un encuentro, entre dos o más dispositivos de comunicación, o entre un ordenador
y usuario. Una sesión se establece en un cierto momento y se finaliza poco después. Una sesión de
comunicación establecida puede implicar más de un mensaje en cada dirección. Una sesión es típicamente,
pero no siempre, con estado, significando que al menos una de las partes comunicantes necesita salvar

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

2.1. CONCEPTO DE PROCESO

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

 Un proceso incluye al programa en ejecución, registros y variables del mismo.


 Cada proceso tiene su CPU virtual
 Un proceso es una actividad de algún tipo: tiene un programa, entrada, salida y estado.
 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
 Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha
creado o ser creados en el mismo espacio de memoria.
 Un proceso se apoya en datos, recursos, en un estado y en un programa en cada momento.
 Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación”, el
cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto.

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

Crear un proceso implica operaciones como:

 Dar un nombre a un proceso.


 Insertarlo en la lista de procesos conocidos del sistema ( o tabla de procesos)
 Determinar la prioridad inicial de proceso.
 Crear el bloque de control de proceso.
 Asignar los recursos iniciales al proceso.
 
Un proceso puede crear un nuevo proceso. Si lo hace el proceso creador se denomina proceso padre, y el
proceso creado, proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación origina una estructura
jerárquica de procesos. No se puede destruir un proceso cuando este ha creado otros procesos.

La creación de un proceso puede ser de dos tipos:

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.

2.2. ESTADOS Y TRANSICIONES DE LOS PROCESOS

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.

Al admitirse un trabajo en el sistema se crea un proceso equivalente y es insertado en la última parte de la


“Lista de Listos”.

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.

La manifestación de un proceso en un Sistema Operativo es un “Bloque de Control de Proceso” (PCB) con


información que incluye:

 Estado actual del proceso.


 Identificación única del proceso.
 Prioridad del proceso.
3
 Apuntadores para localizar la memoria del proceso.
 Apuntadores para asignar recursos.
 Área para preservar registros.

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:

 Dar nombre al proceso.


 Insertar un proceso en la lista del sistema de procesos conocidos.
 Determinar la prioridad inicial del proceso.
 Crear el bloque de control del proceso.
 Asignar los recursos iniciales del proceso.

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

La “destrucción” de un proceso implica:

 Borrarlo del sistema.


 Devolver sus recursos al sistema.
 Purgarlo de todas las listas o tablas del sistema.
 Borrar su bloque de control 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:

• Nuevo: Cuando el proceso se está creando.


• Ejecución: Es cuando se están ejecutando instrucciones.
• Bloqueado: Es cuando el proceso está esperando que ocurra un evento.
• Listo: Es cuando un proceso está a la espera de ser asignado a un procesador.
• Terminado: Es cuando el proceso ha terminado su ejecución.

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.

 Listo En ejecución: La asignación de la CPU al primer proceso de la lista de listos es llamado


despacho y es ejecutado por la entidad de sistema llamada despachador. Mientras que el proceso
tenga la CPU se dice que está en ejecución.

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

 En ejecución Terminado: Esta transición ocurre cuando el proceso se ha terminado de ejecutarse, y


pasa a un estado de terminado.

2.3. PROCESOS LIGEROS: HILOS O HEBRAS


Un hilo de ejecución, en sistemas operativos, es similar a un proceso en que ambos representan una secuencia
simple de instrucciones ejecutada en paralelo con otras secuencias. Los hilos permiten dividir un programa en
dos o más tareas que corren simultáneamente, por medio de la multiprogramación. En realidad, este método
permite incrementar el rendimiento de un procesador de manera considerable. En todos los sistemas de hoy en
día los hilos son utilizados para simplificar la estructura de un programa que lleva a cabo diferentes funciones.

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.

DIFERENCIA ENTRE PROCESO E HILO

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.

2.4. CONCURRENCIA Y SECUENCIABILIDAD

2.4.1 Exclusión mutua de Secciones Críticas


2.4.2 Sincronización de procesos S.C.
2.4.2.1 Mecanismo de semáforos
2.4.3 Interbloqueo (DeadLock)

CONCURRENCIA

Es la existencia de varias actividades ejecutándose simultáneamente, y necesitan sincronizarse para actuar


conjuntamente. Se trata, en este caso, de un concepto lógico, ya que sólo hace referencia a las actividades, sin
importar el número de procesadores presentes.

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:

1. Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la


máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.

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

Existen diversas razones que motivan la ejecución de procesos concurrentes en un sistema:

 Facilita la programación de aplicaciones al permitir que éstas se estructuren como un conjunto de


procesos que cooperan entre sí para alcanzar un objetivo común.
• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es
dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los demás.
• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma simultánea.
• Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar
las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros.

Así como existen las razones que motivan la ejecución de procesos concurrentes, también existen sus contras:

• Inanición e interrupción de procesos


• Ocurrencia de bloqueos
• Que dos o más procesos requieran el mismo recurso (No apropiativo)

TIPOS DE PROCESOS CONCURRENTES.

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.

Competencia entre procesos por los recursos


Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, es decir, quieren
acceder a un recurso al mismo tiempo. Y la ejecución de un proceso puede influir en el comportamiento de los
procesos que compiten y el sistema operativo le asignará el recurso a uno de ellos y el otro tendrá que esperar.
Por lo que el proceso que quede esperando, se retrasará, se bloqueara y en el peor de los casos nunca se
terminará con éxito

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.

El control de la competencia involucra al sistema operativo inevitablemente, porque es el sistema operativo el


que asigna los recursos. Además, los procesos deben ser capaces por sí mismos de expresar de algún modo
los requisitos de exclusión mutua, como puede ser bloqueando los recursos antes de usarlos.

2.4.2 Sincronizacion de Procesos en S.C.


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.

La sincronizació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.

2.4.2.1 Mecanismo de semáforos

Sincronización por semáforos

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

2.4.3 Interbloqueo (DeadLock)


El interbloqueo puede definirse formalmente como sigue: Un conjunto de procesos está en interbloqueo si cada
proceso del conjunto está esperando un evento que sólo otro proceso del conjunto puede causar. Puesto que
todos los procesos están esperando, ninguno de ellos puede causar ninguno de los eventos que podrían
despertar a cualquiera de los demás miembros del conjunto, y todos los procesos continúan esperando
indefinidamente.

Tipos de recursos

Se pueden distinguir dos categorías generales de recursos: reutilizables y consumibles.

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.

Condiciones para el interbloqueo:


Deben cumplirse cuatro condiciones para que haya un bloqueo mutuo:
10
1. Condición de exclusión mutua. Cada recurso está asignado únicamente a un solo proceso o está
disponible.
2. Condición de retener y esperar. Los procesos que actualmente tienen recursos que les fueron otorgados
previamente pueden solicitar nuevos recursos.
3. Condición de no expropiación. No es posible quitarle por la fuerza a un proceso los recursos que le
fueron
otorgados previamente. El proceso que los tiene debe liberarlos explícitamente.
4. Condición de espera circular. Debe haber una cadena circular de dos o más procesos, cada uno de los
cuales está esperando un recurso retenido por el siguiente miembro de la cadena.

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.

Beneficios del uso 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álculo
 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).

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:

1. La escritura de nuevos datos siempre se hace al final del archivo.


2. Para leer una zona concreta del archivo hay que avanzar siempre, si la zona está antes de la zona
actual de lectura, será necesario "rebobinar" el archivo. 
3. Los ficheros sólo se pueden abrir para lectura o para escritura, nunca de los dos modos a la vez.

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) 

2.5. NIVELES, OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN

El planificador es un componente funcional muy importante de los sistemas operativos multitarea y


multiproceso, y es esencial en los sistemas operativos de tiempo real. Su función consiste en repartir el tiempo
disponible de un microprocesador entre todos los procesos que están disponibles para su ejecución.

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema
entre los procesos que los solicitan.

Planificación de procesos en Sistemas Operativos. Conjunto de políticas y mecanismos incorporados al sistema


operativo, a través de un módulo denominado planificador, que debe decidir cuál de los procesos en
condiciones de ser ejecutado conviene ser despachado primero y qué orden de ejecución debe seguirse. Esto
debe realizarse sin perder de vista su principal objetivo que consiste en el máximo aprovechamiento del
sistema, lo que implica proveer un buen servicio a los procesos existentes en un momento dado.

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.

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

1.- Planificación de alto nivel


2.- Planificación de nivel medio
3.- Planificación del bajo nivel

1. Planificación de alto nivel: También se denomina Planificación de trabajos. 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.

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.

OBJETIVOS DE LA PLANIFICACIÓN DE PROCESOS


La Planificación de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo de respuesta, el
tiempo de regreso y el rendimiento.

• Equidad: Todos los procesos deben ser atendidos.


• Eficacia: El procesador debe estar ocupado el 100% del tiempo.
• Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser
el menor posible.
• Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados esperados por los
usuarios por lotes.
• Rendimiento: Maximizar el número de tareas que se procesan por cada hora.

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 no apropiativa: es la estrategia de permitir la ejecución de un proceso hasta terminar.

 Planificación del procesador: determinar cuándo deben asignarse los procesadores y a qué procesos, lo
cual es responsabilidad del Sistema Operativo.

2.6. TÉCNICAS DE ADMINISTRACIÓN DEL PLANIFICADOR


Ciertos algoritmos son utilizados para planificar la CPU, la elección de uno (o de una mezcla de varios) depende
de decisiones de diseño.

1.- Planificación primero en llegar – primero en salir (FIFO)

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.

Características: No apropiativa, Justa y Predecible.

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

3.- Planificación del tiempo restante más corto primero (SRT)

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

4.- Planificación de asignación en rueda (RR - Round Robin):

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

 Es la más usada en sistemas de tiempo compartido


 Es apropiativa

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.

6.- MultiLevel Feedback Queves

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

También podría gustarte