46
Republica Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Instituto Universitario de Tecnología Juan Pablo Pérez Alfonzo Iutepal Puerto cabello Edo. Carabobo Bachilleres: Coello, Jhoan Lugo Yonaike Valero Elvis Pérez Luis Profesora: Maricela,Manterrano Enero 2011

Sistema operativo

Embed Size (px)

Citation preview

Page 1: Sistema operativo

Republica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educación Superior

Instituto Universitario de Tecnología Juan Pablo Pérez Alfonzo

Iutepal

Puerto cabello – Edo. Carabobo

Bachilleres:

Coello, Jhoan

Lugo Yonaike

Valero Elvis

Pérez Luis

Profesora:

Maricela,Manterrano

Enero 2011

Page 2: Sistema operativo

Concurrencia

Dos o más procesos decimos que son concurrentes, paralelos, o que

se ejecutan concurrentemente, cuando son procesados al mismo tiempo, es

decir, que para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.

La concurrencia comprende un gran número de cuestiones de

diseño, incluyendo la comunicación entre procesos, comparació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.

Page 3: Sistema operativo

En un sistema multiprogramado con un único procesador, losprocesos se intercalan en el tiempo para dar la apariencia de ejecuciónsimultánea. Cuando dos o más procesos se encuentran activos de formasimultánea (aunque esto no implica, que su ejecución física seasimultánea), se dice que son Concurrentes. Esta situación puederepresentarse como se observa en la siguiente gráfica:

Procesos de Concurrentes.

En la gráfica anterior puede verse que los procesos P1 y P2 son

concurrentes, mientras que P2 y P3 no lo son.

Page 4: Sistema operativo

Siempre que exista multiprogramación se presenta un alta

probabilidad de concurrencia entre procesos. Ejemplos de procesos

concurrentes pueden ser los relacionados con trabajos de distintos usuarios

que corren simultáneamente, o procesos del sistema operativo. En general la

concurrencia será aparente siempre que el números de procesadores sea

menor que el número de procesos.

Los Beneficios de la concurrencia son:

Facilita la programación de aplicaciones permitiendo que se estructuren

como un conjunto de procesos que cooperan entre sí.

Acelera los cálculos, dividiendo una tarea en procesos que se ejecutan de

forma paralela.

Posibilita el uso interactivo a múltiples usuarios que trabajan de forma

simultánea desde varios terminales.

Permite un mejor aprovechamiento de los recursos, en especial del

procesador.

Page 5: Sistema operativo

Tipos de Procesos Concurrentes

Independientes: Son aquellos procesos que se ejecutan sin la ayuda o

cooperación de otros procesos, estos no presentan problemas de

coordinación, pues por definición no hay interacción entre ellos. Un ejemplo de

estos son los procesos asociados a con dos usuarios distintos en un sistema

clásico de multiprogramación.

Dependientes: Estos trabajan de forma conjunta en alguna actividad, por lo que

deben ser capaces de comunicarse e interactuar entre ellos, para ello se crean

se crean mecanismos de comunicación y coordinación entre ellos.

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.

Page 6: Sistema operativo
Page 7: Sistema operativo

Los procesos son concurrentes si existen simultáneamente. Cuando dos o

más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado

una concurrencia de procesos. Es importante mencionar que para que dos o más

procesos sean concurrentes, es necesario que tengan alguna relación entre ellos 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 tres modelos de computadora en los que se pueden ejecutar procesos

concurrente:

Multiproceso y Proceso distribuido

Page 8: Sistema operativo

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.

Page 9: Sistema operativo

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.

Page 10: Sistema operativo

Llamado también negativa de asignación de recursos, el algoritmo resuelve un

problema planteado porEdsger Dijkstra.

El algoritmo del banquero consiste en:

Estudiar cada solicitud al ocurrir ésta.

Ver si su otorgamiento conduce a un estado seguro:

En caso positivo, se otorga la solicitud.

En caso negativo, se la pospone.

Para ver si un estado es seguro:

Verifica si tiene los recursos suficientes para satisfacer a otro cliente: En caso

afirmativo, se supone que los préstamos se pagarán.

Se verifica al siguiente cliente cercano al límite y así sucesivamente.

Si en cierto momento se vuelven a pagar todos los créditos, el estado es seguro

y la solicitud original debe ser aprobada.

Algoritmo del Banquero

Page 11: Sistema operativo

Existe un banco que tiene una reserva limitada de dinero a prestar y clientes

con línea de crédito. Un cliente pide dinero y no hay garantía de que haga reposiciones

