Sunteți pe pagina 1din 9

Sistemas Operativos – 1er Parcial

 Introducción
o Qué son ¿?
o Tres puntos de vista
o Servicios y componentes
o Estructuras
o Multiprogramación

 Administración de procesos
o Qué son los procesos ¿?
o Componentes
o Bloqueo de control de proceso
o Operaciones sobre procesos
o Estados y su Diagrama de transición de estados
o Hilos
 De usuario, de kernel y mixtos

 Planificación de procesos
o Largo plazo
o Mediano plazo
o Corto plazo
 Apropiativo/No apropiativo
 Criterios
 Algoritmos
 FCFS,SJF,SRN,HRN,RR,ED,MLQ

 Sincronización de procesos
o Cooperación/Competencia
o Problemas clásicos
o Deadlock
o Exclusión mutua/Sección Crítica
 Semáforos
 Monitores
 Algoritmos
 HW

 Comunicación
o Indirecta
 Mail box, cola de mensajes
o Directa
 Memoria compartida, pipes, sistema de mensajes
Introducción
Qué son los SO ¿? : Es una colección organizada del HW, consistente en rutinas de control que hacen funcionar al computador
y proporcionar un entorno para ejecutar programas. Es el SW que controla el HW. Puede ser considerado como una
ampliación de la máquina y otra como administrador de recursos.

Puntos de vista

 Diseñador: Identifica las necesidades del mercado a que apunta el SO, además considera todos los factores
relacionados con las limitaciones de diseño que tiene. Enfoque en encontrar algoritmos y estructuras más apropiadas
y eficientes.
 Administrador: Enfoque hacia las herramientas disponibles para la administración. Implementar soluciones
metodológicas, automáticas para la administración tanto de HW como el SW. Obtener un buen desempeño del
sistema y que las necesidades de los usuarios sean más factibles.
 Usuario: Es diferente dependiendo del SO. Necesita un conjunto de funcionalidades, independiente del problema.
Fácil de usar y de aprender con una buena interfaz de usuario.

Servicios: Asignación de recursos, ejecución de programas de usuario, realización de E/S, protección de recursos,
administración del espacio, archivos y sistemas de archivos, detección de errores y su tratamiento, contabilización de recursos.

Componentes: Administración de: procesos, memoria principal, archivos, E/S, almacenamiento secundario, comunicaciones,
protección, interfaz de usuario (Shell).

Estructuras

 Monolíticos: No son estructurados, cualquier servicio puede ser invocado por otro, toda la funcionalidad provista por
el sistema es accesible y no tiene una arquitectura establecida. Las fallas de cualquier componente del SO provoca la
caída de todo el sistema. No hay modularidad, ni encapsulación de las funciones, son sistemas difíciles de comprobar
que tengan errores.
 Capas: Cada capa establece una interfaz para que la capa superior inmediata le haga solicitudes, a su vez cada capa le
hace solicitudes solo a la capa anterior. La caída de una capa no provoca la de las anteriores aunque si las superiores.
Favorece la modularidad y la encapsulación de las funciones SO.
 Microkernel: Modelo cliente/servidor, pasando las funcionalidades del SO a las capas superiores. Es fácil de adaptar a
sistemas distribuidos. Modelo orientado a objetos, similar al anterior solo que con una interfaz orientada a objetos.

Multiprogramación: El objetivo es tener siempre procesos ejecutando, de forma de maximizar recursos. Permite la ejecución
simultánea de múltiples programas, además permite el aumento del uso de los recursos del sistema al admitir la intercalación
de trabajos en el micro tiempo y autorizar a múltiples usuarios en simultáneo. Aparecen los programas de depuración.
Coexistencia de programas de tiempo real que sean atendidos antes que los de los usuarios. Se posibilita a los usuarios
interactivos, aparecen tiempos de respuesta de sistema aceptables.

SO específicos de multiprogramación:

 Sistemas de tiempo compartido: el total de la memoria es dividida en partes, dinámicas y asignadas a los distintos
usuarios del sistema, el procesador reparte el tiempo entre ellos.
 Sistemas de tiempo real: generalmente orientados al establecimiento de prioridades de ejecución.
 SO combinados: sistemas de propósito general
