Uploaded by Rómel Nelson Roy Melchor Rosas

xddd.

advertisement
Tema 08:
Semáforos
Unidad 01: Conceptos y componentes de un sistema operativo
Material basado en:
Sistemas Operativos, Quinta edición por William Stallings
Contenido
Objetivos de aprendizaje
Al analizar este tema el estudiante deberá ser capaz de:
○ Discutir los conceptos básicos relacionados con la concurrencia, como
las condiciones de carrera, las preocupaciones del sistema operativo y los
requisitos de exclusión mutua.
○ Comprender los enfoques de hardware para apoyar la exclusión mutua
○ Definir y explicar los semáforos.
○ Definir y explicar los monitores
○ Explicar el problema de los lectores/escritores.
Semáforos
○ Dijkstra proporcionó enfoques significativos para tratar el problema de la
concurrencia
○ Dijkstra imaginó un sistema operativo como un conjunto de procesos
secuenciales, concurrentes y cooperativos → era necesario definir
mecanismos para apoyar una cooperación eficiente.
○ Principio fundamental: “dos o más procesos pueden cooperar mediante
señales simples”
○ Cualquier coordinación compleja puede ser soportada utilizando
mecanismos de señalización.
Semáforos
○ Uno de ellos son los semáforos. Sea un semáforo
○ Estas son al menos dos operaciones [importantes]
● semSignal(s): transmite una señal
● semWait(s): recibe una señal, si la señal esperada no se ha transmitido,
entonces el proceso se suspende
○ Un semáforo puede verse como una variable que tiene un número entero
que interactúa con tres operaciones
● inicialization, inicializado a un entero no negativo
● semWait, esta operación disminuye el valor. Si el valor se vuelve negativo, el
proceso se bloquea. De lo contrario, el proceso continúa su ejecución.
● semSignal, esta operación incrementa el valor del semáforo. Si el valor
resultante es menor o igual a cero, se desbloquea un proceso bloqueado por la
operación semWait.
Semáforos
○ Los semáforos "no pueden" ser inspeccionados y solo pueden ser
manipulados a través de operaciones semWait y semSignal.
○ Datos sobre los semáforos
● Antes de que un proceso decremente un semáforo no sabe si será bloqueado o
no.
● Un proceso incrementa un semáforo y otro proceso se activa, luego ambos se
ejecutan simultáneamente.
● Un proceso que señala un semáforo no sabe si hay procesos en espera.
Semáforos
struct semaphore {
int count;
queueType queue;
};
void semWait(semaphore s)
{
s.count -- ;
i f ( s . c oun t < o) {
/* place this procesa in s.queue */;
/* block this procesa*/;
}
}
void semSignal(semaphore s)
{
s.count++;
i f ( s . c oun t < = O) {
/* remove a procesa P from s.queue */;
/* place procesa Pon ready list */;
}
}
semWait y semSignal son
operaciones atómicas
Semáforos
struct binary_semaphore {
enum {zero, one} value;
queueType queue;
};
void semWaitB(binary_semaphore s}
{
if (s.value == one}
s.value = zero;
else {
/* place this procesa in s.queue */;
/* block this procesa*/;
}
}
void semSignalB(semaphore s)
{
if (s.queue is empty())
s.value = one;
else {
/* remove a procesa P from s.queue */;
/* place procesa Pon ready list */;
}
}
Semáforos
○ Hay dos tipos de semáforos
● Semáforos no binarios también conocidos como semáforos con contador o
semáforos generales
● Semáforos binarios
○ Una variante de los semáforos binarios se conoce como mutex. Los
semáforos mutex esperan que el proceso que bloquea la exclusión mutua
(establece el valor en 0), debe desbloquear la exclusión mutua (establece
el valor en 1)
Semáforos
○ Los semáforos de conteo y binarios tienen una cola para mantener los
procesos de espera
○ ¿Cuál es la política de eliminación?
● FIFO → semáforo fuerte
● Política no específica → semáforo débil
Semáforos fuertes - ejemplo
Pro
CD
A
Blo ked queu
S maphor
Ready qu u
A ejecutó un semWait
0
Blo ked qu u
►
=O
---s maphor
Semáforos fuertes - ejemplo
B ejecutó un semWait y
fue bloqueado
0
_----1)1~1__-_l_
_ _.,.:...______L____,l__---1.,____j_l_B_,.l
Blo leed queue
s
i--------• ~~~-A~C__.-- inaphor
Re· y queu
D ejecutó un semSignal y
B se desbloquea
Pro
·= O
Blo leed queu
S maphor
B A
R ady queu
c----- -
Semáforos fuertes - ejemplo
0
s=O
Semaphor
D B A.,..__ _
R adyqu u
C, A y B ejecutaron semWait
y B y son bloqueados
D
-
-
Blo ked queue
D ejecutó un semSignal y
C se desbloquea
0)
B A
Blo ked queu
c..,____
= -2
S maphor
Ready qu u
Semáforos y exclusión mutua
/* program mutualexclusion */
const int n = /* number of processes */;
semaphore s = l;
void P (int i )
{
while (true ) {
semWait (s ) ;
/* critical section */ ;
semSignal (s ) ;
/ * remainder */;
}
}
void main ()
{
parbegin ( P ( l ) , P ( 2 ) ,w, P (n )) ;
}
Semáforos y exclusión mutua
/* program mutualexclusion */
const int n = /* number of processes */;
semaphore s = l;
void P (int i )
{
while (true ) {
semWait (s ) ;
/* critical section */ ;
semSignal (s ) ;
/ * remainder */;
}
}
void main ()
{
parbegin ( P ( l ) , P ( 2 ) ,w, P (n )) ;
}
Procesos accediendo a datos compartidos
protegidos por un semáforo
Cola del
semáforos
Valor del
s máfor s
[D
e
B
A
!
_______________________ smWai5(v __
@]
-.-
s mWait(s)
- - - - - - -
- - - -
1 Región
f
crítica
i
Ejecución
normal
Bloqueado en
1 semáforos
E]
semWait(s)
, ----------------------------- ---- -i----8]
1
1
1
1
1
______ 1cr----rr ____
---------------------
1
1
i-----r--1
semSignal(s) _
-
1
semSignal(s)
!
----------i---semSignal(s)
[D
Nota: la ejecución
normal sucede en
paralelo pero las
regiones críticas se
serializan
PROBLEMAS DE EXCLUSIÓN MUTUA
1. CONCURRENCIA
La concurrencia de procesos es una técnica que permite la optimización óptima del
procesador. Para ello, es necesario hacer cumplir dos conceptos importantes: sección crítica y
exclusión mutua.
2. MODELOS DE SISTEMAS OPERATIVOS MULTITAREAS
a. Multiprogramación: un solo computador, un solo procesador, pero actúa con
varios procesos
b. Multiprocesador: un solo computador, varios procesadores, pero actúa
independientemente con varios procesos
c. Multicomputador: varios computadores, varios procesadores, pero actúa
independientemente con varios procesos
3. INTERACCION DE PROCESOS
Competencia y colaboración, son las formas en la que los procesos concurrentes se
relacionan para lograr la interacción entre ellos.
a. Competencia: no se tiene conocimiento de los demás procesos
b. Comunicación: se tiene conocimiento directo de los demás procesos
c. Compartición: se tiene conocimiento indirecto de los demás procesos
4. SECCION CRÍTICA
Es un proceso que no puede ser bloqueado o suspendido, permitiendo adueñarse del
procesador e impedir que otros procesos ejecuten este mismo segmento mientras el primer
proceso no termine su utilización.
5. EXCLUSIÓN MUTUA
Solo un proceso puede acceder a la exclusión mutua
Si un proceso se bloquea no afecte al resto
Si un proceso accede a la sección critica no puede demorar indefinidamente
Si ningún proceso esta en la SC, cualquiera puede ingresar
a. Soluciones por software: por medio del algoritmo de Dekker
b. Soluciones por hardware:
c. Nuevas tipos soluciones
i. Semáforos: utiliza un sistema de señales que permiten cumplir la
exclusión mutua de manera potente y flexible
ii. Monitores: facilitan a través de herramientas de sincronización la
exclusión mutua
iii. Paso de mensajes: proporcionan la sincronización y comunicación de los
procesos de manera simultánea.
6. PROBLEMAS DE LA PROGRAMACIÓN CONCURRENTE
a. Interbloqueo: el bloqueo permanente de procesos (normalmente formar una
gráfica circular)
Cuando el número de recursos es mayor o igual al número de procesos que los
solicitan, se dice que se obtiene un caso de interbloqueo.
b. Inanición: es la consecuencia del problema de interbloqueo, dejando al proceso
bloqueado indefinidamente
Si un proceso nunca logra la asignación de los recursos solicitados
//Los datos son consumibles o reusables
7. SOLUCIONES DEL INTERBLOQUEO
a. Prevención: se logra a partir del diseño del sistema operativo
b. Detección: el sistema operativo ejecuta periódicamente un algoritmo que crea
estrategias de recuperación ante la aparición del círculo vicioso de espera
c. Predicción del mismo: se realiza mediante procesos dinámicos que establecen
si la petición de un recurso podrá conducir a interbloqueo
Introducción
En el procesamiento secuencial cada uno de los procesos que llega a la memoria
utiliza cualquiera de los recursos del sistema sin ningún tipo de prerrequisito.
Para un sistema multigprogramado, cada proceso tiene la necesidad de compartir
con los demás el espacio de direcciones y por ello se necesita dividir de manera
apropiada la memoria, no necesariamente en partes iguales, de tal forma que se
puedan ejecutar la mayor cantidad de procesos. De esta manera, se optimiza el uso
del procesador durante una mayor cantidad de tiempo.
Esta partición constituye la base fundamental de dos tipos de gestión de memoria
denominados paginación y segmentación.
Al incorporar al esquema la memoria virtual, el procesador deja de realizar el
procedimiento de traducción de direcciones y para ello se crea el acceso directo a
memoria o DMA, el controlador que permite la traducción de direcciones o CDMA,
la función de intercambio y conceptos relevantes como hiperpaginación y tamaño
de página.
Propósitos de aprendizaje
Propósito Global
Establecer la importancia de la memoria principal y secundaria para los sistemas de
cómputo actuales, identificando los diferentes niveles, interacciones y recursos
presentes, determinando de esta forma un conjunto de acciones propias del sistema
operativo en su función de administrador de la memoria y el almacenamiento.
Propósitos Específicos
•
Conocer la jerarquía y organización general de la memoria y su importancia
para el procesamiento por parte del sistema operativo.
•
Desarrollar y aplicar diferentes algoritmos para la obtención, colocación y
reemplazo de procesos en memoria.
•
Identificar la evolución de las técnicas de división de memoria, desde las
particiones
y
fijas
y
dinámicas
hasta paginación y segmentación con memoria virtual.
•
Conceptualizar sobre tamaño de página, función de intercambio, traducción
de direcciones e hiperpaginación.
•
Identificar las principales estrategias para la administración
almacenamiento, entendido como la gestión de archivos y directorios.
del
Gestión de la memoria
Los sistemas operativos monoprogramados no tenían problema para administrar la
memoria, simplemente se dividía entre los segmentos reservados para el sistema y
el resto podía ser utilizado indistintamente por el programa de usuario. Sin embargo,
la multiprogramación involucró, entre muchos otros, el concepto de división de
memoria
que
permitiera
la
ubicación
de
múltiples
procesos
de ejecución concurrente.
La gestión de memoria tiene como objetivo establecer los parámetros bajo los
cuales la memoria será dividida, para dar espacio al sistema operativo y a los
diferentes procesos que la comparten.
Por ello, la existencia de unos requisitos básicos para su implementación, los cuales
determinan las acciones y políticas a implementar para que los procesos que
ocupen la memoria, sean llevados al uso del procesador de manera eficiente y
equitativa.
La gestión de memoria se clasifica en dos: memoria principal y memoria virtual.
Implementación en hardware para la carga de
programas
El procesamiento de las instrucciones se logra a través de la interacción entre
los registros del procesador, las instrucciones del proceso y los datos necesarios
para su ejecución, la cual incorpora una memoria de alta velocidad entre los
registros del procesador y la memoria principal, la cual se denomina
memora caché. Si los datos no están en la memoria, se deben mover allí antes que
la CPU pueda operar sobre ellos.
Cuando un proceso llega a memoria es necesario determinar el rango de direcciones
legales al cual puede tener acceso, esto se logra a través del uso de los registros
base y límite en el bloque de control de procesos PCB. Dichos registros solo
pueden ser modificados por el sistema operativo ejecutándose en modo núcleo ya
que afectan la estructura del PCB.
De igual forma, la gestión de memoria requiere del método de división de memoria,
el cual se clasifica en: particiones fijas de igual tamaño y particiones fijas
de diferentes tamaños. Estos métodos de división de memoria traen consigo algún
grado de desperdicio del espacio en memoria, de acuerdo con el tipo de partición.
Paginación simple
Este método divide la totalidad de la memoria en fragmentos del mismo tamaño
denominados marcos de página. Difiere de las particiones fijas porque éstos son de
inferior tamaño. De igual forma, en este modelo, los procesos son divididos en
fragmentos del mismo tamaño de los marcos, los cuales se les denomina páginas.
De esta forma, un proceso tendrá varias páginas asignadas que podrán ocupar
marcos de página en la memoria, no necesariamente de forma contigua.
Las direcciones lógicas para el modelo de paginación se componen de un número
de página y un desplazamiento.
Este método se convierte en la base de la división de la memoria en los sistemas
operativos actuales.
Segmentación simple
La memoria es dividida de acuerdo al tamaño de cada proceso en pequeños
fragmentos denominados segmentos, el cual tiene un tamaño máximo asignado. En
memoria, los segmentos pueden ocupar posiciones no necesariamente contiguas.
Se elimina la fragmentación interna manteniéndose la fragmentación externa en
cantidades inferiores debido a la reducción del tamaño del segmento.
Al igual que en paginación, se hace necesario la utilización de una estructura de
datos en la cual se establece la ubicación en memoria de cada uno de los segmentos
que componen el proceso denominada tabla de segmentos.
Las direcciones lógicas en el esquema de segmentación también
compuestas por un número de segmento y un desplazamiento.
están
Memoria virtual
El método de memoria virtual fue introducido para garantizar que un mayor número
de procesos pueda ser llevado a memoria para su ejecución y consiste en reservar
un pequeño sitio del almacenamiento secundario, disco duro, para ser tratado bajo
técnicas de lectura, trasporte y acceso de memoria principal.
En este método, los procesos tendrán sus páginas o segmentos divididos unos en la
memoria principal y otros en la memoria virtual, de tal forma que puedan
compartir la memoria y por supuesto los demás recursos del sistema.
La incorporación de la memoria virtual involucra la función de intercambio,
encargada de establecer qué páginas o segmentos deberán ser removidas de
la memoria principal en el caso en que un proceso solicite una página o segmento
que no se encuentre en ella.
Si la función de intercambio se realiza de manera frecuente, donde el procesador es
monopolizado por la misma sin permitir la ejecución efectiva de procesos, se
presenta el fenómeno de hiperpaginación.
Paginación y segmentación con memoria
virtual
El modelo de paginación con memoria virtual distribuye las páginas de
cada proceso en: aquellas indispensables para la ejecución del proceso, que se
ubican en la memoria principal, a las cuales se les denomina conjunto residente, y
el resto de páginas que se ubican en la memoria virtual.
Para optimizar la búsqueda en memoria de las páginas de utilización más frecuente,
cada proceso recurre a un apoyo adicional en hardware denominado Buffer de
Traducción Adelantada o TLB, el cual contiene una lista con dichas páginas.
El modelo de segmentación con memoria virtual cumple con las mismas
características de paginación beneficiando en este caso la programación orientada
a objetos, por ejemplo una clase que contiene múltiples métodos solo se compilan
en el momento de ser necesitados por el programa, adicionalmente beneficia el
concepto de protección.
En estos modelos se hace evidente el uso de la función de intercambio, la
definición de tamaño de página y el concepto de hiperpaginación.
Soluciones en software para problemas de
gestión de memoria
Los algoritmos utilizados para cada una de las políticas mencionadas en este
apartado, obedecen al mejoramiento del rendimiento general del sistema,
minimizando la tasa de fallos de página. Dentro de las políticas se encuentran:
•
Lectura: Son estrategias que se utilizan para saber cuándo cargar una página
en memoria. Esta política se clasifica a su vez en dos tipos de paginación.
•
Ubicación: consiste en saber dónde se ubicará la página que llega a
la memoria principal en un proceso de intercambio. Se conforma de cuatro
algoritmos.
•
Reemplazo: determina cuál página será la que cause las menores
alteraciones al sistema y además colabore para que la página candidata a ser
bajada tenga las menores opciones de ser la referenciada en el futuro
inmediato. Existen cuatro algoritmos en esta categoría.
•
Vaciado: determina cuando debe escribirse una página modificada en
la memoria virtual o mejor en el disco. Constituido por dos tipos de
algoritmos.
Resumen
La administración de la memoria es una de las acciones asignadas al sistema
operativo, con mayores incidencias en el rendimiento final del sistema. Hace parte
de la planificación de mediano plazo, que es la encargada de establecer si se agrega
un proceso más al conjunto de procesos que se encuentran parcial o totalmente en
memoria.
Dividir la memoria para hacer que múltiples procesos puedan hacer uso de la misma,
requiere establecer qué criterio se tendrá en cuenta para este propósito, si es
por paginación o por segmentación.
En este punto, se integran dos conceptos importantes: tamaño de página y
fragmentación interna que consiste en aquella porción de memoria asignada a un
proceso, ubicada en la última página asignada al mismo, pero que este no utiliza.
Finalmente se hace evidente hablar de la función de intercambio, la cual permite
identificar, gestionar y traducir las direcciones de las páginas que deben moverse de
la memoria principal a la memoria virtual, para lo cual se observan algunas políticas
de ubicación, reubicación reemplazo y vaciado.
PROBLEMAS DE EXCLUSIÓN MUTUA
1. La concurrencia se entiende como la competencia de procesos por:
a. Recursos y servicios
2. Los procesos que requieren recursos y servicios en el sistema se relacionan de dos formas:
Competencia, y:
a. Cooperación
3. Al segmento de código desarrollado para un recurso, que no puede ser bloqueado o suspendido
y que se ejecuta de forma atómica o sin divisiones, se le denomina:
a. Sección crítica
4. Cuando uno de los procesos que compite por algún recurso entra en la sección crítica de este,
se dice que existe un caso de:
a. Exclusión mutua de procesos
5. El algoritmo de Dekker representa una solución al problema de exclusión mutua por:
a. Software
6.
Una solución al problema de exclusión mutua, diferente a las que se implementan en Software
y Hardware, que utiliza el uso de señales para que de forma cooperativa se obligue a algunos de
los procesos a detenerse mientras a uno se le concede el uso del recurso, se denomina:
a. Semáforos
7. En la gráfica se representa un problema de programación concurrente, en donde a cada proceso
se le ha asignado un recurso, pero está a la espera que se le asigne un segundo recurso
solicitado. Esto es un ejemplo clásico de:
a. Interbloqueo
8. Si un proceso nunca logra la asignación de los recursos solicitados, se dice que tiene un problema
de:
a. Inanición
9. De acuerdo con la clasificación de los recursos del sistema informático, los tipos de recursos son:
a. Reusables y consumibles
10. Algunas de las técnicas utilizadas para la corrección del problema de interbloqueo son:
Prevención, Detección y:
a. Predicción
ADMINISTRACIÓN DE MEMORIA
1. Los modelos de gestión de memoria de los sistemas operativos actuales se diferencian de los
primeros sistemas operativos esencialmente por la utilización de:
a. Memoria virtual
2. Principalmente el objetivo de la gestión de memoria se refiere a:
a. Dividir la memoria para permitir la ejecución de múltiples procesos
3. El concepto de jerarquía de memoria se refiere a:
a. Comparación de los diferentes elementos que componen la memoria en el sistema
4. Uno de los siguientes conceptos no es un requisito para la gestión de memoria:
a. Función de intercambio
5. Un buffer o adaptador de velocidad entre la memoria principal y la memoria secundaria se
denomina:
a. Memoria caché
6. Los fragmentos de memoria desperdiciados por la asignación de páginas de igual tamaño se
denomina:
a. Fragmentación interna
7. En paginación con memoria virtual, los procesos son divididos en fragmentos denominados
páginas mientras que la memoria se divide en fragmentos denominados:
a. Marcos
8. Al proceso mediante el cual se selecciona una página de la memoria principal para descargarla
y darle paso a otra página, que se encuentra en la memoria virtual, permitiendo la ejecución de
múltiples procesos concurrentes, se le denomina:
a. Función de intercambio
9. Cuando un proceso hace referencia a una página que no se encuentra en la memoria principal
se produce un:
a. Fallo de página
10. Una de las siguientes es una política de ubicación de procesos:
a. Peor ajuste
Download