hasta que saque la cantidad máxima. El banco puede rechazar el préstamo si hay

riesgo de que no tenga fondos para prestar a otros clientes. Viéndolo como Sistema

Operativo, los clientes serían los procesos, el dinero a prestar los recursos y el

banquero el S.O.

Para este algoritmo es importante considerar los siguientes puntos:

Estado: Es la asignación actual de los recursos a los procesos.

Matriz: demanda (o máximo necesario). Son las exigencias máximas de

recursos para cada proceso.

Matriz asignación: Son las asignaciones actuales de recursos para cada proceso.

Vector disponible: Cantidad total de recursos sin asignar a los procesos.

Estado seguro: Es un estado en el que existe al menos un orden en el que todos

los procesos pueden ejecutar hasta el final sin generar interbloqueo.

Page 12: Sistema operativo
Page 13: Sistema operativo

Se permiten las condiciones de “exclusión mutua”, “espera por” y “no

apropiatividad” .

Los procesos reclaman uso exclusivo de los recursos que requieren.

Los procesos mantienen los recursos mientras piden y esperan por otros recursos

adicionales, pero no pueden apropiarse de un proceso que mantenga esos recursos.

Las peticiones son de un recurso a la vez.

El S. O. puede conceder o negar cada una de las peticiones; si se niega una petición:

El proceso retiene los recursos que ya tiene asignados.

Espera un tiempo finito hasta que le sea atendida la petición.

El S. O. concede peticiones que den como resultado solo estados seguros. Dado que

el sistema se mantiene siempre en estado seguro, todas las peticiones serán

atendidas en un tiempo finito.

Asignación de Recursos por el Algoritmo del Banquero.

Page 14: Sistema operativo

Requiere que exista un número fijo de recursos asignables, pero generalmente

no se puede contar con que el número de recursos se mantenga siempre

constante.

Requiere que la población de usuarios se mantenga constante, lo cual es

irrazonable.

Requiere que el S. O. garantice que todas las peticiones serán concedidas en un

tiempo finito, pero en la realidad se requieren mayores garantías.

Requiere que los procesos reintegren los recursos en un tiempo finito, pero en la

realidad se requieren mayores garantías.

Requiere que los procesos indiquen sus necesidades máximas de recursos por

adelantado, lo cual generalmente no ocurre.

Generalmente no es utilizado en S. O. reales.

Debilidades del Algoritmo del Banquero

Page 15: Sistema operativo

Condición Método

Exclusión mutua Realizar un spooling general

Detenerse y esperarSolicitar todos los recursos al principio

No apropiación Retirar los recursos

Espera circularOrdenar los recursos en forma numérica

Resumen de los métodos para prevenir el bloqueo.

Los métodos para prevenir el bloqueo pueden resumirse según se indica en la Tabla

Page 16: Sistema operativo

No es necesario expulsar y hacer retroceder procesos como en la detección

del interbloqueo.

Es menos restrictivo que la prevención.

Ventajas del algoritmo del banquero

Se debe conocer la máxima demanda de recursos por anticipado.

La ejecución de los recursos no debe estar forzada por la sincronización.

Se tiene un número fijo de procesos y recursos.

Los procesos no finalizan mientras retengan recursos.

Requiere que los procesos salden sus préstamos en un tiempo finito.

Desventajas

Page 17: Sistema operativo

Ejemplo de Algoritmo del Banquero

Utilizando el algoritmo del banquero resuelva el siguiente

problema, indicando el orden en que los procesos pasan a ser estados

seguros evitando el problema del interbloqueo.

Lista de procesos: P1-P3-P4-P0 ó P2

A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C.

En la primer columna de asignados está la cantidad de recursos que el

proceso ha obtenido a lo largo de un tiempo; en la segunda columna de

Máximo Necesario, están los recursos que tiene que obtener de cada tipo

para comenzar a ser ejecutado. Por ejemplo, el P0 no ha obtenido ningún

recurso del tipo A, sólo 1 del tipo B y ninguno del tipo C, y necesita para

ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.

Page 18: Sistema operativo

En la última columna se tienen los recursos disponibles que da el sistema, los que se

pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.

El algoritmo del banquero trata de asegurar qué proceso tiene un “estado seguro” es

decir, se requiere alcanzar el máximo requerido entre los que estén en Asignados y los

que se encuentren en Disponibles.

Ejemplo: El proceso 0 no está en estado seguro. Si se suman Asignados + Disponibles

