Está en la página 1de 38

SISTEMAS OPERATIVOS

UNIDAD
II

Hardware y
Procesos
PROCESO
Proceso
01 imagen en memoria de un programa, junto con
la información relacionada con el estado de su
ejecución.
Si bien el sistema brinda la ilusión de
que muchos procesos se están Programa
ejecutando al mismo tiempo, la entidad pasiva, una lista de instrucciones; un
proceso es una entidad activa, que –empleando
mayor parte de ellos típicamente está
esperando para continuar su
02 al programa– define la actuación que tendrá el
ejecución —en un momento sistema.
determinado sólo puede estar Tarea
ejecutando sus instrucciones un requiere mucha menos estructura, típicamente
número de procesos igual o menor al basta con guardar la información relacionada con
número de procesadores que tenga 03 la contabilidad de los recursos empleados. Una
el sistema. tarea no es interrumpida en el transcurso de su
ejecución.
ESTADOS DE UN PROCESO

Nuevo Listo En ejecución

Se solicitó al sistema operativo la Está listo para iniciar o continuar su El proceso está siendo ejecutado en este
creación de un proceso, y sus recursos ejecución pero el sistema no le ha momento. Sus instrucciones
y estructuras están siendo creadas. asignado un procesador. están siendo procesadas en algún
procesador.

Bloqueado Zombie Terminado

En espera de algún evento para poder El proceso ha finalizado su ejecución, El proceso terminó de ejecutarse; sus
continuar su ejecución (aun pero el sistema operativo debe estructuras están a la espera
si hubiera un procesador disponible, no realizar ciertas operaciones de limpieza de ser limpiadas por el sistema operativo.
podría avanzar) para poder eliminarlo de la lista.
ESTADOS DE UN PROCESO

Diagrama de
transición entre los
estados de un
proceso.
PROCESO
Estado del El estado actual del proceso. Listado de dispositivos y archivos
proceso asignados que el proceso tiene
abiertos en un momento dado.

Registros del
CPU
La información específica del estado Estado de E/S
del CPU mientras el proceso está en
ejecución (debe ser respaldada y
restaurada cuando se registra un
cambio de estado)..
PCB -Process
Información de la utilización de
Control Block recursos que ha tenido este proceso
puede incluir el tiempo total empleado
La prioridad del proceso, la cola y otros (de usuario, cuando el
Información de en que está agendado, y demás procesador va avanzando sobre las
información que puede ayudar al instrucciones del programa
planificación sistema operativo a planificar los propiamente, de sistema cuando el
(scheduling) procesos. sistema operativo está atendiendo las
solicitudes del proceso), uso
acumulado de memoria y dispositivos,
La información de mapeo de etcétera.
memoria (páginas o segmentos,
dependiendo del sistema Información
Información de operativo), incluyendo la pila
de
(stack) de llamadas.
administración de contabilidad
memoria
HILOS
En sistemas operativo un hilo o hebra (del ingles thread), proceso
ligero o subproceso es una secuencia de tareas encadenadas muy pequeña que
puede ser ejecutada por un sistema operativo.

Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo que otra
tarea.

Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos,
son en conjunto conocidos como un proceso.

El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos
hace que cualquiera de estos hilos pueda modificar estos recursos. Cuando un hilo
modifica un dato en la memoria, los otros hilos acceden a ese dato modificado
inmediatamente.
HILOS
FUNCIONALIDAD DE
HILOS

Al igual que los procesos, los hilos poseen un estado de


ejecución y pueden sincronizarse entre ellos para evitar
problemas de compartición de recursos.

Generalmente, cada hilo tiene una tarea específica y


determinada, como forma de aumentar la eficiencia del uso del
procesador.
FUNCIONALIDAD DE
HILOS
Estados de un hilo

Los principales estados de los hilos son: Ejecución, Listo y Bloqueado.

No tiene sentido asociar estados de suspensión de hilos ya que es un concepto de


proceso.

En todo caso, si un proceso está expulsado de la memoria principal (RAM), todos


