Resumen Sistemas Operativos - Stallings
Resumen Sistemas Operativos - Stallings
Resumen Sistemas Operativos - Stallings
Pgina 1 de 70
Pila del proceso Datos temporales (Direcciones de retorno, parmetros de funciones, variables
locales)
Memoria (HEAP) Cumulo de memoria. Es la memoria que se le asigna dinmicamente al proceso en
tiempo de ejecucin.
Seccin de datos Variables Globales.
Seccin de Texto Cdigo del programa.
Control de procesos
Se utilizan 2 modos de ejecucin:
Modo Usuario No se permite la ejecucin de instrucciones privilegiadas. El intento de ejecucin de
una instruccin privilegiada en este modo produce una excepcin.
La razn por la que se usan estos 2 modos, se debe a que es necesario proteger al SO y a las estructuras del
mismo, como los PCB, de las injerencias de los programas de usuarios.
Nota: Cmo sabe el procesador en qu modo va a ejecutar? Hay un bit en el PSW (Palabra de estado del
programa) que indica el modo de ejecucin.
Nota: Cmo se cambia de modo? El bit cambia como respuesta a ciertos sucesos. El control se encuentra
inicialmente en manos del SO (modo Kernel). Cuando se da el control a una aplicacin de usuario se pasa a
modo usuario. El control finalmente se tiene que devolver al SO a travs de una excepcin o interrupcin.
Cambio de Proceso, Cambio de Contexto y Cambio de Modo
Cambio de proceso Cambio del uso de la CPU de un proceso de otro.
Cambio de contexto Cuando un proceso pasa de memoria a CPU o de CPU a memoria.
Cambio de modo Cuando se cambia de modo Kernel a modo usuario o viceversa.
Cambio de Proceso
Cambio de
contexto
Cada vez que se produce una interrupcin o llamada al sistema, se debe guardar el estado del proceso que se
est ejecutando para luego poder reanudar la ejecucin. Se trata la interrupcin o llamada al sistema y luego se
carga nuevamente un PCB. Este puede ser el PCB del proceso que se estaba ejecutando u el PCB de otro
proceso.
Por lo tanto, un cambio de proceso, implica inevitablemente un cambio de contexto. En cambio, un cambio de
contexto no implica siempre un cambio de proceso, ya que se puede volver a cargar el proceso que se estaba
ejecutando.
Pgina 3 de 70
Explicacin de este enfoque: Cuando se produce una interrupcin, se salva el contexto de procesador y
tiene lugar un cambio de modo hacia una rutina del SO. Sin embargo, la ejecucin contina dentro del
proceso de usuario en curso. De esta manera no se ha llevado a cabo un cambio de proceso (y por ende
de contexto), sino un cambio de modo dentro del mismo proceso. Debido al cambio de modo usuario a
modo Kernel, el usuario no puede entrometerse ni estorbar en las rutinas del SO, aun cuando estas estn
ejecutndose en el entorno de proceso de usuario. Cuando el SO termina su trabajo, determina que el
proceso en curso debe continuar ejecutndose, entonces un cambio de modo continua el programa
interrumpido del proceso en curso (aunque puede determinar cambiar el proceso).
Ventaja de este enfoque: Un programa de usuario se interrumpe para emplear alguna rutina del SO,
luego se reanuda y todo se produce SIN LA PENALIZACIN DE 2 CAMBIOS DE PROCESO (sacar
el proceso en ejecucin, cargar la rutina del SO, sacar la rutina del SO, reanudar/ejecutar un proceso
de usuario).
Observacin: Otro enfoque trata al SO como entidad separada que opera en modo privilegiado. El concepto de
proceso se aplica solo a los programas de usuario.
Nota: Cundo se puede producir un cambio de proceso? En cualquier momento en el que el SO haya tomado el
control a partir del proceso que est actualmente ejecutndose. Los sucesos que pueden darle el control al SO
son:
Interrupcin Hardware externa: originada por algn tipo de suceso que es externo e independiente del
proceso que est ejecutndose. Interrupcin de E/S, Interrupcin de reloj.
Interrupcin Hardware interna (Excepciones): causada por una condicin de error generada dentro del
proceso que est ejecutndose (divisin por 0, el desbordamiento, el acceso a una posicin de memoria
no permitida, acceso ilegal a un archivo, etc.) o por condiciones anmalas (Fallo de pgina, etc.)
Cada uno de los procesos de los procesos puede estar en uno de los siguientes estados:
1. Nuevo el proceso se acaba de crear, pero an no es admitido por el SO como proceso ejecutable (an
no est cargado en la MP. Se mantiene en MS).
2. Listo el proceso est preparado para poder ejecutarse (en MP y listo para ejecutarse).
3. Ejecutando el proceso est actualmente en ejecucin
4. Bloqueado el proceso no se puede ejecutar hasta que se produzca cierto suceso (en MP esperando un
suceso)
Pgina 5 de 70
5. Terminado por alguna razn el SO saco al proceso del grupo de procesos ejecutables.
6. Bloqueado y suspendido el proceso est en MS esperando un suceso.
7. Listo y suspendido el proceso est en MS pero est disponible para su ejecucin tan pronto que se
cargue en MP
Nota: MP (Memoria Principal), MS (Memoria Secundaria).
La figura indica los tipos de sucesos que producen cada transicin de estados para un proceso. Algunas
aclaraciones:
Nulo Nuevo: Las razones para la creacin de un proceso son, Trabajo por lotes, Conexin interactiva
(el usuario crea un proceso desde un terminal), el SO crea un proceso para dar un servicio y un proceso
crea otro proceso.
Ejecucin Varios: Por espera de un suceso, por fin de Quantum, Yield (proceso que sede
voluntariamente el procesador y fin de proceso.
Importante: Un proceso puede pasar de Ejecucin Listo, nicamente, si abandona
involuntariamente la CPU (Preemptive /Apropiativo /Con desalojo), ya sea por una Interrupcin
de Reloj o porque se pas a preparado un otro proceso con mayor prioridad.
Si la planificacin es Non-Preemptive/ No Apropiativo / sin desalojo) el proceso se ejecuta hasta
que termina o hasta que tenga que hacer una E/S (pasa a bloqueados), por lo que NO es posible
que un proceso pase del estado en ejecucin a listo.
Varios Terminado: Un proceso puede terminar en cualquier momento. Por eso estn las transiciones
de Listo a Terminado, Bloqueado a Terminado, etc.
Bloqueados: Es conveniente tener una cola de bloqueados por cada suceso, ya que si hay 1 sola cola de
bloqueados, el SO debera recorrer toda la lista en busca de aquellos procesos que esperaban que ocurra
el suceso. En cambio, si se tiene una cola por suceso, directamente la lista entera del suceso puede pasar
al estado de listo.
Pgina 7 de 70
PCP (Planificador de corto plazo): Controla el grado de multiprocesamiento (cantidad de procesos que
se puede estar ejecutando a la vez). Encargado de determinar qu proceso se va a ejecutar. Tambin
conocido como distribuidor (dispatcher).
PELP (Planificador extra largo plazo): En base a un histrico de procesos ejecutados puede cambiar el
algoritmo de planificacin o el grado de multiprogramacin.
Nota: Los nombres de los planificadores hacen referencia a la frecuencia con la que estas funciones se ejecutan.
Pgina 8 de 70
Rendimiento / Tasa de procesamiento (): Cantidad de procesos que se procesan por unidad de tiempo.
Utilizacin de la CPU (throughput) (): No desperdiciar el uso de la CPU.
Tiempo de espera (waiting time) (): Tiempo que un proceso tarda en ejecutarse (tiempo que est en la
cola de listos).
Tiempo de respuesta (response time) (): Tiempo desde que el procesador se pone en la cola de listos
Tiempo de Retorno (turnaround time) (): Tiempo que tarda un proceso de pasar de listo terminado
(es el tiempo total que est en el sistema).
1.
2.
3.
4.
5.
6.
FCFS
SJF
Por Prioridades
Por Turnos (RR, round robin)
Colas Multinivel
Colas Multinivel Realimentadas
Tiempo de espera medio largo y se modifica notablemente segn el orden en que lleguen los
procesos.
Rinde mejor con procesos CPU bound que con I/O bound. Puede provocar un uso ineficiente de
la CPU y de los dispositivos de E/S.
Efecto convoy: muchos procesos I/O bound esperan mucho tiempo a que un proceso CPU bound
se termine de ejecutar. Esto hace que la utilizacin de la CPU y los dispositivos sea menor que si
se ejecutar primero los I/O bound.
SJF en s, es un algoritmo por prioridades Cuanto ms larga sea la rfaga de CPU, menor prioridad
Tiempo estimado de la prxima Rfaga Tn+1 = Tn. + Rn (1 ) siendo 0 1
Tn tiempo estimado de la rfaga anterior
Rn tiempo real de la rfaga anterior
Si tiende a 0 se le da poca bola al estimado anterior. Si tiende a 1 poca bola al real anterior.
Observacin: SPN sin desalojo, SRT con desalojo.
Observacin: SRT a diferencia de RR no genera interrupciones adicionales. Tambin debera devolver un mejor
tiempo de retorno ya que atiende inmediatamente a los procesos de menor duracin.
Planificacin por Prioridades (Sin desalojo o Con Desalojo)
Primero se atiende el de mayor prioridad. Se asume que 0 es la prioridad ms alta.
Ventajas:
Tiempo de espera medio disminuye y se mantiene por ms que cambie el orden de llegada de los
procesos.
Desventajas:
1.
2.
3.
4.
Excepcin
Interrupcin Q
Interrupcin E/S
Llamada al sistema
Pgina 12 de 70
Capitulo: Hilos
Un hilo es un proceso ligero. Un proceso ahora est compuesto por uno o ms hilos. Cada hilo puede realizar
una tarea.
Proceso Monohebra vs Miltihebra
En un modelo multihilo:
Los hilos de un mismo proceso comparten el cdigo, datos y los recursos del proceso (comparten
el mismo espacio de direcciones).
Cada hilo tiene su propia pila y su bloque de control de hilo (adems del bloque de control de
proceso).
Si un hilo realiza una llamada al sistema, se bloquea todo el proceso (la biblioteca el SO, el ULT sigue
ejecutando, por lo tanto cuando el proceso vuelve a ejecutar, sigue ejecutando el mismo ULT). Lo
mismo pasa si al proceso se le acaba el quantum de tiempo, para la biblioteca, el hilo que estaba
corriendo, sigue en estado ejecutando (aunque verdaderamente no est haciendo uso de la CPU). Cuando
el SO le devuelve a CPU al proceso, continua en ejecucin el hijo que estaba ejecutando antes de que se
bloqueara el proceso.
Si un hilo A solicita a otro hilo B del mismo proceso que realice alguna accin. El hilo A se pone en
bloqueado y el hilo B pasa a Ejecutando. Importante darse cuenta que el paso de un proceso a otro, lo
realiza la biblioteca de hilos y que el proceso sigue en estado ejecutando.
Planificacin especifica cada aplicacin planifica sus hilos mediante la biblioteca de hilos segn le
convenga.
Pgina 14 de 70
Los ULT pueden ejecutarse en cualquier SO. No es necesario realizar cambios en el ncleo subyacente.
Nota: se puede solucionar mediante la tcnica de jacketing (recubrimiento) que convierte una llamada
bloqueadora en una llamada no bloqueadora.
En una aplicacin KLT:
El SO conoce la existencia de los hilos y se encarga de realizar la gestin de los mismos.
Ventajas de los KLT:
Resuelve los problemas de los ULT:
Si se bloquea uno de los hilos, no bloquea a todo el proceso. El ncleo puede planificar otro hilo del
mismo proceso.
Muchos a uno: mltiples hilos de usuario a uno de Kernel. Desventaja que no hay concurrencia ya que 1
solo hilo ULT puede acceder al ncleo a la vez (no hay multiprocesamiento). Adems una llamada
bloqueante bloquea a todo el proceso.
Uno a Uno: Soluciona los 2 problemas de Muchos a uno, aunque el problema es que por cada UTL hay
que crear un KLT, por lo puede repercutir en el rendimiento. Se debe restringir el nmero de hilos
soportados por el sistema.
Pgina 15 de 70
Nota:
Un sistema operativo no Apropiativo est esencialmente libre de condiciones de carrera en lo que respecta a
las estructuras de datos del Kernel (ejemplo: lista de todos los archivos abiertos) ya que hay solo 1 proceso
activo en el Kernel en cada momento.
Interaccin ente procesos
Los procesos que se ejecutan concurrentemente pueden ser procesos independientes o procesos cooperativos:
Procesos independientes Aquel que NO puede afectar o verse afectado por los restantes procesos que
se encuentran en el sistema. Cualquier proceso que NO comparte datos con ningn otro proceso es un
proceso independiente.
Procesos cooperativos Aquel que puede afectar o verse afectado por los restantes procesos que se
encuentran en el sistema. Cualquier proceso que comparte datos con otros procesos es un proceso
cooperativo. Los procesos cooperativos pueden compartir un espacio de memoria directamente
(cooperacin por compartimiento) o compartir datos solo a travs de archivos o mensajes (cooperacin
por comunicacin). El primer caso se consigue mediante el uso de hilos.
En el caso de los procesos independientes, aunque no compartan datos, el sistema operativo tiene que
encargarse de la competencia por los recursos (CPU, impresora, memoria, ETC). En este caso, los resultados
de un proceso son independiente de las acciones de los otros, pero la ejecucin de un proceso puede influir en el
comportamiento de los procesos que compiten (los tiempos de los procesos pueden verse afectados)
Cuando hay procesos en competencia por un mismo recurso, se debern solucionar 3 problemas de control:
1. Exclusin Mutua (hacer cumplir la exclusin mutua crea 2 problemas de control adicionales, 2 y 3)
2. Interbloqueo
3. Inanicin
Nota:
Hacer cumplir la exclusin mutua hace que aparezcan los problemas 2 y 3. Uno es el interbloqueo (un proceso
P1 est esperando que un proceso P2 libere un recurso y el P2 est esperado a que P1 libere un recurso. Ni P1
ni P2 liberan el recurso hasta que el otro libere el recurso que necesita) y la inanicin (un proceso espera
indefinidamente a que se le asigne el acceso al recurso).
Nota:
El control de la competencia siempre involucra al SO porque es quien asigna los recursos.
Nota:
Seccin critica Segmento de cdigo que hace uso de un recurso crtico
Pgina 17 de 70
Recurso critico Cualquier recurso compartido (variables, archivos, impresora, lista, etc.)
El caso de cooperacin por compartimiento los procesos pueden tener acceso a variables compartidas,
archivos o base de datos compartidos. No saben que procesos acceden a los datos, pero son conscientes de que
estos otros pueden tener acceso a los mismos datos.
Como los datos se guardan en recursos (dispositivos, memoria, etc.) tambin presentan los problemas de
exclusin mutua, interbloqueo e inanicin por competir por recursos crticos. Adems se debe introducir un
nuevo requisito: Integridad/Coherencia de los datos.
En el caso de cooperacin entre procesos por comunicacin, la comunicacin es una manera de sincronizar o
coordinar las distintas actividades. Por lo que no es necesario el control de la mutua exclusin para este tipo de
cooperacin. Sin embargo, los problemas de inanicin e interbloqueo siguen presentes.
Condicin de carrera
Cuando varios procesos manipulan y acceden concurrentemente a los mismos datos y el resultado de la
ejecucin depende del orden en que se produzcan los accesos.
Para protegerse frente a este tipo de condiciones, se necesita garantizar que solo un proceso cada vez puede
acceder a la seccin crtica.
Protocolo de la regin critica
1. Exclusin mutua: cuando un proceso usa la regin crtica, ningn otro proceso, que tenga regin crtica
por el mismo recurso u objeto compartido, puede entrar en ella.
2. Progreso: Cuando un proceso est fuera de la regin crtica, no pueden impedir a otros procesos que la
usen.
3. Espera limitada: Cualquier proceso que quiere entrar a la regin critica lo debe poder hacer luego de un
nmero finito de intentos.
4. Velocidad de los procesos: todos los procesos pueden usar la regin crtica las veces que quieran y el
tiempo que quieran.
Nota:
Espera activa Cuando un proceso que no obtuvo permiso para entrar en su seccin critica, se queda
comprobando peridicamente la variable hasta que pueda entrar. Consume tiempo de procesador (est
activo) mientras espera su oportunidad.
Pgina 18 de 70
Proceso 1
... ...
...
/*esperar*/
/*esperar*/
while (turno!=0);
while (turno!=1);
/*seccin crtica*/
/*seccin crtica*/
...
...
turno=1;
turno=0;
...
...
Deben alternarse de forma estricta en el uso de sus secciones crticas, por lo que el ritmo de ejecucin
depende del proceso ms lento.
No cumple la condicin de progreso Si un proceso falla fuera o dentro de la seccin critica, el otro
proceso se bloquea permanentemente.
accediendo a su seccin crtica; para esto se define un vector booleano seal. Cada proceso puede evaluar el
valor de seal del otro, pero no modificarlo. Cuando un proceso desea entrar en su seccin crtica, comprueba la
variable seal del otro hasta que tiene el valor falso (indica que el otro proceso no est en su seccin crtica).
Asigna a su propia seal el valor cierto y entra en su seccin crtica. Cuando deja su seccin crtica asigna falso
a su seal.
Proceso 0
Proceso 1
...
...
/*esperar*/
/*esperar*/
While (seal[1]);
While (seal[0]);
seal[0] = cierto;
seal[1]=cierto;
/*seccin crtica*/
/*seccin crtica*/
...
...
seal[0] = falso;
seal[1] = falso;
Se solucionan los problemas anteriores, sin embargo, ahora surgen otros nuevos:
Si uno de los procesos falla dentro de su seccin crtica el otro quedar bloqueado permanentemente.
No se garantiza la Exclusin Mutua como vemos en la secuencia:
1. P0 ejecuta el While y encuentra seal [1] a falso.
2. P1 ejecuta el While y encuentra seal [0] a falso.
3. P0 pone seal [0] a cierto y entra en su seccin crtica.
4. P1 pone seal [1] a cierto y entra en su seccin crtica.
Ambos procesos estn en su seccin crtica, esto se debe a que esta solucin no es independiente de la velocidad
de ejecucin relativa de los procesos.
Algoritmo de Dekker (3 intento)
Una vez que un proceso ha puesto su seal en cierto, el otro no puede entrar a su seccin crtica hasta que el
primero salga de ella. Se garantiza la EM, sin embargo, se generar interbloqueo si ambos procesos ponen su
seal a cierto antes de ambos hayan ejecutado el While.
Adems, si un proceso falla en su seccin crtica, el otro queda bloqueado permanentemente.
Proceso 0
Proceso 1
...
...
seal[0] = cierto;
seal[1]=cierto;
/*esperar*/
/*esperar*/
While (seal[1]);
While (seal[0]);
/*seccin crtica*/
seccin crtica*/
Pgina 20 de 70
... ...
... ...
seal[0] = falso;
seal[1] = falso;
Problema 2: Pierde eficiencia el sistema ya que se limita la capacidad del procesador para intercalar
procesos.
Instrucciones de maquina
o Test and set (TLS)
Instruccin Hardware que lee y modifica atmicamente una variable (por ser atmica esta
instruccin no puede ser interrumpida). Adems, si nos encontramos en un sistema
multiprocesador, ninguno de los dems procesadores tendr acceso a la variable hasta que
termine de ejecutarse la instruccin.
o Swap (intercambio)
De forma atmica sobre 2 palabras.
Ventajas de la solucin con instrucciones de mquina
Desventajas
En las soluciones software, los procesos deben coordinarse unos con otros para para cumplir la exclusin
mutua, si ayuda por parte del lenguaje de programacin o del sistema operativo.
Las soluciones por software son propensas a errores y a una fuerte carga de proceso.
Las soluciones por hardware reducen la sobrecarga, pero no son interesantes como solucin de carcter general.
Debido a estos inconvenientes, tanto de las soluciones por software como por hardware, es necesario buscar
otros mecanismos.
Pgina 22 de 70
SIGNAL(S)
Semforo--
Semforo++
If (semforo<0)
If (semforo<=0)
{
Poner este proceso en la cola del semforo;
SIGNALB(S)
If (Cola.semforo.esvacia )
Semforo = 0;
Else
Semforo = 1;
Else
Pgina 23 de 70
{
Poner este proceso en la cola del semforo;
Productor
Consumidor
BUFFER
Uno o ms productores generan cierto tipo de datos y los sitan en un buffer. Un nico consumidor saca elementos
del buffer de uno en uno. El sistema debe impedir la superposicin de operaciones sobre el buffer. Es decir un
solo agente consumidor o productor puede acceder al buffer en un instante dado (se logra con un semforo binario
mutex)
Si el buffer est lleno, el productor debe ser demorado (en el caso que el buffer sea limitado) Semforo Lugar
Si el buffer est vaco, el consumidor debe ser demorado Semforo Lleno
Buffer ilimitado (color rojo) y buffer limitado (se agrega el semforo lugar en verde)
Lleno = 0
Mutex = 1
Lugar = N
Productor ( )
{
While (1)
{
Msg = producir ( )
Wait (Mutex)
Wait (Lugar)
Depositar (msg)
Signal (Lleno)
Signal (Mutex)
}
Consumidor ( )
{
Pgina 24 de 70
While (1)
{
Wait (Lleno)
Wait (Mutex)
Msg = retirar ( )
Signal (Mutex)
Signal (Lugar)
Consumir ( )
Monitores
Los semforos son flexibles y potentes pero puede resultar difcil construir un programa correcto por medio de
semforos, ya que las operaciones wait y signal deben distribuirse por todo el programa y no es fcil advertir el
efecto global de estas operaciones sobre los semforos a los que afectan.
Los monitores ofrecen una funcionalidad equivalente a la de los semforos y que son ms fciles de controlar.
Un monitor es un mdulo de software que consta de uno o ms procedimientos, una secuencia de inicio y variables
locales. Solo un proceso puede estar ejecutando el monitor a la vez, por lo que ofrece un servicio de exclusin
mutua fcilmente.
La ventaja que brinda, es que al almacenar los procedimientos dentro del mdulo monitor automticamente se
garantiza la exclusin mutua, ya que solamente un proceso a la vez puede acceder al monitor y por ende a los
procedimientos. De esta manera se desliga al programador de hacer cumplir la mutua exclusin. En cuanto a la
sincronizacin de procesos, al igual que en semforos, es responsabilidad del programador mediante las
herramientas de sincronizacin que brindan los monitores (csignal y cwait).
En cambio en los semforos, la exclusin mutua como la sincronizacin son responsabilidades del programador.
Otra de las ventajas de los monitores sobre los semforos, es que es sencillo de verificar que la sincronizacin se
ha realizado correctamente y detectar los fallos, ya que todas las funciones de sincronizacin estn confinadas
dentro del monitor.
Pgina 25 de 70
Nota:
Cwait y csignal son diferentes de las de los semforos. Si un proceso de un monitor ejecuta un csignal y no hay
procesos esperando en la variable condicin, el csignal se pierde (como si nunca se hubiera ejecutado).
Nota:
Una vez que un proceso est dentro del monitor, puede suspenderse a s mismo temporalmente bajo la condicin
x ejecutando cwait(x); entonces se sita en una cola de procesos que esperan volver a entrar al monitor cuando la
condicin cambio (es decir, el proceso no sale fuera del monitor, sino que pasa a la cola de bloqueados de la
condicin, que se ubica en la zona de espera del monitor. Ver imagen).
Pgina 26 de 70
Capitulo: Interbloqueo
El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los
recursos del sistema o bien se comunican unos con otros.
Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de 2 o ms procesos.
Ejemplo:
Proceso P: Obtener A Obtener B Liberar A Liberar B
Proceso Q: Obtener B Obtener A Liberar B Liberar A
Podra pasar por ejemplo:
Por lo tanto, que se produzca o no el interbloqueo depende tanto de la dinmica de la ejecucin como de los
detalles de la aplicacin. Por ejemplo si P tuviese la siguiente forma:
Proceso P: Obtener A Liberar A Obtener B Liberar B
Independientemente de la ejecucin de cada proceso, no puede darse interbloqueo.
Recursos reutilizables
Un recurso reutilizable es aquel puede ser usado con seguridad por un proceso y no se agota con el uso. Como
ejemplo de recursos reutilizables se tienen los procesadores, canales de E/S, memoria principal y secundaria,
dispositivos y estructuras de datos tales como archivos, base de datos, semforos, etc.
Recurso Consumible
Un recurso consumible es aqul que puede ser creado (producido) y destruido (consumido). Normalmente no
hay lmites en el nmero de recursos consumibles de un tipo en particular. Cuando un proceso adquiere un
recurso, este deja de existir. Como ejemplo de recursos consumibles estn las interrupciones, seales, mensajes
e informacin de buffers de E/S.
Condiciones de interbloqueo
Para producirse un interbloqueo deben darse 3 condiciones:
1. Exclusin Mutua: solo un proceso puede usar un recurso a la vez.
Pgina 27 de 70
2. Retencin y espera: un proceso puede retener unos recursos asignados mientras espera que se le
asignen otros.
3. No apropiacin: ningn proceso puede ser forzado a abandonar un recurso que tenga.
Puede existir interbloqueo con estas 3 condiciones, pero puede NO existir con solo estas 3 condiciones.
Es decir son condiciones necesarias pero NO suficientes para que exista interbloqueo. Se necesita una
cuarta condicin para que se produzca interbloqueo:
4. Espera Circular (circulo vicioso de espera): existe una cadena cerrada de procesos, cada uno de los
cuales retiene, al menos un recurso que necesita el siguiente proceso de la cadena.
La cuarta condicin es, en realidad, una consecuencia potencial de las 3 primeras. Es decir, dado que se
producen las 3 primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un crculo
vicioso de espera irresoluble. Un crculo de espera irresoluble es, de hecho, la definicin de interbloqueo.
En resumen, las 4 condiciones en conjunto constituyen una condicin necesaria y suficiente para el
interbloqueo. (1 a 3 son decisiones estratgicas, mientras que la condicin 4 depende de la secuencia de
solicitudes y liberacin de los proceso).
Nota:
Condiciones Coffman.
Prevencin del interbloqueo
Consiste en disear un sistema de manera que est excluida la posibilidad de interbloqueo.
Los mtodos para prevenir el interbloqueo son de 2 tipos:
Mtodos indirectos: impedir la aparicin de alguna de las 3 condiciones necesarias.
Exclusin mutua
Esta condicin NO puede anularse.
Retencin y espera
Esta condicin puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que necesiten
a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse
simultneamente.
Ineficiente desde cualquier punto de vista:
Un proceso puede permanecer mucho tiempo suspendido hasta que obtenga todos los recursos que
necesita.
Pgina 28 de 70
Los recursos asignados pueden permanecer mucho tiempo sin ser utilizados por el proceso que los
obtuvo.
Un proceso puede NO conocer por adelantado todos los recursos que necesitar.
No apropiacin
Esta condicin puede prevenirse de varias formas:
Si a un proceso retiene varios recursos se le deniega una nueva solicitud, dicho proceso deber
liberar sus recursos anteriores y solicitarlos de nuevo.
Si un proceso solicita un recurso que es retenido por otro, el SO puede solicitarle al segundo que
lo libere (si los 2 procesos no tienen la misma prioridad).
Esta tcnica solo sirve cuando se aplica a recursos cuyo estado puede salvarse y restaurase ms tarde de
forma fcil, como el procesador.
Espera circular
Esta condicin puede prevenirse definiendo una ordenacin lineal de los tipos de recursos.
Ineficiente como en retencin y espera.
Prediccin del interbloqueo
Con la prediccin del interbloqueo, se puede alcanzar las 3 condiciones necesarias, pero se realizan elecciones
acertadas para asegurar que nunca se llegue al puto de interbloqueo.
Se decide dinmicamente si la peticin actual de asignacin de un recurso podra llevar potencialmente a un
interbloqueo. Se necesita conocer las peticiones futuras de recursos.
Dos enfoques de prediccin:
No iniciar un proceso si sus demandas pueden llevar a interbloqueo: un proceso comenzar solo si
puede asegurarse la demanda mxima de recursos de todos los procesos actuales ms la del nuevo
proceso.
No conceder una solicitud de recurso si esta asignacin puede llevar a un interbloqueo (algoritmo del
banquero): El algoritmo decide si le asigna recursos a los procesos que los solicitan para mantener el
estado seguro (estado en el que existe al menos una secuencia que no lleva a interbloqueo, es decir todos
los procesos pueden ejecutarse hasta el final)
Nota:
La prediccin permite ms concurrencia y es menos restrictiva que la prevencin (se pueden alcanzar las 3
condiciones necesarias, pero se hace la asignacin de manera a que nunca se llegue al interbloqueo).
Nota:
Pgina 29 de 70
No predice el interbloqueo exactamente, sino que anticipa la posibilidad de interbloque y asegura que nunca
exista esa posibilidad.
Para poder predecir el interbloqueo hay una serie de restricciones:
Los procesos a considerar deben ser independientes.
No debe haber un nmero variable de procesos y recursos, sino un nmero fijo.
Pgina 30 de 70
Pgina 31 de 70
Proteccin
El cdigo de un proceso no puede hacer referencia a posiciones de memoria de otros procesos, sin permiso.
Al desconocerse la ubicacin de un programa en memoria principal, es imposible comprobar las direcciones
absolutas durante la compilacin para asegurar la proteccin. Por lo tanto, todas las referencias a memoria
generadas por un proceso deben comprobarse durante la ejecucin para asegurar que las instrucciones solo
hagan referencia al espacio de memoria destinado a dicho proceso. El procesador es el que debe satisfacer las
exigencias de proteccin de memoria, ya que el SO no puede anticiparse a todas las referencia de memoria que
har el programa (y si la anticipacin fuera posible, consumira mucho tiempo proteger por adelantado a cada
programa de posibles violaciones de referencia a la memoria).
Compartimiento
La proteccin debe permitir el acceso de varios procesos a la misma zona de la MP. Los mecanismos para
respaldar la reubicacin forman parte bsica de las capacidades de compartimiento.
Organizacin lgica
Si el SO y el hardware pueden tratar a los programas de usuario y los datos en forma de mdulos, se conseguir
una serie de ventajas. La herramienta que satisface esta necesidad es la segmentacin.
Organizacin Fsica
La memoria secundaria puede permitir un almacenamiento a largo plazo de programas y datos, al tiempo que
Pgina 32 de 70
La memoria principal para un programa puede ser insuficiente. En este caso el programador debe
emplear una prctica conocida como superposicin (varios mdulos asignados a la misma regin de
memoria, intercalndose entre s segn se necesite). La programacin superpuesta malgasta el tiempo
del programador.
Particin dinmica
Paginacin simple
Segmentacin simple
Memoria virtual paginada
Pgina 33 de 70
Uso de la MP extremadamente ineficiente. Cualquier programa, sin importar lo pequeo que sea,
ocupara una particin completa. Esto genera fragmentacin interna.
Ambos problemas pueden reducirse, aunque no eliminarse, por medio del empleo de particiones estticas de
distinto tamao.
Nota:
La fragmentacin es el desperdicio de memoria. Hay 2 tipos de fragmentacin:
Fragmentacin interna: Es el desperdicio de memoria que se produce cuando un programa ocupa una
particin de memoria ms grande de la que necesita.
Fragmentacin externa: Es el desperdicio de memoria que se produce cuando hay memoria disponible,
pero esta no se puede usar, porque es menor de la que requiere el programa.
Algoritmos de ubicacin
Con particiones del mismo tamao, la ubicacin de un proceso en la memoria es trivial. Mientras haya alguna
particin libre, puede cargarse un proceso en esa particin y no importa la particin que se use (ya que todas son
del mismo tamao). Si estn todas las particiones ocupadas, sacar a un proceso de ella es una cuestin de
planificacin de procesos.
Pgina 34 de 70
Con particiones de distinto tamao hay 2 formas de asignar los procesos a las particiones:
A. La ms fcil, es asignar cada proceso a la particin ms pequea que quepa, de forma que los procesos
siempre estn asignados de forma que se minimiza la memoria desaprovechada dentro de cada
particin. Sin embargo, esto no es conveniente porque pueden haber particiones sin usar, y que dicha
particin no sea asignada al proceso porque esta no es la particin ms pequea en la que quepa.
B. Asignar a cada proceso la particin ms pequea disponible que quepa.
Resumen:
Particin Esttica
La MP se divide en un conjunto de
particiones estticas durante la
generacin del sistema. Un
proceso se puede cargar en una
particin de menor o igual tamao
Ventajas
Sencillo de implementar.
Desventajas
Fragmentacin interna
Particiones dinmicas
Las particiones se crean dinmicamente, de forma que cada proceso se carga en una particin de exactamente el
mismo tamao que el proceso. Es decir se le asigna tanta memoria como necesita y no ms.
Este mtodo comienza bien, pero finalmente, desemboca en una situacin en la que hay un gran nmero de
huecos pequeos de memoria. Conforme pasa el tiempo, la memoria comienza a estar ms fragmentada y su
rendimiento decae. Se produce fragmentacin externa.
Una tcnica para vencer a la fragmentacin externa, es la compactacin. De vez en cuando, el sistema
operativo desplaza los procesos para que estn contiguos, de forma que toda la memoria libre quede juta en un
bloque. El problema es que es un procedimiento que consume tiempo, por lo que desperdicia tiempo del
procesador.
Pgina 35 de 70
Algoritmo de ubicacin
En el esquema de particiones dinmicas se pueden considerar 3 algoritmos. Los 3 se limitan a elegir entre los
bloques de memoria libres que son mayores o iguales que el proceso a cargar.
Mejor ajuste (best-fit)
Elige el bloque de tamao ms prximo al solicitado.
El mejor mtodo aplicable depender de la secuencia exacta de intercambios de procesos que ocurran y del
tamao de estos procesos.
Primer ajuste
Siguiente Ajuste
Mejor ajuste
Sencillo.
El mejor y ms rpido.
primer ajuste.
resultados
Sistema de colegas
Los bloques de memoria disponibles son de tamao 2K, para valor de K tal que L K U y donde:
2L = tamao de bloque ms pequeo asignable.
Pgina 36 de 70
La figura anterior muestra un ejemplo utilizando un bloque inicial de 1MB. La primera solicitud A de 100KB
necesitara un boque de 128KB. El bloque inicial se divide en 2 colegas de 512KB. El primero de estos se divide
en 2 de 256KB y el primero de estos se divide en 2 de 128K.
El sistema de colegas es un equilibrio razonable para superar las desventajas de los esquemas de particin fija y
variable.
Reubicacin
Un proceso puede ocupar diferentes particiones de memoria a lo largo de su vida. De esta manera las
ubicaciones (de las instrucciones y datos) referenciadas por un proceso no son fijas, sino que cambian cada vez
que se intercambia o desplaza un proceso. Para resolver este problema, se realiza una distincin entre varios
tipos de direcciones.
Direccin lgica: direccin generada por la CPU que hace referencia a una posicin de memoria
independiente de la asignacin actual de datos a la memoria.
Direccin relativa: posicin relativa a algn punto conocido, normalmente el principio del programa.
Cuando un proceso pasa a estado ejecutando, se carga un registro especial del procesador, denominado registro
Pgina 37 de 70
base, con la direccin ms baja en la memoria principal del proceso. Existe tambin un registro lmite que
indica la posicin final del programa. A lo largo de la ejecucin del proceso se encuentran direcciones relativas.
Cada una de estas direcciones relativas pasa por 2 etapas de manipulacin en el procesador. En primer lugar, se
suma el valor del registro base a la direccin relativa para obtener una direccin absoluta. Esta direccin
absoluta obtenida se compara con el valor del registro lmite. Si la direccin est dentro de los lmites, se puede
proceder a la ejecucin de la instruccin. En otro caso, se genera una interrupcin del SO, que debe responder al
error de algn modo
Este procedimiento se conoce como carga dinmica en tiempo de ejecucin y permite a los programas
cargarse y descargarse de memoria a lo largo de su ejecucin. Tambin proporciona una medida de proteccin:
cada imagen de proceso est aislada por el contenido de los registros base y limite y es segura contra accesos no
deseados por parte de otros procesos.
Nota:
La direccin absoluta no se calcula hasta a se ejecute una instruccin. Para asegurar que esta funcin no degrade
el rendimiento, debe realizarse por medio de un hardware especial del procesador, en vez de por software.
Este hardware se denomina unidad de gestin de memoria (MMU, memory management unit).
El programa de usuario maneja direcciones lgicas y el hardware de conversin de memoria convierte esas
direcciones lgicas en direcciones fsicas.
Nota:
La vinculacin de instrucciones y datos a direcciones de memoria puede realizarse en tres etapas diferentes:
Compilacin: Si se conoce a priori la posicin que va a ocupar un proceso en la memoria se puede
generar cdigo absoluto con referencias absolutas a memoria; si cambia la posicin del proceso hay que
recompilar el cdigo.
Carga: Si no se conoce la posicin del proceso en memoria en tiempo de compilacin se debe generar
Pgina 38 de 70
cdigo reubicable; el compilador no generar direcciones reales de memoria principal sino direcciones
relativas a algn punto conocido, como el comienzo del programa. Al momento de la carga del proceso
a memoria principal, se convierten todas las direcciones relativas a direcciones absolutas. El problema
surge que en un sistema multiprogramado, el proceso puede ser suspendido luego de la carga en
memoria, y vuelto a ser cargado en otra posicin diferente.
Nota:
Las direcciones lgicas y fsicas son iguales en los esquemas de vinculacin en tiempo de compilacin y de
carga; pero difieren en el esquema de vinculacin en tiempo de ejecucin.
Nota:
Un par de registros base y lmite definen el espacio de direcciones lgicas. Tambin se llaman registros de
reubicacin y se usan para proteger los procesos de usuario unos de otros.
Paginacin
Mediante la paginacin simple, la memoria principal se encuentra dividida en trozos iguales de tamao fijo,
denominados marcos. A su vez, cada proceso est divido tambin en trozos de tamao fijo y del mismo tamao
que los de memoria, denominados pginas. El termino marco se utiliza porque un marco puede mantener o
encuadrar una pgina de datos. Es decir, cuando se introduce un proceso en la memoria, se cargan todas sus
pginas en los marcos libres.
El espacio desaprovechado en la memoria para cada proceso por fragmentacin consta solo de una fraccin de
la ltima pgina del proceso. Adems, no hay fragmentacin externa.
El sistema operativo mantiene una lista de los marcos libres. Cuando llega el momento de cargar un proceso en
memoria, el SO busca los marcos libres necesarios para cargar todas las pginas del proceso. No necesariamente
los marcos deben ocupar una posicin contigua de memoria. Para lograr esto, el SO operativo mantiene una
tabla de pginas para cada proceso. Cada tabla de pgina contiene una entrada por cada pgina del proceso. Y
Pgina 39 de 70
en cada entrada se encuentra el nmero de marco de la memoria principal que alberga la pgina
correspondiente.
Al igual que la particin simple, el procesador tambin realiza la traduccin de direcciones lgicas a fsicas. En
el caso de la particin simple el programa contena direcciones relativas al comienzo del programa. En la
paginacin, el programa contiene direcciones lgicas que constan de un nmero de pgina y de un
desplazamiento dentro de la pgina. Para hacer la traduccin, el procesador debe acceder a la tabla de pginas
del proceso actual. Dada una direccin lgica (nmero de pgina, desplazamiento), el procesador emplea la
tabla de pginas para obtener una direccin fsica (nmero de marco, desplazamiento).
La diferencia entre la paginacin simple y la particin esttica, es que con la paginacin, las particiones son
algo ms pequeas (por lo que la fragmentacin interna ser menor) y que un programa puede ocupar ms de
una particin y estas o tienen por qu ser contiguas.
Aplicacin correcta del esquema de paginacin
El tamao de la pgina y por lo tanto, el tamao del marco, debe haber una potencia de 2.
Un ejemplo donde se emplean direcciones de 16 bits y el tamao de pgina es de 1K = 1024 bytes. Con un
tamao de pgina de 1K, se necesitan 10 bits para el campo desplazamiento (2 10 = 1024 bytes). De este modo,
un programa puede estar formado por un mximo de 26 = pginas de 1KB cada una.
Si se tiene una direccin lgica = 0000010111011110, se corresponde con el nmero de pgina 1 (000001) y
desplazamiento 478 (0111011110). Suponiendo se fija en la entra 1 de la tabla de pgina y dicha entrada
contiene el marco 6 = 000110 en binario. Entonces la direccin fsica es el marco 6 y el desplazamiento 478 =
0001100111011110.
Segmentacin
Otro modo de subdividir el programa es la segmentacin. En este caso, el programa se divide en un conjunto de
segmentos. No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque
existe una longitud mxima de segmento. En este esquema, una direccin lgica consta de 2 partes, un nmero
de segmento y un desplazamiento.
Este esquema resulta similar a la particin dinmica. La diferencia, radica en que, con segmentacin un
programa puede ocupar ms de una particin y estas no tienen por qu estar contiguas.
La segmentacin no sufre de fragmentacin interna, pero, como en la particin dinmica, sufre de
fragmentacin externa. Aunque esta ser menor.
Mientras que la paginacin es transparente al programador, la segmentacin es visible.
Para la traduccin de direcciones lgicas a fsicas, al igual que en la paginacin, el SO har uso de una tabla de
Pgina 40 de 70
segmentos para cada proceso y una lista de bloques libres en la memoria principal. Cada entrada a la tabla de
segmentos tendr que contener la direccin de comienzo del segmento correspondiente de la memoria principal.
Pgina 41 de 70
As, en cualquier momento, slo unas pocas porciones de cada proceso se encuentran en memoria, y por tanto
se pueden mantener ms procesos alojados en la misma. Adems, se ahorra tiempo porque las porciones del
proceso no usadas no se cargan ni se descargan de la memoria.
Sin embargo, el sistema operativo debe saber cmo gestionar este esquema. Cuando el sistema operativo traiga
una porcin a la memoria, debe expulsar otra. Si elimina una porcin justo antes de que vaya a ser utilizada,
deber recuperar dicha porcin de nuevo casi de forma inmediata. Demasiados intercambios de fragmentos
lleva a una condicin denominada hiperpaginacin (thrashing): el procesador consume ms tiempo
intercambiando fragmentos que ejecutando instrucciones de usuario. Para evitar esto, el SO trata de adivinar, en
base a la historia reciente, qu porciones son menos probables de ser utilizadas en un futuro cercano. Esto se
basa en el principio de cercana. Este principio indica que las referencias al programa y a los datos dentro de
un proceso tienden a agruparse. Por tanto, se resume que slo unas pocas porciones del proceso se necesitarn a
lo largo de un periodo de tiempo corto.
Paginacin
Para la memoria virtual basada en el esquema de paginacin tambin se necesita una tabla de pginas por
proceso. En este caso, debido a que slo algunas de las pginas de proceso se encuentran en la memoria
principal, se necesita un bit en cada entrada de la tabla de pginas para indicar si la correspondiente pgina est
presente (P) en memoria principal o no lo est. Si el bit indica que la pgina est en memoria, la entrada
tambin debe indicar el nmero de marco de dicha pgina.
Otro bit de control necesario en la entrada de la tabla de pginas es el bit de modificado (M), que indica si los
contenidos de la correspondiente pgina han sido alterados desde que la pgina se carg por ltima vez en la
memoria principal. Si no ha habido cambios, no es necesario escribir la pgina cuando llegue el momento de
reemplazarla por otra pgina en el marco de pgina que actualmente ocupa. Pueden existir tambin otros bits de
control en estas entradas.
Estructura de la tabla de pginas
Debido a que la tabla de pginas es de longitud variable dependiendo del tamao del proceso, la cantidad de
memoria demandada por las tablas de pgina nicamente puede ser inaceptablemente grande.
Por esto, la mayora de los esquemas de memoria virtual almacenan las tablas de pginas tambin en la
memoria virtual, en lugar de en la memoria real. Esto representa que las tablas de pginas estn sujetas a
paginacin igual que cualquier otra pgina. Cuando un proceso est en ejecucin, al menos parte de su tabla de
pginas debe encontrarse en memoria, incluyendo la entrada de tabla de pginas de la pgina actualmente en
ejecucin.
Algunos procesadores utilizan un esquema de dos niveles para organizar las tablas de pginas de gran tamao.
Pgina 43 de 70
Un ejemplo de un esquema tpico de dos niveles que usa 32 bits (232) para la direccin con tamao de pginas
de 4K, tiene una direccin lgica formada por:
Ya que la tabla de pginas est paginada y cada entrada de la tabla de pginas ocupa 4 bytes, el nmero de
pgina es de nuevo dividido en:
Un nmero de pgina de 10 bits
Un desplazamiento de 10 bits
Pgina 44 de 70
La tabla de pginas invertida contiene un registro por cada marco de pgina real en lugar de un registro por cada
pgina virtual. La estructura de la tabla de pginas se denomina invertida debido a que se indexan sus entradas
de la tabla de pginas por el nmero de marco en lugar de por el nmero de pgina virtual. Para un tamao de
memoria fsica de 2m marcos, la tabla de pginas invertida contiene 2m entradas, de forma que la entrada en la
posicin i-esima se refiere al marco i.
Las entradas contienen la direccin virtual de la pgina almacenada en el marco con informacin sobre el
proceso que la posee.
Disminuye la memoria necesaria para almacenar cada tabla de pginas.
Buffer de traduccin adelantada (almacenamiento intermedio)
En principio, toda referencia a la memoria virtual puede causar dos accesos a memoria fsica: uno para buscar la
entrada la tabla de pginas apropiada y otro para buscar los datos solicitados.
Por esta situacin, la mayora de esquemas de la memoria virtual utilizan una cache especial hardware de alta
velocidad para las entradas de la tabla de pgina TLB (translation lookaside buffer). Esta contiene aquellas
entradas de la tabla de pginas que han sido usadas de forma ms reciente. Dada una direccin virtual, el
procesador primero examina la TLB, si la entrada de la tabla de pginas solicitada est presente (acierto en
TLB), entonces se recupera el nmero de marco y se construye la direccin real. Los estudios sobre la TLB han
demostrado que este esquema significa una importante mejora del rendimiento.
Pgina 45 de 70
Tamao de pgina
Cuanto menor es el tamao de la pgina, menor cantidad de fragmentacin interna. Por otro lado, cuanto menor
es la pgina, mayor nmero de pginas son necesarias para cada proceso. Un mayor nmero de pginas por
proceso significa tambin que el tamao de las tablas de pginas ser mayor. Esto puede significar que una gran
parte de las tablas de pginas de los procesos activos debe estar en memoria virtual y no en memoria principal.
Esto puede provocar 2 fallos de pgina para una nica referencia a memoria:
Por principio de proximidad, si el tamao de pgina es muy pequeo habr gran cantidad de pginas disponibles
en la memoria principal para cada proceso. Despus de un tiempo, las pginas en memoria contendrn las partes
de los procesos a las que se ha hecho referencia de forma reciente. De esta forma, la tasa de fallos de pgina
debera ser baja. A medida que el tamao de pginas se incrementa, la pgina en particular contendr
informacin ms lejos de la ltima referencia realizada. As pues, el efecto del principio de proximidad se
debilita y la tasa de fallos de pgina comienza a crecer.
Para un tamao determinado de una TLB, a medida que el tamao del proceso crece y la proximidad de
referencias decrece, el ndice de aciertos en TLB se va reduciendo. Bajo estas circunstancias, la TLB se puede
convertir en el cuello de botella del rendimiento.
Paginacin y Segmentacin combinadas
La paginacin es transparente al programador y elimina la fragmentacin externa, y por tanto proporciona un
uso eficiente de la memoria principal.
La segmentacin s es visible al programador, incluyendo la posibilidad de manejar estructuras de datos que
crecen, modularidad, y dar soporte a la comparticin y a la proteccin. A su vez, elimina la fragmentacin
interna.
En un sistema con paginacin y segmentacin combinadas, el espacio de direcciones de un usuario se divide en
varios segmentos segn el criterio del programador. Cada segmento se vuelve a dividir en varias pginas de
tamao fijo, que tienen la misma longitud que un marco de memoria principal.
Asociada a cada proceso existe una tabla de segmentos y varias tablas de pginas, una por cada uno de los
segmentos.
Proteccin y seguridad
La segmentacin proporciona proteccin y comparticin.
Cada entrada en la tabla de segmentos incluye la longitud as como la direccin base, por lo que un programa
NO puede acceder a una posicin de memoria ms all de los lmites del segmento. Para conseguir
comparticin, es posible que un segmento se encuentre referenciado desde las tablas de segmentos de ms de un
Pgina 46 de 70
proceso. Los mecanismos estn disponibles en los sistemas de paginacin. Sin embargo, en este caso la
estructura de pginas de un programa y los datos no son visible para el programador, haciendo que la
especificacin de la proteccin y los requisitos de comparticin sean ms difciles.
Polticas de lectura
La poltica de lectura (fetch) est relacionada con la decisin de cuando se debe cargar una agina en la memoria
principal:
Paginacin por demanda
Una pgina se trae a memoria slo cuando se hace referencia a una posicin en dicha pgina. Al
principio se producir un aluvin de fallos de pgina, pero luego al estar cargadas varias pginas
utilizadas recientemente, por el principio de proximidad, la situacin se estabilizar y el nmero de
fallos ser muy bajo.
Paginacin previa
Se traen a memoria tambin otras pginas, diferentes de la que ha causado el fallo de pgina. Es mucho
ms eficiente traer a la memoria un nmero de pginas contiguas de una vez, en lugar de traerlas una a
una a lo largo de un periodo de tiempo ms amplio (por la operacin de E/S a disco). Por supuesto, esta
poltica es ineficiente si la mayora de las pginas que se han trado no se referencian a posteriori.
Polticas de ubicacin
La poltica de ubicacin determina en qu parte de la memoria real van a residir las porciones de un proceso.
En los sistema de segmentacin puros, la poltica de ubicacin es un aspecto de diseo muy importante
(polticas del estilo mejor ajuste, primer ajuste).
Para sistemas que usan paginacin pura o paginacin combinada con segmentacin, la ubicacin es irrelevante
debido a que el hardware de traduccin de direcciones y el hardware de acceso a la memoria principal pueden
realizar sus funciones en cualquier combinacin de pgina-marco con la misma eficiencia.
Polticas de reemplazo
La poltica de reemplazo determina entre el conjunto de pginas consideradas, cul es la pgina especifica que
debe elegirse para el reemplazo. Todas las polticas reemplazo tienen como objetivo que la pgina que va a
eliminarse sea aquella que tiene menos posibilidades de volver de ser referencia en un futuro cercano.
Cuanto ms elaborada y sofisticada es una poltica de reemplazo, mayor va a ser la sobrecarga a nivel software
y hardware para implementarla.
Bloqueo de marcos
Cuando un marco est bloqueado, la pgina actualmente almacenada en dicho marco no puede
reemplazarse. Gran parte del ncleo del sistema operativo se almacena en marcos que estn bloqueados,
Pgina 47 de 70
buffer buscando una que no se haya modificado desde que se ha trado y que no haya sido accedida
recientemente. Esta pgina es una buena opcin para reemplazo y tiene la ventaja que, debido a que no
se ha modificado, no necesita escribirse de nuevo en la memoria secundaria.
Una pgina se escribir en la memoria secundaria solo cuando haya sido elegida para reemplazarse.
Vaciado previo
Escribe las pginas modificadas antes de que se necesiten sus marcos, de forma que las pginas puedan
escribirse por lotes.
Las 2 polticas son ineficientes, ya que el vaciado por demanda la escritura de una pgina es anterior a la lectura
de una nueva pgina, por lo que un proceso que sufra una falla de pgina pueda tener que esperar 2
transferencias de pginas antes de desbloquearse. Con el vaciado previo, las pginas pueden ser nuevamente
modificadas luego de ser escritas en memoria secundaria.
Solucin: incorporar almacenamiento intermedio de pginas Se desactivan las polticas de reemplazo y
vaciado para dar lugar al almacenamiento intermedio.
Control de carga
Determinar el grado de multiprogramacin: pocos procesos en la memoria principal, entonces menor
aprovechamiento de la CPU. Si hay demasiados procesos, el tamao medio del conjunto residente de cada
proceso no ser el adecuado y se producirn frecuentes fallos de pginas. El resultado es la hiperpaginacin.
Pgina 50 de 70
Pgina 51 de 70
En el caso B y C, se conectan los mdulos de E/S al mdulo de DMA mediante un bus de E/S, por lo
que el bus del sistema solo es utilizado por el DMA para intercambiar datos con la memoria y seales de
control con la CPU. El intercambio de datos entre el mdulo de DMA y el de E/S tiene lugar fuera del
bus del sistema, achicando as el nmero de ciclos de bus del sistema requeridos.
Prioridad: la planificacin queda fuera del control del software de gestin de disco. Esta estrategia no
est diseada para optimizar la utilizacin del disco sino satisfacer otros objetivos del SO. Favorece a
los trabajos cortos, por los que los trabajos mayores pueden tener que esperar excesivamente. Poco
favorable para sistemas de bases de datos.
LIFO (Ultimo en entrar, primero en salir): Puede producir inanicin. Buen rendimiento en los sistemas
de transacciones ya que conceder el dispositivo al ltimo usuario acarrea pocos movimientos de brazos
al recorrer un archivo secuencial.
SCAN (subo hasta la ltima pista del disco y bajo): Favorece a los trabajos con solicitudes de pistas
cercanas a los cilindros ms interiores y exteriores; as como a los ltimos trabajos en llegar.
El primer problema se puede evitar con C-SCAN, mientras el 2do con SCAN N pasos.
Nota:
Entre otras polticas (LOOK, CLOOK, FSCAN, SCAN N PASOS, SSTF. Ver practica).
RAID
RAID (Vector Redundante de Discos Independientes) es un conjunto de unidades de disco fsico vistas por el
SO como una sola unidad lgica.
Con mltiples discos que funcionan en forma independiente y en paralelo, las distintas solicitudes de E/S se
pueden gestionar en paralelo, siempre que los datos solicitados residan en discos separados. Es ms, una nica
peticin de E/S se puede ejecutar en paralelo si el bloque de datos que se pretende acceder est distribuido a lo
largo de mltiples discos. Por lo que RAID tiende a mejora significativamente el rendimiento y fiabilidad del
Pgina 53 de 70
Los datos estn distribuidos en bandas a lo largo de los discos disponibles. El RAID 0 se usa
normalmente para aplicaciones que requieren alto rendimiento para datos no crticos.
RAID 1 (espejo)
Se consigue redundancia por el simple medio de duplicar todos los datos. Mucha fiabilidad. Permite
lecturas ms rpidas ya que los datos los puede servir cualquiera de los 2 discos que contienen los datos
solicitados. La velocidad de escritura depende de la escritura ms lenta de las 2, pero NO hay
penalizacin de escritura (escribir informacin adicional como bit de paridad).
La principal desventaja es el elevado costo por tener que duplicar toda la informacin en otro disco.
Discos = 2N
Uno de sus efectos secundarios es que normalmente no puede atender varias peticiones simultneas,
Pgina 54 de 70
debido a que por definicin cualquier simple bloque de datos se dividir por todos los miembros del
conjunto, residiendo la misma direccin dentro de cada uno de ellos. As, cualquier operacin de lectura
o escritura exige activar todos los discos del conjunto.
Puede conseguir una tasa de transferencia muy alta.
Sirve solamente para un entorno donde se produjeran muchos errores de disco.
Discos = N + 1
En el ejemplo del grfico, una peticin del bloque A formado por los bytes A1 a A6 requerira que los
tres discos de datos buscaran el comienzo (A1) y devolvieran su contenido. Una peticin simultnea del
bloque B tendra que esperar a que la anterior concluyese.
Puede conseguir una tasa de transferencia muy alta. No puede atender varias peticiones simultneas.
Discos = N + 1
Pgina 55 de 70
En ejemplo del grfico, una peticin del bloque A1 sera servida por el disco 0. Una peticin
simultnea del bloque B1 tendra que esperar, pero una peticin de B2 podra atenderse
concurrentemente.
Discos = N + 1
Nota:
Acceso paralelo todos los discos participan en la ejecucin de cada solicitud de E/S. Ms apropiados para
aplicaciones que requieran tasas altas de transferencia de datos
Acceso independiente cada disco opera independientemente, por lo que se pueden satisfacer en paralelo
solicitudes de E/S. Ms apropiados para aplicaciones que requieran tasas altas de solicitudes de E/S.
Pgina 56 de 70
Memoria cache
Memoria pequea y de alta velocidad, ms rpida que la memoria principal, y que se sita entre esta y el
procesador. Dicha memoria cache reduce el tiempo medio de acceso a memoria aprovechndose del principio
de la proximidad.
La cache de disco contiene una copia de algunos de los sectores del disco. Cuando se hace una peticin de E/S
solicitando un determinado sector, se comprueba si el sector est en la cache del disco. En caso afirmativo, se
sirve la peticin desde la cache. Debido al fenmeno de la proximidad de referencias, cuando se lee un bloque
de datos en la cache para satisfacer una nica peticin de E/S, es probable que haya referencias a ese mismo
bloque en el futuro.
La diferencia entre cache y buffer en que el buffer puede almacenar la nica copia existen de un elemento de
datos, mientras que la cache almacena una copia de un elemento que reside en otro lugar.
Tipos de E/S
Bloqueante y No bloqueante
Bloqueante Se suspende la ejecucin de la aplicacin que la solicito. Cuando se completa la
operacin vuelve a la cola de listos.
No bloqueante No detiene la ejecucin. En lugar de ello, la llamada vuelve rpidamente, con un valor
de retorno que indica cuantos bytes se han trasferidos.
Asincrnicas / Sincrnicas
Asincrnico La llamada vuelve rpidamente, sin ningn valor de retorno. Cuando la E/S termina
avisa (consume una cantidad impredecible de tiempo).
La diferencia con una no bloqueante, es que una operacin read () no bloqueante vuelve inmediatamente
con los datos que haya disponibles, mientras que una llamada read () asincrnica solicita una
transferencia que se realizara de modo completo pero que completara en algn instante futuro.
Sincrnico Como voy a seguir con el proceso depende del resultado de E/S (consume una cantidad
predecible de tiempo)
Pgina 57 de 70
Tamao
Proteccin Informacin de control de acceso al archivo (quien puede leer, escribir, etc.)
Pgina 58 de 70
La figura muestra una representacin de una organizacin tpica del software (puede variar dependiendo del
sistema). Por lo tanto, el sistema de archivos est compuesto, generalmente, de muchos niveles. Cada nivel del
diseo utiliza funciones de los niveles inferiores. Desde el nivel ms bajo al ms alto:
Sistema de archivos bsico enva comandos genricos al controlador de dispositivo apropiado, con el
fin de leer y escribir bloques fsicos en el disco. El sistema de archivos bsico se considera normalmente
parte del sistema operativo.
Supervisor bsico de E/S El supervisor de E/S bsico selecciona el dispositivo en el cual se van a
llevar a cabo la operacin de E/S. Tambin se encarga de la planificacin de disco y cinta para optimizar
el rendimiento. A este nivel, se asignan los buffers de E/S y se reserva la memoria secundaria. El
supervisor de E/S bsico es parte del sistema operativo.
E/S Lgica Permite a los usuarios y a las aplicaciones acceder a los registros.
Pgina 59 de 70
Otra forma de ver las funciones de un sistema de archivos se muestra en la siguiente figura:
El sistema de archivos debe identificar y localizar el archivo seleccionado. Esto requiere el uso de algn
tipo de directorio que se utilice para describir la ubicacin de todos los archivos.
Adicionalmente se aplica un control de acceso (slo se permite determinado acceso particular a los
usuarios autorizados.)
Las operaciones bsicas que puede realizar un usuario o aplicacin se realizan a nivel de registro. El
usuario o aplicacin ve el archivo como una estructura que organiza los registros. Por tanto, para
traducir los rdenes de usuario en rdenes de manipulacin de archivos, debe emplearse el mtodo de
acceso apropiado para esta estructura de archivos.
La E/S se realiza a nivel de bloque. Por tanto, los registros de un archivo se deben traducirse en bloques
para la salida y los bloques traducirse a registros despus de la entrada.
En s, la figura sugiere una divisin entre las funciones del sistema de gestin de archivos y las funciones del
Pgina 60 de 70
Pilas
Forma ms simple de organizacin de archivos. Los datos se recolectan en el orden en que llegan. Cada
registro consiste en una rfaga de datos. El propsito de la pila es simplemente acumular la masa de
datos y guardarlo. El acceso a los datos se hace por bsqueda exhaustiva por no tener una estructura.
Fciles de actualizar. Aprovecha bien el espacio cuando los datos almacenados varan en tamao y
estructura.
Archivos secuenciales
Se emplea un formato fijo para los registros. Todos los registros son de igual tamao y estn compuestos
por el mismo nmero de campos de longitud fija en un orden especfico. Las bsquedas se realizan en
forma secuencial.
Pgina 61 de 70
Archivos indexados
Cuando es necesario buscar por algn otro atributo que no sea el campo clave, ambas formas de archivos
secuenciales son inadecuadas. En algunas aplicaciones, esta flexibilidad es deseable.
Para lograr esta flexibilidad, se necesita una estructura que emplea mltiples ndices, uno por cada tipo
de campo que puede estar sujeto a una bsqueda (ndice exhaustivo y parcial)
Organizacin de directorios
El directorio de archivos contiene informacin sobre los archivos, incluyendo atributos, ubicacin y propietario.
Gran parte de esta informacin la gestiona el SO. El directorio es propiamente un archivo, posedo por el
sistema operativo.
La informacin que almacena difiere mucho entre los distintos sistemas, pero algunos elementos claves siempre
deben permanecer en el directorio, como el nombre, direccin, tamao y organizacin.
Los tipos de operaciones que pueden realizarse con un directorio:
Buscar Archivo cuando un usuario hace referencia a un archivo debe buscarse en el directorio la
entrada correspondiente.
Crear Archivo se aade una entra al directorio
Una nica lista no es adecuada como estructura del directorio para soportar estas operaciones por cuestiones de
organizacin (por ejemplo tener los archivos separados por tipo, por usuario, etc.).
Una tcnica ms potente y flexible, que es casi universalmente adoptada, es utilizar una estructura jerrquica en
forma de rbol.
Como en la tcnica anterior, hay un directorio maestro, que tiene bajo dicho directorio varios directorios de
usuario. Cada uno de estos directorios de usuario, a su vez, podra tener subdirectorios y archivos como
entradas. Esto se cumple para todos los niveles. Es decir, en cada nivel, un directorio podra estar formado por
subdirectorios y/o archivos.
Cada directorio se almacena como un archivo secuencial. Cuando los directorios tengan un nmero muy grande
de entradas es preferible una estructura hash.
El conjunto de nombres de directorios, finalizando en el nombre del archivo, constituye un nombre de camino
Pgina 63 de 70
para el archivo.
Agrupacin de registros
Como se vio los registros so la unidad lgica de acceso a los archivos, mientras que los bloques son la unidad de
E/S para almacenamiento secundario. Para que la E/S se pueda realizar, los registros se deben organizar como
bloques.
Los bloques en la mayora de los sistemas son de longitud fija. Esto simplifica la E/S.
Cuanto mayor sea el bloque, ms registros se transferirn en una operacin de E/S. La preocupacin
viene por el hecho de que bloques ms grandes requieren buffers de E/S mayores, haciendo la gestin de
buffers ms difcil.
Los bloques pueden ser de:
o Tamao fijo: Se utilizan registros de longitud fija, guardndose en cada bloque un nmero entero
de registros. Podra haber espacio no utilizado al final de cada bloque. Esto se denomina
fragmentacin interna.
o Bloques de longitud variable con tramos: Se utilizan registros de longitud variable y se agrupan
en bloques sin dejar espacio sin usar. Por tanto, algunos registros deben abarcar dos bloques, con
su continuacin indicada por un puntero al bloque sucesor.
o Bloques de longitud variable sin tramos. Se utilizan registros de longitud variable, pero no se
dividen en tramos. En la mayora de los bloques habr espacio desperdiciado si el siguiente
registro es mayor que el espacio sin usar.
Utilizar bloques fijos es el modo comn para archivos secuenciales con registros de longitud fija.
Los Bloques de longitud variable con tramos son difciles de implementar ya que los registros que
ocupan 2 bloques requieren dos operaciones de E/S y los archivos son difciles de actualizar.
Los Bloques de longitud variable sin tramos implican espacio malgastado y limitan el tamao del
registro al tamao de un bloque.
Pgina 64 de 70
Asignacin previa Requiere que el tamao mximo del archivo sea declarado en el momento crearlo.
Es difcil, a veces imposible, estimar el tamao mximo del archivo. Por lo que habra que sobrestimar
el tamao de lo que supone un desperdicio de la asignacin de espacio de almacenamiento.
Tamao de la seccin
Pgina 65 de 70
Secciones contiguas variables y grandes El mejor rendimiento. Evita malgastar espacio, y las tablas
de asignacin de archivos sern pequeas. Espacio difcil de reutilizar.
Bloques Secciones fijas y pequeas ofrecen mayor flexibilidad. Tablas de asignacin sern grandes
y/o complejas. Los bloques se asignan a medida que se necesiten (pueden no ser contiguos).
En el caso de secciones contiguas variables y grandes se asigna previamente un grupo de bloques contiguos.
Esto elimina la necesidad de una tabla de asignacin de archivos; todo lo que se requiere es un puntero al primer
bloque y el nmero de bloques asignados.
En el caso de los bloques, todas las secciones requeridas se asignan a la vez. Esto significa que la tabla de
asignacin de archivos para el archivo es de tamao fijo.
Con secciones de tamao variable, es necesario preocuparse de la fragmentacin del espacio libre. Las
siguientes estrategias son posibles:
Primer ajuste: Elegir el primer grupo de bloques contiguo sin usar de tamao suficiente.
Siguiente ajuste: Elegir el grupo ms pequeo sin que sea de tamao suficiente.
Ajuste ms cercano: Elegir el grupo sin usar de tamao suficiente que est ms cercano al asignado
previamente al archivo para aumentar la cercana.
Mtodos de asignacin de archivos
Asignacin contigua
Cuando se crea el archivo se asigna un nico conjunto contiguo de bloques. Es una estrategia de
asignacin previa. La FAT contiene slo una entrada por cada archivo y que muestra el bloque de
comienzo y la cantidad de bloques que ocupa.
Pgina 66 de 70
Ventajas:
Requiere menos reposicionamientos del cabezal para escritura y lectura al ser posiciones
contiguas
Desventajas:
Fragmentacin externa a causa de la asignacin previa. A medida que se asignan y borran
archivos, el espacio libre del disco se descompone en pequeos fragmentos.
Asignacin enlazada
Asigna bloques dinmicamente a medida que se necesiten (aunque es posible la asignacin
previa). Para poder seguir la cadena de bloques de un archivo, cada bloque contendr un puntero
al siguiente bloque de la cadena. La tabla de asignacin de archivos necesita una sola entrada por
cada archivo que muestre el bloque de comienzo y la longitud del archivo.
Pgina 67 de 70
Ventajas:
No tiene fragmentacin externa al asignar un bloque cada vez y pudiendo ser de forma no
continua (asignacin dinmica).
Desventajas:
Requiere muchos reposicionamientos del cabezal para escritura y lectura al ser posiciones
no contiguas (muy dispersas en el disco).
No es eficiente para acceso directo. Se debe recorrer la cadena hasta el bloque deseado.
Asignacin indexada
La tabla de asignacin de archivos contiene un ndice separado de un nivel para cada archivo. El
ndice posee una entrada para cada seccin asignada al archivo. El ndice del archivo se guardar
en un bloque aparte y la entrada del archivo en la tabla de asignacin apuntar a dicho bloque.
Pgina 68 de 70
Ventajas:
No tiene fragmentacin externa al asignar un bloque cada vez y pudiendo ser de forma no
continua (asignacin dinmica).
Desventajas:
Requiere muchos reposicionamientos del cabezal para escritura y lectura al ser posiciones
no contiguas (muy dispersas en el disco).
Utiliza un vector que est formado por un bit por cada bloque en el disco. Cada entrada 0 corresponde a un
bloque libre y cada 1 corresponde a un bloque en uso.
La cantidad de memoria (en bytes) requerida para un mapa de bits en bloques se puede calcular de la siguiente
manera: Tamao del disco en bytes / (8 x tamao del bloque en el sistema de archivos)
Ventajas:
Desventajas:
Rendimiento inaceptable cuando la tabla de bits es grande. La tabla de bits puede ser grande como
para almacenarla en memoria principal y una tabla en disco no es eficiente porque requiere E/S
cada vez que se necesite un bloque (parte de la ineficiencia se puede reducir manteniendo
estructuras auxiliares que resumen el contenido de subrangos de la tabla de bits)
Secciones libres encadenadas
Las secciones libres pueden encadenarse mediante un puntero y un valor de longitud en cada seccin libre.
Ventajas:
Sobrecarga de espacio insignificante. No se necesita una tabla de asignacin de disco, sino
simplemente un puntero al comienzo de la cadena y la longitud de la primera seccin.
Desventajas:
Disco fragmentado despus de un tiempo de uso
Se ralentiza la creacin del archivo al tener que actualizar los punteros del bloque.
Indexacin
La tcnica de indexacin trata el espacio libre como un archivo y utiliza una tabla de ndices tal y como se
describi en la asignacin de archivos. Por motivos de eficiencia, el ndice se debera utilizar en base a
secciones de tamao variable en lugar de bloques. Por tanto, hay una entrada en la tabla por cada seccin libre
en el disco. Esta tcnica proporciona soporte eficiente a todos los mtodos de asignacin de archivos.
Pgina 70 de 70
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: