Está en la página 1de 23

Rodriguez Yanet

SISTEMAS OPERATIVOS I
UNIDAD N°1: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

Software de sistema: sistema operativo como pieza central. Gobiernan el hardware.

Software de aplicación: navegadores, planillas de cálculo, etc. No gobierna el hardware.

SOFTWARE DE SOFTWARE DE
APLICACIÓN APLICACIÓN
COMPILADORES/ SOFTWARE
ENSAMBALDORES DE
SISTEMA
S.O.
LENGUAJE MÁQUINA
HARDWARE

MICROCÓDIGO
HARDWARE

Hardware: recurso físico. La utilización del hardware presenta el inconveniente de tener que conocer aspectos complejos
sobre su funcionamiento, por lo que con la evolución de los años fue necesario incorporar capas de software a fin de
sacarle mayor provecho al recurso físico y abstraer la complejidad que se presenta al usuario final.

Software de sistema: el sistema operativo es el principal elemento de esta capa.

Software de aplicación: conformado por diferentes tipos de software que hace uso el usuario final.

Sistema operativo: cumple la función de controlar todos los recursos informáticos y establecer la base sobre la que
podrán escribirse los softwares de aplicación.

Microcódigo: conjunto de instrucciones, provista por el fabricante del hardware, que utiliza funciones mínimas que hacen
la ejecución de mejor forma del hardware, suelen estar almacenados en memorias de solo lectura.

Lenguaje máquina: cuenta con 100 o 500 instrucciones que se basan en operaciones aritméticas, comparación de valores
y traslado de datos dentro del recurso informático.

Definición global: un sistema operativo es el conjunto de rutinas que hacen utilizable el hardware, actúan de
intermediarios entre el hardware y el usuario y otorgan la capacidad de computo a la capacidad bruta de computo que
provee el hardware. Los sistemas operativos residen instalados en el mismo hardware que controla, las funciones de un
sistema operativo se dividen en dos grandes grupos:

 La facilidad de uso del hardware: ofrece una serie de servicios, los cuales podrán ser empleados por el software
de aplicación, los servicios están dados por un conjunto de rutinas que cumplen una función en particular:
o Creación de programas/procesos: el sistema operativo facilita la interacción de procesos entre el
programa que escribe el programador y el usuario.
o Asignación de recursos a dichos programas/procesos: asignación de espacio en memoria principal.
o Ejecución de procesos: deberá el sistema operativo implementar algo para permitir al procesador la
ejecución de un proceso.
o Control de accesos: se encarga de ver que usuario o que software puede usar cierto recurso.
o Acceso a archivos: se encarga de aceptar o denegar el acceso a cierto archivo.
o Contabilidad: medir rendimiento y consumo del uso del hardware.

 Gobierno del hardware o administración de recursos: gestiona los recursos porque son limitados, establece
estrategias para optimizar el uso el hardware.

1
Rodriguez Yanet

o Consume mismos recursos: el sistema operativo forma parte de los que utilizan los recursos del sistema
(lo ideal sería estar por fuera del sistema para controlar sin formar parte). El sistema operativo debe ser
justo para no asignarse todos los recursos para él.
o Entrega de recursos: En muchas ocasiones el sistema operativo debe ceder recursos para la ejecución
de procesos. Por lo tanto, consume los mismos recursos que el sistema y debe equipararlos de forma
equitativa.
o Modo Kernel: El sistema operativo se ejecuta en modo Kernel (privilegiado).

Programa y proceso:

 El programa es la instancia estática y el proceso es la instancia dinámica.


 El programa reside almacenado de manera persistente y el proceso reside en memoria volátil.

EVOLUCION HISTORICA DE LOS SISTEMAS OPERATIVOS:

o Generación 0 (1940- 1945): grandes recursos que ocupaban los recursos informáticos eran de gran tamaño, no
eran de acceso masivo y directamente no existía sistema operativo. Se codificaba en lenguaje máquina. Existen
en los países poderosos para uso científico o militar.
o Generación 1 (1945- 1955): ausencia de sistema operativo. Rutinas de control, rutinas de gestión de trabajos.
o Generación 2 (1955- 1965): surge la implementación de transistores, los cuales logran darle a la electrónica un
tamaño más pequeño. Surgen dos conceptos fundamentales para los sistemas operativos que permiten el uso del
sistema informático de manera más eficiente, la multiprogramación (varios procesos se encuentran en memoria
principal y el procesador cambia rápidamente entre uno y otro, capacidad de ejecutar múltiples procesos en una
unidad de procesamiento) y el multiprocesamiento (capacidad de tener varios procesadores que utilizan el
mismo sistema para incrementar la capacidad de procesamiento). Independencia de dispositivos de entrada y
salida, es necesario que cada proceso defina o indique que recursos va a usar, el programa debe especificar las
características del recurso especificado, esto nos va a permitir gestionar la asignación de esos recursos de la
forma más criteriosa, podrá el sistema operativo analizar la disponibilidad de recursos.
o Generación 3 (1965- 1980): marcada por el amplio desarrollo de la multiprogramación y por los circuitos
integrados, los cuales logran compactar el tamaño de los recursos informáticos. Dentro de la multiprogramación
aparece la partición de memoria y el aprovechamiento de tiempos muertos o de espera por operaciones de
entrada y salida de otros procesos. Técnica de spooling que consiste en encolar trabajos de entrada y salida a fin
de optimizar la utilización de los recursos lentos del sistema informático. Surge el concepto de time sharing o
tiempo compartido, los sistemas informáticos se componen de recursos más potentes, por lo que hay mayor
capacidad de procesamiento, es decir, ejecuciones paralelas y mayor capacidad de ejecución medida por lo que
se podía predecir el tiempo en que se ejecute.
o Generación 4 (1980- 1990): aparecen las computadoras personales. Surge el sistema operativo al usuario común
por lo que se pudo lograr la masificación. Surgen interfaces gráficas. Aparecieron sistemas operativos
conectados por una red, así mismo surgen las primeras ideas de procesamiento de sistemas operativos
distribuidos, esta posibilidad de tener recursos distribuidos y conectados no permite compartir recursos.
o Generación 5 (1990- actualidad): sistemas operativos en móviles, en agentes autónomos, en inteligencia
artificial, en un robot, en pequeños controladores, etc. La posibilidad de computo en internet y almacenamiento.
Virtualización de servidores, virtualización de sistemas operativos.

Clasificación de sistemas operativos por estructuras:

 SISTEMAS OPERATIVOS MONOLÍTICOS: no tienen estructura, el conjunto de rutinas carecen de una


jerarquía, es decir, todos a un mismo nivel. Ninguno tiene prioridad sobre otro por lo que se genera un embrollo.
No existía protección de datos, por lo que una mala programación podía permitir acceder a memoria.
Surge una pequeña estructura con el pasar de los años, que tenía el programa principal, programas de servicio y
programas de utilidades, de esta manera el código se va estructurando, pero continua la desprotección de datos.
Ejemplos: Microsoft DOS, UNIX, son sistemas pensados en un usuario trabajando sobre el equipo.