sus hilos deberán estarlo ya que todos comparten el espacio de direcciones del
proceso.
CAMBIOS DE ESTADO
Creación
Cuando se crea un proceso se crea
un hilo para ese proceso. Luego,
este hilo puede crear otros hilos
dentro del mismo proceso, Desbloqueo
proporcionando un puntero de Cuando el suceso por el que el hilo
instrucción y los argumentos del se bloqueó se produce, el mismo
nuevo hilo. El hilo tendrá su propio pasa a la final de las Listas.
contexto y su propio espacio de la
columna, y pasará al final de la lista

Bloqueo
Cuando un hilo necesita esperar Terminación
por un suceso, se bloquea Cuando un hilo finaliza se liberan
(salvando sus registros de usuario, tanto su contexto como sus
contador de programa y punteros columnas.
de pila). Ahora el procesador podrá
pasar a ejecutar otro hilo que esté
al principio de los Listos mientras el
anterior permanece bloqueado.
Ventajas de los hilos
contra procesos

Los beneficios de los hilos se derivan de las implicaciones de rendimiento.

Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un
proceso. Algunas investigaciones llevan al resultado que esto es así en un factor de 10.

Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se
debe eliminar el BCP1​del mismo, mientras que un hilo se elimina su contexto y pila.
Ventajas de los hilos
contra procesos

Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso.

Los hilos aumentan la eficiencia de la comunicación entre programas en ejecución. En la mayoría de


los sistemas en la comunicación entre procesos debe intervenir el núcleo para ofrecer protección de
los recursos y realizar la comunicación misma. En cambio, entre hilos pueden comunicarse entre sí sin
la invocación al núcleo.
Por lo tanto, si hay una aplicación que debe implementarse como un conjunto de unidades de
ejecución relacionadas, es más eficiente hacerlo con una colección de hilos que con una colección de
procesos separados.
Sincronización de hilos
Todos los hilos comparten el mismo espacio de direcciones y otros
recursos como pueden ser archivos abiertos.
Cualquier modificación de un recurso desde un hilo afecta al entorno
del resto de los hilos del mismo proceso

Una ventaja de la programación multihilo es que los programas


operan con mayor velocidad en sistemas de computadores con
múltiples CPUs (sistemas multiprocesador o a través de grupo de
máquinas) ya que los hilos del programa se prestan verdaderamente
para la ejecución concurrente.

Los hilos generalmente requieren reunirse para procesar los datos en


el orden correcto. Es posible que los hilos requieran de operaciones
atómicas para impedir que los datos comunes sean cambiados o
leídos mientras estén siendo modificados, para lo que usualmente se
utilizan los semáforos. El descuido de esto puede generar
interbloqueo.
Formas de multihilos

Multihilo apropiativo Multihilo cooperativo

Permite al sistema operativo Depende del mismo hilo abandonar


determinar cuándo debe haber un el control cuando llega a un punto de
cambio de contexto. La desventaja detención, lo cual puede traer
de esto es que el sistema puede problemas cuando el hilo espera la
hacer un cambio de contexto en un disponibilidad de un recurso.
momento inadecuado, causando un
fenómeno conocido como inversión
de prioridades y otros problemas.
CONCURRENCIA

Propiedad de los sistemas en la cual los procesos de un cómputo se hacen


simultáneamente, y pueden interactuar entre ellos, es decir son procesados al
mismo tiempo, de manera que, para ejecutar uno de ellos, no hace falta que se
haya ejecutado otro.

En otras palabras la concurrencia es simplemente la ejecución de varias tareas


al mismo tiempo. Ahora esto de ejecutarse "al mismo tiempo" es relativo de
acuerdo a la arquitectura del ordenador, esto es debido a que de acuerdo a la
arquitectura básica, el ordenador solo puede ejecutar un programa o tarea a la
vez, y no mas, si nosotros percibimos la ilusión de que varios programas se
ejecutan al mismo tiempo (Multiprogramación) es debido a que el sistema
operativo intercala las tareas que se ejecutan en el procesador a una velocidad
sumamente rápida.
CONCURRENCIA
La concurrencia puede presentarse en tres contextos diferentes:

Varias aplicaciones: para este caso se invento la multiprogramación, esto para permitir que el
tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o
aplicaciones activas (lo que acabamos de explicar arriba). Es decir, dentro de nuestro
computador podemos tener abiertas varias aplicaciones, cada aplicación es un hilo diferente, es
decir una tarea que se ejecuta independientemente de otra, por decirlo de algún modo, no
necesito tener abierto Word para poder escuchar música ¿O si?, cada programa en este caso es
independiente del otro.
CONCURRENCIA
La concurrencia puede presentarse en tres contextos diferentes:

Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la


programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un
conjunto de procesos concurrentes. En español esto quiere decir, que existen programas que
por lo regular para funcionar requieren ejecutar varias tareas a la vez o tener varios hilos de
ejecución.
CONCURRENCIA
La concurrencia puede presentarse en tres contextos diferentes:

Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los
programadores de sistemas y se ha comprobado que algunos sistemas operativos están
implementados como un conjunto de procesos.

En otras palabras lo mismo que acabamos de explicar con los navegadores se puede aplicar
aquí, un Sistema Operativo es básicamente un conjunto de programas que se ejecutan
concurrentemente para ofrecerte la mejor experiencia de trabajo. Si ponemos un ejemplo
practico podríamos mencionar todos los servicios de Windows, desde el servicio de cola de
impresión hasta el servicio de actualización de Windows update, cada uno de estos son
procesos que se ejecutan en segundo plano, si cerramos por error podemos causar un mal
funcionamiento de Windows o inclusive dañarlo.
CONCURRENCIA

Modelos de computadora en los que se pueden ejecutar procesos concurrentes:

Multiprogramación con un único procesador: El sistema operativo se encarga de ir


repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de
los mismos para dar así una apariencia de ejecución simultánea.

Multiprocesador: Es una maquina formada por un conjunto de procesadores que comparten


memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden
intercalar su ejecución sino también superponerla.

Multicomputadora: Es una maquina de memoria distribuida, que está formada por una serie de
computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los
procesos sobre los diferentes procesadores
CONCURRENCIA

Tipos de Procesos Concurrentes:

Proceso independiente: Es aquel que ejecuta sin requerir la ayuda


o cooperación de otros procesos. Un claro ejemplo de procesos
independientes son los diferentes shells que se ejecutan de forma
simultánea en un sistema.
CONCURRENCIA

Tipos de Procesos Concurrentes:

Procesos son cooperantes: Son aquellos que están diseñados para trabajar conjuntamente en
alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.
En ambos tipos de procesos (independientes y cooperantes), puede producirse una serie de
interacciones entre ellos y pueden ser de dos tipos:

- Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos
físicos o lógicos. Por ejemplo, dos procesos independientes compiten por el acceso a disco o
para modificar una base de datos.
- Interacción motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un
objetivo común, Por ejemplo, un compilador que tiene varios procesos que trabajan
conjuntamente para obtener un solo archivo de salida.
BLOQUEOS MUTUOS

En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo,


traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto
de procesos o hilos de ejecución en un sistema concurrente que compiten por
recursos del sistema o bien se comunican entre ellos. A diferencia de otros
problemas de concurrencia de procesos, no existe una solución general para los
interbloqueos.
BLOQUEOS MUTUOS

CONDICIONES

Condición de exclusión mutua: existencia de al menos de un recurso compartido por los


procesos, al cual sólo puede acceder uno simultáneamente.

Condición de retención y espera: al menos un proceso Pi ha adquirido un recurso Ri, y lo


retiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso.

Condición de no expropiación: los recursos no pueden ser expropiados por los procesos, es
decir, los recursos sólo podrán ser liberados voluntariamente por sus propietarios.

Condición de espera circular: dado el conjunto de procesos P0...Pm(subconjunto del total de


procesos original),P0 está esperando un recurso adquirido por P1, que está esperando un
recurso adquirido por P2,... ,que está esperando un recurso adquirido por Pm, que está
esperando un recurso adquirido por P0. Esta condición implica la condición de retención y
espera.
BLOQUEOS MUTUOS
PREVENCION

Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las condiciones necesarias vistas
anteriormente.

Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso. Esto es imposible para
procesos que no pueden ser encolados (puestos en un spool), e incluso con colas también pueden ocurrir
interbloqueos.

La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que van a
necesitar antes de empezar. Este conocimiento por adelantado muchas veces es imposible nuevamente. Otra forma es
requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan. Esto también es
poco práctico en general.