para cada uno de los recursos A, B y C, realmente no se alcanzan los Máximos

Requeridos.

Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados +

Disponibles. Allí sí se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como

se alcanza a llenar los Máximos, ese proceso se ejecuta.

Una vez que el proceso se ejecutó, entonces se procede a SUMAR los recursos

asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al

terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo

A, B y C a sumarse con los disponibles 3-3-2 y se tendrán nuevos DISPONIBLES que

repartir, siendo ahora éstos 5-3-2

Page 19: Sistema operativo

Con estos se pasa al proceso P2 y así sucesivamente.

Y el algoritmo es como sigue:

(El algoritmo principal es el de asignación de recursos)

Page 20: Sistema operativo
Page 21: Sistema operativo

Es un algoritmo de control de procesos, Son una herramienta de sincronización.

Es una variable protegida que solo puede ser modificada por la rutina de inicialización y por

otras dos operaciones atómicas:

P( ) <- wait

V( ) <- signal

Las operaciones a las cuales se puede acceder son:

Inicialización: Crea un nuevo semáforo asignándole un valor inicial

P(s): while (s=0) do no_op ATÓMICA

s:=s-1

V(s): s:=s+1 ATÓMICA.

tiene solo dos operaciones básicas, las cuales son:

Wait.- Pregunta a los procesos si su contador es > ó = que cero, en caso de no ser

así, los decrementa. El proceso que cambia en este caso a negativo (−1) desde la cola

de procesos Listos a ser ejecutados es el que automáticamente toma el control del

procesador.

Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los

procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca

a este proceso de su ejecución y depende de su estado.

Semáforos

Page 22: Sistema operativo

Semáforos contadores: Toman valores positivos mayores o iguales a 0. Se utilizan

para sincronización de procesos.

Semáforos binarios: Toman los valores 0 ó 1 y se utilizan para exclusión mutua.

Los semáforos pueden ser usados para diferentes propósitos, entre ellos:

Implementar cierres de exclusión mutua o locks Barreras

Permitir a un máximo de N threads acceder a un recurso, inicializando el semáforo en N

Notificación. Inicializando el semáforo en 0 puede usarse para comunicación entre

threads sobre la disponibilidad de un recurso

Tipos de Semáforos

Page 23: Sistema operativo

Uso

Los semáforos se emplean para permitir el acceso a diferentes partes de

programas (llamados secciones críticas) donde se manipulan variables o recursos que

deben ser accedidos de forma especial. Según el valor con que son inicializados se

permiten a más o menos procesos utilizar el recurso de forma simultánea.

Un tipo simple de semáforo es el binario, que puede tomar solamente los valores 0 y

1. Se inicializan en 1 y son usados cuando sólo un proceso puede acceder a un

recurso a la vez. Son esencialmente lo mismo que los mutex. Cuando el recurso está

disponible, un proceso accede y decrementa el valor del semáforo con la operación P.

El valor queda entonces en 0, lo que hace que si otro proceso intenta decrementillo

tenga que esperar. Cuando el proceso que decremento el semáforo realiza una

operación V, algún proceso que estaba esperando comienza a utilizar el recurso.

En el siguiente ejemplo se crean y ejecutan n procesos que intentarán entrar en su

sección crítica cada vez que puedan, y lo lograrán siempre de a uno por vez, gracias

al uso del semáforo s inicializado en 1. El mismo tiene la misma función que un lock.

Page 24: Sistema operativo

const int n /* número de procesos */

variable semáforo s; /* declaración de la variable semáforo de valor entero*/

Inicia (s,1) /* Inicializa un semáforo con nombre s con valor 1 */

void P (int i)

{

while (cierto)

{

P(s) /* En semáforos binarios, lo correcto es poner un P(s) antes de entrar en la

sección crítica, para restringir el uso de esta región del código*/

/* SECCIÓN CRÍTICA */

V(s) /* Tras la sección crítica, volvemos a poner el semáforo a 1 para que otro proceso

pueda usarla */

/* RESTO DEL CÓDIGO */

}

}

int main()

{

Comenzar-procesos(P(1), P(2),...,P(n));

}

Page 25: Sistema operativo
Page 26: Sistema operativo

Es un tipo de procedimientos, variables y estructuras de datos que se

agrupan en un tipo de modulo especial. Tienen una propiedad importante: solo un

proceso puede estar activo en un monitor en un instante de tiempo. los monitores son

objetos destinados a ser usados sin peligro por más de un hilo de ejecución. La

característica que principalmente los define es que sus métodos son ejecutados con

exclusión mutua. Lo que significa, que en cada momento en el tiempo, un hilo como

máximo puede estar ejecutando cualquiera de sus métodos. Esta exclusión mutua

simplifica el razonamiento de implementar monitores en lugar de código a ser ejecutado

en paralelo

Los monitores proveen un nuevo tipo de variables de condición con dos operaciones

que operan sobre el (solo se usan dentro del procedimiento de el monitor).

Wait -> wait(a) : produce que el proceso que ejecuta la instrucción sea interrumpido

y removido de la cola de ready hasta que otro proceso lo habilite ejecutando la

instrucción signal( )con la misma variable de condición.

Signal -> signal(a) : Habilita la ejecución de algún proceso en espera por la ejecución

de la instrucción wait con la misma variable de condición.

Monitores

Page 27: Sistema operativo

Un monitor encapsula el código relativo a un recurso compartido en un solo

módulo de programa; ventajas:

• mantenimiento más simple

• menos errores de programación

• La interfaz del monitor es un conjunto de funciones que representan las diferentes

operaciones que pueden hacerse con el recurso

La implementación del monitor garantiza la exclusión mutua

• mediante semáforos o algún otro mecanismo

• o implícitamente en los lenguajes concurrentes

Page 28: Sistema operativo

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 hilos que han llamado a algún procedimiento del

monitor pero no han podido adquirir permiso para ejecutarlos aún.

Funcionamiento del monitor

Cada uno de los objetos del sistema operativo contiene una serie de

contadores que permiten conocer el estado de actividad del objeto. Para algunos

de estos objetos, los contadores deben ser activados antes de ejecutar el monitor

del sistema. Ejemplos de objetos que podemos monitorizar son las unidades de

disco físicas, los procesadores, la memoria física, la memoria caché, y otros

componentes, que incluyen los componentes del sistema de red. Incluso algunas

aplicaciones como servidores SQL y otros pueden añadir sus propios tipos de

objetos y contadores.

Page 29: Sistema operativo
Page 30: Sistema operativo
Page 31: Sistema operativo

es la abreviatura de “mutual exclusión”, es decir, exclusión mutua. Las

variables Mutex son la forma más común de implementar la sincronización de threads y

de proteger datos compartidos cuando acontecen multitud de escrituras sobre esos

datos compartidos.

Una variable Mutex actúa como un candado protegiendo los datos o recursos.

El concepto básico de Mutex en Pthreads es que sólo un thread puede cerrar el

candado en un determinado instante. Incluso si varios threads intentan cerrar el mismo

candado sólo uno saldrá victorioso. Ningún otro thread podrá poseer ese Mutex hasta

que el que lo cerró lo abra. Es decir, con esto conseguimos que los threads se turnen

para acceder a datos protegidos o compartidos.

Mutex

Page 32: Sistema operativo

Los Mutex pueden ser usados para prevenir “condiciones de carrera”. Este

es un ejemplo de una “condición de carrera” en una transacción de un banco.

Una típica secuencia en el uso de un Mutex es:

1. Crear e inicializar la variable Mutex.

2. Varios threads intentan bloquear el Mutex.

3. Sólo uno lo hace y es el poseedor del Mutex.

4. El poseedor del Mutex realiza un conjunto de acciones.

5. El poseedor del Mutex desbloquea el Mutex.

6. Otro thread toma el Mutex y repite el proceso.

7. Finalmente el Mutex es destruido.

Cuando varios threads compiten por un Mutex, los perdedores se bloquean hasta que

el ganador desbloquea el Mutex.

Page 33: Sistema operativo

Mutex

Page 34: Sistema operativo

Es una técnica de manejo de memoria, en la cual el espacio de memoria se

divide en secciones físicas de igual tamaño, denominadas marcos de página. Los

programas se dividen en unidades lógicas, denominadas páginas, que tienen el mismo

tamaño que los marcos de páginas. De esta forma, se puede cargar una página de

información en cualquier marco de página. Las páginas sirven como unidad de

almacenamiento de información y de transferencia entre memoria principal y memoria

auxiliar o secundaria. Cada marco se identifica por la dirección de marco, que esta en la

posición física de la primera palabra en el marco de página.

Paginación Simple

Page 35: Sistema operativo

Paginación simple con este método la memoria principal se divide en

muchos marcos pequeños de igual tamaño. Cada proceso se divide en páginas

de igual tamaño; los procesos más pequeños requieren menos