2
Rodriguez Yanet

 SISTEMAS OPERATIVOS EN CAPAS: consiste en estructurar el sistema operativo en una secuencia de capas
donde cada capa ofrece servicio a la capa superior e las interfaces entre las capas está claramente definido.
Permite la compilación por capas e intercambiar las capas de una versión a otra, es decir, que se puede optimizar
el código sin dejar de ofrecer los mismos servicios.
 SISTEMAS OPERATIVOS CLIENTE- SERVIDOR: el fundamento del sistema se basa en poner sobre el
hardware un micronúcleo o microkernel del sistema operativo y por sobre él los diferentes servicios.
 SISTEMAS OPERATIVOS VIRTUALIZADO: la ventaja es que en un mismo equipo podemos correr
diferentes servidores con sus respectivos clientes, con un mismo hardware y los equipos están conectados en
red.

Clasificación de sistemas operativos en función al servicio que presta:

 NÚMERO DE USUARIO:
 MONOUSUARIO: aquellos sistemas que soportan un usuario a la vez, sin importar el número de
procesadores, ni el número de procesos que pueda ejecutar en el mismo instante de tiempo.
 MULTIUSUARIO: tiene la capacidad de dar servicio a más de un usuario a la vez, ya sea a través de
terminales o sesiones remotas a través de una red, no importa el número de procesadores, ni el número
de tareas. Tiempo compartido.
 NÚMERO DE TAREAS:
 MONOTAREA: capaz de ejecutar una única tarea por usuario, podría existir el caso de sistemas
operativos que sean multiusuario monotarea.
 MULTITAREA: aquel que puede realizar más de una tarea al mismo tiempo, son lo que están más
difundidos en los tiempos modernos.
 NÚMERO DE PROCESADORES:
 UNIPROCESO: únicamente puede utilizar un solo procesador. La existencia de más de uno sería inútil
ya que el sistema operativo no podría manejarlo.
 MULTIPROCESO: capaces de gestionar más de una unidad de procesamiento y según su organización
pueden ser:
 Simétricos.
 Asimétricos: se seleccionan un procesador como maestro que coordenada las tareas y asigna
los procesos a los demás procesadores esclavos.

INTERFAZ SIMPLIFICADA:

1- Programas: el mismo sistema operativo ofrece un conjunto de características tales como los editores, debuggers
para facilitar la tarea del programador en la creación de programas.
2- Ejecución de programas: para ejecutar un programa se requiere de un conjunto de tareas para generar la creación
de procesos en el cual se deberá alojar en memoria principal, se lo deberá identificar y se le deberá conocer un
conjunto de recursos del sistema.
3- Acceso a dispositivos de E/S: estos dispositivos son los utilizados para la interacción con el usuario. Los
dispositivos serán clasificados en conjunto y cada uno de estos requerirá un tratamiento particular.
4- Control de acceso a archivos: una serie de códigos que permiten almacenar información persistente que deben
conocer no solo la implementación lógica del sistema de archivos sino también la naturaleza del funcionamiento
del hardware de almacenamiento secundario a si mismo deberán proteger el acceso a los archivos por usuarios o
programas indicados.
5- Acceso al sistema operativo: el sistema deberá ofrecer una berrera de seguridad para el acceso de los recursos
del sistema brindando protección no solo a los recursos, sino también a los datos del usuario.
6- Detección y recuperación o respuesta a errores: el sistema operativo deberá en lo posible detectar situaciones
que conduzcan a un funcionamiento incorrecto o injusto de los recursos del sistema. Deberá tratarlos a fin de
corregirlos o brindar la mayor cantidad de información del error para notificar al usuario.
7- Contabilidad o auditoria: El sistema operativo debe registrar lo que acontece en el sistema a fin de optimizar su
ejecución y permitir ajustar parámetros para aumentar la performance de este. El sistema operativo registrara

3
Rodriguez Yanet

tiempos de ejecución, tiempo de uso de recursos, heurísticas de comportamiento, rutinas diferenciadas


asiduamente (en forma frecuente).

TIPOS DE SISTEMAS OPERATIVOS

Procesamiento en serie:

 Grandes estructuras.
 Solo se puede realizar una tarea a la vez.
 Una ejecución tras otra (ejecución en serie).
 Interacción física entre el hombre y la máquina, el hombre debía pelear con el hardware.
 No hay sistema operativo.

Procesamiento en lotes:

 Ejecutan los programas en lotes que reúnen las mismas características (se optimizan los tiempos). La ejecución
sigue siendo en serie.
 Cambio de contexto: cuando el sistema operativo se debe adoptar a la ejecución de un nuevo proceso.
 No pueden ser interrumpidos.
 Poco o nada de sistema operativo.

Sistema en lotes multiprogramados:

 Varios procesos, no programas.


 Posibilidad de tener varios procesos a la vez en la memoria.
 Es necesario una gestión de memoria.

Sistema de tiempo compartido:

 Permite simular de que el sistema y los recursos son todo para cada usuario.
 Tiempo compartido porque tenemos una sola unidad de procesamiento compartido por varios usuarios.
 Los usuarios debían protegerse del resto de los usuarios.
 Un único gran servidor.

Sistemas operativos personales:

 Interfaz amigable.
 Sistemas operativos hogareños.
 Aparecen en la década de los 70 pero se desarrollan en épocas siguientes a través de equipos más pequeños y
económicos. Los procesadores del pc carecían de funciones de protección del sistema operativo vs. el software
de aplicación. Fue entonces cuando se intentó aprovechar los sistemas operativos de grandes equipos para
adaptarse en menor escala de las microcomputadoras debido a que estos equipos resultaban de bajo costo, se
difundieron en forma masiva y resultaron exitosos gracias al desarrollo de una interfaz gráfica amigable para el
usuario común.

Sistemas operativos paralelos:

 Mas confiable.
 Mayor capacidad de procesamiento.
 Los procesos trabajan de forma paralela.
 Distribución de forma equitativa de los procesos secundarios.
 Son fuertemente acoplados, comparten recursos como la memoria o el reloj, esto quiere decir que por más que
tenga 2 procesadores no significa que sea el doble de rápido ya que comparten los demás recursos.
 Tiene 2 procesadores, pero si muere la fuente mueren los dos, es decir, no es tolerable a fallas.

Sistemas operativos distribuidos:

 Los equipos no necesariamente son iguales.

4
Rodriguez Yanet

 El sistema operativo es débilmente acoplado.


 Recursos compartidos.
 Es tolerable a fallas (tiene 2 procesadores y si mueres uno, el otro funciona más exigido, pero funciona).
 El sistema operativo está distribuido en diferentes servidores que forma parte del sistema operativo.
 El sistema es escalable.