Administración de procesos
Proceso: un programa en ejecución, actividad asíncrona, entidad activa a la que se asignan los procesadores, unidad
despachable y lógica de trabajo.

El SO es responsable de la administración de procesos, Creación/eliminación, planificación, proveedor de mecanismos para


sincronización y comunicación de procesos.

Componentes

 Código de programa
 Estado actual del proceso, compuesto por su program counter y registros: contexto
 Un stack, conteniendo datos temporarios como ser: parámetros de subrutinas, direcciones de retorno y variables
temporarias
 Una sección de datos, que contienen variables globales de proceso

Bloqueo de control de proceso: Cada proceso está representado para el SO por un bloque de control de proceso, conteniendo
toda aquella información asociada al proceso.

 Identificador de proceso (PID)


 Estado actual del proceso
 Contexto del proceso
 Planificación del proceso
 Memoria usada
 Contabilidad de recursos
 E/S de dispositivos

Operaciones sobre procesos

 Crear, es necesario asignar identificador y recursos iniciales. Se pueden obtener directamente del SO, de un
subconjunto del proceso creador, compartiendo recursos del proceso. Se debe insertar en la tabla de procesos del
sistema, adjudicar valores iniciales en parámetros del proceso, se debe crear el bloque de control de procesos.
 Eliminar, un padre puede terminar la ejecución de uno de sus hijos, porque el hijo se ha excedido en el uso de alguno
de los recursos, ya no se requiere la tarea asignada al hijo o si el padre está saliendo y el sistema no permite que un
hijo continúe si su padre termina.
 Suspender/Reanudar: Cambiar parámetros de funcionamiento del proceso.

Estados y su Diagrama de transición de estados

Un proceso pasa por una serie de valores o estados discretos:

 Nuevo, proceso acaba de ser creado


 Ejecución, sus instrucciones de máquina están siendo ejecutadas
 Bloqueador, el proceso está esperando por la ocurrencia de algún evento.
 Listo, el proceso está esperando que le sea asignado el procesador.
 Finalizado, el proceso acaba de finalizar su ejecución
Qué es un hilo ¿?

Permite la ejecución de tareas concurrentemente en un proceso. Comparten recursos del proceso, código, memoria, archivos,
seguridad pero no comparten contexto, o sea program counter, stack pointer, registros y estados de hilos. Algunos lenguajes
lo incluyen de forma nativa y otros no, en estos deben ser creados/eliminados por llamadas a la biblioteca de usuario (hilo a
nivel usuario) o el propio SO (hilo a nivel kernel).

Ventajas de hilo de usuario Desventajas de hilo de usuario

1. Hay menor sobrecarga, no se llama al SO. 1. Las llamadas al SO que sean bloqueantes, trancan
2. La propia aplicación planifica el despacho de hilos a todos los hilos.
su conveniencia. 2. Las aplicaciones no pueden aprovechar las ventajas
3. Puede ejecutar en cualquier SO. de los sistemas paralelos

Ventajas de hilo del Kernel Desventajas de hilo del Kernel

1. Se pueden planificar los hilos como procesadores 1. La sobrecarga en el cambio de contexto entre los
tenga el sistema hilos, creación y finalización.
2. El bloqueo de un hilo no afecta la ejecución de los
demás hilos, se puede seleccionar otro del mismo
proceso para ejecutar.

Sistemas de hilos mixtos: Algunos sistemas ofrecen la posibilidad de tener hilos mixtos. Una aplicación tiene varios hilos de
kernel, mientras que cada hilo tiene hilos basados en bibliotecas de usuario. Obtenemos ventajas de ambos.

Diferencia entre hilos y procesos

 Los procesos suelen ser independientes entre sí, para compartir recursos deben solicitarlo al SO.
 Los hilos son superiores a los procesos cuando es necesario tener comunicación entre ellos, en los hilos el compartir
recursos es más natural.
 Suele ser más rápido y sencillo crear y cambiar de contexto un hilo que un proceso.
 Los hilos favorecen la escritura de programas que necesiten ejecutar más de una funcionalidad.
 Los hilos aprovechan mejor las arquitecturas de múltiples procesadores.
 No estamos a salvo de la necesidad de sincronizar los hilos como a los procesos.