La condición de no expropiación puede ser también imposible de eliminar dado que un proceso debe poder tener un
recurso por un cierto tiempo o el procesamiento puede quedar inconsistente.

La condición de espera circular es la más fácil de atacar. Se le permite a un proceso poseer sólo un recurso en un
determinado momento, o una jerarquía puede ser impuesta de modo tal que los ciclos de espera no sean posibles.
ALGORITMOS DE
PLANIFICACIÓN
Cuando un proceso es ejecutable, el sistema operativo debe decidir cuál de ellos, debe ejecutarse en
primer término. Esa parte del sistema operativo que debe llevar a cabo esa decisión se llama el
planificador y el algoritmo que utiliza se llama algoritmo de planificación.

Existen varios criterios para los algoritmos de planificación específicos, para que sea un buen
algoritmo de planificación.

- Equidad: garantizar que cada proceso obtiene su proporción justa de la CPU.


- Eficacia: mantener ocupada a la CPU el 100% de tiempo.
- Tiempo de respuesta: minimizar el tiempo de respuesta para los usuarios interactivos.
- Tiempo de regreso: minimizar el tiempo que deben de esperar los usuarios por lotes para obtener
sus resultados.
- Rendimiento: maximizar el número de tareas procesadas por hora.
ALGORITMOS DE
PLANIFICACIÓN

Los algoritmos de planificación antes de ser evaluados deben tomarse ciertas


medidas:

Porcentaje de utilización de la CPU por procesos de usuario.


La CPU es un recurso caro que necesita ser explotado, los valores reales suelen
estar entre un 40% y un 90%.

Rendimiento (throughput) = nº de ráfagas por unidad de tiempo. Se define una


ráfaga como el período de tiempo en que un proceso necesita la CPU; un proceso,
durante su vida, alterna ráfagas con bloqueos. Por extensión, también se define
como el nº de trabajos por unidad de tiempo.
ALGORITMOS DE
PLANIFICACIÓN

Los algoritmos de planificación antes de ser evaluados deben tomarse ciertas


medidas:

Tiempo de espera (E) = tiempo que una ráfaga ha permanecido en estado listo.

Tiempo de finalización (F) = tiempo transcurrido desde que una ráfaga


comienza a existir hasta que finaliza. F = E + t (t = tiempo de CPU de la ráfaga).

Penalización (P) = E + t / t = F / t, es una medida adimensional que se puede


aplicar homogéneamente a las ráfagas independientemente de su longitud.
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Planificación de Plazo Fijo

En la planificación de plazo fijo se programan ciertos trabajos para terminarse en un tiempo específico o plazo
fijo. Estas tareas pueden tener un gran valor si se entregan a tiempo, y carecer de él si se entregan después del
plazo. Esta planificación es compleja por varios motivos:

El usuario debe informar por adelantado de las necesidades precisas de recursos del proceso. Semejante
información rara vez está disponible.

El sistema debe ejecutar el proceso en un plazo fijo sin degradar demasiado el servicio a los otros usuarios y
debe planificar cuidadosamente sus necesidades de recursos dentro del plazo. Esto puede ser difícil por la
llegada de nuevos procesos que impongan demandas imprevistas al sistema.

Si hay muchas tareas a plazo fijo activas al mismo tiempo, la planificación puede ser tan compleja que se
necesiten métodos de optimización avanzados para cumplir los plazos.

La administración intensiva de recursos requerida por la planificación de plazo fijo puede producir un gasto extra
substancial.
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Planificación Primero en Entrar-Primero en Salir (FIFO, First In First Out)

Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo.
El proceso se mantiene en la CPU hasta que se bloquea voluntariamente.

La ventaja de este algoritmo es su fácil implementación, sin embargo, no es válido para entornos
interactivos ya que un proceso de mucho cálculo de CPU hace aumentar el tiempo de espera de los
demás procesos . Para implementar el algoritmo (ver figura 2) sólo se necesita mantener una cola
con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a
listo se sitúa el último de la cola.

En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados.