Sistemas en tiempo real:

 Importan los procesos y no el usuario.


 Se utilizan en entornos donde son procesados un gran número de sucesos o eventos.

UNIDAD N°2: PROCESOS

Proceso: ejecución de un programa, es una unidad de procesamiento gestionada por el sistema operativo. Formalmente
decimos que un proceso es una entidad constituida por un código de programa y un conjunto de datos asociados a la
ejecución de dicho código. Para poder gestionar a los procesos y a sus datos el sistema operativo necesita una estructura
de datos asociada a cada proceso, lo que se conoce como bloque de control de proceso, es una estructura de datos
compuesta de una serie de atributos con valores particulares para cada atributo. Cuando un determinado proceso se
ejecuta, el sistema operativo le asigna un bloque de control de proceso.

Atributos asociados al PCB:

 ID: permite distinguir a un proceso de otro.


 Estado: define en qué momento se encuentra el proceso, el proceso se puede encontrar en diferentes situaciones
en función al modelo de estados que opte el sistema operativo. Los procesos tienen un ciclo de vida.
 Prioridad: es una característica de jerarquía que es utilizada para darle un nivel relativo a un proceso por sobre
los demás. Los sistemas en tiempo real son los que se asocian a la prioridad. La prioridad puede ser definida
antes de cada proceso o puede ser cambiada durante por el sistema operativo.
 Contador de programa: apunta la línea o instrucción que se está ejecutando en un momento particular.
Dependerá de un determinado suceso para que se detenga o retroceda. Sirve para saber cuándo termina un
proceso y para saber hasta dónde llego un proceso, cambiar de proceso y volver al primer proceso y culminarlo.
 Apuntadores a memoria: los procesos se encuentran en memoria principal y el sistema operativo debe saber
dónde está almacenado el proceso, determinan el rango de memoria principal que está ocupando el proceso.
 Datos de contexto: datos que conciernen al momento de ejecución en que se encuentra el proceso presente en los
registros de procesador. Estos datos entre cambiar entre un proceso u otro también son guardados.
 Dispositivos de entrada y salida asociados al proceso: posesión y liberación de recursos por los procesos. De
esta manera evitaríamos asignarle un recurso a otro proceso y que aún se esté usando el recurso con otro proceso
dado que los recursos son limitados.
 Información de auditoria o de contabilidad: registra los diferentes tiempos que fueron resultado de la ejecución
de proceso, la cantidad de tiempo en la que fueron asignados la cantidad de procesos, el tiempo de espera para
un determinado recurso, los tiempos totales de ejecución, los tiempos de espera, la cantidad de recursos
utilizados, es decir, un conjunto métricas que permiten obtener información. En la culminación del proceso es
cuando mayor cantidad de información se obtiene en este atributo.

Modelos o ciclos de estados de los procesos:

 MODELO DE DOS ESTADOS: el proceso se ejecuta y debe terminar. Está constituido por la ENTRADA, la
NO EJECUCION, el PROCESO, la EJECUCION.
Esto solo nos permite ejecutar 1 único PROCESO a la vez. Entonces se establece un modelo de 2 estados que
permite volver en el mismo proceso. Esta vuelta nos va a permitir intercambiar el PROCESADOR entre NO
EJECUTADO y EJECUTADO. Esto se denomina MULTIPROGRAMADO.

5
Rodriguez Yanet

 MODELO DE CINCO ESTADOS: esta evolución se debe a mejorar la gestión del procesador ante la ocurrencia
de operaciones de E/S que generan desperdicios de tiempo de procesamiento.
o Admitir: le asigna recursos y garantiza que ese proceso se va a poder ejecutar.
o Nuevo: el proceso se acaba de crear, aunque aún no ha sido admitido como proceso ejecutable hasta
tanto el sistema operativo le garantice los recursos necesarios.
o Terminado: indica que el proceso ha sido excluido por el sistema operativo ya que este concluyo la
ejecución en forma exitosa o fallida (también brinda datos de autoría).
o Listo: indica que el proceso está listo para ejecutar cuando la planificación del procesador así lo
disponga.
o Ejecución: describe que el proceso está haciendo uso del procesador.
o Bloqueado: indica que el proceso no puede continuar su ejecución hasta tanto ocurra un determinado
suceso tal como la culminación de una operación de E/S, la aparición de un dato que dependa de otro
proceso, entre otros.
 MODELO DE SIETE ESTADOS:

viene a cubrir la necesidad que era del almacenamiento principal haciendo que los procesos improductivos
poseen al almacenamiento secundario a fin de permitir que nuevos procesos sean admitidos.
o Bloqueado suspendido: el proceso es recorrido al almacenamiento secundario esperando un
determinado suceso.

6
Rodriguez Yanet

o Listo suspendido: el evento ha ocurrido, pero estará disponible para ejecutar cuando se disponga de
almacenamiento principal.
o SWAP: intercambio de procesos de memoria principal o secundario.

Creación y destrucción de procesos:

CREACIÓN DE PROCESOS: Los procesos son inicializaciones de un sistema operativo, este los inicia al arrancar su
funcionamiento, es decir cuando se enciende una PC. El sistema operativo necesita de un mecanismo para crear y
terminar procesos.

Existen cuatro sucesos principales para la creación de un proceso dentro de un SO.

1. Inicialización del sistema: Cuando se arranca un SO se crean varios sucesos.


2. Ejecución de una llamada al sistema para crear procesos por parte de un proceso en ejecución.
3. Solicitud de un usuario para crear un proceso.
4. Inicio de un trabajo por lotes.

DESTRUCCIÓN DE PROCESOS: Al término de cada tarea encomendada a cada proceso, es como todos los demás
procesos tienen que terminar o acabar su tarea, para lograr esto al igual que su creación existen cuatro formas para
terminarlos:

1. Terminación normal (acción voluntaria): cuando el proceso acaba la tarea encomendada.


2. Terminación por error (acción voluntaria): cuando el archivo o programa no se encuentra instalado acaba el
proceso este es un ejemplo.

7
Rodriguez Yanet

3. Error fatal (acción voluntaria): cuando se encuentran archivos borrados en un sistema o programa o un defecto
en el programa.
4. Terminación por otro proceso (acción involuntaria): cuando un proceso pide que se termine otro para poder
inicializarse.

UNIDAD N°3: PLANIFICACIÓN DE PROCESOS.

Planificar de qué manera vamos a ejecutar el procesador. Gestionar los recursos a través de un conjunto de estrategias o
algoritmos. El sistema operativo hace lo mismo con el procesador y se subdivide en tres tipos:

 Planificación a largo plazo: se encarga de gestionar los procesos y la información a nivel macro o general. Sera
el encargado de determinar que procesos pueden ser admitidos y terminados en el sistema. NUEVO Y
TERMINADO. Guarda mayor relación con la memoria principal.
 Planificador de corto plazo: será el encargado de la asignación estricta de procesos, determinará el cómo y el