Planificación de procesos
Largo plazo: Su función es seleccionar cuales de los procesos que pretender utilizar el sistema se admitirán, una vez admitido,
se le crea un bloque de control de procesos, se le asigna memoria, se lo carga al programa en memoria, se inicializa el
contexto del proceso, se deja en la cola de procesos listos. En algunos sistemas no existen y en otros se limitan los procesos
que ingresan por cantidad máxima de usuario, por tipo de proceso o por insuficiencia de recursos. Su funcionamiento es
sencillo, basado en prioridades o en orden de
llegada. Tiene poca sobrecarga aunque se
deben elegir cuidadosamente la mezcla de
procesos para obtener mayor eficiencia del
sistema.

Mediano plazo: Es usado para regular la carga


del sistema, mediante el swap out/in de los
procesos. Se activa cuando hay escasa memoria.
En otros sistemas suele haber comandos
disponibles para el administrador para
suspender/reanudar procesos.

Corto plazo: Es el planificador que se encarga


de otorgar la CPU a los procesos. Debe ser muy eficiente, será permanentemente invocado, ya sea porque un proceso quede
en espera o finalice. Planifica en función de la cantidad de procesadores, puede que haya muchos procesos a ejecutar además
de que tenga una buena cantidad de criterios por los cuales seleccionar un proceso a ejecutar.

Cuando planificamos ¿? Cuando estamos obligados ¿? Siempre que ocurre una interrupción ¿?

Recordemos los estados y los eventos de transición entre procesos.

1- En ejecución  Bloqueado
2- En ejecución  Listo
3- Bloqueado  Listo
4- Finalización

Dependiendo de la elección podríamos sobrecargar el sistema.

Planificación apropiativa y no apropiativa

En los eventos 1 y 4, no hay elección posible, sino el procesador


quedaría desocupado.
Planificación No apropiativa

En los eventos 2 y 3, ocurre la planificación apropiativa.


Esta puede causar problemas de sincronización de
procesos, tanto para procesos que comparten datos
como para funciones del SO.
Criterios de planificación: Los algoritmos de planificación pueden tener diferentes comportamientos y favorecer una clase de
procesos sobre otra. Al elegir uno para ser usado en una situación particular, debemos considerar los criterios que
implementa, pudiéndose generar diferencias sustanciales entre unos y otros.

 Utilización de CPU, intenta mantenerlos ocupados.


 Rendimiento, forma de medir el trabajo realizado, representa la cantidad de procesos que son completados por
unidad de tiempo.
 Tiempo de retorno, desde el punto de vista del usuario, es el tiempo que le lleva al proceso ejecutar desde que es
enviado a procesar, hasta que la respuesta es obtenida.
 Tiempo de espera, es la suma de tiempos que un proceso pasa en la cola de procesos listos.
 Tiempo de respuesta, es usado en sistemas transaccionales, indica cuanto tiempo demora entre una solicitud y la
respuesta de la misma. Es el tiempo que demora una unidad lógica de trabajo.

Algoritmos de planificación

 Se maximizan el uso de recursos y el rendimiento en general


 Se minimizan los tiempos de respuesta, retorno y espera
 Es difícil poder satisfacer todos los criterios, se debe conseguir un buen promedio

First-Come First-Served: Se ejecutan por orden de llegada, fácil de implementar, no apropiativo (no siempre), puede suceder
que un proceso largo tranque a otros procesos cortos, la utilización de recursos es pobre, procesos limitados por E/S esperan
por los limitados por CPU, se pueden generar largas colas de espera de trabajos limitados por E/S, no hay prioridad.

Shortest Job First: Almacena el largo de la última ráfaga utilizada, en base a este valor asigna el procesador a aquel proceso
con la ráfaga más pequeña. Si más de un proceso tiene tiempos iguales se comporta como el FCFS. Garantiza los menores
tiempos de respuesta a los más pequeños. Tiene el valor mínimo de tiempo promedio de espera. Puede ser apropiativo como
no apropiativo. Su gran desventaja es que no se conoce el tamaño de las ráfagas de CPU futuras, se basa en el
comportamiento anterior del proceso. No hay prioridad. Suele ser utilizado en la planificación de largo plazo.