En b) P7 se bloquea (ya sea al realizar una E/S, una operación WAIT sobre un semáforo a cero u otra
causa) y P2 pasa a ocupar la CPU. En c) ocurre un evento (finalización de la operación de E/S,
operación SIGNAL, ...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de
procesos listos.
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Planificación Primero en Entrar-Primero en Salir (FIFO, First In First Out)
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Planficación por Turno Rotatorio (Round Robin)

Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de


la CPU entre los procesos, muy válido para entornos de tiempo compartido. Cada
proceso tiene asignado un intervalo de tiempo de ejecución, llamado cuantum o
cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para
ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum
también se alterna el uso de la CPU.

El round robin es muy fácil de implementar. Todo lo que necesita el planificador es


mantener una lista de los procesos listos
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Planficación por Turno Rotatorio (Round Robin)
TIPOS ALGORITMOS DE
PLANIFICACIÓN
Tamaño del Cuanto

La determinación del tamaño del cuanto es vital para la operación efectiva de un sistema de cómputo.
¿Debe el cuanto ser pequeño o grande?, ¿fijo o variable?, ¿el mismo para todos los usuarios o debe
determinarse por separado para cada uno?

Si el cuanto de tiempo es muy grande, cada proceso tendrá el tiempo necesario para terminar, de
manera que el esquema de planificación por turno rotatorio degenera en uno de primero-en-entrar-
primero-en-salir. Si el cuanto es muy pequeño, el gasto extra por cambio de proceso se convierte en
el factor dominante y el rendimiento del sistema se degradará hasta el punto en que la mayor parte
del tiempo se invierte en la conmutación del procesador, con muy poco o ningún tiempo para ejecutar
los programas de los usuarios.

Un cuantum pequeño disminuye el rendimiento de la CPU, mientras que un cuantum muy largo
empobrece los tiempos de respuesta y degenera en el algoritmo FIFO. La solución es adoptar un
término medio
TIPOS ALGORITMOS DE
PLANIFICACIÓN

Planificación por Prioridad al más corto (SJF, Short Job First)

Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción, por tanto,
sólo es útil para entornos batch.
Su característica es que cuando se activa el planificador, éste elige la ráfaga de
menor duración. Es decir, introduce una noción de prioridad entre ráfagas.
Hay que recordar que en los entornos batch se pueden hacer estimaciones del
tiempo de ejecución de los procesos.
TIPOS ALGORITMOS DE
PLANIFICACIÓN

Planificación por Prioridad al Tiempo Restante más Corto (SRTF, Short


Remaining Time First)

Es similar al anterior, con la diferencia de que si un nuevo proceso pasa a listo se


activa el dispatcher para ver si es más corto que lo que queda por ejecutar del
proceso en ejecución. Si es así el proceso en ejecución pasa a listo y su tiempo de
estimación se decrementa con el tiempo que ha estado ejecutándose.
TIPOS ALGORITMOS DE
PLANIFICACIÓN

Planificación a la Tasa de Respuesta más Alta

Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar. Las prioridades


dinámicas en HRN se calculan de acuerdo con la siguiente expresión:

prioridad = (tiempo de espera + tiempo de servicio) / tiempo de servicio

Como el tiempo de servicio aparece en el denominador, los procesos cortos tendrán


preferencia. Pero como el tiempo de espera aparece en el numerador, los procesos
largos que han esperado también tendrán un trato favorable. Obsérvese que la
suma tiempo de espera + tiempo de servicio es el tiempo de respuesta del sistema
para el proceso si éste se inicia de inmediato.
TIPOS ALGORITMOS DE
PLANIFICACIÓN

Planificación por el Comportamiento

Con este tipo de planificación se pretende garantizar al usuario cierta prestación del
sistema y tratar de cumplirla. Si en un sistema tenemos 'n' usuarios lo normal será
garantizar a cada uno de ellos al menos 1/n de la potencia del procesador. Para ello
necesitamos del tiempo consumido por el procesador y el tiempo que lleva el
proceso en el sistema.
La cantidad de procesador que tiene derecho a consumir el proceso será el cociente
entre el tiempo que lleva en el sistema entre el número de procesos que hay en el
sistema. A esa cantidad se le puede asociar una prioridad que vendrá dada como el
cociente entre tiempo de procesador que ha consumido y el tiempo que se le
prometió (el tiempo que tiene derecho a consumir).

También podría gustarte