cuándo un proceso tendrá acceso al procesador. BLOQUEADO Y BLOQUEADO SUSPENDIDO. Guarda
mayor relación específicamente con el procesador.
 Planificador de mediano plazo: encargado de decidir qué proceso será removido de almacenamiento principal a
almacenamiento secundario. Tendrá a cargo la gestión de los procesos en estado bloqueado y de los
suspendidos. LISTO Y EJECUCCIÓN. Swap, lo que guarda relación con la memoria principal y la memoria
secundaria.

Los algoritmos utilizados pueden ser:

o APROPIATIVOS: permiten que un proceso deje el uso del procesador para ser utilizado por otro
constituyéndose un cambio de contexto entre procesos.
o NO APROPIATIVOS: el proceso que inicia la ejecución la concluye en su totalidad y no pueden ser removidos
del procesador.

ALGORITMOS DE PLANIFICACION DE CORTO PLAZO:


FIFO (First in first out). NO APROPIATIVO.
Hasta que no termine el proceso no va a seguir el siguiente proceso. El procesador ejecuta cada proceso hasta que
concluya en función al orden de llegada. La administración de cola consiste en colocar a los procesos uno detrás de otro
hasta que le toque la ejecución. Esta cola se alimenta con la creación de procesos.

Proceso Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio (T) espera (E) servicio (I)
llegada (ti)

8
Rodriguez Yanet

A 0 3 3 3 0 1
B 1 6 9 8 2 0.75
C 4 2 11 7 5 0.29
D 5 7 18 13 6 0.53
E 7 4 22 15 11 0.26
F 8 1 23 15 14 0.06
Promedio 10.17 6.33 0.48

T = tf- ti

E=T–t

I = t/ T

F
E
D
C
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Ventajas:

o Simple implementación y sencillo.


o Es predecible.
o Es justo para procesos largos.

Desventajas:

o Los procesos cortos deben esperar muchas unidades de tiempo ante procesos largos.
o Es pobre en cuanto a su comportamiento.
o El tiempo de espera promedio suele ser muy amplio.
o El tiempo promedio de servicio es muy variable según la cantidad y duración de los procesos.

Observación: el índice de servicio mejora ante procesos largos, a mayor duración, mejor índice.

ROUND ROBIN. APROPIATIVO.


Establece una cuota de tiempo de ejecución a cada proceso, esa cuota recibe el nombre de quantum. Básicamente elige
un valor de quantum y se la asigna para ejecutar cada proceso. Una vez concluido el quantum, si el proceso no concluyo
la ejecución deberá ser combinado por otra colocándose este al final de la cola de listos. En el caso de que un nuevo
proceso anule al sistema (a la cola de listos) y otro este reingresando, tendrá prioridad el nuevo proceso por sobre el otro.

Quantum = 3.

Proceso Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio (T) espera (E) servicio (I)
llegada (ti)
A 0 3 3 3 0 1
B 1 6 18 17 11 0.35
C 4 2 8 4 2 0.5

9
Rodriguez Yanet

D 5 7 23 18 11 0.38
E 7 4 22 15 11 0.26
F 8 1 15 7 6 0.14
Promedio 10.67 6.83 0.44

F
E
D
C
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

El manejo de colas: consiste en colocar los procesos a su llegada al sistema. En dicho orden, se asigna un quantum y una
vez que este es utilizado, el proceso deberá volver a ubicarse al final de la cola para competir por un nuevo quantum. En
caso de que un nuevo proceso ingrese al sistema, cuando otro se esté alimentando al concluir su quantum, tendrá
prioridad un nuevo proceso.

Ventajas:

o Es justo y de uso amplio (se puede usar en otros sistemas operativos).


o Ofrece un tiempo de servicio uniforme.
o Es la más utilizada en sistemas de tiempo compartido.

Desventajas:

o Determinar el quantum, este valor dependerá de la carga de procesos, del tipo de sistemas y del tiempo de
procesos.
o El tiempo de espera promedio suele ser muy grande.

SJN (Shortest Job Next). NO APROPIATIVO.

Toma el proceso que necesite menor tiempo de ejecución y ubica a los procesos en la cola de listos de menor a mayor en
función al tiempo de ejecución que requieran. Si hay 2 procesos que necesitan igual tiempo de ejecución se utiliza fifo
para determinar cuál es el proceso por ejecutar.

Proceso Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio (T) espera (E) servicio (I)
llegada (ti)
A 0 3 3 3 0 1
B 1 6 9 8 2 0.75
C 4 2 12 8 6 0.25
D 5 7 23 18 11 0.38
E 7 4 16 9 5 0.44
F 8 1 10 2 1 0.5

10
Rodriguez Yanet

Promedio 8 4.17 0.55

D
E
C
F
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

El manejo de colas: consiste en ubicar al proceso más corto en el primer lugar (se ordena la cola de procesos de menor a
mayor).

Ventajas:

o El tiempo de espera aumenta en función de la longitud de los procesos, el tiempo de espera es óptimo.
o Buen tiempo de servicio.
o Utilizado en sistemas por lotes.

Desventajas:

o No se puede definir fácilmente la longitud o duración de los procesos.


o Es poco predecible y no es justo para procesos largos.
o Necesita como dato el tiempo estimado de ejecución. Se puede resolver si el usuario ingresa el dato re, por
análisis del programa o basados en información heurística o de contabilidad de los procesos que ya se han
ejecutado.

SRT (Shortest Remaining Time). APROPIATIVO.

Es una variante del SJN, Le da prioridad de ejecución al proceso que menor tiempo remanente de ejecución que le quede
al proceso. Antes condición de empate se prioriza el que se está ejecutando.

Proceso Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio (T) espera (E) servicio (I)
llegada (ti)
A 0 3 3 3 0 1
B 1 6 17 16 10 0.76
C 4 2 6 2 0 1
D 5 7 23 18 11 0.39
E 7 4 12 5 1 0.8
F 8 1 9 1 0 1
Promedio 7.5 3.7 4.95

F
E
D

11
Rodriguez Yanet

C
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Es una variante del SJN que cambia el proceso en ejecución cuando se ejecuta un proceso con tiempo de ejecución menor
del que le queda al que se está ejecutando.

Desventajas:

o Generado de mayores cargar.


o Injusto con procesos largos que hayan ejecutado considerablemente, pero sean cambiados por un nuevo proceso
corto que arribe al sistema.

ALGORITMO POR PRIORIDAD (APROPIATIVO Y NO APROPIATIVO)

Elige el proceso con mayor prioridad de los que se encuentren en la cola de listos. Es necesario un valor adicional que es
justamente la prioridad. La prioridad es seteada para cada uno de los procesos, existen sistemas operativos donde la
prioridad se mantiene estática o en otros casos donde la prioridad es estática.

