1. INSTITUTO TÈCNOLOGICO SUPERIOR DE LA SIERRA NEGRA DE
AJALAPANA
MATERIA: SISTEMAS OPERATIVOS
PROFESOR: ING. MARCO ANTONIO ISIDRO ABRIL
TAREA: UNIDAD 2: ADMINOSTRACIÒN DE PROCESOS Y DEL PROCESADOR.
SEMESTRE: TERCERO
NOMBRE: CESAR SUAREZ GUZMAN
2. 2.1.- CONCEPTO DE PROCESO
Proceso no es más que un programa en ejecución, e incluye los valores
actuales del contador de programa, los registros y las variables.
Conceptualmente cada unos de estos procesos tiene su propia CPU virtual.
Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro.
Estos son unos puntos más relevantes del concepto de proceso manejado en
un sistema operativo:
Las instrucciones de un programa destinadas a ser ejecutadas por el
microprocesador.
Su estado de ejecución en un momento dado, esto es, los valores de los
registros de la CPU para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus
contenidos.
Otra información que permite al sistema operativo su planificación.
2.2.-ESTADOS Y TRANSICIONES DE LOS PROCESOS.
En este tipo de estados y de transiciones de procesos en pocas palabras esto nos dice que el
procesador se encarga de hacer y realizar para estado de proceso según como valla en
funcionamiento en sistema operativo.
Pero para que todo este procedimiento se lleve de forma adecuada, y sin ninguna interrupción es
necesario sabes el tipo de transiciones que tiene llevara estos son unos ejemplos mas comunes
dentro de ello:
La transacción 1 ocurre cuando un proceso descubre que no puede continuar.
En algunos sistemas el proceso debe ejecutar una llamada al sistema, block,
para pasar al estado bloqueado. En otros sistemas, incluido MINIX, cuando un
proceso lee de un conducto o de un archivo especial, (p.ej., una terminal) y no
hay entradas disponibles, se bloquea automáticamente.
Las transiciones 2 y 3 son causadas por el planificador de procesos, un parte
del sistema operativo, sin que el proceso se entere siquiera de ellas.
La transición 2 ocurre cuando el planificador decide que el proceso en
ejecución ya se ejecuto durante suficiente tiempo y es ahora de dejar que otros
procesos tengan algo de tiempo de CPU.
La transacción 3 ocurre cuando todos los demás procesos han disfrutado de
una porción justa y es hora de que el primer proceso reciba otra vez la CPU
para ejecutarse.
La transacción 4 ocurre cuando acontece el suceso externo que un proceso
estaba esperando (como la llegada de entrada). Sin ningún otro proceso se
esta ejecutando en ese instante, se dispara de inmediato la transacción 3 y el
proceso comienza a ejecutarse.
3. En caso contrario, el proceso tal vez tenga que esperar en el estado listo
durante cierto tiempo hasta que la CPU este disponible. Usando el modelo de
procesos, es mucho mas fácil visualizar lo que esta sucediendo dentro del
sistema.
2.3 PROCESOS LIGEROS (HILOS O HEBRAS)
Estos tipos de procesos esta en diferentes unidades las cuales les presento a
continuación:
Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de
tanto en tanto, se le puede asignar otros recursos como dispositivos de E/S o ficheros.
Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una
traza) a través de uno o más programas. Esta ejecución se entremezcla con la de otros
procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo, etc) y una
prioridad de expedición u origen. La unidad planificada y expedida por el sistema
operativo es el proceso.
.Dentro de un proceso puede haber uno o más hilos de control cada uno con:
Un estado de ejecución (en ejecución, listo, bloqueado)
Un contexto de procesador, que se salva cuando no esté ejecutándose.
Una pila de ejecución.
Algún almacenamiento estático para variables locales.
Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros
hilos.
Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se
tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y
en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un
mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria del
código, y no varias.
Un procesos un programa en ejecución que comparte la imagen de la memoria y otras
informaciones con otros procesos ligeros.
4. Es una unidad básica de utilización de la CPU consistente en un juego de registros y un
espacio de pila. Comparte el código, los datos y los recursos con sus hebras pares
Una tarea (o proceso pesado) está formada ahora por una o más hebras
Una hebra sólo puede pertenecer a una tarea
ESTADOS DE LOS PROCESOS LIGEROS
Un proceso ligero puede estar ejecutando, listo o bloqueado.
PARALELISMO
Los procesos ligeros permiten paralelizar una aplicación.[3]
2.4 CONCURRENCIA Y SECUENCIABILIDAD.
La concurrencia comprende un gran número de cuestiones de diseño,
incluyendo la comunicación entre procesos, comparición y competencia por los
recursos, sincronización de la ejecución de varios procesos y asignación del
tiempo de procesador a los procesos y es fundamental para que existan
diseños como Multiprogramación, Multiproceso y Proceso distribuido
5. La concurrencia puede presentarse en tres contextos diferentes:
.
• Varias aplicaciones: La multiprogramación se creó para permitir que el
tiempo de procesador de la máquina fuese compartido dinámicamente entre
varios trabajos o aplicaciones activas.
• 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.
• Estructura del sistema operativo: Las mismas ventajas de estructuración
son aplicables a los programadores de sistemas y se ha comprobado que
algunos sistemas operativos están implementados como un conjunto de
procesos.
Existen 2 modelos de computadora en los que se pueden ejecutar procesos
concurrentes:
• Multiprogramación con un único procesador.
• Multiprocesador.
También hay diversas razones que motivan la ejecución de procesos concurrentes en
un sistema las cuales son las siguientes:
• Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez,
lo que se puede hacer es dividirla en procesos, cada uno de los cuales se
ejecuta en paralelo con los demás.
• Posibilita el uso interactivo a múltiples usuarios que trabajan de forma
simultánea.
.
• Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya
que pueden aprovechar las fases de entrada-salida de unos procesos para
realizar las fases de procesamiento de otros.
Así como existen las razones que motivan la ejecución de procesos
concurrentes, también existen sus contras:
• Inanición e interrupción de procesos
• Ocurrencia de bloqueos
• Que dos o más procesos requieran el mismo recurso (No apropiativo).
TIPOS DE PROCESOS CONCURRENTES.
Los procesos que ejecutan de forma concurrente en un sistema se pueden
clasificar como:
.
6. Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o
cooperación de otros procesos. Un claro ejemplo de procesos independientes
son los diferentes shells que se ejecutan de forma simultánea en un sistema.
Procesos cooperantes: Son aquellos que están diseñados para trabajar
conjuntamente en alguna actividad, para lo que deben ser capaces de
comunicarse e interactuar entre ellos.
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.
2.4.1 EXCLUSIÓN MUTUA DE SECCIONES CRÍTICAS.
El método más sencillo de comunicación entre los procesos de un programa
concurrente es el uso común de unas variables de datos. El problema de este sistema
es que la acción de un proceso interfiere en las acciones de otro de una forma no
adecuada. Para evitar este tipo de errores se pueden identificar aquellas regiones de
los procesos que acceden a variables compartidas y dotarlas de la posibilidad de
ejecución como si fueran una única instrucción. Se denomina sección crítica a aquellas
partes de los procesos concurrentes que no pueden ejecutarse de forma concurrente
o, que desde otro proceso se ven como si fueran una única instrucción. Esto quiere
decir que si un proceso entra a ejecutar una sección crítica en la que accede a unas
variables compartidas, entonces otro proceso no puede entrar a ejecutar una región
crítica en la que se modifique las variables compartidas con el anterior. Las secciones
críticas se pueden agrupar en clases, siendo mutuamente exclusivas las secciones
críticas de cada una. Para conseguir dicha exclusión se deben implementar protocolos
software que impidan o bloqueen el acceso a una sección crítica mientras está siendo
utilizada por un proceso.
Algunos ejemplos de algoritmos clásicos de exclusión mutua son:
El algoritmo de Dekker.
El algoritmo de Peterson
2.4.2 SINCRONIZACIÓN DE PROCESOS EN S.C.
Los procesos deben sincronizar sus actividades; por ejemplo, en el caso de que un
proceso no pueda progresar hasta que otro haya terminado algún tipo de actividad.
Los servicios básicos de comunicación son:
a. crear: el proceso solicita la creación del mecanismo
b. enviar o escribir: el proceso emisor envía información al proceso receptor
7. c. recibir o leer: el proceso receptor recibe información
d. destruir: el proceso solicita la destrucción del mecanismo de comunicación
La comunicación puede ser síncrona y asíncrona:
a. síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El
emisor ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.
b. asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un
almacenamiento intermedio para guardar la información enviada, hasta que el
receptor la solicite.
2.4.2.1 MECANISMO DE SEMÁFOROS.
Semáforo es un mecanismo de comunicación con el cual no se mueven datos, puesto
que solo se puede consultar y modificar su valor al tener un carácter puramente
informativo.
Los semáforos se implementan mediante una cola de tareas a la que se
añaden los procesos que están en espera del recurso. Solo se permiten tres
operaciones sobre un semáforo:
.
1. Inicializa (s: Semáforo Binario; v: integer) -- > poner el valor del semáforo s
al valor de v (0,1).
2. Espera (wait)(s) if s = 1 then s: = 0 else Suspender la tarea que hace la
llamada y ponerla en la cola de tareas.
3. Señal (signal)(s) if cola de tareas vacía then s : = 1 else Reanudar la primera
tarea de la cola tareas.
Estas operaciones son procedimientos que se implementan como acciones
indivisibles. En sistemas con un único procesador bastará simplemente con
inhibir las interrupciones durante la ejecución de las operaciones del semáforo.
Al introducir el semáforo se crea un nuevo estado en el diagrama de
transiciones, el de espera
8. 2.4.2.2 MECANISMO DE MONITORES.
Monitores son estructuras de datos utilizadas en lenguajes de programación
para sincronizar dos o más procesos o hilos de ejecución que usan recursos
compartidos.
COMPONENTES
.
Un monitor tiene cuatro componentes: inicialización, datos privados,
procedimientos del monitor y cola de entrada.
Inicialización: contiene el código a ser ejecutado cuando el monitor es creado
Datos privados: contiene los procedimientos privados, que sólo pueden ser
usados desde dentro del monitor y no son visibles desde fuera
Procedimientos del monitor: son los procedimientos que pueden ser
llamados desde fuera del monitor.
Cola de entrada: contiene a los threads que han llamado a algún
procedimiento del monitor pero no han podido adquirir permiso para ejecutarlos
aún.
2.4.3.- INTERBLOQUEO (DEADLOCK)
Es un conjunto de procesos se encuentra en estado de interbloqueo cuando cada
uno de ellos espera un suceso que solo puede originar otro proceso del mismo
conjunto.
9. RECURSOS
Un sistema se compone de un numero finito de recursos que se distribuyen
entre varios tipos:
Físicos: Ciclo de cpu, espacio en memoria, dispositivos de e/s
(impresoras, unidades de cinta, etc.)
Lógicos: Ficheros, tablas del sistemas, etc.
Por lo general, una computadora tiene distintos recursos que pueden ser
otorgados. Algunos recursos podrán tener varias instancias idénticas, como es
el caso de tres unidades de cinta. Si se tienen disponibles varias copias de un
recurso, cualquiera de ellas se pude utilizar para satisfacer cualquier solicitud
del recurso. Un recurso es cualquier cosa que solo puede ser utilizada por un
único proceso en un instante dado.
Los recursos son de dos tipos:
Apropiable
No apropiables
2.4.3.1.-PREVENCION DE UN INTERBLOQUEO
La estrategia básica de la prevención del interbloqueo consiste, a grandes
rasgos, en diseñar su sistema de manera que esté excluida, a priori, la
posibilidad de interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
- Los métodos indirectos que consisten en impedir la aparición de alguna de las
tres condiciones necesarias para que se del interbloqueo.
- Los métodos directos que consisten en evitar la aparición del círculo vicioso
de espera.
2.4.3-2.- DETECCIÓN DEL INTERBLOQUEO
Las estrategias de prevención de interbloqueo son muy conservadoras;
resuelven el problema limitando el acceso a recursos e imponiendo
restricciones sobre los procesos. En cambio, las estrategias de detección de
interbloqueo, no limitan el acceso a recursos ni restringen las acciones del
proceso. Con la detección del interbloqueo, se concederán los recursos que los
procesos necesiten siempre que sea posible. Periódicamente, el S. O. ejecuta
un algoritmo que permite detectar la condición de circulo vicioso de espera.
ALGORITMO DE DETECCIÓN DE INTERBLOQUEO
10. Una comprobación para interbloqueo puede hacerse con igual o menor
frecuencia que cada solicitud de recursos, dependiendo de qué tan probable es
que ocurra un interbloqueo. Comprobar cada solicitud de recursos tiene dos
ventajas: Conduce a la detección temprana y el algoritmo es simple, de manera
relativa porque se basa en cambios crecientes al estado del sistema. Además,
las comprobaciones frecuentes consumen un tiempo considerable de
procesador.
2.4.3.3.- RECUPERACIÓN DE INTERBLOQUEO
En este tipo ahí 2 tipos de recuperación de interbloqueo
RECUPERACIÓN MANUAL
Está forma de recuperación consiste en avisarle al administrador o al operador
del sistema que se ha presentado un interbloqueo, y será el administrador el
que solucione dicho problema de la manera más conveniente posible, de modo
que su decisión no afecte demasiado a al usuario del proceso en conflicto, y
sobre todo que no afecte a los demás usuarios del sistema.
ABORTAR LOS PROCESOS
Para eliminar interbloqueos abortando un proceso, tenemos dos métodos; en
ambos, el sistema recupera todos los recursos asignados a los procesos
terminados.
1) Abortar todos los procesos interbloqueados. Esta es una de las soluciones
más comunes, adoptada por Sistemas Operativos. Este método romperá
definitivamente el ciclo de interbloqueo pero con un costo muy elevado, ya que
estos procesos efectuaron cálculos durante mucho tiempo y habrá que
descartar los resultados de estos cálculos parciales, para quizá tener que
volver a calcularlos más tarde.
2) Abortar un proceso en cada ocasión hasta eliminar el ciclo de interbloqueo.
El orden en que se seleccionan los procesos para abortarlos debe basarse en
algún criterio de costo mínimo. Después de cada aborto, debe solicitarse de
nuevo el algoritmo de detección, para ver si todavía existe el interbloqueo. Este
método cae en mucho tiempo de procesamiento adicional.
2.5 NIVELES, OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN
NIVELES DE PLANIFICACIÓN
.
La planificación es el proceso por el cual el sistema operativo selecciona que
proceso ejecutar. La selección del proceso se basa en alguno de los algoritmos
de planificación.
11. La planificación de la CPU, en el sentido de conmutarla entre los distintos
procesos, es una de las funciones del sistema operativo. Este despacho es
llevado a cabo por un pequeño programa llamado planificador a corto plazo o
dispatcher (despachador). La misión del dispatcher consiste en asignar la CPU
a uno de los procesos ejecutables del sistema, para ello sigue un determinado
algoritmo.
Los acontecimientos que pueden provocar la llamada al dispatcher dependen
del sistema (son un subconjunto de las interrupciones), pero son alguno de
estos:
El proceso en ejecución acaba su ejecución o no puede seguir
ejecutándose (por una E/S, operación WAIT, etc).
Un elemento del sistema operativo ordena el bloqueo del proceso en
ejecución
El proceso en ejecución agota su cuantum o cuanto de estancia en la
CPU.
Un proceso pasa a estado listo.
Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos
tiempo ocupa la CPU un programa del sistema operativo, y, por tanto, se
dedica más tiempo a los procesos del usuario (un cambio de proceso lleva
bastante tiempo).
Se puede definir el scheduling -algunas veces traducido como -planificación-
como el conjunto de políticas y mecanismos construidos dentro del sistema
operativo que gobiernan la forma de conseguir que los procesos a ejecutar
lleguen a ejecutarse.
El scheduling está asociado a las cuestiones de:
Cuándo introducir un nuevo proceso en el Sistema.
Determinar el orden de ejecución de los procesos del sistema.
El scheduling está muy relacionado con la gestión de los recursos. Existen tres
niveles de scheduling, estos niveles son:
Planificador de la CPU o a corto plazo.
Planificador a medio plazo.
Planificador a largo plazo.
PLANIFICACIÓN A LARGO PLAZO
PLANIFICACIÓN A MEDIANO PLAZO
PLANIFICACIÓN A CORTO PLAZO
12. 2.6 TÉCNICAS DE ADMINISTRACIÓN DEL PLANIFICADOR
Las disciplinas de planificación pueden ser:
• Expropiativas
• No Expropiativas
Se denomina planificador al software del sistema operativo encargado de
asignar los recursos de un sistema entre los procesos que los solicitan.
Siempre que haya tomar una decisión, el planificador debe decidir cuál de los
procesos que compiten por la posesión de un determinado recursos lo recibirá.
a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización.
Aunque puede parecer lógico intentar mantener este parámetro próximo al
100%, con un valor tan elevado otros aspectos importantes de medida del
comportamiento del sistema pueden verse deteriorados, como por ejemplo el
tiempo medio de espera.
b) Rendimiento: Es una medida del número de procesos completados por
unidad de tiempo. Por ejemplo 10 procesos por segundo.
c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre
desde que un proceso se crea o presenta hasta que completa por el sistema.
d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le
concede el procesador. Puede resultar una medida mas adecuada de la
eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en
ejecutarse el mismo.
e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo
que transcurre desde que se señala un evento hasta que se ejecuta la primera
instrucción de la rutina de servicio de dicho evento. El criterio de selección de
un algoritmo se suele basar en la maximización o minimización de una función
de los parámetros anteriores.
2.6.1. FIFO
Mecanismo de scheduling en el cual los procesos se ordenan en una fila, en la
cual se ejecutan cada uno de los procesos hasta su finalización
secuencialmente. Es tremendamente ineficiente.
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.
13. Los FIFOs se usan comúnmente en circuitos de electrónica para almacenaje y
hacer control de flujo. Hablando de hardware forma un FIFO consiste
básicamente en una conjunto de punteros de lectura/escritura, almacenamiento
y lógica de control. El almacenamiento puede ser SRAM, flip-flops, latches o
cualquier otra forma adecuada de almacenamiento. Para FIFOs de un tamaño
importante se usa usualmente una SRAM de doble puerto, donde uno de los
puertos se usa para la escritura y el otro par a la lectura.
2.6.2 SJF
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.
Supongamos que en un momento dado existen tres ráfagas listos R1, R2 y R3,
sus tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al que
pertenece la ráfaga R1 es la que lleva más tiempo ejecutable, seguido del
proceso al que pertenece R2 y del de R3.
• FIFO F = (24 + 27 + 30) / 3 = 27 ms.
• SJF F = (3 + 6 + 30) / 3 = 13 ms.
2.6.3 RR
Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado
cuantum o cuánto. 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.
2.6.4 Queves Multi-level
Un algoritmo de planificación multinivel partición, la cola de listos en colas
separadas. Se asignan en forma permanente los trabajos a una cola,
generalmente, basándose en alguna propiedad del mismo (requerimientos de
memoria, tipo de trabajo), teniendo cada cola su propio algoritmo. Por ejemplo,
la cola interactiva podría planificarse usando RR y la batch FIFO.
Ningún trabajo en una cola de baja prioridad puede ejecutarse si las colas con
mayor prioridad no están vacías. Si algún trabajo entra en una cola de mayor
prioridad, el trabajo de otras colas es interrumpido.
2.6.5 Multi-Level Feedback Queves
14. En colas multinivel realimentadas los trabajos pueden moverse dentro de
distintas colas. La idea es separar procesos con distintos tipos de
interrupciones de la CPU. Si un trabajo consume mucho tiempo de CPU, será
movido a una cola con menor prioridad.
En forma similar, si un proceso espera demasiado tiempo en una cola de baja
prioridad, lo moveremos a una cola de mayor prioridad.
En general un planificador de este tipo esta definido por los siguientes
parámetros:
1. El número de colas.
2. El tipo de algoritmo de planificación de cada cola.
3. Un método de determinación de cuando mover un trabajo a una cola de
mayor prioridad.
4. Un método de determinación de cuando mover un trabajo a una cola de
menor prioridad.
5. Un método de determinación de a qué cola se enviará un trabajo cuando
necesita servicio.