Shortest Remaining Time Next: Trata de mejorar el logaritmo anterior, seleccionando en base a una estimación de la próxima
ráfaga de CPU, en base a las ejecuciones anteriores. Es apropiativo. Permite realizar trabajos cortos entre largos.
Predictor Homogenización Exponencial: Pn = a On-1 + (1 – a) Pn-1

Highest Response Ratio Next: Propone una prioridad de envejecimiento, que permita aumentar la prioridad a los procesos
que llevan mucho tiempo esperando, en relación con su ejecución estimada. Corrige deficiencia del SJF y SRTN, permitiendo
un ajuste basado en una determinada prioridad. Suele ser no apropiativo para SJF y apropiativo para SRTN. Calcula el mejor
promedio con respecto al tiempo que lleva esperando y el tiempo que se estima va a utilizar.
Prioridad = (tiempo de espera + tiempo de ráfaga) / tiempo de ráfaga

Round-Robin: Propone una división del tiempo de procesador en partes iguales, asignando a cada proceso la misma cantidad
de CPU máxima, al expirar el tiempo va último a la costa de listos. Tiende a ser equitativo para el tiempo compartido. Es
apropiativo. Tiempo de proceso dividido por Quantum, interrupción por timer, tiempo adaptable por el administrador, si es
corto-muchos cambios de contexto, si es largo-tiempo de respuesta malo, degenera a FCFS.
Es fundamental cuidar la relación Quantum/Cambio de contexto.
Los procesos cortos terminan rápidamente y los largos circulan por la cola de listos.

Event Driven: El algoritmo se basa en asignar prioridades a los procesos y ejecutarlos en el orden estricto de estas. Prioridades
pueden ser estáticas o dinámicas, prioridad inicial del perfil del usuario, utilización de recursos aumenta prioridad, uso de CPU
la disminuye. Se regula con el comportamiento en ejecución. Generalmente es apropiativo pero puede que no. Procesos de
baja prioridad puede que no se ejecuten nunca. No se puede garantizar la finalización, es necesario contar con alguna
prioridad de envejecimiento. Procesos de alta prioridad tienen buen tiempo de respuesta y finalización predecible.

Colas de Múltiples Niveles: Este algoritmo clasifica los procesos, le asigna diferentes colas a cada uno planificando en más de
un nivel, primero colas y luego procesos. Propone la mezcla de criterios. Planificador de colas - Se definen múltiples colas, una
por cada tipo o clase de proceso a planificar. Luego se planifica dentro de cada cola según el algoritmo que se proporcione.
CMN con retroalimentación: Es una variante de la anterior, permite cambiar de cola de acuerdo al comportamiento. Se le
llama Migración al proceso de cambio decola del proceso.
Sincronización de procesos
Procesos Cooperativos: Es aquel que puede afectar o ser afectado por otros procesos ejecutando en el sistema. Esto se debe
por el acto de compartir información, velocidad de computación, modularidad (construir un sistema confeccionado de
componentes y combinarlos para ejecutar) y conveniencia de ejecutar varias tareas al mismo tiempo.
Problemas de cooperación: Compartir un espacio de direccionamiento, compartir dispositivos o archivos, procesos que se
comunican (intercambio de info o responsabilidades), no necesariamente procesos, pueden ser hilos dentro de un mismo
proceso. Un ejemplo es el del Productor-Consumidor.
Dos procesos pueden trabajar en forma sincrónica o asincrónica, esta pretende preservar la precedencia de los procesos,
permitiendo que el sistema pase de un estado consistente a otro también consistente.
Existen tres formas básicas de sincronización de procesos:

 Sincronización de procesos, a través de algoritmos, constructores del SO o lenguajes de programación.


 Señalización entre procesos, generalmente son funciones primitivas proporcionadas por el SO.
 Comunicación entre procesos, utiliza mecanismos de transmisión de mensajes para efectuar la sincronización.
Problemas de competencia: Dos o más procesos compiten por el uso de un recurso, puede darse un problema de
inconsistencia de datos, como en la cooperación; puede ser hilos dentro de un mismo proceso. Ejemplo Cajero.
Exclusión: Sucede cuando dos procesos compiten por un mismo recurso, para esto se debe reconocer en los procesos la parte
de sus códigos que son incompatibles, llamadas secciones críticas. Estas deben cumplir con ciertas condiciones:
 Exclusión mutua: dos procesos no deben encontrarse simultáneamente en sus secciones críticas.
 Progreso: ninguno de los procesos fuera de su sección crítica puede bloquear a otro proceso que pretende hacer uso
de la misma.
 Espera limitada: ningún proceso debe esperar eternamente para entrar a su sección crítica.

No se puede hacer hipótesis sobre la velocidad o el número de procesadores de los sistemas y no se puede asumir que no
ocurrirán interrupciones durante la ejecución de la sección crítica.

Sección crítica: Un solo proceso por vez puede modificar variables compartidas en su sección crítica. Se requiere de una lógica
arbitraria desarrollada por el programador, ningún proceso puede ganar el control, se tiene que considerar que varios
procesos pueden requerir el servicio, un solo proceso puede ganar el control, las secciones críticas aparenten ser indivisibles,
se debe evitar las esperas basadas en el consumo de ciclos de procesador, se debe considerar la pertinencia o no de que los
procesos puedan alternar.

Semáforos: es una funcionalidad provista por el SO, que permite tanto bloquear como desbloquear procesos pro la espera de
que el semáforo esté libre. Este se implementa con una variable entera compartida, una lista de procesos asociada, que
contiene los procesos que esperan y una variable de estado que permite el ingreso o no a las funciones del semáforo,
estableciendo la exclusión mutua de los procedimientos del semáforo.

A nivel conceptual el semáforo implementa dos procedimientos:

• Wait (S: semáforo) • Signal(S: semáforo)


while S<=0 do noop; S:= S+1
S:= S + 1

Semáforos contadores: Se inicializa el semáforo con una cantidad determinada, que será la cantidad de recursos a proteger.
Cada vez que se usa se lo decrementa hasta que se consuman todos, si se han realizado tantos wait como recursos habían, los
procesos esperan.

Monitores: Está compuesto por cuatro componentes:

 Inicialización, código que se usa una vez sola.


 Área privada, solo accedida dentro del monitor, incluye datos, procedimientos y funciones privadas.
 Procedimientos públicos, llamados desde el programa e hilos
 Una cola de espera por el monitor.

El monitor garantiza que en cualquier momento, un solo hilo accede a los procedimientos del monitor. Los hilos que
pretendan usar el monitor que está en uso, se bloquean a la espera de que quede libre. No se puede asumir ninguna política
particular de que hilo será el que continúe al quedar libre el monitor. Exclusión Mutua.
Para esperar eventos dentro de un monitor utilizamos variables de condición que indican eventos y no tienen valores, y
utilizamos dos operaciones:

 Wait, que suspende el hilo en ejecución y se pone en la lista de hilos esperando por la variable de condición y libera el
uso del monitor.
 Signal, si hay hilos esperando por esa variable de condición, libera a uno llevándolo a la lista de espera por el monitor,
sino, la señal se pierde como que no hubiera ocurrido.

Tipos de monitores

 Hoare (el que señala cede) cuando un hilo señala a otro, el que está ejecutando continua, el hilo que esperaba por la
variable de condición espera en la cola de espera por el monitor.
 Mesa (el que señala sigue) cuando un hilo señal a otro, el que está ejecutando continúa, el hilo que esperaba por la
variable de condición espera en la cola de espera por el monitor.

Bloqueo mutuo y aplazamiento indefinido: Al competir varios procesos por recursos que no están disponibles, provoca que
éstos esperen. Puede ocurrir que los procesos nunca logren obtener los recursos porque estos están asignados a otros
procesos que también están esperando. A esta situación se le llama Deadlock. Los procesos solicitan la asignación de un
recurso antes de utilizarlo, luego lo usan y por último lo liberan al finalizar su uso. En el SO se registra en tablas las solicitudes y
las asignaciones de los recursos. El problema ocurre cuando hay una cantidad finita de recursos a ser distribuidos entre un
conjunto de procesos competitivos. Se compite por recursos de espacio en memoria, ciclos de CPU, archivos, dispositivos E/S.
Ej. Abrir y cerrar un archivo, pedido y liberación de un dispositivo, un wait y un signal de un semáforo. Los recursos pueden ser
no apropiables, apropiables y compartidos.