La prioridad puede ser injusta con procesos de baja prioridad quedan relegados hasta que terminen todos aquellos
procesos de alta prioridad, para mejorar esto existe la técnica de “envejecimiento de prioridad” esto quiere decir que si un
proceso a pasados x tiempo en espera el sistema operativo puede aumentar la prioridad para así poder competir con los
demás procesos.

La condición por la cual en este ejemplo el proceso A se denomina postergación indefinida. Para tratar esto, el algoritmo
usa la técnica de “envejecimiento de prioridad”.

NO APROPIATIVO:

Proceso Prioridad Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio espera (E) servicio (I)
llegada (ti) (T)
A 0 0 3 3 3 0 1
B 1 1 6 9 8 2 0.75
C 0 4 2 22 18 16 0.11
D 2 5 7 16 11 4 0.63
E 1 7 4 20 13 9 0.31
F 0 8 1 23 15 14 0.06
Promedio 11.33 7.5 0.48

F
C
E
D
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

APROPIATIVO:

12
Rodriguez Yanet

Proceso Prioridad Tiempo de Tiempo de Tiempo de Tiempo de Tiempo de Índice de


inicio o ejecución (t) finalización (tf) servicio espera (E) servicio (I)
llegada (ti) (T)
A 0 0 3 20 20 17 0.15
B 1 1 6 18 17 11 0.35
C 0 4 2 22 18 16 0.11
D 2 5 7 12 8 1 0.88
E 1 7 4 16 9 5 0.44
F 0 8 1 23 15 14 0.06
Promedio 14.5 10.66 0.33

F
C
E
D
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Ventajas:

o Hay que destacar la ejecución de procesos prioritarios para el sistema.

Desventajas:

o Presenta el problema de postergación indefinida o inanición, esto quiere decir que procesos de baja prioridad
podrían quedar muy relegados ante la aparición de procesos de alta prioridad.

HRN (High Response Next). APROPIATIVO Y NO APROPIATIVO.

Maneja una prioridad, pero no es definida, es dinámica y se calcula de la siguiente manera:

P = (w + t)/ t

P= prioridad.

w= tiempo de espera acumulado que lleva el proceso.

Inicialmente la prioridad de los procesos vale uno ya que no tienen espera y esta prioridad aumentara a medida que los
procesos permanezcan en cola.

APROPIATIVO: Se calcula en el instante de aparición de un nuevo proceso. Cuando concluye un proceso, cuando
aparece uno nuevo.

NO APROPIATIVO: se calcula la prioridad cuando concluye un proceso.

Proceso Tiempo de Tiempo de Prioridad Tiempo de Tiempo de Tiempo Índice de


inicio o ejecución (t) finalización (tf) servicio de espera servicio
llegada (ti) (T) (E) (I)
A 0 3 1 3 3 0 1
B 1 6 1.33 9 8 2 0.75
C 4 2 2 12 8 6 0.25
D 5 7 2.57 23 18 11 0.38
E 7 4 2.25 16 9 5 0.44
F 8 1 2 10 2 1 0.5
Promedio 8 4.16 0.55

13
Rodriguez Yanet

E
C
F
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Ventajas:

o Corrige las injusticias del SJN para procesos largos y las injusticias del FIFO con procesos cortos.
o Es un algoritmo justo.

Desventajas:

o Es muy costoso, ya que produce gran sobrecarga de cálculos.


o Para la implementación NO APROPIATIVA, si aparece un proceso corto inmediatamente después de un
proceso largo, deberá sufrir una larga espera.

COLAS MULTIPLES: este algoritmo consiste en dividir los procesos en varias colas separadas donde los procesos se
colocan en función a diferentes características tales como el tipo, la prioridad, el espacio de memoria requerido o la
necesidad del recurso. Cada cola posee un propio algoritmo de planificación y existe además un algoritmo de
planificación entre colas.

La distribución de los procesos en cada una de estas colas se hará en función a las necesidades, al tamaño de memoria, a
la prioridad, y tipo de proceso.

COLAS MULTIPLES RETROALIMENTADAS (APROPIATIVO).

Todos los procesos ingresan por la cola de mayor de nivel y una vez que ha estado en la primera cola, vamos a necesitar
es un algoritmo para cada una de las colas y un algoritmo de estadía para cada una de las colas. El algoritmo resolverá
siempre en función al algoritmo de la cola de mayor prioridad que tenga al menos un proceso.

La idea es darle respuesta rápida a los procesos que ingresan al sistema. Si a un proceso le queda pocos instantes para
terminar e ingresa un nuevo proceso, el primer proceso debe esperar, es por esto por lo que resulta injusto y para
solucionar esto se puede

Se divide a la cantidad de procesos en colas numeradas, siendo la de numeración más baja la de mayor prioridad, el
planificador está definido indicando previamente el algoritmo de cada una de las colas un método para promocionar a los
procesos de una cola a la siguiente y un criterio que permita elegir en que cola se incorporara un nuevo proceso, así
mismo es importante preestablecer el número de colas que tendrá el algoritmo. Este algoritmo genera una sobrecarga
sobre el sistema, pero resulta un algoritmo de uso general o adoptable a distintos tipos de sistemas. Una vez que los
procesos cumplen con el algoritmo que se encuentran deberán además cumplir con un algoritmo de avance de cola.

A diferencia de los algoritmos anteriores puede combinar más de un algoritmo dependiendo de la cola en la que se
encuentra el proceso. Estos algoritmos a sí mismos incorporan un algoritmo entre colas que va a determinar de qué
manera un proceso avanza a la siguiente cola.

Este algoritmo es usado en multiprocesadores.

14
Rodriguez Yanet

Resolver con RR1 y retroalimentar RR1 y si se utilizan más de 5 colas tendrá un RR2:

Proceso Tiempo de Tiempo de Tiempo de Tiempo de Tiempo Índice de


inicio o ejecución (t) finalización (tf) servicio de espera servicio
llegada (ti) (T) (E) (I)
A 0 3 7 7 4 0.43
B 1 6 20 19 13 0.32
C 4 2 11 7 5 0.29
D 5 7 23 18 11 0.38
E 7 4 19 12 8 0.33
F 8 1 9 1 0 1
Promedio 10.66 6.83 0.46

F
E
D
C
B
A
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

C0___________RR1

 FEDCBA  RR1

C1___________RR1

 EDCBA  RR1

C2___________RR1

 EDBA  RR1

C3___________RR1

 EDB  RR1

C4___________RR2

 DDB  RR1

C5___________RR2

 D

Resolver intercalando las colas comenzando con RR2 y siguiendo RR1. La retroalimentación intercalar RR1, RR3, RR2

Proceso Tiempo de Tiempo de


inicio o ejecución (t)
llegada (ti)
A 0 12
B 1 20
C 4 8
D 5 24
E 8 16

15
Rodriguez Yanet

F 2 12
G 10 10
H 7 15

C0______________________________________RR2

GGEEHHDDCCFFBBAA  RR1

C1______________________________________RR1

GGGEEEHHHDDDCCCFFFBBBAAA  RR3

C2______________________________________RR2

GGEEHHDDCCFFBBAA  RR2

C3______________________________________RR1

GEHDCFBA  RR1

C4______________________________________RR2

GGEEEHHHDDDFFFBBBAAA  RR3

C5______________________________________RR1

EEHHDDFBBA  RR2

C6______________________________________RR2

EEHHDDBB  RR1

C7______________________________________RR1

EEEDDDBBB  RR3

C8______________________________________RR2

EEDDBB  RR2

C9______________________________________RR1

EDB  RR1

C10_____________________________________RR2

DDDBB  RR3

C11_____________________________________RR1

DD  RR2

El manejo de colas: cuando un proceso finaliza su quantum, se selecciona el proceso principal de la cola de mayor
prioridad.

Ventajas:

16
Rodriguez Yanet

o Es adaptable a las necesidades de múltiples sistemas.


o Soporta bien el cálculo de sobrecargos.

Desventajas:

o En algunos casos los procesos ubicados en colas de baja prioridad deben penar la espera en procesos de colas
superiores.

Cuatro modelos para determinar cuál algoritmo es el más apropiado:

 Modelo determinista.
 Modelo por modelo de colas.
 Model simulado.
 Modelo de Implementación.

UNIDAD N°4: CONCURRENCIA.

Competencia o carrera: dos o más procesos compiten por hacer uso de un recurso compartido.

Es necesaria la comunicación entre procesos:

Debemos resolver 3 inconvenientes:

¿De qué manera se pueden comunicar los procesos para pasar la información?

¿Cómo asegurarse que la ejecución de 2 o más procesos no se estorben mutuamente?

¿Cuál es el orden de ejecución correcto entre 2 o más procesos cuando existen dependencia entre ellos?

EJEMPLO DE SPOOL DE IMPRESIÓN:

En caso de existir dependencias entre procesos establecer o determinar cuál será la secuencia correcta, ejemplo si un
proceso a genera datos para que un proceso b lo imprima

Todas estas situaciones son reguladas por el sistema operativo y resulta de interés para el mismo la resolución en forma
ordenada para que el sistema sea predecible, la situación en la cual dos o más procesos compiten por un recurso
compartido se conoce como condición de competencia o condición de concurso. Sera entonces objetivo del sistema
operativo regular esta situación por medio de algoritmos, estos algoritmos deberán garantizar que un solo proceso haga
uso del recurso por instante de tiempo.

Suponiendo que tenemos una lista de documentos a imprimir.

In = 7 Posición donde se va a incorporar un nuevo archivo a imprimir.

Out = 4 Posición donde va a salir el nuevo archivo a imprimir.

Tenemos dos procesos A y B.

4 X
5 Y
6 Z
7 B.txt
A.txt
8

Teniendo en cuenta que ocurre un cambio de contexto justo antes de que se ejecute el proceso A, entonces se pasa a B y
se posiciona en 7. Suponiendo que ocurre otro cambio de contexto y B se le termina el quantum entonces A se superpone

17
Rodriguez Yanet

sobre la posición 7 por lo cual B no llega a imprimirse y lo saca de ejecución. De esta manera es necesario poder
establecer en la sección critica una manera de protegerla por medio de un algoritmo por medio de exclusión mutua, es
decir, excluir a todo el resto de poder usar esta sección critica.

Para poder ejemplificar la condición de concurso o competencia se recurre a un esquema básico de impresión de
documentos (el cual no se encuentra protegido) el ejemplo se basa en un spool de impresión que tiene elementos o
documentos en la posición 4,5,6 y utiliza 2 variables compartidas(resultan ser apuntadores a las posiciones en las que se
debe incorporar un nuevo documento y desde donde se debe retirar el primer documento a imprimir es decir, IN y OUT
respectivamente) dada la situación de que 2 procesos A y B en un instante próximo de tiempo quieren colocar
documentos para impresión y suponiendo que A comienza leerá el valor de las variable IN y la almacenará en una
variable local para saber en qué posición debe incorporar a su documento, antes de lograr colocar su documento se
produce un cambio de contexto haciendo que el procesador ahora esté disponible para B. B también almacena en una
variable local el valor de IN, coloca su documento, aumenta el valor de IN y continua su ejecución hasta tanto llegue un
nuevo cambio de contexto. Ahora el control es regresado al proceso A el cual coloca el documento A en la posición
pisando el documento B para luego sobrescribir el valor de IN con el valor 8. Si bien el sistema queda consistente en
cuanto a los apuntadores hemos perdido la impresión del documento del proceso B, es por ello que resulta de vital
importancia que el sistema operativo proteja el segmento de código del proceso que hace uso del recurso compartido
dicho segmento se conoce como sección critica, esta protección que debe efectuar el sistema operativo debe garantizar el
cumplimiento de la condición de exclusión mutua que consiste en garantizar que si un proceso se encuentra en su sección
critica, ningún otro proceso pueda hacerlo, estos algoritmos para ser soluciones efectivas deberán cumplir 4 condiciones:

1- Nunca 2 procesos pueden encontrarse simultáneamente dentro de sus secciones críticas.


2- No se pueden hacer suposiciones sobre la velocidad de ejecución del procesador ni de la cantidad de líneas de
código que componen cada proceso.
3- Ningún proceso que se encuentre fuera de su sección critica impida o bloquee a otro proceso para que acceda a
su sección critica.
4- Nunca un proceso puede ingresar en forma arbitraria o por si solo a su sección critica.

SECCIÓN CRITICA: es la parte o fragmento de código del proceso que se encarga de hacer uso del recurso compartido
y la cual no puede ser ejecutada mientras otros procesos se hallen en su sección critica para este recurso. En tanto, el
sistema operativo deberá evitar que 2 o más procesos se encuentren en su sección critica para un mismo recurso. Esto se
conoce como EXCLUSIÓN MUTUA.

4 condiciones que se deben dar para esta exclusión y para que la solución del sistema operativo sea fiable:

1- Nunca 2 o más procesos pueden encontrarse dentro de sus secciones críticas.


2- La solución del sistema operativo debe ser independientemente de la velocidad relativa de ejecución de los
procesos.
3- Ningún proceso que se encuentre en la sección no critica puede impedir que otro proceso ingrese en esa sección
critica.
4- Nunca un proceso debe ingresar en forma arbitraria a su sección critica.

El sistema operativo intentar por medio de técnicas o algoritmos cumplir las 4 condiciones.

ALGORITMOS:

 Soluciones de espera activa: consiste en que el proceso que no puede ingresar a su sección critica deberá
ejecutar en nulo hasta que esta condición sea liberada (consumir ciclos de ejecución inactiva).

18
Rodriguez Yanet

 Soluciones de espera inactiva: consiste en que el proceso que no pueda ingresar en sección critica pueda ser
bloqueado hasta tanto se dé el evento (otro proceso ha dejado su sección critica).

SOLUCIÓN POR HARDWARE: ESPERA ACTIVA:

DESHABILITAR INTERRUMPCIONES: consiste en deshabilitar las interrupciones que es el mecanismo de señal


utilizado para comunicar los eventos que se dan en el sistema. Si deshabilitamos las interrupciones no se notificará un
cambio de contexto. Por ende, el proceso tendrá libertad para ejecutar toda su sección critica.

Fallas de la solución:

Esta solución no es muy fiable ya que, si el programador se olvida de alguna interrupción, se desencadenará en un caos
del sistema. Haciendo alusión al ejemplo de spool el programador del proceso A, antes de solicitar el valor de IN, deberá
deshabilitar las interrupciones.

VARIABLES DE CANDADO O DE CIERRE: es una solución en una variable compartida la cual adquiere el valor de
0(abierto)/1(cerrado). La solución consiste en que cada proceso, antes de iniciar su sección critica, debe consulta el valor
de la variable candado. En caso de que esta variable sea 0, entonces el proceso puede ingresar en su sección critica. El
proceso colocara a la variable en 1. Si llega otro proceso y lee el valor de la variable candado y este vale 1, deberá ciclar
en nulo hasta que esta variable sea 0.

El proceso que se encuentra en la sección critica, al concluirla deberá setear la variable candado en 0 nuevamente.

Fallas de la solución:

1- Porque se depende de setear el valor del candado en 0 al dejar la sección critica.


2- Podría darse un cambio de contexto entre que el proceso lee el valor de la variable candado en 0 y actualizar el
valor de esta a 1. Debido a que no pudo completarse la depuración del seteo de la variable candado en 1 (x=0)
otro proceso podría ingresar en su sección critica violando la primera condición de las 4 mencionadas.

SOLUCIÓN POR SOFTWARE: ESPERA ACTIVA:

ALTERNANCIA ESTRICTA:

Establece que la solución se da 1 a 1, primero A y luego B o viceversa. Esta solución funciona para 2 procesos. El código
se ejecuta infinitamente.

Fallas del algoritmo:

Suponiendo que el proceso A inicia la ejecución, verifica su condición de turno e ingresa a la sección critica. Concluida
esta, setea el valor de turn=1 y comienza la ejecución de su sección no critica. Al provocarse un cambio de contexto, el
proceso B que se encontraba ciclando, puede ingresar a su sección critica. Una vez finalizada, seta el valor de turn= 0,
comienza a ejecutar su sección no critica.

Supongamos ahora que se da un cambio de contexto y el proceso A ejecuta rápidamente su sección no critica, valida la
condición de turn=0, ejecuta su sección critica, establece el valor de turn=1, ejecuta la totalidad de su sección no crítica y
vuelve a la condición. Debido a que la variable de turn=1 el proceso debe ciclar, no pudiendo ingresar a su sección
critica. En este momento se viola la condición 3 ya que el proceso B, ubicando en su sección no critica, impide que el
proceso A pueda ingresar a su sección critica.

SOLUCION DE PETERSON:

Es una solución académica para 2 procesos. Es una combinación de los 2 métodos anteriores.

19
Rodriguez Yanet

Esta condición utiliza una condición mixta con 2 variables. Cada proceso que quiera ingresar en la sección critica, deberá
invocar a la función ENTER_REGION indicándole su número de proceso. El acceso a la sección critica estar
condicionado por la variable turno y por la variable cruzada del interés del otro proceso por ingresar a su sección critica.

Suponiendo entonces que se dé la condición de competencia por la cual dos procesos invoquen a ENTER_REGION solo
quien setee la variable de turno en última instancia, podrá ingresar. La solución de Peterson de 1981 dentro del marco
teórico es considerada una solución valida.

LA INSTANCIA TSL: (también utiliza hardware para habilitar y deshabilitar instrucciones). Esta solución incorpora
colaboración por hardware y es implementada por una primitiva del sistema TCL la cual se realiza en forma atómica.

Entendiendo por ejecución atómica a un conjunto de subtareas que no pueden ser divisibles por un cambio de contexto.
La instrucción TCL lee el contenido, lo coloca en un registro y almacena un valor en el contenido leído inicialmente.
Estas subactividades, al no ser interrumpidas, permiten el bloqueo sin que se dé la falla del algoritmo de la variable
candado.

Esta solución es válida en escenarios de múltiples procesadores.

enter_region se debe ejecutar antes de la sección critica y leave_region saliendo de la sección critica.

SOLUCIÓN POR SOFTWARE: ESPERA INACTIVA:

DORMIR Y DESPERTAR:

Este algoritmo se analiza a partir del ejemplo PRODUCTOR- CONSUMIDOR. El código PRODUCTOR se encarga de
colocar elementos en un buffer mientras que el CONSUMIDOR se encarga de retirar elementos de este. Los códigos
utilizan 2 primitivas del sistema:

 SLEEP: duerme o bloquea al proceso que lo invoca.


 WAKE UP: la cual permite despertar o desbloquear a otro proceso que se encuentre a la espera de un evento.

Estas primitivas son a fin de que el proceso que no pueda terminar su ejecución no siga consumiendo tiempo valioso del
procesador. Si bien esta ventaja es favorable implica una recarga adicional para el sistema operativo ya que deberá
gestionar que procesos despertar cuando los recursos se encuentren liberados. El método de sleep y wake up se utilizan
también para proteger la sección critica de los procesos.

El productor verifica que el buffer no se encuentre lleno, de ser así, deberá bloquearse. A si mismo el productor verifica
que exista al menos un elemento a fin de despertar al consumidor. El consumidor verifica que el buffer no se encuentre
vacío. De ser así, deberá bloquearse. A sí mismo, el consumidor verifica que exista una ranura para colocar a un ítem y
despertar al productor.

Falla del algoritmo:

Presenta la falla por la cual ambos procesos pueden quedar bloqueados, suponiendo que tenemos el buffer lleno de
elementos al realizar la preguntar “si count=N” en el productor, verificar que sea verdadera pero justo antes de realizar el
sleep se provoca un cambio de contexto el algoritmo fallara ya que al pasar la ejecución al consumidor este realizara la
pregunta “si count=99” generando la ejecución del wake up del productor cuando este aun no se encuentra dormido. Al
darse el cambio de contexto el control retornara al productor ejecutando el sleep y durmiéndose, inmediatamente el
procesador será asignado al consumidor que consumirá los elementos del buffer hasta llegar a la condición count=0 por
la cual se dormirá, de esta forma ambos procesos quedaran dormidos indefinidamente.

SEMÁFOROS:

20
Rodriguez Yanet

