Sistemas Operativos I
Sistemas Operativos I
Sistemas Operativos I
SISTEMAS OPERATIVOS I
UNIDAD N°1: INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
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 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:
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.
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.
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
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.
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.
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.
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.
4
Rodriguez Yanet
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.
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 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.
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:
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.
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.
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.
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:
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.
Quantum = 3.
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:
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.
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.
10
Rodriguez Yanet
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:
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.
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:
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:
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
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:
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.
P = (w + t)/ t
P= prioridad.
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.
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:
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.
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.
14
Rodriguez Yanet
Resolver con RR1 y retroalimentar RR1 y si se utilizan más de 5 colas tendrá un RR2:
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
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
Desventajas:
o En algunos casos los procesos ubicados en colas de baja prioridad deben penar la espera en procesos de colas
superiores.
Modelo determinista.
Modelo por modelo de colas.
Model simulado.
Modelo de Implementación.
Competencia o carrera: dos o más procesos compiten por hacer uso de un recurso compartido.
¿De qué manera se pueden comunicar los procesos para pasar la información?
¿Cuál es el orden de ejecución correcto entre 2 o más procesos cuando existen dependencia entre ellos?
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.
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:
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:
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).
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:
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.
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.
enter_region se debe ejecutar antes de la sección critica y leave_region saliendo de la sección critica.
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:
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.
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:
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.
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.
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.
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.
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