Upload
jessica-suarez
View
307
Download
8
Embed Size (px)
DESCRIPTION
semaforos
Citation preview
REPUBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO PARA EL PODER POPULAR PARA LA EDUCACION SUPERIOR
INSTITUTO UNIVERSITARIO DE TECNOLOGIA DE LOS LLANOS
VALLE DE LA PASCUA – ESTADO GUARICO
PROYECTO SOCIOTECNOLOGICO III
Presentadores:
Clavo Edgar; CI: 18.895.166
Morejón Diego; CI: 20.073.678
Navas Jennifer;
Suarez Jessica; CI: 20.954854
Tutor académico:
Ing. Miguel Moreno
En muchos casos, los procesos se reúnen para realizar
tareas en conjunto, a este tipo de relación se le llama procesos
cooperativos. Para lograr la comunicación, los procesos deben
sincronizarse, de no ser así pueden ocurrir problemas no
deseados. La sincronización es la transmisión y recepción de
señales que tiene por objeto llevar a cabo el trabajo de un
grupo de procesos cooperativos.
es el hecho de ponerse de acuerdo entre varios procesos para
llevar a cabo alguna acción. Esta acción puede ser el conseguir el
derecho a entrar en una región crítica en exclusión mutua, o la
elección de un proceso, entre un grupo de procesos, que actúe
como coordinador de las actividades del resto de los procesos del
grupo.
Los semáforos son una herramienta básica, pero potente
y flexible, para hacer cumplir la exclusión mutua y
coordinar procesos. Sin embargo, puede resultar muy
difícil construir un programa correcto por medio de
semáforos. La dificultad está en que las operaciones wait
y signal deben distribuirse por todo el programa y no es
fácil advertir el efecto global de estas operaciones sobre
los semáforos a los que afectan. En los semáforos, tanto
la exclusión mutua como la sincronización son
responsabilidades del programador.
Funcionamiento de los semáforos
Dos o más procesos pueden cooperar por medio de simples
señales, de forma que se pueda obligar a detenerse a un proceso
en una posición determinada hasta que reciba una señal específica.
Cualquier requisito complicado de coordinación puede satisfacerse
por medio de la estructura de señales adecuada. Para la
señalización, se usan variables especiales llamadas semáforos.
Para transmitir una señal por el semáforo, los procesos ejecutan la
primitiva signal(s). Para recibir una señal del semáforo, los procesos
ejecutan la primitiva wait(s); si la señal correspondiente aún no se
ha transmitido, el proceso es suspendido hasta que tenga lugar la
transmisión.
Para lograr el efecto deseado, se pueden contemplar los
semáforos como variables que tienen un valor entero sobre el que
se definen las tres operaciones siguientes:
1. Un semáforo debe inicializarse con un valor no negativo.
2. La operación wait decrementa el valor del semáforo. Si el valor
del semáforo se hace negativo, el proceso que ejecuta el wait se
bloquea.
3. La operación signal incrementa el valor del semáforo. Si el valor
no es positivo, se desbloquea a un proceso bloqueado por una
posición wait.
Una de las funciones básicas que debe implementar un SO es la
Administración de la Memoria para tener un control sobre los
lugares donde están almacenados los procesos y datos que
actualmente se están utilizando.
Realiza distintos métodos y operaciones que se encargan de
obtener la máxima utilidad de la memoria, organizando los
procesos y programas que se ejecutan de manera tal que se
aproveche de la mejor manera posible el espacio disponible.
Actualmente esta administración se conoce como Memoria Virtual
ya que no es la memoria física del procesador sino una memoria
virtual que la representa.
Si se tiene el esquema hardware del registro base, para
lograr la protección de las zonas de memoria basta con añadir
un nuevo registro, denominado registro límite. Este registro
guarda la última dirección de la partición, y forma también parte
del PCB del proceso. El hardware, después de sumar el
registro base a la dirección relativa, comprueba que la dirección
obtenida no supere el valor del registro límite. Si se supera el
valor, se está intentando acceder a una zona que no
corresponde al proceso; en esta situación, el hardware genera
una interrupción
En este método se va asignando la memoria dinámicamente a los procesos,
conforme se introducen en la memoria. A cada proceso se le asigna
exactamente la memoria que necesita.
El esquema de los registro base y límite sigue siendo válido
para la reasignación y la protección. Otro tema a tener en cuenta es
la cantidad de memoria por asignar a un proceso recién creado. Si
los procesos se crean con un tamaño fijo invariante, la asignación
es muy sencilla, se asigna exactamente lo que se necesite.
Si, por el contrario, los segmentos de datos de los procesos
pueden crecer, como es el caso de la asignación dinámica de
memoria a partir de una pila, que ocurre en muchos lenguajes de
programación, aparece un problema cuando un proceso intenta
crecer.
Si es de esperar que la mayoría de los procesos crezcan
conforme se ejecuten, sería una buena idea asignar un poco de
memoria adicional siempre que un proceso pase a la memoria, con
el fin de reducir el gasto excesivo asociado con el traslado de
procesos que ya no caben en su memoria asignada
Si los procesos pueden tener dos segmentos de crecimiento,
como por ejemplo, el segmento de datos, que se utiliza como una
pila, y el stack, se sugiere un método alternativo.
La fragmentación es la memoria que queda
desperdiciada al usar los métodos de gestión de memoria
que se vieron en los métodos anteriores. Tanto el primer
ajuste, como el mejor y el peor producen fragmentación
externa. La fragmentación es generada cuando durante el
reemplazo de procesos quedan huecos entre dos o más
procesos de manera no contigua y cada hueco no es capaz
de soportar ningún proceso de la lista de espera.
Fragmentación Externa
Existe el espacio total de memoria para satisfacer un
requerimiento, pero no es contigua.
Fragmentación Interna:
La memoria asignada puede ser ligeramente mayor que la
requerida; esta referencia es interna a la partición, pero no se
utiliza.
La fragmentación externa se puede reducir mediante la
compactación para colocar toda la memoria libre en un solo gran
bloque, pero esta sólo es posible si la relocalización es dinámica
y se hace en tiempo de ejecución.
Una solución para el problema de la
fragmentación externa es la
compactación. El objetivo consiste en
desplazar el contenido de la memoria
para colocar junta toda la memoria libre
en un solo bloque de gran tamaño.
• Técnica que consiste en trasladar todas
las áreas ocupadas del almacenamiento
hacia algún extremo de la memoria.
• Es una solución de la fragmentación
externa.
• El objetivo consiste en desplazar el
contenido de la memoria libre en un sólo
bloque de gran tamaño.
• La compactación no siempre es posible,
sólo es posible si la relocalización es
dinámica y se efectúa en el momento de
la ejecución.
• Este esquema puede ser bastante
costoso.
Permiten determinar en qué lugar de la memoria principal se deben
colocar los programas y datos entrantes.
Tipos:
Mejor Ajuste: Colocar el trabajo en el menor bloque en el que
quepa.
¨ Primer Ajuste. Colocar el trabajo en el primer hueco de la lista
de almacenamiento libre en el que quepa.
Peor Ajuste: Colocar el trabajo en el menor bloque en el que quepa.
Es un método mediante el cual, un sistema operativo simula tener
más memoria principal que la que existe físicamente. Para implementar la
memoria virtual se utiliza un medio de almacenamiento secundario de alta
velocidad de acceso, generalmente en disco duro de la maquina. Un
sistema de memoria virtual se implementa utilizando paginación como
método de administración de memoria básica y algún mecanismo de
intercambio (para descargar paginas de la memoria principal hacia el
disco duro y para cargar esas páginas de nuevo a la memoria).
El término memoria virtual se asocia normalmente con
sistemas que emplean paginación, aunque también se puede
usar memoria virtual basada en la segmentación, que se tratará
después. El uso de la paginación en la memoria virtual fue
presentado por primera vez en el computador Atlas [KILB62] y
pronto alcanzó un uso comercial muy extendido.
En el estudio de la paginación simple se indicó que cada
proceso tiene su propia tabla de páginas y que, cuando carga
todas sus páginas en memoria principal, se crea y carga en
memoria principal una tabla de páginas. Cada entrada de la tabla
de páginas contiene el número de marco de la página
correspondiente en memoria principal. Cuando se considera un
esquema de memoria virtual basado en la paginación se necesita
la misma estructura, una tabla de páginas. Nuevamente, es
normal asociar una única tabla de páginas con cada proceso.
La segmentación permite al
programador contemplar la
memoria como si constara de
varios espacios de direcciones o
segmentos. Con memoria virtual, el
programador no necesita
preocuparse de las limitaciones de
memoria impuestas por la memoria
principal. Los segmentos pueden
ser de distintos tamaños, incluso de
forma dinámica. Las referencias a
memoria constan de una dirección
de la forma (número de segmento,
desplazamiento).
Un fallo de página es la secuencia de eventos que ocurren cuando un
programa intenta acceder a datos (o código) que está en su espacio
de direcciones, pero que no está actualmente ubicado en la RAM del
sistema. El sistema operativo debe manejar los fallos de página
haciendo residentes en memoria los datos accedidos, permitiendo de
esta manera que el programa continúe la operación como que si el
fallo de página nunca ocurrió.
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 página 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 página podría conformar un solo segmento, ocurriendo una sola
interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder un
área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente
en memoria, desperdiciándose memoria; bajo paginación solo se cargara la página que
contiene los ítems referenciados.
Puede hacerse una combinación de segmentación y paginación para obtener las
ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede
dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que
todas las páginas se encuentren en memoria principal a la vez; además las páginas de un
mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en
memoria real.
Espacio de direcciones físicas.
Las direcciones de memoria del tipo físico son las que
referencian algún espacio de memoria del tipo físico.
Como puede ser la memoria total del sistema.
las direcciones de memoria del tipo lógico son las
creadas por y utilizadas por los procesos en el sistema,
estas a cambios de la físicas pueden sufrir una serie de
cambios o transformaciones realizadas por el cpu (MMU)
antes de que sean convertidas .
Espacio de direcciones lógicos.
Cada proceso cargado en la memoria tiene su espacio de
memoria asignado en el sistema Se divide en 2:
De usuarios:
•especifico de cada usuario
•diferente tipo de regiones.
Del S.O:
•común a todos los procesos.
•accesible cuando se ejecuta dentro del sistema.