Igual que el dormir y despertar, utiliza 2 primitivas del sistema operativo que son DOWN y UP. Recibe valores del 0 al
infinito.

La primitiva UP aplicada sobre una variable de tipo semáforo, hace que su valor se incremente en 1. En tanto la primitiva
DOWN aplicada a una variable de tipo semáforo, verifica si el valor es mayor a 0 y de ser así decrementa en 1. Si el
valor es 0 ahora bloquea el proceso que quiere realizar la operación sin que esta pueda completarse. La particularidad de
las primitivas UP y DOWN es que ambas son atómicas en su ejecución, es decir que no se pueden ser interrumpidos por
un cambio de contexto.

Estas variables semáforo fueron creadas para proteger el count del algoritmo anterior.

Un DOWN de un semáforo antes de entrar en la sección crítica y un UP después de la sección critica garantiza una
exclusión mutua (garantiza que solo 1 proceso este en la sección critica) (se debe inicializar el semáforo en 1). Esto
protege si ocurre un cambio de contexto.

En este caso el semáforo es binario garantiza la exclusión mutua, ya que las variables mutex y empty solo pueden tomar
valores 0 y 1. Si realizado un down de mutex justo antes de ingresar a la sección crítica y realizo un up de mutex justo
antes de salir de la sección critica voy a garantizar la sección critica.

MONITORES: son soluciones de alto nivel utilizados por algunos lenguajes de programación. Los monitores son
recursos particulares del código del programador en los cuales se coloca la sección critica. Posteriormente el compilador
del lenguaje de programación protege dicho código incorporando semáforos a fin de garantizar la exclusión mutua. Esta
estrategia aísla a el programador de la complejidad de la protección del código critica. En la actualidad, la mayoría de los
lenguajes de programación no requieren secciones diferenciales para detectar código crítico.

Ventaja:

El programador ubica directamente el código dentro de la sección critica.

UNIDAD N°5: INTERBLOQUEO

Todo sistema informático está compuesto por un conjunto de recursos, los mismos son finitos. Esos recursos son
compartidos por un numero finito de procesos, por lo que el sistema operativo va a utilizar una gestión de recursos.

Estos recursos además se pueden dividir en tipos de forma tal que cada uno de ellos este compuesto por recursos
idénticos entre sí. Sobre estos recursos, todos los procesos deben realizar 3 operaciones:

 Solicitar recursos.
 Utilizar el recurso.
 Liberar el recurso.

Estas operaciones se deben realizar por medio de llamados al sistema operativo. De forma tal de que el recurso solicitado
está en uso, el proceso que lo solicita deberá bloquearse hasta que se libere dicho recurso. Estas operaciones también
suelen implementarse con semáforos.

Ejemplo: suponiendo que se tiene una ruta y un puente largo de una sola vía y dos autos de cada lado quieren ingresar al
puente. Si ambos autos quedan esperando, entonces esperaran infinitamente.

INTERBLOQUEO: situación que se da entre 2 o más procesos en un estado de espera tal que ninguno de ellos tiene
suficientes privilegios para continuar con su ejecución y hacer uso de su recurso. Esta situación de espera persiste
indefinidamente en el tiempo y esta situación no se puede desarmar sin interacción del sistema operativo. Es diferente a
la situación de postergación indefinida tiene solución por sí solo, es cuestión de esperar un determinado tiempo y se
desbloquea.

Existen 4 condiciones para identificar a un interbloqueo las cuales se deben cumplir en su totalidad(sino se cumplen
todas las condiciones entonces será una postergación indefinida):

 Exclusión mutua: existe al menos 1 recurso compartido por los procesos al cual solo puede acceder un proceso
en forma simultánea (1 a la vez).

21
Rodriguez Yanet

 No apropiación: los recursos no pueden ser apropiados por los procesos, sino que deberá ser liberados en forma
voluntaria.
 Posesión y espera: debe existir algún proceso que tenga un recurso asignado y este esperando que se le asignen
otros recursos que están siendo utilizados por otros procesos.
 Espera circular: un proceso este esperando un recurso que tiene asignado el siguiente proceso, este último espera
un recurso que tiene asignado el siguiente y así sucesivamente hasta tanto el ultimo este esperando un recurso
del proceso uno. Suponiendo que se tienen varios procesos P1, P2, Pn… donde P1 está esperando a un recurso
que tenga asignado P2. P2 está esperando a un recurso utilizado por P3 y así sucesivamente hasta Pn que estará
esperando a un recurso utilizado por P1.

Interbloqueo parcial: no todos los procesos están involucrados.

Interbloqueo total: todos los procesos forman parte del interbloqueo.

Grafos de asignación de recursos:

Permiten identificar los posibles interbloqueos.

Tiene como elemento a los procesos(circulo) y los recursos (rectángulos). Los recursos van a estar tipificando a una clase
de recursos, esta clase podría tener múltiples ejemplares (puntos interiores en el rectángulo y si tiene más
ejemplificaciones un círculo más en el medio). Las relaciones se identifican por aristas de asignación(desde de los
círculos) o de solicitud(hasta el borde del recurso).

Las 2 primeras condiciones están dadas por el sistema operativo por lo que solo debemos fijarnos en las condiciones de
posesión y espera y espera circular.

Debemos tener en cuenta que algún proceso con su acción pueda desarmar alguna condición de las que necesitamos para
determinar interbloqueo.

En el primer caso no existe interbloqueo.

22
Rodriguez Yanet

En el segundo caso existe interbloqueo porque todos los procesos forman un ciclo, por lo que como están todos los
procesos involucrados se denomina interbloqueo total. Para solucionar esto se pueden agregar un ejemplar dentro de un
recurso.

El tercer caso muestra como se podría observar un ciclo entre p1 y p3 con los recursos r1 y r2, en cambio las acciones de
p2 y p4 los cuales pueden terminar en algún momento van a liberar los recursos, cuando liberan los recursos p3 y p1
toman los recursos por lo que el ciclo se termina y por lo tanto no existe interbloqueo.

Si agregamos una fecha de p2 a r2 existe un interbloqueo porque no tiene un criterio de resolución para poder decidir si
se le asigna el recurso a p3 o p2, si agregamos un p5 que también solicita r2 entonces se le va a asignar a p5, pero cuando
termine volvemos a seguir teniendo el problema anterior.

Tratamiento de los interbloqueos por parte del sistema operativo:

Ignorar: supone que ese tipo de interbloqueo es poco probable dentro sus posibilidades.

Prevenir: el sistema va a ir registrando previamente o establecerá un orden para ir adelantándose a la posible situación de
interbloqueo.

Evitar: se encarga de que no se de una de las 4 condiciones de interbloqueo.

Detectar y : monitorear las posibles situaciones de interbloqueo y en caso de detectar uno va a intentar recuperar el
sistema. Puede elegir algún proceso y quitarle su recurso y llevarlo a un estado de ejecución previo.

23

También podría gustarte