Deadlock: Ejecución en paralelo, no hay progreso.


Condiciones necesarias para el Deadlock: Cuando ocurren las cuatro a la vez, se provoca el Deadlock

 Exclusión mutua, por lo menos un recurso debe ser retenido en forma no compartida, es decir que un solo recurso
puede hacer uso de él a la vez.
 Retención y espera, debe existir por lo menos un proceso que ha adquirido un recurso, está esperando para adquirir
otro recurso que actualmente lo tiene otro proceso.
 No hay lugar a la apropiación, los recursos no pueden ser apropiados, solo se liberan voluntariamente por el proceso
que lo ha adquirido.
 Espera circular, debe existir un conjunto de procesos bloqueados esperando recursos, tal que el primero espera por el
segundo, el segundo por el tercero, y el tercero por el primero.

Corrección del Deadlock

 Protocola que no permita que entre.


o Evitarlo.
o Prevenirlo, asegurarse de que una de las cuatro condiciones no ocurra.
 Permitir que el sistema entre, detectarlo y recuperarlo.
 Ignorar el problema y hacer de cuenta que el problema nunca ocurrió

Programación Concurrente

Las primitivas de SW son demasiado elementales. Los algoritmos provistos hacen bastante difícil encontrar solución a
problemas complejos. Si los usamos mal provocamos inconsistencias de sistema, si se omite un Wait, no hay exclusión mutua,
si se omite un Signal habrá espera permanente. Además de que es difícil de comprobar si un programa es correcto, se
necesitan constructores de alto nivel de abstracción, que permita facilitar la programación, mantenimiento y verificación.

Algoritmo Productor – Consumidor

Productor: Consumidor:

producir_item(x); wait(mutex);
wait(empty); extraer(x);
wait(mutex); signal(mutex);
depositar(x); signal(empty);
signal(mutex); consumir_item(x);
signal(full)
Comunicación de procesos
Introducción: A diferencia de los hilos, los procesos en
principio no tienen comunicación con otros procesos. Para
comunicar información entre procesos, utilizamos
variables compartidas. A estos modelos se les llama
comunicación entre procesos.

Sistema de mensajes: Para poder enviar y recibir


mensajes, tiene que haberse establecido un enlace en la
comunicación. (Operaciones Send y Recieve)

Comunicación directa: Cada proceso que se quiera


comunicar deberá decir explícitamente con que proceso
desea comunicarse, mediante Send(message, P) y
Receive(message, Q).
Existen otros mecanismos como los pipes, se crean y luego se escriben y leen. El enlace es establecido entre cualquier par de
procesos que desean comunicarse, un enlace es asociado a dos procesos y eventualmente es unidireccional.

Comunicación indirecta: Los mensajes son enviados y


recibidos a través de buzones (mail boxes), sus primitivas
son Send(A, message) y Receive(A, message).
Dos procesos se pueden comunicar si y solo si ellos
comparte un mail box, un enlace puede ser compartido
entre varios procesos.

Buffers:

 Capacidad cero, el proceso emisor deberá


esperar a que el receptor efectivamente reciba
el mensaje.
 Capacidad limitada, el emisor podrá colocar un
mensaje siempre que haya espacio, sino deberá
esperar.
 Capacidad ilimitada, nunca habrá esperas.

Colas de mensajes: Provee un mecanismo de comunicación indirecto, asincrónico y escalable.


Distintos productos nos proveen de este mecanismo: Microsoft Message Queue, IBM WebSphere, Java Message Service.

Suelen ser llamados middleware orientado a mensajes. Estos SW suelen implementar controles transaccionales (concurrencia
y recuperación). Suelen contar con mecanismos de seguridad.

Java Message Service (JMS), existen dos modelos de la API JMS:

 Modelo punto a punto, son dos clientes, uno que envía y otro que recibe.
 Modelo publicador/suscriptor, hay procesos que envían o publican y uno o más procesos que se suscriben para recibir
los mensajes.

Ambos modelos pueden ser asincrónicos o sincrónicos, se integra a múltiples productos comerciales.

S-ar putea să vă placă și