páginas, procesos mayores requieren mas espacio de memoria. Cuando un

proceso se trae a la memoria todas sus páginas se cargan en los marcos

disponibles y se establece una tabla de páginas, facilitando la localización de

las referencias o direcciones que se le asignaron a estas y se evita, la

fragmentación tanto interna como externa.

Page 36: Sistema operativo

Paginación y segmentación son técnicas diferentes, cada una de las cuales

busca brindar las ventajas enunciadas anteriormente. Para la segmentación se necesita

que estén cargadas en memoria, áreas de tamaños variables. Si se requiere cargar un

segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria;

se necesita encontrar una región de la memoria lo suficientemente grande para

contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo

encontrar un merco de pagina disponible.

A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas

deberán ser cargadas una a una generándose varias interrupciones por fallas de

paginas; bajo segmentación, esta pagina podría conformar un solo segmento,

ocurriendo una sola interrupción, por falla de segmento

Segmentación Paginada

Page 37: Sistema operativo
Page 38: Sistema operativo
Page 39: Sistema operativo

El algoritmo de sustitución de páginas de primera que entra, primera que sale

(FIFO) Otro algoritmo de paginación con bajo gasto extra es el algoritmo FIFO (primera

que entra, primera que sale). Para ilustrar su funcionamiento, consideremos un

supermercado que tiene suficientes anaqueles para exhibir exactamente k productos

distintos. Un día, alguna compañía introduce un nuevo alimento: yogurt orgánico

liofilizado instantáneo que puede reconstituirse en un homo de microondas. Su éxito es

inmediato, así que nuestro supermercado finito tiene que deshacerse de un producto

viejo para poder tener el nuevo en exhibición.

Una modificación sencilla de FIFO que evita el problema de desalojar una

página muy utilizada consiste en inspeccionar el bit R de la página más vieja. Si es

O, sabremos que la página, además de ser vieja, no ha sido utilizada recientemente, así

que la reemplazamos de inmediato. Si el bit R es 1, se apaga el bit, se coloca la página

al final de la lista de páginas, y se actualiza su tiempo de carga como si acabara de ser

traída a la memoria. Luego continúa la búsqueda.

Algoritmo de Paginación FIFO

Page 40: Sistema operativo

El algoritmo de sustitución de páginas menos recientemente usadas

(LRU) Una buena aproximación al algoritmo óptimo se basa en la observación de

que las páginas que han usado mucho en las últimas instrucciones probablemente

se usarán mucho en las siguientes. Por otro lado, las páginas que hace mucho no

se usan probablemente seguirán sin usarse durante largo tiempo. Esta idea

sugiere un algoritmo factible: cuando ocurra una falla de página, se desalojará la

página que haya estado más tiempo sin usarse. Esta estrategia se denomina

paginación LRN (menos recientemente utilizada). Aunque LRU es factible en

teoría, no es barato. Si queremos implementar LRU plenamente, necesitamos

mantener una lista enlazada de todas las páginas que están en la memoria, con la

página más recientemente utilizada al frente y la menos recientemente utilizada al

final

Algoritmo de Paginación LRU

Page 41: Sistema operativo

Algoritmo de Paginación Optimo

El mejor algoritmo de reemplazo de páginas posible es fácil de describir

pero imposible de implementar. En el momento en que ocurre una falla de

páginas, algún conjunto de páginas está en la memoria. A una de estas páginas se

hará referencia en la siguiente instrucción (la página que contiene esa instrucción).

Otras páginas podrían no necesitarse sino hasta 10, 100 o tal vez 1000

instrucciones después. Cada página puede rotularse con el número de

instrucciones que se ejecutarán antes de que se haga referencia a esa página. El

algoritmo de reemplazo de páginas óptimo simplemente dice que se debe eliminar

la página que tenga el rótulo más alto.

Si una página no se va a usar sino hasta después de 8 millones de

instrucciones y otra página no se usará sino hasta después de 6 millones de

instrucciones, el desalojo de la primera postergará la falla de página que la traerá

de nuevo a la memoria lo más lejos hacia el futuro que es posible. Las

computadoras, al igual que las personas, tratan de aplazar los sucesos

desagradables el mayor tiempo que se puede

Page 42: Sistema operativo

Algoritmo de Paginación LRU

Page 43: Sistema operativo

Algoritmo de Paginación Optimo

Page 44: Sistema operativo

Algoritmo de Paginación FIFO

Page 45: Sistema operativo
Page 46: Sistema operativo

Bachilleres:

Coello, Jhoan