Beruflich Dokumente
Kultur Dokumente
ndice de contenido
Fundamentos bsicos de los sistemas operativos
Captulo 1. Consideraciones generales de los sistemas operativos.........................7
Objetivos..................................................................................................................7
Servicios de un sistema operativo............................................................................7
Evolucin histrica...................................................................................................7
Tipos de sistemas operativos....................................................................................8
Llamadas al sistema.................................................................................................9
Estructura del ncleo de un sistema operativo.........................................................9
Captulo 2. Descripcin y control de procesos........................................................11
Espacio de direcciones de memoria lgica o virtual de un proceso.......................11
Tipos de procesos...............................................................................................11
Estados de un proceso........................................................................................11
Control de los procesos..........................................................................................12
Estructuras de control del sistema operativo.....................................................12
Creacin de procesos.........................................................................................12
Terminacin de procesos...................................................................................13
Cambio de proceso............................................................................................13
Ejecucin del sistema operativo.............................................................................13
Procesos multihilo..................................................................................................13
Control de hilos.................................................................................................14
Tipos de hilos.....................................................................................................14
Principales configuraciones en funcin del nmero y tipo de hilos soportados
por un sistema operativo....................................................................................15
Captulo 3. Planificacin de procesos......................................................................17
Niveles de planificacin.........................................................................................17
Planificador a corto plazo..................................................................................17
Planificador a medio plazo................................................................................18
Planificador a largo plazo..................................................................................18
Criterios generales considerados en la planificacin de procesos..........................18
Criterios considerados en la planificacin del procesador.....................................18
Expropiabilidad del procesador..............................................................................19
Algoritmos de planificacin...................................................................................19
Primero en llegar primero en ser servido FCFS..........................................19
Primero el proceso ms corto SJF..................................................................19
Menor tiempo restante.......................................................................................20
Planificacin de turno rotatorio.........................................................................20
Planificacin basada en prioridades..................................................................20
Planificacin basada en mltiples colas de prioridad........................................21
Mltiples colas de prioridad y realimentacin..................................................21
Planificacin por tiempo lmite.........................................................................22
Eleccin del algoritmo de planificacin............................................................22
Planificacin de hilos.............................................................................................22
Captulo 4. Sincronizacin y comunicacin de procesos.......................................23
Exclusin mutua.....................................................................................................23
Interaccin entre procesos concurrentes............................................................23
ii
Condiciones de carrera......................................................................................23
Secciones crticas...............................................................................................23
Descripcin de la exclusin mutua....................................................................23
Soluciones software a la exclusin mutua.........................................................24
Soluciones a la exclusin mutua con apoyo del hardware................................25
Semforos...............................................................................................................25
Implementacin.................................................................................................25
Utilidad de los semforos..................................................................................27
Sincronizacin de procesos...............................................................................27
Problemas potenciales asociados a un mal uso de los semforos.....................27
Problemas clsicos de sincronizacin de procesos concurrentes...........................28
El problema de los productores y los consumidores.........................................28
El problema de los lectores y los escritores......................................................28
Monitores...............................................................................................................29
Definicin..........................................................................................................29
Estructura y declaracin de un monitor.............................................................29
Uso de los monitores.........................................................................................30
Paso de mensajes....................................................................................................30
Definicin..........................................................................................................30
Especificacin de la fuente y el destino del mensaje........................................31
Esquemas de sincronizacin..............................................................................31
Formato y almacenamiento de los mensajes.....................................................32
Uso del paso de mensajes..................................................................................32
Captulo 5. Interbloqueo..........................................................................................33
Introduccin...........................................................................................................33
Definicin y condiciones del interbloqueo............................................................33
Grafos de asignacin de recursos...........................................................................33
Prevencin de interbloqueos..................................................................................34
Eliminacin de la condicin de exclusin mutua..............................................34
Eliminacin de la condicin de retencin y espera...........................................34
Eliminacin de la no existencia de expropiacin..............................................34
Eliminacin de la espera circular......................................................................34
Evitacin de interbloqeos.......................................................................................34
Estado de la asignacin de recursos: estados seguros y estados inseguros.......35
Denegacin de asignacin de recursos: el algoritmo del banquero...................35
Denegacin de la iniciacin de un proceso.......................................................35
Deteccin y recuperacin de interbloqueos...........................................................36
Algoritmos de deteccin de interbloqueos........................................................36
Frecuencia de invocacin del algoritmo de deteccin de interbloqueos...........36
Tcnicas de recuperacin del interbloqueo.......................................................36
Ventajas e inconvenientes..................................................................................36
Otras estrategias de tratamiento de interbloqueos..................................................37
Captulo 6. Administracin de memoria.................................................................38
Espacio de ncleo y espacio de usuario............................................................38
rea de intercambio en memoria secundaria....................................................38
Asignacin de memoria en sistemas monoprogramados.......................................39
Particionamiento fijo..............................................................................................40
Particiones de igual tamao...............................................................................40
Particiones de distinto tamao...........................................................................40
Traduccin de direcciones y proteccin............................................................40
iii
Ventajas e inconvenientes..................................................................................41
Particionamiento dinmico.....................................................................................41
Asignacin de espacio de memoria principal....................................................41
Traduccin de direcciones y proteccin............................................................42
Ventajas e inconvenientes..................................................................................42
Paginacin simple..................................................................................................42
Traduccin de direcciones.................................................................................43
Tablas de pginas paginadas..............................................................................44
Tablas de pginas invertidas..............................................................................45
Proteccin..........................................................................................................46
Comparticin de pginas...................................................................................46
Ventajas e inconvenientes..................................................................................46
Segmentacin simple.............................................................................................46
Traduccin de direcciones.................................................................................47
Proteccin..........................................................................................................47
Comparticin de segmentos..............................................................................47
Ventajas e inconvenientes..................................................................................47
Segmentacin con paginacin simple....................................................................48
Captulo 7. Memoria virtual....................................................................................49
Paginacin por demanda........................................................................................49
Reinicio de instrucciones...................................................................................50
Localizacin de las pginas en memoria secundaria.........................................50
Bloqueo de marcos de pgina............................................................................50
Tratamiento de un fallo de pgina.....................................................................50
Conjunto de trabajo de un proceso.........................................................................51
Reemplazamiento de pginas.................................................................................51
Algoritmo de reemplazamiento ptimo.............................................................52
Algortimo de reemplazamiento LRU................................................................52
Algoritmo de reemplazamiento mediente envejecimiento................................52
Algoritmo de reemplazamiento FIFO...............................................................52
Algoritmo de reemplazamiento de la segunda oportunidad (algoritmo del reloj)
...........................................................................................................................53
Algoritmo de reemplazamiento del reloj considerando el conjunto de trabajo.53
Conclusiones sobre los algoritmos de reemplazamiento...................................54
Asignacin de memoria principal..........................................................................54
Control de carga.....................................................................................................55
Copia en memoria secundaria de pginas modificadas..........................................55
Consideraciones adicionales sobre la paginacin por demanda.............................55
Tamao de pgina..............................................................................................55
Paginacin por adelantado.................................................................................56
Reserva de marcos libres...................................................................................56
Captulo 8. Gestin de la Entrada/Salida...............................................................57
Peticiones de E/S....................................................................................................57
Capas del ncleo de un sistema operativo encargadas de la E/S...........................57
Subsistema de E/S.............................................................................................57
Drivers de dispositivos de E/S...........................................................................58
Manejador de las interrupciones........................................................................58
Buffering................................................................................................................58
Estrategias..........................................................................................................59
Cach de buffers de bloques de disco................................................................59
iv
Spooling.................................................................................................................59
Detalles de la gestin de E/S de algunos dispositivos............................................59
Relojes...............................................................................................................59
Discos duros......................................................................................................60
Dispositivos de E/S adaptados al usuario..........................................................62
Captulo 9. Gestin de archivos...............................................................................64
Archivos.................................................................................................................64
Tipos de archivos...............................................................................................64
Atributos de un archivo.....................................................................................64
Estructura interna de un archivo........................................................................64
Mtodos de acceso a un archivo........................................................................65
Operaciones sobre archivos...............................................................................65
Directorios..............................................................................................................66
Estructura de los directorios..............................................................................66
Operaciones sobre directorios...........................................................................67
Sistemas de archivos..............................................................................................67
Estructura de un sistema de archivos.................................................................67
Montaje de un sistema de archivos....................................................................68
Asignacin de espacio.......................................................................................68
Gestin del espacio libre...................................................................................69
Implementacin de directorios..........................................................................70
Consistencia.......................................................................................................70
Recuperacin de archivos......................................................................................71
Copias de seguridad...........................................................................................71
Instantneas.......................................................................................................71
Eficiencia................................................................................................................72
Captulo 1.
Un sistema operativo es una capa de software cuya funcin es administrar todos los dispositivos
hardware del computador y suministrar para usuarios y programas una interfaz apropiada con el
hardware.
Objetivos
Gestionar eficientemente los dispositivos hardware
Ofrecer una interfaz cmoda a los usuarios. El SO proporciona una mquina virtual que envuelve al
hardware facilitando su programacin. Capas:
Hardware
Programas de aplicacin.
Ejecucin de programas.
Comunicacin y sincronizacin.
Proteccin y seguridad.
Contabilidad.
Evolucin histrica
Procesamiento serie
Monousuario y multiusuario.
Monoprogramado y multiprogramado.
Sistemas por lotes o batch, planificacin del procesador simple; suele utilizarse E/S por
programa; gestin sencilla de la memoria principal: bloque del SO y bloque de programas
Sistemas de tiempo real. Pueden ser en tiempo real estricto o suave. Las primeras requieren
un tiempo lmite preestablecido de respuesta. Utilizan un sistema de planificacin de tipo
expropiativo, en el que el proceso con ms prioridad toma el control. la gestin de la
memoria es menos exigente. (VxWorks, QNX)
Sistemas hbridos. Soportan tanto trabajos por lotes como aplicaciones interactivas o
aplicaciones suaves en tiempo real. Prioridad de ejecucin mnima para trabajos por lotes,
media para interactivos y mxima para aplicaciones en tiempo real. (UNIX, LINUX)
Sistemas integrados.
Sistemas paralelos o multiprocesador. Comparten bus, reloj, memoria, E/S. Se les suele
denominar como sistemas fuertemente acoplados. Los SO paralelos ms comunes utilizan
multiprocesamiento simtrico. Cada procesador ejecuta su propia copia del SO, que se
comunican entre ellas cuando es necesario.
Llamadas al sistema
La mayora de procesadores disponen de dos modos de operacin: modo ncleo y modo usuario.
Los programas de usuario deben hacer uso de llamadas al sistema para poder utilizar los recursos
hardware a travs del SO.
La llamada al sistema provoca una trampa (tramp), haciendo que el procesador conmute a modo
ncleo. Para poder acceder a los parmetros de la llamada al sistema se utiliza:
Cargar los parmetros en registros. Mtodo sencillo, puede que no se tengan registros
suficientes.
Comunicaciones.
Gestin de dispositivos.
Subsistema de E/S.
Estructura monoltica o simple. Todos los subsistemas y las estructuras de datos del ncleo
se ubican en un mismo mdulo lgico. El software del ncleo est escrito como un conjunto
de procedimientos. Un procedimiento es visible por todos los dems. (MSDOS, UNIX
tradicional).
Estructura en mdulos. Cada mdulo con una interfaz bien definida. De fcil mantenimiento
con una ligera merma en el rendimiento.
Estructura en capas o niveles. El ncleo se organiza en capas de software en la que las capas
pueden invocar a las capas inferiores, pero nunca a las superiores. Un esquema tpico en seis
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos
10
Captulo 2.
Un proceso es un programa en ejecucin. Tambin puede definirse como la entidad que se puede
asignar y ejecutar en un procesador: es la unidad bsica de trabajo de un sistema informtico.
Si un programa se ejecuta ms de una vez, cada copia tendr su propio proceso asignado.
Cuando un proceso puede interactuar con los usuarios se dice que est en primer plano
(foreground), en caso contrario un proceso se encuentra en segundo plano (background).
Estados de un proceso
Aunque el nmero y el nombre depende de cada sistema operativo, algunos de los estados ms
habituales son:
Nuevo.
Preparado.
Ejecutndose.
Bloqueado.
Terminado.
Adems, nos podemos encontrar con otros dos estados disponibles en algunos sistemas operativos:
11
El sistema operativo debe mantener informacin sobre el estado de cada proceso y cada recurso.
Esta informacin se guarda en tablas en memoria
Tabla de procesos. Cada entrada en la tabla almacena un PCB (Process Control Block) con
diversa informacin:
Identificador del proceso.
Identificador del usuario.
Estado del proceso.
Contenido de algunos registros del procesador.
Informacin de planificacin del proceso.
Informacin de localizacin de la memoria principal asociada al proceso.
Informacin de tipo estadstico.
Informacin de estado de E/S.
Informacin sobre el evento por el que el proceso ha entrado en modo bloqueado.
Tablas de archivos, con informacin sobre archivos abiertos por los procesos.
Adems, podemos encontrar las pilas de control del sistema o pilas del sistema operativo, as como
pilas de interrupciones, colas de procesos preparados y bloqueados, etc.
Creacin de procesos
Un proceso en ejecucin invoca una llamada al sistema para crear otro proceso.
UNIX y Linux, mediante llamada a fork. Crea una copia exacta del proceso padre.
Cuando el hijo es planificado para ejecutarse, invoca a execve, y lanza el otro programa.
12
En Windows,
hijo.
createprocess
Terminacin de procesos
Una vez finalizado el proceso, hay que liberar los recursos que utilizaba. El PCB no se elimina
inmediatamente, sino despus de haber auditado los datos.
Cambio de proceso
Para proceder a un cambio de contexto, el sistema operativo sigue los pasos siguientes:
El tiempo de conmutacin es el tiempo que se tarda en completar todo el proceso debido a las
limitaciones fsicas de los componentes.
Procesos multihilo
Un proceso est caracterizado por dos elementos que pueden ser tratados de forma independiente:
13
Traza de ejecucin, hilo de control, hilo o hebra (thread). Hace referencia a las instrucciones
que ejecuta el proceso durante su tiempo de vida.
Los sistemas operativos modernos introducen el modelo de proceso multihilo: un proceso puede
estar formado por mltiples hilos. Estos sistemas operativos utilizan los procesos como unidad de
asignacin del procesador que sigue una determinada traza de ejecucin y tiene asignado una pila
de usuario, espacio de almacenamiento y un bloque de control del hilo. Este bloque de control
contiene el identificador numrico del hilo, el estado del hilo, su prioridad de ejecucin y los
valores de los registros. A un hilo se le llama a veces proceso ligero (lightweigth process).
Cada hilo perteneciente a un proceso comparte con los restantes hilos del mismo proceso los
mismos recursos bloque de control del proceso, etc.
Ventajas de procesos multihilos respecto de mltiples procesos:
Ahorro de recursos.
Comunicacin ms eficiente.
Como sucede con los procesos, un hilo puede encontrarse durante su tiempo de vida en diferentes
estados. En un determinado instante, un proceso se encontrar en un estado determinado que no
tiene por que coincidir con el estado de sus hilos. Obviamente, el estado del proceso limita el estado
en el que pueden encontrarse sus hilos: si un proceso se encuentra en estado preparado ninguno de
sus hilos puede estar ejecutndose.
La planificacin de la cola de hilos se realiza a nivel de hilos. Cuando un hilo termina su ejecucin
simplemente desaparece, ya no es planificable.
El poder realizar un cambio de hilo dentro de un mismo proceso cuando un hilo cambia al estado
bloqueado depende del tipo de implementacin de hilos que soporte el sistema operativo.
En el momento que un hilo finaliza su ejecucin sus recursos asignados son liberados. Un proceso
no puede entrar en estado terminado hasta que no hayan finalizado todos sus hilos.
Tipos de hilos
Hilos a nivel de usuario. O, simplemente, hilos de usuario, son implementados por una biblioteca
de hilos que se ejecuta a nivel de usuario. Inicialmente, una aplicacin comienza con un solo hilo.
Este proceso puede iniciar otro hilo invocando a la funcin apropiada de la biblioteca de hilos del
SO.
Cada proceso requiere una tabla de hilos, en la que cada entrada, denominada bloque de control del
hilo, mantiene la informacin asociada al hilo (contador del programa, registro de pila, etc.) Esta
tabla es similar a la tabla de procesos.
La realizacin del cambio de hilo dentro de un mismo proceso se realiza sin necesidad de realizar
un cambio de modo y un cambio de contexto. Toda esta actividad tiene lugar en modo usuario
dentro del proceso en ejecucin, sin intervencin del sistema operativo. Esto proporciona las
siguientes ventajas:
14
Portabilidad. Al no requerir la intervencin del SO, slo de la biblioteca de hilos que puede
estar disponible para mltiples SO.
Mejora del rendimiento del sistema. Al realizarse toda la gestin de hilos en modo usuario.
La principal desventaja se da en aquellos sistemas operativos que solo soportan un hilo a nivel de
ncleo: cuando un hilo de un proceso entra en estado bloqueado, todo el proceso se bloquea: el
sistema operativo desconoce la existencia de hilos de usuario. Otra desventaja es que cuando un hilo
se est ejecutando no se puede planificar otro hilo de usuario del mismo proceso a no ser que el
primero ceda voluntariamente el uso del procesador.
Hilos a nivel de ncleo
Los hilos del ncleo son implementados y gestionados directamente por el ncleo del SO.
Para ahorrar en tiempo, cuando un hilo se destruye se marca como no planificable pero su
estructura de datos no se elimina, se reutiliza para otros hilos.
Dependiendo del nmero y tipo de hilos soportados por un sistema operativo, se pueden distinguir
las siguientes configuraciones:
15
16
Captulo 3.
Planificacin de procesos
Niveles de planificacin
Colas de procesos para planificar los recursos del procesador:
Un proceso puede pasar por varias colas. La actividad de determinar cundo se entra en una cola o
se pasa a otra se denomina planificacin de procesos y al componente que la realiza planificador. Se
distinguen tres niveles de planificacin:
Planificacin a largo plazo, determina qu trabajo por lotes pasa a ser ejecutado mediante la
creacin de un proceso.
Desde el punto de vista lgico, todo planificador se puede dividir en tres componentes o elementos:
Algunas circunstancias que hacen necesaria una llamada al planificador a corto plazo son:
Cuando un proceso entra en estado bloqueado en espera de que se producza algn evento.
17
Uso equilibrado de los recursos. Mantener todos los recursos ocupados / optimizados.
Tiempo de respuesta (response time). Tiempo desde que se lanza una orden hasta que se
obtiene el resultado.
Plazo de finalizacin (deadline). Tiempo mximo que un proceso tiene para ser completado
en un sistema de tiempo real.
La eleccin de los criterios a optimizar depende del tipo de sistema operativo. En un sistema por
lotes debe intentar maximizar la utilizacin del procesador y la productividad, uno de tiempo
compartido el tiempo de respuesta y uno de tiempo real el tiempo de entrega.
18
Normalmente, el planificador optimiza los valores medios de los criterios que considera.
Es ms importante minimizar la varianza en el tiempo de respuesta que minimizar el tiempo de
respuesta promedio.
Cuando se intentan optimizar varios criterios simultneamente, se debe tener en cuenta que pueden
ser incompatibles entre s.
Planificacin del procesador expropiativa (preemptive) si el proceso que se est ejecutando puede
ser interrumpido en cualquier momento.
Algoritmos de planificacin
Primero en llegar primero en ser servido FCFS
No expropiativo.
Favorece a los procesos limitados por el procesador frente a los limitados por E/S.
No expropiativo.
19
Se suele utilizar en SO por lotes, tanto en el planificador a largo como a corto plazo.
Abreviadamente SRT, Shortest Remaining Time next, versin expropiativa del SFJ.
Algoritmo expropiativo.
Si un proceso finaliza antes que su cuanto, se planifica el siguiente proceso preparado sin
esperar a la finalizacin del cuanto.
Elemento clave para el rendimiento del algoritmo es la eleccin del tamao del cuanto.
20
Puede ser expropiativo y no expropiativo. Cuando es de tipo expropiativo se dice que est
guiado por eventos (event-driven).
Se disponen varias colas cada una de las cuales dispone nicamente de procesos con un
determinado nivel de prioridad o dentro de un rango de prioridades.
Puede producirse inanicin de los procesos de las colas de menor prioridad. Para evitarlo,
puede asignarse a los procesos de cada cola un porcentaje de tiempo de procesador
Requiere definir un mecanismo que regule cmo se modifica la prioridad de los procesos,
esto es, cmo y cundo se produce el paso de una cola a otra.
Para evitarlo puede asignarse un cuanto de mayor tamao conforme disminuye la prioridad
de las colas.
Esta tcnica no evita compeltamente la inanicin, por lo que puede combinarse con la de
envejecimiento de procesos.
21
En los sistemas de tiempo real estricto el tiempo de servicio de algunos procesos debe completarse
en un determinado plazo o tiempo lmite (deadline).
El planificador slo admite en la cola de procesos preparados aquellos a los que pueda
garantizar que su tiempo de servicio se atender dentro de su tiempo lmite, en funcin de
los tiempos de espera existentes en la cola.
En primer lugar deben fijarse los criterios de seleccin y a continuacin evaluar los diferentes
algoritmos de planificacin usando algn mtodo de evaluacin.
Modelado determinista. Evalua cada algorimo candidato usando una carga de trabajo
predeterminada e idntica para todos ellos. Es difcil establecer esta carga de manera realista
y manejable.
Planificacin de hilos
La planificacin de hilos depende de los tipos de hilos soportados por el SO.
Si se soportan hilos del ncleo el sistem operativo los planifica utilizando alguno de los
mtodos vistos anteriormente.
El planificador debe tener en cuenta la sobrecarga que puede producir en el sistema el
cambio de contexto entre hilos de distintos procesos.
22
Captulo 4.
La ejecucin concurrente de procesos presenta varios problemas, todos ellos asociados al hecho de
que no es posible predecir la velocidad relativa de ejecucin de un proceso. Dicha velocidad es
funcin de la poltica de planificacin del sistema operativo, de la forma en que se tratan las
interrupciones y de la actividad de los otros procesos en el sistema.
Uno de los principales problemas de la ejecucin concurrente de procesos es que el acceso a
recursos globales compartidos (memoria, dispositivos de E/S, etc) debe controlarse de alguna forma
si se desea que el resultado de la ejecucin de un proceso sea independiente de la velocidad de
ejecucin del proceso con respecto a los otros procesos concurrentes.
Exclusin mutua
Interaccin entre procesos concurrentes
Procesos independientes, que se ejecutan sin tener en cuenta la existencia de otros procesos.
Condiciones de carrera
El problema denominado condicin de carrera (race condition) surge cuando mltiples procesos
independientes se ejecutan concurrentemente y acceden para leer o escribir en un recurso
compartido. En ese caso el resultado final de la ejecucin depende del rden en que se hayan
planificado los procesos.
Secciones crticas
Las condiciones de carrera se evitaran si el uso de un recurso por parte de un proceso excluye su
uso para los restantes. Este mecanismo se denomina de exclusin mutua.
Sin ms requisitos adicionales la exclusin mutua puede producir problemas como interbloqueos o
inanicin de procesos.
23
Para evitar esto, los mecanismos de exclusin mutua deben cumplir cinco requisitos:
1. Slo un proceso puede estar a la vez en una seccin crtica asociada a un recurso R.
2. No pueden realizarse suposiciones sobre la velocidad relativa y prioridad de ejecucin de los
procesos concurrentes.
3. Un proceso que no est ejecutando una seccin crtica asociada a un recurso R no est
impidiendo o bloqueando el uso de R a otros procesos.
4. Debe evitarse la inanicin de procesos. Un proceso no debe permanecer en su seccin crtica
por tiempo ilimitado.
5. Si ningn proceso est en una seccin crtica asociada a R, debe concederse rpidamente el
acceso a esa seccin crtica al proceso que lo solicite.
Soluciones software a la exclusin mutua
No presuponen el apoyo del sistema operativo o del hardware del ordenador para su
implementacin.
Hacen uso de un bucle de comprobacin del valor de una o varias variables cerrojo (lock). La
comprobacin del valor en un bucle se denomina cerrojo con vuelta (spinlock). Este tipo de espera
se denomina espera activa (busy waiting) o espera cclica (spin waiting).
Uso de cerrojo y alternancia estricta. Esta solucin considera la existencia de una variable
global de acceso que se usa como cerrojo y que puede tomar como valor el identificador
numrico de un proceso.
Este mtodo posee dos inconvenientes: la velocidad de ejecucin se ve limitada por el
proceso ms lento. Adems, si un proceso falla antes de cambiar el valor de la variable
global el otro proceso quedar bloqueado indefinidamente.
Algortimo de Peterson. Simplificado para dos procesos, se dispone de un vector donde cada
proceso establece a TRUE su deseo de acceder al recurso. Adems, se guarda en una variable
global el identificador del otro proceso. Un bucle de espera cclica comprueba que la
peticin pueda ser atendida y que el recurso no est siendo utilizado por el otro proceso.
#define FALSE 0
#define TRUE 1
int turno;
int peticion_rec[2];
void acceso_sc(int pid) {
int otro_pid;
otro_pid = 1 pid;
peticion_rec[pid] = TRUE;
turno = otro_pid;
while(turno == otro_pid && peticion_rec[otro_pid == TRUE):
}
Cada proceso llama a acceso_sc antes de acceder a su seccin crtica y al salir llamara a
salida_sc, que establece a FALSE su entrada en peticion_rec. Este algoritmo garantiza la
exclusin mutua ya que el proceso que primero ejecuta la instruccin
peticion_rec[pid] = TRUE obtiene el acceso al recurso. Se evita la posibilidad de
interbloqueo al almacenarse en turno el valor del pid del otro proceso.
24
Uso de instrucciones mquina especiales que bloquean el uso del bus. Se caracterizan por
ser atmicas, es decir, se ejecutan en un nico ciclo de instruccin que no puede ser
interrumpido. Una instruccin tpica en muchos procesadores es probar y configurar (test
and set): ccc r1, cerrojo, que copiara el contenido de la posicin de memoria compartida
cerrojo en el registro r1 y escibe en cerrojo un valor distinto de cero.
El principal inconveniente es que tambin hay que realizar una espera activa para comprobar
el valor del cerrojo. Tambin pueden producirse interbloqueos.
Bloqueo de las interrupciones. Antes de entrar en una regin crtica, puede ejecutarse una
instruccin especial que bloquea el mecanismo de interrupciones del sistema, restaurndolo
al salir de la seccin crtica. Pero el sistema se puede degradar bastante al no permitirse
atender las interrupciones mas prioritarias en el momento en que llegan, Adems, se deja en
manos del proceso la decisin de ceder el procesador, pudiendose quedar el sistema colgado
si este nunca lo devuelve. Esta solucin no sirve en el caso de multiprocesadores.
Semforos
Son un mecanismo de sincronizacin de procesos concurrentes gestionados por los sistemas
operativos. Un semforo es una variable que almacena un valor entero sobre el que se pueden
realizar tres operaciones bsicas:
P(S). [wait].
V(S). [signal].
= N
Los nombres P y V, se suelen encontrar como wait y signal. En este texto wait_sem y signal_sem.
El anterior es un semforo general o semforo con contador. La versin de semforo que slo puede
tomar los valores 0 y 1 se denomina semforo binario o mutex funcionando de la siguiente manera:
wait_sem(S).
signal_sem(S).
Implementacin
El sistema operativo se encarga de asignar las estructuras de datos necesarias para los semforos y
de realizar las operaciones sobre ellos.
Las operaciones wait_sem y signal_sem son implementadas por el ncleo como primitivas o
funciones atmicas, esto es, que se ejecutan como un nico ciclo de instruccin que no puede ser
interrumpido.
En la implementacin de estas primitivas en el ncleo se ha de resolver un problema de exclusin
mutua.
En sistemas monoprocesadores la exclusin mutua se garantiza bloqueando las interrupciones
cuando se est ejecutando una operacin sobre el semforo.
25
struct semaforo {
int contador;
/* Otras variables para implementar el semforo y su cola */
/* que dependen del sistema operativo */
}
void init_sem(semaforo S, int valor)
S.contador = valor;
}
void wait_sem(semaforo S) {
/* Bloqueo de interrupciones */
S.contador = S.contador 1;
if (S.contador < 0) {
/* Aadir el proceso a la cola del semforo */
/* Bloquear el proceso */
/* Desbloquear las interrupciones */
} else {
/* Desbloquear las interrupciones */
}
}
void signal_sem(semaforo S) {
/* Bloqueo de las interrupciones */
S.contador = S.contador + 1;
if (contador <= 0) {
/* Eliminar un proceso P de la cola del semforo */
/* Aadir el proceso P a la cola de procesos preparados */
}
/* Desbloqueo de las interrupciones */
}
Si el procesador no dispone de ninguna instruccin especial, debe emplearse algn algoritmo como
el de Peterson.
La cola puede gestionarse con cualquier algoritmo, siendo FIFO el ms utilizado.
26
Se utilizan tantos semforos como recursos distintos se compartan, protegiendo el acceso a los
recursos mediante secciones crticas.
#define TRUE 1
semaforo S
void proceso_X() {
while(TRUE) {
/* Seccin no crtica */
wait_sem(S);
/* Seccin crtica asociada al recurso a utilizar */
signal_sem(S);
/* Seccin no crtica*/
}
}
Sincronizacin de procesos
En este caso basta con que el proceso que espera la ocurrencia de un suceso ejecute wait_sem para
pasar al estado bloqueado. El proceso que lanza la operacin ejecuta signal_sem para notificar que
el suceso se ha producido, provocando que el proceso que espera prosiga su ejecucin.
#define TRUE 1
semaforo S
void procesoA() {
while(TRUE) {
// . . .
wait_sem(S); // Se bloquea en espera de un evento
// . . .
}
}
void procesoB() {
while(TRUE) {
// . . .
signal_sem(S); // Notifica la ocurrencia de un evento
// . . .
}
}
void main() {
init_sem(S, 0); // Inicia el semforo binario S
ejecucin_concurrente(procesoA, procesoB);
}
Una mala colocacin de las operaciones signal_sem y wait_sem puede provocar errores difciles de
detectar. En los siguientes ejemplos el semforo acceso se utiliza para garantizar exclusin mutua.
signal_sem(acceso);
// Seccin crtica
wait_sem(acceso);
En este caso se ha invertido el rden correcto de las operaciones, por lo que varios procesos podran
estar accediendo al mismo tiempo a la seccin crtica.
wait_sem(acceso);
// Seccin crtica
wait_sem(acceso)
En este ejemplo se escibe un segundo wait_sem en lugar del correcto signal_sem para indicar la
liberacin del recurso. Por tanto, el proceso nunca desbloquear el recurso, ya que una vez
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos
27
finalizada la seccin crtica vuelve a bloquearse. El resto de procesos que intenten acceder a su
seccin crtica tambin sern bloqueados ya que el recurso nunca se ha dado por liberado
producindose un interbloqueo.
Un proceso (o varios) generan datos y otro proceso (o varios) los consumen. Se utiliza un buffer (el
recurso compartido a proteger), en el que los productores escriben, si no est lleno, y los
consumidores leen, si no est vaco.
#define TRUE 1
#define N 100 // Tamao del buffer
semaforo_binario acceso;
semaforo ocupado, disponible;
void productor() {
int dato;
while (TRUE) {
dato = generar_dato();
wait_sem(disponible);
wait_sem(acceso);
escribir_buffer(dato);
signal_sem(acceso);
signal_sem(ocupado);
}
}
void consumidor() {
int dato;
while (TRUE) {
wait_sem(ocupado);
wait_sem(acceso);
leer_buffer(dato);
signal_sem(acceso);
signal_sem(disponible);
}
}
void main() {
init_sem(acceso, 1);
// Inicializa el semforo binario
init_sem(disponible, N); // Indica el espacio disponible
init_sem(ocupado, 0);
// Indica el espacio ocupado
ejecucin_concurrente(productor, consumidor);
}
Se utilizan un semforo binario para acceder al buffer y dos semforos para indicar el espacio
disponible y el ocupado en el buffer, que sern utilizados por los consumidores y productores.
El problema de los lectores y los escritores
Un ejemplo tpico de acceso a bases de datos. Mltiples lectores acceden a los registros, un escritor
slo puede acceder si no hay ningn lector accediendo. Los lectores slo pueden acceder si no se
est escribiendo. Mltiples lectores pueden estar accediendo al mismo tiempo. Slo un escritor
puede acceder.
Para llevar la cuenta del nmero de lectores se utiliza una variable global contador cuyo acceso se
protege mediante un semforo binario. Otro semforo binario controla el acceso a los datos.
28
#define TRUE 1
semaforo_binario S1, S2;
int contador = 0;
void lector() {
while (TRUE) {
wait_sem(S2);
contador = contador + 1;
if (contador == 1) wait_sem(S1);
signal_sem(S2);
leer_dato();
wait_sem(S2);
contador = contador 1;
if (contador == 0) signal_sem(S1);
signal_sem(S1);
procesar_dato();
}
}
void escritor() {
producir_dato();
wait_sem(S1);
escribir_dato();
signal_sem(S1);
}
//
//
//
//
//
//
//
//
void main() {
init_sem(S1, 1);
init_sem(S2, 1);
contador = 0;
}
Monitores
Definicin
wait_mon(X).
signal_mon(X).
29
Los monitores tambin pueden utilizarse para garantizar la exclusin mutua y la sincronizacin
entre procesos.
Por la propia definicin del monitor la exclusin mutua est garantizada defininiendo el acceso a los
recursos compartidos dentro del monitor.
Mediante el uso de las variables de condicin y las operaciones
proporcionar la sincronizacin de procesos.
wait_mon
signal_mon
se puede
del buffer
del monitor
// Variables de condicin
// Variables locales
contador = 0;
}
end monitor
void productor() {
while (TRUE) {
dato = producir_dato();
mon1.escribir(dato);
}
}
void consumidor() {
while (TRUE) {
mon1.leer(dato);
consumir_dato(dato);
}
}
void main() { ejecucion_concurrente(productor, consumidor) }
Paso de mensajes
Definicin
send(destino, mensaje)
receive(fuente, mensaje)
El esquema de sincronizacin.
El medio de almacenamiento.
El proceso emisor enva el mensaje a una estructura de datos compartida, el buzn, que se
implementa como una cola de mensajes.
Un emisor varios receptores: para difundir determinada informacin entre varios procesos.
Esquemas de sincronizacin
Pueden distinguirse varios casos en funcin de si el proceso emisor o receptor pueden pasar al
estado bloqueado al realizar una operacin send o receive.
con bloqueo: el emisor pasa al estado bloqueado hasta que el mensaje sea recibido por
el receptor o por el buzn.
Send
Send
Receive
Receive
El esquema ms utilizado es el envo sin bloqueo y la recepcin con bloqueo. El envio y recepcin
con bloqueo se conoce como cita (rendezvous) entre emisor y receptor.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos
31
Mecanismo de mensajes sin buffer, en el que los mensajes nunca pueden esperar y el proceso
emisor se bloquea en espera de su recepcin.
Se pueden utilizar para intercambiar informacin entre procesos as como para garantizar la
exclusin mutua y la sincronizacin.
#define TRUE 1
#define N 5
// Nmero de procesos
void proceso(int i) {
mensaje testigo;
while (TRUE) {
// Seccin no crtica
receive(buzon1, testigo);
// Seccin crtica
send(buzon1, testigo);
// Seccin no crtica
}
}
void main() {
mensaje nulo;
crear_buzon(buzon1);
send(buzon1, nulo);
ejecucion_concurrente(proceso(1),..., proceso(N));
}
Ejemplo de exclusin mutua utilizando un buzn y send sin bloqueo y receive con bloqueo. El
mensaje se utiliza como paso de testigo para ir pasando la utilizacin del recurso entre procesos.
32
Captulo 5.
Interbloqueo
Introduccin
De forma general, un recurso hardware o software se puede clasificar en:
33
Prevencin de interbloqueos
Esta estrategia persigue eliminar alguna de las cuatro condiciones necesarias para la existencia de
interbloqueos.
Eliminacin de la condicin de exclusin mutua
Puede eliminarse haciendo que un proceso solicite al mismo tiempo todos los recursos que precisa,
no concedindoselos si alguno no se encuentra disponible. Requiere el previo conocimiento de las
necesidades. Puede degradar el rendimiento del sistema o provocar inanicin si un proceso retiene
un recurso y otros esperan a obtenerlo. Los recursos pueden verse infrautilizados.
Eliminacin de la no existencia de expropiacin
La expropiacin solo es posible si el sistema puede salvar el estado en que se encuentra antes de la
expropiacin para poder restaurarlo al mismo estado una vez devuelto. Aumenta la sobrecarga del
sistema.
Eliminacin de la espera circular
Puede eliminarse asignando un nmero a cada recurso y obligando a que los procesos slo puedan
solicitar los recursos en orden ascendente. La principal desventaja es que los recursos deben ser
solicitados en ese orden y no cuando realmente se necesiten.
Evitacin de interbloqeos
Consiste en conceder slo aquellas peticiones de recursos que tengan garantizado que no
conducirn a un estado de interbloqueo.
Un proceso debe especificar por adelantado todos los recursos que va a necesitar. Despus, los va
solicitando conforme los va necesitando. Si la concesin es segura, no conduce a interbloqueo, se
realiza.
El sistema operativo debe llevar la cuenta de los recursos disponibles, el nmero de recursos
asignados a cada proceso y el nmero de recursos que restan por asignar. Adems comprueba que la
asignacin es segura.
34
Captulo 5. Interbloqueo
Se dispone de:
Vector de recursos existentes, RE; cada elemento del vector R En indica la cantidad de instancias n
existentes del recurso R.
Vector de recursos disponibles, RD; donde se indica el nmero de instancias disponibles del recurso
R.
Matriz N de recursos mximos necesitados por cada proceso. Cada fila corresponde a un proceso y
cada columna a un recurso existente en el sistema.
Matriz A de recursos asignados a cada proceso, correspondiendo cada fila a un proceso y cada
columna al nmero de recursos asignados
El estado del sistema con respecto a la asignacin de sus recursos en un instante determinado queda
definido por los vectores RE, RD y las matrices N y A.
Un estado se dice que es seguro si posibilita al menos una secuencia de asignacin de recursos a los
procesos que garantiza que estos puedan finalizar sin producirse interbloqueos. Un estado inseguro
no ofrece esa garanta, aunque no necesariamente tiene que conducir a un estado de interbloqueo.
En la prctica, habra que comprobar que ( N i Ai)R D , esto es, que los recursos necesitados
menos los asignados no superan los recursos disponibles.
Ver ejemplos 5.3 y 5.4 en el libro de teora, pginas 176-179.
Denegacin de asignacin de recursos: el algoritmo del banquero.
Consiste en no conceder una peticin de recurso si esta concesin puede conducir a un estado
inseguro.
Este algoritmo asegura que el nmero de recursos asignados a todos los procesos nunca puede
exceder del nmero de recursos del sistema y que nunca se puede hacer una asignacin peligrosa,
que conduzca a un estado inseguro. Para ello:
1. Se parte de un estado inicial seguro Sk, con k = 0: Sk = {N, A, RE, RD}
2. Cuando un proceso solicita un recurso se simula su concesin y se crea un estado ficticio
S' = {N', A', RE, R'D}
3. Se comprueba si S' es seguro. Si lo es, S k+1 = S', en caso contrario se deniega la peticin y se
bloquea el proceso hasta que se le puedan conceder los recursos.
4. Volver al paso 2.
Denegacin de la iniciacin de un proceso
Esta tcnica consiste en no iniciar un proceso si el nmero mximo de recursos que va a necesitar
durante su ejecucin puede conducir a un estado de interbloqueo. Esta tcnica no es ptima, ya que
supone que todos los procesos van a solicitar simultaneamente todas las instancias de recursos que
van a necesitar.
En la prctica se trata de determinar que el proceso p+1 puede iniciar su ejecucin si el nmero
mximo de instancias j que necesita sumadas al nmero mximo de instancias de esos recursos
necesitadas por los procesos existentes no superan el nmero de instancias existentes.
35
El algoritmo de Coffman emplea RE, vector de recursos existentes; RD, vector de recursos
disponibles; A, matriz de recursos asignados a cada proceso; y M, matriz de recursos adicionales
necesitados por cada proceso.
Inicialmente todos los procesos estn sin marcar y se van marcando aquellos que pueden ser
completados. Los procesos marcados no pueden provocar interbloqueo. Si al finalizar el algoritmo
queda ms de un proceso sin marcar existe interbloqueo.
1. Se marca cada proceso que tenga su fila en A a cero, dado que ese proceso no tiene ningn
recurso asignado y, por tanto, no puede producir interbloqueo.
2. Se realiza la asignacin X = RD, donde X es un vector auxiliar.
3. Para cada proceso i no marcado se comprueba M i X
4. Si no existe ningn i que cumpla la condicin, el algoritmo finaliza. Si existe un proceso i
que cumpla la condicin se marca el proceso y se ejecuta hasta que finalice y libere los
recursos, se realiza X = X + Ai (que incrementa los recursos disponibles con los liberados
por el proceso i) y se vuelve al paso 3.
Frecuencia de invocacin del algoritmo de deteccin de interbloqueos
Invocarlo cada vez que se solicite un recurso aumenta la sobrecarga del sistema. Una solucin
ptima puede ser invocarlo cada T unidades de tiempo o cuando el nivel de utilizacin del
procesador caiga por debajo de un lmite, lo que podra denotar inactividad por existencia de
interbloqueo.
Tcnicas de recuperacin del interbloqueo
Ventajas e inconvenientes
36
Captulo 5. Interbloqueo
Estrategias mixtas, agrupando los recursos en diferentes clases, ordenando las clases para
evitar la espera circular y utilizando para cada clase la estrategia ms oportuna.
Ignorar los interbloqueos. Sistemas como UNIX o Windows no utilizan ninguna estrategia
de tratamiento de interbloqueos.
37
Captulo 6.
Administracin de memoria
Para que un programa pueda ser ejecutado por el procesador primero debe ser cargado en la
memoria principal. El subsistema de administracin de la memoria principal es el encargado de
administrar, junto con el hardware, la memoria principal entre todos los procesos que se ejecutan en
el computador.
Al espacio ocupado por el cdigo, las estructuras de datos y la pila o pilas del ncleo del sistema
operativo se le llama espacio del ncleo. El acceso al espacio del ncleo slo puede realizarse en
modo ncleo.
Al espacio ocupado por la imagen de un proceso, es decir, a su espacio de direcciones de memoria
lgica se denomina espacio de usuario. El acceso al espacio de usuario puede realizarse en modo
ncleo o modo usuario.
En definitiva, en la memoria principal de un sistema multiprogramado pueden distinguirse el
espacio del ncleo, uno o varios espacios de usuario y espacio libre.
rea de intercambio en memoria secundaria
Un programa es un archivo ejecutable que reside en memoria secundaria dentro de algn directorio
del sistema de archivos.
El sistema operativo reserva espacio en memoria secundaria para almacenar las imgenes de los
procesos. A dicho espacio se le denomina rea de intercambio.
Se denomina intercambio (swapping) a la operacin de cargar la imagen de un proceso desde el rea
de intercambio a memoria principal y viceversa. Se habla de intercambio fuera de memoria
principal (swapping out), al paso de la imagen desde el rea de memoria principal al rea de
intercambio y de intercambio dentro de memoria principal (swapping in) al caso contrario.
La operacin de swapping out se suele realizar
39
Puede considerarse que el intercambiador realiza las funciones del planificador a medio plazo.
No se trabaja directamente con el archivo ejecutable asociado al proceso y se trabaja con una
imagen en el rea de intercambio debido a que
La imagen de un proceso es una entidad dinmica cuyo contenido suele diferir del archivo
ejecutable conforme va ejecutndose el proceso.
40
Para garantizar la proteccin del sistema operativo y evitar que los procesos de usuario hagan
referencia a direcciones fsicas del espacio del sistema operativo se utilizan uno o dos registros para
almacenar la direccin base de inicio de la particin y/o el tamao de la particin.
Particionamiento fijo
La forma ms sencilla de gestionar la memoria en sistemas multiprogramados consiste en dividir la
memoria principal en un nmero fijo de N particiones que pueden ser de igual o diferente tamao.
Esta divisin puede realizarse manualmente al arrancar el sistema o de manera automtica.
Esta tcnica se conoce como particionamiento fijo.
Se reserva una particin para contener el sistema operativo en un extremo de la memoria,
normalmente en la parte baja. Las restantes N-1 particiones estarn disponibles para cargar
procesos.
El nmero de particiones define el grado de multiprogramacin del sistema.
El sistema operativo mantiene una tabla de descripcin de particiones que contiene la direccin
fsica de comienzo (direccin base), el tamao y el estado (libre o no) de cada particin.
Particiones de igual tamao
Limita el tamao mximo de los procesos que se pueden cargar en memoria principal. Si un
proceso tiene un espacio de direcciones lgicas mayor que el disponible en la particin no
podr cargarse. Esta limitacin puede soslayarse si el proceso ha sido programado con la
tcnica de overlay o superposicin, mediante la cual slo una parte del proceso precisa que
se encuentre en memoria.
Para asignar las particiones a los procesos, el sistema operativo puede mantener una cola de
procesos por particin. Un proceso ingresa a la cola asociada a la particin de menor tamao que
pueda contenerlo. La planificacin de cada cola se realiza de forma independiente.
Este sistema puede provocar que las particiones de mayor tamao nunca se ocupen. Para resolverlo
puede emplearse una nica cola para todas las particiones. En el momento en que una particin
queda libre, se localiza un proceso que pueda ser cargado segn alguno de estos criterios:
Criterio del mejor ajuste. Busca en toda la cola el proceso de mayor tamao que entre en la
particin. Minimiza la fragmentacin interna pero enlentece la bsqueda y discrimina a los
procesos ms pequeos. Podra solucionarse imponiendo un nmero mximo de veces que
puede ser discriminado un proceso.
La existencia de fragmentacin interna y la limitacin del tamao mximo del proceso que puede
ser cargado en memoria es menor en el caso de utilizar particiones de distinto tamao.
Configurando una particin lo suficientemente grande tambin es posible cargar procesos de mayor
tamao.
41
Particionamiento dinmico
En el particionamiento dinmico el nmero de particiones no es fijo, sino que va variando con el
tiempo. La memoria principal se divide en particiones, una zona contigua de memoria ocupada, y
huecos, una zona contigua de memoria libre. Esta tcnica ha dejado de utilizarse, pero fue usada en
macrocomputadoras como el OS/MVT de IBM.
Cuando un proceso debe ser cargado en memoria el sistema localiza un hueco del mismo tamao o
mayor que el proceso. Ese espacio define una particin y el espacio sobrante define un nuevo
hueco.
Conforme se van cargando procesos se van generando nuevos huecos cada vez ms pequeos, en lo
que se conoce como fragmentacin externa. Una tcnica para solucionar la fragmentacin externa
es la compactacin de memoria, que consiste en agrupar todos los huecos y mover las particiones.
El inconveniente es que se produce alta sobrecarga.
Es comn que se utilice una unidad mnima de asignacin o bloque de memoria mnimo. Esto evita
el tener huecos de pequeo tamao que no pueden ser utilizados. Como contrapartida, se produce
fragmentacin interna, aunque despreciable en comparacin con la tcnica de particionamiento fijo.
El sistema mantiene una o varias estructuras de datos que contengan informacin sobre los huecos y
las particiones. Estas estructuras pueden ser mapas de bits o listas enlazadas simples o dobles.
Manteniendo una lista para huecos y otra para particiones asignadas es posible acelerar el proceso
de bsqueda de hueco disponible.
Asignacin de espacio de memoria principal
42
Algoritmo del primer ajuste (first fit): Se asigna el primer hueco con un tamao igual o
mayor que S. Rpido, pero produce pequeos huecos al comienzo de la estructura de datos.
Algoritmo del siguiente ajuste (next fit): La bsqueda de un hueco de tamao igual o mayor
que S comienza donde se qued la ltima bsqueda. Aunque se pens para evitar los
problemas del anterior, a la larga produce peores resultados.
Algoritmo del mejor ajuste (best fit): Se busca en toda la estructura de datos un hueco que
sea igual o con el mnimo exceso posible del valor de S. Ms lento, produce pequeos
huecos no utilizables que obliga a compactar.
Algoritmo del peor ajuste (worst fit): Se busca el hueco ms grande posible para intentar que
los huecos que se generen sean aprovechables con posterioridad. Distintas simulaciones han
demostrado que no es muy efectivo.
Al igual que en la tcnica de particionamiento fijo, se utilizan dos registros dedicados denominados
registro base y registro lmite.
Cuando se va a ejecutar un proceso el sistema operativo carga en el registro base la direccin fsica
de inicio de la particin de memoria asociada al proceso y en el registro lmite el tamao de la
particin.
Cuando se haga referencia a una direccin lgica dentro del proceso se compara con el valor del
registro lmite. Si se excede, se lanza una excepcin.
Ventajas e inconvenientes
Permite asignar fcilmente ms espacio a procesos cuya regin de datos o pila aumenta por
encima del tamao inicialmente asignado, reubicando el proceso o asignando un hueco
contguo.
Paginacin simple
La tcnica de paginacin consiste en dividir la memoria principal en bloques del mismo tamao, S P,
denominados marcos de pgina o pginas fsicas. El espacio de direcciones de un proceso tambin
se divide en bloques del mismo tamao SP, denominados pginas o pginas lgicas.
Una pgina de un proceso se carga en un marco de pgina libre de memoria principal.
Si CMP es la capacidad de la memoria principal, el nmero N MP de marcos de pgina de tamao SP en
que se divide es
N MP = floor
( )
C MP
SP
Cada marco de pgina se identifica de forma unvoca mediante un nmero de marco de pgina j. De
esta manera, se har referencia al marco de pgina j o marco j de la memoria principal.
43
CX
SP
( )
Cada pgina de un proceso se identifica por un entero positivo i denominado nmero de pgina.
De los marcos en que se descompone la memoria principal, N MP, un nmero determinado de ellos, V,
estn reservados para el ncleo.
Una direccin fsica consta de dos campos: nmero de marco de pgina de f bits y el
desplazamiento dentro del marco, de d bits.
El tamao del campo de nmero de marco de pgina se obtiene a partir del nmero de marcos de
pgina existentes y el tamao del campo desplazamiento a partir del tamao de una pgina o de un
marco de pgina expresado en unidades direccionables.
Una direccin lgica consta de los campos de nmero de pgina, de p bits, y el desplazamiento
dentro de la pgina, de d bits.
El clculo del tamao de cada uno de estos campos es
min f {N MP 2 f } min d {S P 2 d } min p {N P 2 p }
El tamao de una direccin fsica es n= f + d , y el de una direccin lgica m= p+ d . La longitud
de una direccin lgica es menor o igual que la longitud de la direccin fsica.
Para implementar la paginacin generalmente se usan las siguientes estructuras:
Tablas de pginas. A cada proceso se le asigna una. Cada entrada i de la tabla contiene el
marco j donde se encuentra almacenada la pgina i del proceso y los permisos de acceso.
Tabla de marcos de pgina. Con tantas entradas como marcos de pgina tiene la memoria
principal. Cada entrada j contiene su estado libre u ocupado, punteros para crear una lista de
marcos libres y la ubicacin en memoria secundaria de la copia de la pgina i contenida en
el marco.
Lista de marcos libres. Consultada cuando hay que asignar espacio a los procesos. Cuando
hay que asignar un marco se selecciona el primero de la lista. Los nuevos marcos libres se
aaden por el final.
Para que un proceso pueda ser ejecutado, todas sus pginas deben estar cargadas en memoria,
aunque no necesariamente en marcos contiguos. Cuando un proceso de NP pginas de tamao tiene
que ser cargado, el sistema comprueba que existan NP marcos libres. Si los hay, se eliminan de la
lsita de marcos libres, se marcan como ocupados en la tabla de marcos de pgina y se carga en ellos
las pginas del proceso. A continuacin se crea o actualiza la tabla de pginas del proceso indicando
el nmero de marco donde est cargada cada pgina. Adems, si la tabla de pginas no estaba
creada ya, se almacena en el PCB del proceso un puntero a la direccin fsica de comienzo de la
tabla de pginas.
Traduccin de direcciones
El hardware debe disponer de ciertos componentes donde cargar la informacin necesaria para
realizar la traduccin de instrucciones. Pueden ser:
44
Buffer de traduccin de vista lateral (Translation Lookaside Buffer, TLB), una cach de alta
velocidad donde guardar algunas entradas de la tabla de pginas.
El sistema carga en el registro base la direccin fsica DirF0 de comienzo de la tabla de pginas.
Cuando se referencia a una direccin lgica DirL se suma el campo nmero de pgina i a DirF0 para
obtener la direccin fsica DirF1 de la entrada i de la tabla de pginas.
A continuacin se accede a DirF1 en memoria para obtener el marco de pgina j donde se encuentra
la pgina i. Aadiendo el desplazamiento, se obtiene la direccin requerida.
Este mecanismo solo precisa que se cargue el registro base con cada cambio de proceso, lo que
acelera estos cambios.
En contra, la traduccin requiere de un acceso a memoria para localizar en la tabla de pginas el
marco j donde se encuentra la pgina i, lo que produce un retraso en la ejecucin de la instruccin y
hace que este mecanismo se utilice en raras ocasiones.
Traduccin de direcciones con banco de registros
Cuando se produce un cambio de contexto, el sistema operativo carga en el banco de registros una
copia de la tabla de pginas del proceso que se va a ejecutar.
De esta forma, en vez de localizar el nmero de marco donde se aloja la pgina en la tabla de
pginas en memoria se accede a su copia en el banco de registros.
Esta solucin no precisa de ningn acceso a memoria, por lo que es ms rpida, sin embargo slo
puede utilizarse si el tamao de la tabla de pginas no excede del tamao del banco de registros.
El cambio de proceso se ve ralentizado al tener que cargar toda la tabla de pginas en el banco de
registros desde la memoria.
Traduccin de direcciones con un TLB
Un TLB es una memoria cach especial de alta velocidad con una capacidad de entre 8 y 4096
entradas.
Cuando el procesador hace referencia a una direccin lgica DirL, primero se examina en paralelo
todas las entradas del TLB y se verifica si alguna coincide con el nmero de pgina i a que hace
referencia. Si se produce un acierto, se recupera el nmero de marco j de esa entrada para componer
la direccin fsica DirF junto con el campo desplazamiento d.
Si se produce un fallo, se acude a su bsqueda en la tabla de pginas en memoria como se realiza
con el mtodo de registro base y esa entrada se copia al TLB en una posicin libre o, si est lleno,
mediante algn algoritmo de reemplazo.
Cuando se produce un cambio de proceso se carga en el registro base la direccin de la tabla de
pginas y se limpia el TLB, que se ir cargando a medida que se vayan produciendo fallos en la
bsqueda de entradas.
El uso del TLB est a medio camino entre la solucin de registro base y la de banco de registros.
Tablas de pginas paginadas
Para evitar las tablas de pginas de gran tamao estas se pueden descomponer, a su vez, en pginas,
obteniendo una tabla de pginas paginada. De esta forma la tabla de pginas se fragmenta y puede
ubicarse en memoria principal de forma no contigua. Se tienen as dos tipos de pginas:
Pginas ordinarias, que contienen instrucciones y datos del espacio lgico de un proceso.
45
Para localizar en memoria principal a las pginas de una tabla de pginas se utiliza otra tabla de
pginas denominada tabla de pginas de primer nivel o tabla de pginas primaria. A las entradas
de la tabla de pginas original contenidas en una pgina se les denomina tablas de pginas de
segundo nivel o tabla de pginas secundaria.
Para cada proceso existe una tabla primaria y varias de segundo nivel, tantas como pginas ocupe la
tabla de pginas original del proceso.
Existen dos niveles de paginacin: el primero permite localizar el marco de pgina donde se ubican
las pginas de la tabla de pgina original, el segundo permite localizar el marco donde se ubica la
pgina ordinaria i a que hace referencia a que hace referencia la direccin lgica.
El campo nmero de pgina de una direccin lgica se descompone en dos campos:
ndice de tabla primaria, ITP, que contiene el nmero de la tabla de pginas de primer nivel
donde buscar el marco de memoria que contiene a la pgina que ubica la tabla de pginas de
segundo nivel. Si la tabla de pginas de primer nivel tiene N TP1 entradas, el tamao r de ese
campo ser min r {N TP1 2r }
ndice de tabla secundaria, ITS, que contiene el nmero de la entrada de la tabla de pginas
de segundo nivel donde bucar el marco de pgina que contiene a la pgina ordinaria
referenciada. Si la tabla secundaria tiene NTP2 entradas, el tamao s del campo ser
min s {N TP2 2 s }
Otra posible solucin a las tablas de pginas de gran tamao. Se utiliza una nica tabla de pginas
invertida en vez de una tabla de pginas por proceso.
En la tabla invertida, se asocia una entrada por cada marco j de la memoria principal en vez de por
cada pgina i de un proceso. El nmero de entradas es fijo e igual al nmero de marcos.
Cada entrada j contiene el nmero de pgina i que se aloja en el marco j, identificador del proceso al
que pertenece la pgina (Pid), y bits de control.
46
Para traducir una direccin lgica se compara el campo nmero de pgina de la direccin y el Pid
con los campos homnimos de cada entrada de la tabla. Si se produce una coincidencia en la
entrada j, ese marco j es quien contiene la pgina i referenciada que se requiere para construir la
direccin fsica.
La bsqueda de una entrada en la tabla invertida puede ralentizar el tiempo de traduccin. Puede
acelerarse utilizando una tabla hash y TLB.
Proteccin
El espacio lgico de un proceso puede dividirse en las regiones de cdigo, datos y pila. En
paginacin simple, todas las pginas deben estar cargadas en memoria.
En sistemas de tiempo compartido, multiples usuarios pueden estar ejecutando el mismo programa
de manera simultanea. Si el programa posee cdigo reentrante, no modificable, se puede ahorrar
espacio en memoria cargando slo una imagen de ese proceso y compartindola entre todos los
usuarios.
Se utiliza un contador de referencias que lleva la cuenta del nmero de instancias activas. Se
elimina de memoria cuando el contador se hace cero.
Ventajas e inconvenientes
Produce una sobrecarga pequea, la gestin de las estructuras de datos no requiere de mucho
tiempo de procesador.
La principal desventaja es que produce fragmentacin interna, de trmino medio, media pgina por
proceso.
La paginacin es invisible al programador, lo que puede ser considerado tanto como una ventaja
como un inconveniente.
Segmentacin simple
La segmentacin simple es una tcnica de gestin de la memoria que soporta los elementos en los
que se descompone el cdigo de un programa. Bsicamente, el compilador divide el programa en
segmentos. Cada segmento es una entidad lgica conocida por el programador y asociada a una
determinada estructura de datos o mdulo.
Cada segmento, cdigo principal, subrutinas, datos, pila... tiene su propio espacio de direcciones
lgicas. Cuando el sistema operativo crea un proceso asociado a un determinado programa, asigna
a cada segmento un identificador numrico positivo h, el nmero del segmento.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos
47
Una direccin lgica consta de dos campos: el nmero de segmento, de s bits, y el desplazamiento
dentro del segmento, de d bits. En un proceso se pueden tener direcciones lgicas de diferente
tamao, si bien el campo nmero de segmento tendr siempre la misma longitud, el campo
desplazamiento depende del nmero de unidades direccionables que existan en ese segmento en
concreto.
En segmentacin simple, un proceso no puede ser ejecutado si todos sus segmentos no se
encuentran cargados en memoria principal. El sistema operativo debe buscar un hueco para cada
segmento. Si algn segmento no pudiera ser cargado no aborta la carga del proceso.
Adems, en la carga el sistema crea una tabla de segmentos asociados al proceso idexada por
nmero de segmento que contiene la direccin fsica base de cada segmento y su longitud, adems
de otros datos como permisos, ubicacin en memoria secundaria, etc.
Traduccin de direcciones
Si se dispone de un registro base, en cada cambio de contexto el sistema carga en ese registro la
direccin fsica de comienzo de la tabla de segmentos, Dir F0, obtenida del bloque de control del
proceso.
Para llegar a una direccin fsica DirF a partir de una direccin lgica DirL se siguen estos pasos:
Se compara el campo desplazamiento con la longitud del segmento, lanzando una excepcin
si se supera el tamao.
Si el desplazamiento es menor que la longitud se suma la direccin fsica base del segmento
h al desplazamiento indicado en DirL para obtener la direccin fsica DirF equivalente.
Esta tcnica permite que un segmento de cdigo o datos sea compartido por ms de un proceso.
Para ello el sistema operativo mantiene una tabla con los segmentos cargados en memoria principal
en la que se contabilizan las referencias que otros procesos realizan a estos segmentos. Cuando el
contador de referencias se haga cero, el segmento puede ser eliminador de memoria principal.
Ventajas e inconvenientes
Como ventajas:
48
Produce una fragmentacin interna despreciable, de como mximo cercana a una unidad de
asignacin.
Permite manejar con facilidad estructuras de datos que crecen. Si un segmento precisa de
ms espacio, tan solo hay que asignarle un hueco contiguo o reasignarlo a un hueco de
mayor tamao.
Aumenta la sobrecarga del sistema debido a que las estructuras de datos y algoritmos son
ms complejos que en particionamiento dinmico.
49
Captulo 7.
Memoria virtual
La tcnica de gestin de memoria conocida como memoria virtual consiste en tener cargadas en
memoria principal solo aquellas partes (pginas o segmentos) del espacio de direcciones lgicas,
ahora tambin llamadas direcciones virtuales, de un proceso que se van necesitando durante su
ejecucin.
La memoria virtual permite ampliar el grado de multiprogramacin, dado que en memoria principal
caben ms procesos si slo se cargan algunas partes de cada proceso.
La implementacin de la memoria virtual requiere que el hardware soporte el reinicio de las
instrucciones de su repertorio. Adems, suele utilizarse un componente denominado unidad de
gestin de memoria (Memory Management Unit, MMU), encargada de realizar la traduccin de la
direccin virtual a la direccin fsica.
La memoria virtual puede implementarse usando paginacin por demanda (UNIX, Linux,
Windows), segmentacin por demanda (OS/2) o segmentacin con paginacin por demanda
(Multics)
Asignacin de marcos de memoria principal. El sistema debe decidir cuntos marcos asignar
inicialmente a cada proceso.
Se mantienen las siguentes estructuras de datos: tabla de marcos de pgina, listas de marcos libres
y tablas de pginas.
Cuando un proceso entra en estado preparado para ejecucin se crea una tabla de pginas en
memoria principal en la que cada entrada contiene, al menos, los siguientes campos:
Referenciada, un bit activo cuando la pgina es referenciada por una direccin virtual.
Modificada, un bit que indica si la pgina ha sido modificada y debe ser actualizada en
memoria secundaria.
51
Reinicio de instrucciones
Un fallo de pgina puede producirse tanto en la fase de bsqueda, al intentar traducir la siguiente
instruccin a ejecutar, como de ejecucin, en la bsqueda de operandos.
La arquitectura del computador debe poder reiniciar la instruccin desde su inicio, fase de
bsqueda. Para ello, se suele disponer de un registro donde se almacena el valor del registro
contador de programa CP antes de iniciar la fase de bsqueda.
En caso de que el procesador soporte direccionamiento indexado tambin deber guardarse el valor
del registro ndice por si fuera necesario restaurarlo tras un fallo de pgina.
Localizacin de las pginas en memoria secundaria
Cuando la referencia a una pgina produce un fallo de pgina el sistema operativo debe leer esa
pgina desde la memoria secundaria y copiarla a la memoria principal. De igual modo, si no hay
marcos libres en la memoria principal el sistema operativo debe seleccionar una pgina para ser
reemplazada y, si esta ha sido modificada o no existe en el rea de intercambio, debe ser copiada
all.
El sistema operativo puede buscar en dos posibles localizaciones de memoria secundaria:
Bloque de disco de un archivo ejecutable. Parte de las pginas en que se divide el espacio de
direcciones, cdigo y datos, son creadas por el sistema operativo a partir del archivo
ejecutable del que es instancia el proceso.
Bloque de disco del rea de intercambio, utilizada para el almacenamiento de las pginas de
un proceso cuando se intercambia fuera y para el almacenamiento de las pginas que han
sido seleccionadas para ser reemplazadas tras un fallo de pgina.
Cada bloque del rea de intercambio se identifica por un nmero de bloque o direccin de disco. El
sistema mantiene ciertas estructuras de datos para localizar los bloques donde se encuentran
almacenadas las pginas.
Algunos sistemas copian por adelantado al rea de intercambio todas las pginas de un proceso
cuando es creado con el fin de acelerar el tratamiento de los fallos de pgina. Pero si el espacio de
direcciones del proceso crece es necesario aumentar el tamao en disco por lo que hay que mover
todo el espacio del proceso. Para evitar esto, se copia el proceso por partes, datos, cdigo, etc. de
manera que si slo es preciso crecer la parte de datos el trabajo es menor.
Otros sistemas no copian el espacio de direcciones completo a memoria de intercambio, slo las
pginas que son necesarias. En ese caso, se utiliza una estructura de datos denominada tabla de
disco donde se relaciona cada pgina con el bloque de disco donde se encuentra alojada.
Bloqueo de marcos de pgina
Se dice que un marco de memoria est bloqueado o pinchado (pinning) si su contenido no puede ser
reemplazado. Este bloqueo resulta til si el marco contiene informacin que conviene que no sea
borrada, por ejemplo los marcos reservados para alojar el espacio del ncleo.
Tratamiento de un fallo de pgina
Cuando durante el ciclo de ejecucin de una instruccin se hace referencia a una determinada
posicin de memoria, la direccin de memoria virtual es pasada a la MMU para traducirla a una
direccin fsica. sta comprueba que la direccin est dentro del rango de direcciones permitido.
Si lo est accede a la tabla de pginas y comprueba el bit de validez o presencia. Si est activado, la
pgina se encuentra en memoria principal, con lo que la MMU toma el valor del campo de marco de
pgina para construir la direccin fsica junto al desplazamiento de la direccin virtual.
52
Una pgina miembro de un conjunto de trabajo no debe ser seleccionada como pgina
vctima para ser reemplazada ya que provocara un nuevo fallo de pgina.
Un proceso debe tener asignados el suficiente nmero de marcos para poder tener cargado
en memoria su conjunto de trabajo. En otro caso estar provocando continuamente fallso de
pgina produciendo el fenmeno de sobrepaginacin o trasiego (thrashing)
Reemplazamiento de pginas
El reemplazamiento de pginas consiste en seleccionar una pgina k cargada en un marco j de
memoria principal para ser reemplezada por la pgina i a la que haca referencia la direccin virtual
que produjo el fallo de pgina. La pgina seleccionada para ser reemplazada se denomina pgina
53
vctima. El conjunto de marcos candidatos hace referencia a los marcos de memoria principal donde
se encuentran almacenadas las pginas candidatas a ser reemplazadas.
Selecciona para ser reemplazada la pgina del conjunto de pginas candidatas a ser reemplazada
que tardar ms en volver a ser referenciada. Esto obliga a conocer con antelacin qu direcciones
virtuales van a ser referenciadas, pero esto no es posible y de ah que este algoritmo no pueda ser
implementador en la prctica pero s sirve como referencia para comparar con otros algoritmos.
Algortimo de reemplazamiento LRU
El algoritmo de reemplazamiento FIFO selecciona para ser reemplazada aquella pgina del conjunto
de pginas candidatas a ser reemplazadas que lleva ms tiempo cargada en memoria principal.
54
Para ello, el sistema mantiene una lista enlazada o cola FIFO en la que cada entrada contiene el
nmero de pgina de una pgina del conjunto de pginas candidatas a ser reemplazadas. Cuando
una pgina se carga en memoria se coloca al final de la lista. As, la pgina que se encuentre en la
cabeza de la lista indica la pgina que lleva ms tiempo cargada en memoria y ser la elegida para
ser reemplazada.
La gestin de este algoritmo requiere muy poco tiempo de proceso. Es el ms sencillo de programar
y de implementar, pero no tiene una buena tasa de aciertos y adems pacede la anomalua de
Belady.
Algoritmo de reemplazamiento de la segunda oportunidad (algoritmo del reloj)
Es una variante del algortimo FIFO que busca la pgina que lleva ms tiempo cargada en memoria
y no ha sido referenciada recientemente.
Bsicamente se consulta el bit referenciada, r, de la pgina que se encuentra al principio de la cola
FIFO, si r es cero, entonces es seleccionada para ser reemplazada. Si r es 1, se pone a cero y se
enva la pgina al final de la cola.
Se obtiene un mejor rendimiento que con FIFO pero a costa de mayor sobrecarga, ya que hay que
estar moviendo elementos en la cola.
Una forma de disminuir la sobrecarga es utilizar una lista o cola circular, as el puntero ndice de
cola es quien se mueve y no los elementos de la cola.
En este caso el algoritmo recibe el nombre de algoritmo del reloj.
Si adems del bit referenciada se tiene en cuenta el bit modificada, m, se mejora sustancialmente la
efectividad. En este caso nos encontramos con varias posibilidades.
Con estas premisas, el algoritmo del reloj busca en primer lugar, a partir de la posicin del puntero,
una pgina se busca una pgina con r = 0 y m = 0, si no se encuentra se busca entonces alguna con
r = 0 y m = 1, pero actualiza todos los r = 1 y los pone a cero. Si no encuentra ninguna vuelve a
buscar r = 0 y m = 0, de no encontrarla por cuarta vez busca una pgina con r = 0 y m = 1, con la
seguridad de que ahora s tendr xito ya que en la segunda ronda todos los r se pusieron a cero.
Algoritmo de reemplazamiento del reloj considerando el conjunto de trabajo
El algoritmo del reloj puede ser mejorado si se considera el conjunto de trabao de un proceso. A este
algoritmo resultante se le conoce con el nombre de algoritmo WSClock.
En este caso, cada entrada i de la pgina de un proceso debe tener un campo denominado tiempo de
ltimo uso, que contiene el tiempo virtual de ltimo uso de la pgina. Cuando se produce un fallo de
pgina se examina el bit r y si est a 1, se escribe en ese campo el tiempo virtual del proceso.
La diferencia del tiempo virtual del proceso con el tiempo almacenado nos da la edad del proceso.
Siendo el intervalo del conjunto de trabajo, si la edad de la pgina es mayor que , no pertenece al
conjunto de trabajo.
55
Los algoritmos ms utilizados por los sistemas operativos modernos son el de envejecimiento y el
WSClock.
La estragegia de reemplazo limita los algoritmos de reemplazamiento a utilizar. As, algoritmos
como FIFO, LRU y envejecimiento pueden utilizarse tanto con estrategia de reemplazo global o
local.
El algoritmo WSClock slo puede utilizarse con estrategia de reemplazo local.
Asignacin variable. Modifica a lo largo del tiempo el nmero de marcos que un proceso
tiene asignados. Minimiza la memoria desperdiciada y la sobrepaginacin a costa de
aumentar la sobrecarga ya que el sistema debe decidir continuamente cuntos marcos
reservar a cada proceso.
Para implementar la asignacin variable, que proporciona mejores resultados, se debe utilizar un
algoritmo de asignacin de marcos, siendo los ms conocidos:
56
Control de carga
En un sistema multiprogramado con memoria virtual mediante demanda de pgina, el sistema
operativo debe controlar el nmero de procesos que tienen pginas cargadas en memoria principal,
esto es, debe controlar el grado de multiprogramacin GM.
Debe encontrarse un valor ptimo de GM con el fin de que se optimice al mximo el tiempo de
utilizacin del procesador. Si el grado de multiprogramacin es bajo, el procesador se ver
infautilizado por ausencia de procesos; si el G M es alto puede que no se puedan contener en la
memoria principal los conjuntos de trabajo de los procesos, producindose sobrepaginacin y por
tanto infrautilizacin del procesador, que debe esperar a que se realicen los intercambios con la
memoria secundaria.
Si se detecta sobrepaginacin es necesario reducir GM intercambiando algunos procesos a memoria
secundaria y repartir los marcos libres entre los procesos que la estaban provocando.
Limpieza por demanda. La pgina no se escribe hasta que es seleccionada para ser
reemplazada. Se aplaza la escritura hasta que no sea estrictamente necesario pero cuando se
produce un fallo de pgina hay que realizar dos operaciones de E/S: una para actualizar la
pgina modificada y otra para leer la nueva pgina.
El tamao de pgina viene determinado por la arquitectura del computador, siempre potencia de
dos. Algunos computadores permiten seleccionar el tamao dentro de un rango de valores. Para
seleccionar el tamao adecuado hay que tener en cuenta:
Fragmentacin interna. De promedio es de media pgina por proceso. Cuanto mayor sea el
tamao de pgina, mayor ser la cantidad de memoria no utilizada.
Tiempo de uso de E/S. Se tarda menos tiempo en transferir una pgina de tamao grande que
varias de tamao ms pequeo. Si el espacio de direcciones virtuales se descompone en
57
Cuando comienza la ejecucin de un proceso o se contina con uno que estaba bloqueado se
produce un conjunto de fallos de pgina iniciales hasta que se carga el conjunto de trabajo.
Para evitar esto se puede usar la estrategia de paginacin por adelantado (prepaging), que consiste
en cargar un cierto nmero de pginas N PA antes de iniciar o continuar su ejecucin o cada vez que
se produce un fallo de pgina.
En general, si se cargan NPA pginas se referenciarn NPR pginas y no se referenciarn NPA - NPR.
Cada pgina referenciada cargada por adelantado evita un fallo de pgina. Si el tiempo que se
ahorra en tratar NPR fallos de pgina es superior al empleado en cargar las NPA - NPR que no son
referenciadas s compensa utilizar paginacin por adelantado.
Si se decide utilizarla, la seleccin del conjunto NPA puede hacerse:
Cargar el conjunto de trabajo del proceso, que debe ser mantenido por el sistema operativo.
Opcin empleada cuando se va continuar con la ejecucin de un proceso interrumpido o
bloqueado.
Si se dispone de una lista de marcos libres donde cargar una pgina referenciada por una direccin
virtual que ha producido un fallo, el tiempo de tratamiento del fallo se reduce, ya que slo hay que
hacer uso de esa reserva de marcos libres.
Si la reserva de marcos libres cae por debajo de un lmite se utiliza un algoritmo de
reemplazamiento para seleccionar marcos reemplazables.
Mientras una pgina siga cargada en un marco, aunque est entre los marcos libres, podr ser
utilizada. Para ello cuando se produce un fallo de pgina primero se comprueba si est en la lista de
marcos libres antes de acudir a memoria secundaria. De este modo, esta lista de marcos libres se
utiliza como cach software de pginas.
Esta estrategia en ocasiones se denomina buffering de pginas.
58
Captulo 8.
Gestin de la Entrada/Salida
De forma general los dispositivos de E/S se pueden clasificar en dispositivos modo bloque y
dispositivos en modo carcter.
Un dispositivo en modo carcter enva o recibe informacin como una secuencia o flujo
lineal de bytes.
Un dispositivo debe ser conectado a un mdulo hardware denominado controlador de E/S para que
pueda ser utilizado por el computador. Un controlador puede manejar uno o varios dispositivos del
mismo tipo.
El sistema operativo se encarga de la gestin del acceso de los procesos a los dispositivos de E/S,
gestiona el buffering o el spooling.
Peticiones de E/S
Una operacin de E/S puede ser solicitada por un proceso o por el propio sistema operativo
mediante una llamada al sistema indicando la direccin lgica del dispositivo, la direccin lgica
del espacio del proceso donde se almacenarn los datos y la cantidad de datos a transferir.
Es el componente que se encarga de efectuar todas las tareas necesarias para la realizacin de las
operaciones de E/S comunies a todos los dispositivos e independiente de estos. Entre sus tareas se
encuentran:
Bloqueo de procesos que solicitan una operacin de E/S. El susbistema puede decidir pasar
al estado bloqueado al proceso que realiza la peticin de E/S, dependiendo del tipo de
llamada y del estado del dispositivo.
Planificacin de la E/S. El sistema debe planificar el usao de los dispositivos con el fin de
optimizar su uso, disminuir el tiempo de espera promedio y distribuir equitativamente el uso
de los recursos, atendiendo a las prioridades de las peticiones.
59
Gestin de errores producidos en una operacin de E/S. Estos errores pueden ser errores de
dispositivos o errores de programacin
El subsistema de E/S debe proporcionar una interfaz para los drivers de los dispositivos, tanto de
llamadas del subsistema al driver como del driver al susbsistema. En los sistemas operativos
modernos esta interfaz es uniforme.
Drivers de dispositivos de E/S
Comprobar que los parmetros son correctos y que la funcin se puede realizar.
Comprobar que no se hayan producido errores en la operacin de E/S, tomando las medidas
para resolverlo o abortar la operacin.
El cdigo de los drivers es reentrante, es decir, que no se modifica, por lo que es posible ejecutar
varias instancias del mismo driver simultneamente.
Manejador de las interrupciones
Cuando una operacin de E/S finaliza y el dispositivo se encuentra preparado para gestionar otra, su
controlador genera una interrupcin. Cada interrupcin suministra un nmero denominado nmero
del vector de interrupcin que se utiliza de ndice en una tabla denominada tabla de vectores de
interrupcin, normalmente almacenada en las posiciones ms bajas de memoria y en la que cada
entrada, vector de interrupcin, contiene entre otras informaciones la direccin de comienzo del
manejador, handler, de la interrupcin. Estos forman parte del ncleo y son extremadamente
dependientes del hardware.
Buffering
Si la transferencia de datos desde un dispositivo al proceso que realiza la peticin se realizara de
forma directa a su espacio de direcciones, el proceso debera estar cargado en un marco de memoria
durante todo el tiempo desde la peticin hasta la obtencin de resultados. El marco debe ser
bloqueado para evitar que la pgina del proceso fuera reemplazada. Cuanto mayor sea el nmero de
60
marcos bloqueados menor ser el nmero de marcos candidatos a ser reemplazados lo que puede
dar lugar a la sobrepaginacin. Adems, el proceso no puede ser intercambiado hasta que no finalice
la operacin de E/S.
Para evitar estos problemas se utilizan los buffers, rea de la memoria principal a la que nicamente
tiene acceso el sistema operativo. El subsistema de E/S asigna buffers para las operaciones de E/S y
los drivers de dispositivo o rutinas de servicio de interrupcin transfieren los datos entre los
dispositivos y buffers o viceversa. Adems, los buffers sirven para adaptar las distintas velocidades
y tamao de unidad de transferencia por parte de los dispositivos.
Estrategias
Buffering con buffer nico. Los datos se transfieren desde el dispositivo hasta el buffer y del
buffer al espacio del proceso en una operacin de lectura. Desde el espacio del proceso al
buffer y del buffer al dispositivo en una operacin de escritura. No se puede volver a utilizar
el buffer hasta que no finalice la operacin completa y se vace el buffer.
Buffering con dos buffers o buffering doble. Cuando se llena un buffer se utiliza el siguiente.
Mientras se llena el segundo se vaca el primero. En esta estrategia se desacopla el productor
del consumidor, ya que mientras uno escribe en un buffer se lee del otro. Adems se reduce
el tiempo de espera de productor o consumidor.
Para reducir el nmero de operaciones de E/S a disco muchos sistemas operativos implementan va
software un cach de buffers de bloques de disco, un rea de la memoria principal del espacio del
ncleo reservada para buffers y que contiene los bloques de disco recientemente transferidos.
La gestin de la cach es similar a las cach hardware, debiend utilizarse algn algoritmo de
reemplazamiento (FIFO, LRU, etc) para seleccionar los buffers cuyo contenido deba ser
reemplazado.
Spooling
Una tcnica muy utilizada para la asignacin y control de los dispositivos de E/S dedicados, como
una impresora, suele utilizarse la tcnica del spooling. Se implementa mediante un proceso demonio
y un directorio especia, directorio de spool o spooling. El proceso demonio es el nico autorizado
para acceder al dispositivo. Si un proceso quiere hacerlo, enva los archivos deseados al directorio
de spooling desde donde el demonio los ir cogiendo para enviarlos al dispositivo.
Una forma de generar una seal peridica, reloj, es mediante un chip denominado reloj
programable que, entre otros, contiene un contador, un registro y un cristal de cuarzo.
Un reloj programable dispone de varios modos de operacin, como el de disparo nico o el de onda
cuadrada. En el modo disparo nico cuando el contador alcanza el valor cero se genera una
interrupcin y se detiene hasta que vuelva a ser inicializado.
En modo onda cuadrada el reloj se rearma automticamente volviendo a cargar en el contador el
valor del registro y comenzando de nuevo la cuenta.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos
61
El tiempo transcurrido entre dos interrupciones de reloj se denomina tic de reloj o, simplemente, tic.
El valor del tic puede ajustarse dependiendo del valor del registro. Se denomina frecuencia de reloj
al nmero de tics por segundo.
Para relojes en tiempo real es til que el contador se incremente, en vez de decrementarse.
Los relojes programables sirven para diversas tareas como:
Planificacin de procesos. Para controlar los cuantos asignados a los procesos en Round
Robin, por ejemplo. En algoritmos basados en prioridades, para adaptarla en funcin del
tiempo de uso del procesador que lleve acumulado.
Mantenimiento del tiempo real. En MS el punto de referencia son las 00:00:00 UTC del 1 de
enero de 1980 y en UNIX la misma hora y da de 1970. Para llevar el conteo de la hora es
necesario un contador de 64 bits. Para facilitar la gestin se utilizan dos contadores de 32
bits, uno con el conteo en segundos y otro para el nmero de tics del segundo actual.
Tambin se utiliza un contador de tics desde el tiempo de arranque, que se suma al valor de
alguna posicin de memoria donde se almacena el valor del tiempo real en el momento del
arranque.
Disparo de alarmas. El sistema puede avisar a los procesos cuando haya transcurrido
determinado intervalo de tiempo. Si ms de un proceso requiere una alarma, sera necesario
tener tantos relojes como procesos. Para evitarlo se utiliza la tcnica de lista de alarmas, en
la que se almacenan las peticiones ordenadas por tiempo de disparo. Cada entrada almacena
la diferencia entre el tiempo de disparo de todas las entradas precedentes y el tiempo de
disparo que requiere. Slo se decrementa un contador que, cuando llega a cero dispara la
alarma del primer proceso de la lista y elimina la entrada.
Invocacin de tareas peridicas del sistema. El sistema operativo mantiene una lista de
tareas peridicas, generalmente de adminstracin, que son lanzadas de forma similar al
disparo de alarmas.
Puesto que a lo largo de un segundo se producen muchas interrupciones de reloj, las tareas que
realiza el driver de reloj deben realizarse lo ms rpidamente posible para que no se resienta. Las
interrupciones de reloj, por ello, tienen una prioridad muy elevada.
Dependiendo del sistema operativo, algunas de las tareas que realiza el driver (decrementar cuantos
de ejecucin, incrementar el tiempo de uso del proceso, incrementar el contador del reloj de tiempo
real, decrementar el contador de alarmas y tareas peridicas..) son delegadas al manipulador de la
interrupcin de reloj.
Discos duros
Estructura fsica
Est formado por varios platos circulares de aleaciones de metal o plstico recubiertas de material
magnetizable que giran en torno a un eje vertical comn a velocidades tpicas de 5400, 7200 o
10800 rpm.
Cada superficie se divide en anillos concntricos llamados pistas. Las pistas se dividen en sectores
donde se almacena la informacin. El sector es la unidad bsica de transferencia de informacin de
un disco.
Sobre cada superfice existe un brazo en cuyo extremo se monta una cabeza de lectura/escritura. El
conjunto formado por las pistas de todas las superficies de todos los platos situadas a la misma
distancia del eje de rotacin se denomina cilindro.
62
El formateo a bajo nivel o formateo fsico es realizado por el fabricante del disco mediante el uso de
un software y el controlador del disco. Consiste en dividir cada superficie de los platos en pistas y
cada pista en sectores. Cada sector consta de:
Cabecera o prembulo. Patrn de bits que permite al controlador reconocer el comienzo del
sector, el nmero del sector y el nmero del cilindro.
La capacidad del disco formateado a bajo nivel es inferior a la del disco sin formatear debido a los
huecos entre pistas y sectores y a una reserva de sectores para sustituir a sectores defectuosos.
Dentro de una pista los sectores se numeran desde 0 pero de manera intercalada en funcin de un
factor de intercalado o entrelazado. Del mismo modo, en una determinada zona de cilindros, la
numeracin de los sectores de una pista est desplazada respecto de la pista adyacente, sesgo de
cilindro (cylinder skew), para mejorar el rendimiento y evitar tener que esperar una vuelta completa
para leer el primer sector.
La direccin fsica de un sector queda definida por la tripleta cilindro-cabeza-sector (CHS,
Cylinder-Head-Sector). Los discos ms modernos soportan el mtodo de acceso de
direccionamiento de bloques lgicos, (Logical Block Address, LBA). Cada bloque se hace
corresponder con un sector durante el formateo fsico, haciendo corresponder de forma consecutiva
todos los sectores con bloques comenzado desde 0.
Particionamiento y formateo a alto nivel del disco
El particionamiento del disco consiste en establecer por software una o ms particiones en el disco.
Una particin es un conjunto de cilindros contiguos. Desde un punto de vista lgico, cada particin
se considera como un disco distinto.
En el sector 0 del disco se crea el registro de arranque maestro (Master Boot Record, MBR), y a
continuacin una estructura denominad tabla de particiones, que define el cilindro de comienzo de
cada particin y su tamao.
Una vez particionado se debe realizar un formateo de alto nivel o formateo lgico, que establece el
sector de aranque del sistema operativo, si es una particin activa, y las estructuras de datos del
sistema de archivos.
Es posible no establecer ningn sistema de archivos y trabajar directamente como si fuera un array
de bloques lgicos, E/S en bruto. El rea de intercambio de los sistemas UNIX utilizan este mtodo.
Planificacin del disco
El tiempo de lectura o escritura de un bloque del disco duro depende, entre otros factores, del
tiempo de posicionamiento de la cabeza de lectura/escritura y del tiempo de transferencia del
bloque desde el disco al controlador.
El tiempo de posicionamiento, o tiempo de acceso, es la suma del tiempo de bsqueda, tiempo
requerido para mover las cabezas hasta el cilindro, y la latencia rotacional o retardo rotacional,
tiempo necesario para que el principio del sector se posicione por el giro del disco debajo de la
cabeza.
Si las peticiones a disco se planifican adecuadamente es posible reducir el tiempo de bsqueda
promedio. Algunas estrategias son:
Planificacin de primero el del tiempo de bsqueda ms corto (Shortest Search Time First,
SSTF). Se selecciona la peticin que requiera, desde la posicin actual, el tiempo de
63
Planificacin LOOK. Las cabezas se desplazan en cierto sentido atendiendo las peticiones
que se encuentran en el camino y retorna hacia el sentido contrario. Si llega una peticin
cercana pero en sentido contrario deber esperar el regreso del cabezal.
El error ms frecuente es un error de lectura o escritura de un sector debido a que est daado o
defectuoso. El controlador mantiene una lista de los sectores defectuosos para no utilizarlos. Un
sector defectuoso se identifica comprobando el ECC del sector. El controlador utiliza los sectores de
reserva mediante dos formas posibles:
Sustitucin directa. Si el sector j est daado, se utiliza un sector de reserva como sector j.
Se presenta el problema de alterar la organizacin del entrelazado.
Desplazamiento de sectores. Se desplaza una posicin cada sector situado entre el sector de
reserva y el daado. El sector de reserva se utiliza para contener el primer sector desplazado
y el ltimo sector desplazado alberga el nmero de sector que estaba defectuoso. Mantiene
la organizacin de la pista, pero requiere ms tiempo para realizarla.
Un teclado es un dispositivo modo carcter de entrada. Cada pulsacin y liberacin de tecla envan
un nmero a un registro del controlador E/S que lo supervisa. ste genera una interrupcin que,
atendida por el manejador correspondiente, despierta el driver de teclado.
El driver utiliza un mapa de teclas o mapa de cdigo que resuelve la tecla pulsada en funcin de la
configuracin de idioma y tipo de teclado. El bit ms significativo del byte con que se informa de la
tecla pulsada indica si la tecla ha sido presionada o liberada. Tambin lleva la cuenta de las teclas
que han sido pulsadas y no liberadas con el fin de poder capturar combinaciones de ms de una
64
tecla. El driver almacena la informacin en un pequeo buffer para que sea leda por el proceso
adecuado.
Gestin de la entrada del ratn
65
Captulo 9.
Gestin de archivos
Archivos
Desde el punto de vista de los usuarios de los computadores, la unidad de trabajo es la abstraccin
de almacenamiento en memoria secundaria conocida como archivo o fichero.
Tipos de archivos
Un archivo binario contiene informacin de cualquier tipo codificado en binario con una
estructura determinada que solo puede ser interpretada por los programas que los utilizan.
Un archivo ASCII est compuesto de lneas de caracteres ASCII codificados en binario que
no requiere de un programa que las interprete.
El nombre de un archivo es una cadena de caracteres. Cada sistema de archivos soportado por el
sistema operativo especifica la longitud mxima y el tipo de caracteres que puede tener. La
extensin del archivo proporciona informacin sobre el tipo de archivo. Sistemas como UNIX
ignoran las extensiones y otros como Windows las reconoce e interpretan asocindolas con el
programa que los genera.
Atributos de un archivo
La lista de atributos vara en funcin del sistema de archivos pero en general se tiene:
Tipo de archivo.
Permisos de acceso. Para determinar quin puede acceder y qu puede hacer con el archivo.
Secuencia de registros. Cada registro, de igual longitud, posee su propia estructura interna.
Las operaciones de lectura y escritura tambin se realizan a nivel de registros.
67
Registros indexados. Cada registro, de longitud variable, contiene un campo ndice que
permite identificarlo. Se organiza en funcin de la clave de los registros que lo componen.
En una operacin de lectura o escritura debe especificarse la clave de registro que se desea
leer o escribir. Al aadir un nuevo registro es necesario indicar su clave.
De forma general, un archivo est formado por bloques lgicos o registros de igual o distinto
tamao. En el caso de secuencia de bytes el tamao del bloque es de un byte.
Idependientemente de la estructura, las operaciones de E/S en memoria secundaria se realizan en
unidades de bloques fsicos de igual tamao. Un bloque fsico, que comprende varios sectores, tiene
asignada una direccin fsica BF o nmero de bloque. Un archivo ocupar N bloques lgicos,
exisitendo fragmentacin interna ya que el ltimo bloque probablemente no sea ocupado al
completo.
Mtodos de acceso a un archivo
Acceso secuencial. Los bytes o registros se leen o escriben en orden comenzando desde el
principio. El sistema mantiene un puntero de lectura/escritura que indica la posicin donde
debe comenzar la siguiente operacin. Compiladores y procesadores de texto la utilizan.
Acceso aleatorio. Tambin llamado acceso directo. Los bytes o registros pueden ser leidos
en cualquier orden. Las operaciones de lectura/escritura pueden implementarse
especificando el nmero de byte o registro al que se desea acceder en la misma instruccin o
bien realizando primero una bsqueda y posteriormente realizar la operacin de manera
secuencial.
68
Crear archivo. Crea un archivo sin datos, vaco, en la estructura de directorios y crea las
entradas necesarias en el directorio correspondiente.
Leer archivo. Permite la lectura del archivo desde la posicin actual del puntero. La llamada
al sistema incluye como argumentos el identificador del archivo, el nmero de bytes o
registros que se desean leer y la direccin de memoria del espacio de usuario del proceso
donde colocar los datos ledos.
Escribir archivo. Permite la escritura del archivo desde la posicin actual del puntero.La
llamada debe incluir el identificador de archivo, el nmero de bytes o registros a escribir y la
direccin de memoria del espacio de usuario del proceso desde el que tomar los datos. Si los
datos se escriben al final del archivo se provoca su aumento de tamao.
Directorios
Estructura de los directorios
69
seguir esa ruta para encontrar la entrada del directorio que le permita conocer la ubicacin
del elemento compartido.
Operaciones sobre directorios
Crear directorio. Cuando se crea no contiene ninguna entrada, salvo . y .., si el sistema
operativo las soporta.
Abrir directorio. Consiste en encontrar en el directorio padre la entrada que se desea abrir y
cargarla en memoria principal.
Leer directorio. Permite leer el contenido de una entrada del directorio, necesario para
operaciones de bsqueda y listado de contenido del directorio.
Sistemas de archivos
Estructura de un sistema de archivos
Estructura de datos con informacin sobre los bloques libres en el sistema de archivos.
Generalmente denominada lista de bloques libres. Puede implementarse como mapa de bits
o como lista enlazada.
Estructura de datos con informacin sobre bloques asignados a los archivos. Algunas de las
ms utilizadas son:
Lista de nodos ndice. O nodo-i, estructura de datos utilizada para almacenar los
atributos de un archivo y su ubicacin en disco. Una entrada del nodo-i contiene la
direccin fsica o el nmero de bloque donde se encuentra el nodo-i asociado a un
determinado archivo.
Tabla de asignacin de archivos. (File Allocation Table, FAT). Tiene una entrada por
cada bloque fsico existente en la particin del sistema de archivos. La entrada j de la
tabla hace referencia al bloque fsico j. Si el bloque fsico j est asignado a un archivo, la
70
entrada j en la FAT contiene la direccin fsica del siguiente bloque del archivo. En este
caso no es necesario mantener informacin sobre bloques libres.
rea de datos. Contiene los bloques libres y bloques asignados a los archivos y directorios.
Para poder acceder a los contenidos de un determinado sistema de archivos ubicado en memoria
secundaria este debe ser montado en algn punto dentro de la estructura de directorios. A dicho
punto se le denomina punto de montaje. El sistema operativo realiza el montaje de los sistemas de
archivos en el arranque o cuando se detecta un nuevo dispositivo de memoria secundaria conectado
al computador.
En sistemas Windows se trata cada sistema de archivos como un volmen o unidad lgica, cada una
de las cuales tiene su propia estructura de directorios. Se asigna una letra a cada unidad.
En sistemas Linux cada sistema de archivos se monta como un directorio del sistema de archivos
principal, luego todos los sistemas de archivos quedan integrados dentro de la misma estructura de
directorios.
Asignacin de espacio
Un aspecto importante es la forma en que se asignan los bloques fsicos del rea de datos del
sistema. Los mtodos ms utilizados son la asignacin contigua, la asignacin enlazada y la
asignacin indexada.
Asignacin contigua
El mtodo de asignacin enlazada consiste en almacenar al principio de cada bloque fsico asignado
a un archivo la direccin fsica del siguiente bloque fsico del archivo. As, se organiza como una
lista enlazada de bloques fsicos.
Permite usar cualquier bloque, por lo que no produce fragmentacin externa y evita conocer por
adelantado el tamao del archivo.
Resulta muy lento para su utilizacin con archivos de acceso aleatorio ya que para localizar un
bloque hay que pasar por todos los anteriores.
Adems, la utilizacin de algunos bytes del bloque para almacenar la direccin del bloque siguiente
provoca que haya menos espacio disponible para datos y que este espacio no sea potencia de dos,
dificultando el procesamiento y la eficiencia.
71
Una solucin bastante utilizada es asignar el espacio en agrupamientos (clusters) de bloques fsicos
contguos, almacenndose al comienzo la direccin del siguiente agrupamiento. Esta solucin
aumenta la fragmentacin interna y produce fragmentacin externa, dado que huecos de tamao
inferior al del cluster no pueden ser asignados.
Otra desventaja es que si se daa o pierde uno de los punteros de la cadena el resto de los bloques
no estaran accesibles.
Para eliminar todas las desventajas del mtido de asignacin enlazada se puede utilizar una FAT,
ubicada en sectores contiguos despus del sector de arranque. La FAT tiene una entrada por cada
bloque fsico de la particicin. La entrada j de la tabla hace referencia al bloque j del disco. Si el
bloque fsico j est asignado a un archivo, la entrada j de la FAT contiene la direccin del siguiente
bloque. Si el bloque es el ltimo del archivo, la entrada de la FAT contendr un valor especial para
indicarlo. Lo mismo ocurre en caso de que el bloque est libre.
Una copia de la FAT debe estar en memoria principal para optimizar su uso. Este espacio puede
llegar a ser muy grande si la particin del disco tambin lo es.
Asignacin indexada
En este mtodo se almacena en un nodo-i los atributos de un archivo y las direcciones fsicas de los
primeros ocho o diez bloques de un archivo. Tambin se almacenan las direcciones fsicas de uno o
varios bloques de indicreccin simple, doble o triple.
Un bloque de indireccin simple almacena direcciones fsicas de bloques de archivo.
Un bloque de indireccin doble almacena direcciones fsicas de bloques de indireccin simple.
Un bloque de indireccin triple almacena direcciones fsicas de bloques de indireccin doble.
Cada archivo tiene asociado un nmero entero positivo denominado nmero de nodo- i. Al principio
de la particin se mantiene una lista con todos los nodos-i existentes. El nmero de nodo-i asociado
a un archivo se almacena en la entrada de directorio que contiene al archivo.
Este mtodo se puede usar tanto para archivos de acceso secuencial como aleatorio. No produce
fragmentacin externa y permite que el espacio de los bloques fsicos que contienen datos puedan
ser utilizados totalmente. Su implementacin requiere de menos memoria principal que la FAT, ya
que solo es necesario mantener en memoria los nodos-i de los archivos abiertos.
La principal desventaja es que el tiempode acceso a un bloque de archivo depende de la estructura
interna del nodo-i. En el mejor de los casos y suponiendo que el nodo-i del archivo ya ha sido
cargado en memoria principal, si se desea acceder a uno de los primeros bloques del disco slo hay
que hacer una lectura para acceder a dicho bloque, pero si se trata de bloques a los que se accede a
travs de bloques de indireccin simple, doble o triple, habr que hacer una, dos o tres lecturas
adicionales en disco.
Gestin del espacio libre
Para esta funcin se suele utilizar una estructura de datos denominada lista de bloques libres,
aunque a veces no se implementa como una lista.
Mapa de bits
Cada bloque de disco tiene asignado un bit. Si el bloque est ocupado se marca con un 0 y si est
libre con un 1 (o viceversa). Si la particin ocupa N bloques, sern necesarios N bits.
Su principal ventaja es la sencillez para encontrar el primer bloque libre o el primer conjunto de k
bloques libres consecutivos. El principal inconveniente es que se precisa tener el mapa completo en
memoria principal.
72
Lista enlazada
Un directorio es un archivo que almacena una lista de los archivos y subdirectorios que contiene.
Algunos sistemas, como FAT-32, almacena en cada entrada de un directorio el nombre del archivo o
subdirectorio y sus atributos, entre los que se encuentra la informacin para localizar los bloques de
datos que lo contiene.
En UFS (UNIX) o ext2 de Linux, se almacena en cada entrada el nombre del archivo o
subdirectorio y un puntero (nmero de nodo-i) a la estructura de datos (nodo-i) donde se almacenan
los atributos del archivo. Esta organizacin precisa de un acceso ms a disco para copiar el nodo-i a
memoria principal.
Entre las implementaciones ms comunes de directorios se encuentran:
Directorios con entradas de igual tamao. En cada entrada se almacenan las informaciones
asociadas al archivo y a continuacin el nombre del archivo. Es sencilla de gestionar pero
para dar soporte de nombres largos cada entrada debe tener ese mximo, lo que supone un
derroche de espacio.
Directorios con entradas de tamao variable. Primero se almacena el tamao que ocupa la
entrada, a continuacin la informacin asociada a la entrada (atributos o nodo-i y finalmente
el nombre de archivo (hasta un cierto tamao) al que se le aade un carcter especial para
marcar el final del nombre. Cada entrada se rellena para que coincida con un entero positivo
de palabras de memoria principal. Como mximo se despercicia casi una palabra. Cuando se
eliminan entradas quedan huecos de longitud variable, generando fragmentacin externa que
puede precisar de una compactacin del directorio.
Directorios con entradas de igual tamao y montculo (heap) para almacenar los nombres
de los archivos. Se almacena un puntero al comienzo del nombre de archivo dentro de l
montculo y sus atributos o nodo-i. Elimina la fragmentacin externa y no es necesario
incluir caracteres de relleno, pero es de administracin ms complicada al tener que
gestionarse el montculo.
Otro aspecto a considerar est relacionado con la forma en que se realiza la bsqueda de un archivo
en un directorio, por ejemplo, buscando las entradas una a una.
Para ahorrar tiempo se puede mantener una cache de directorios con las entradas recientemente
accedidas o implementar cada directorio con una tabla hash y su lista de archvos y subdirectorios.
Cuando se desea realizar una bsqueda se introduce el nombre en la funcin hash que devolver qu
entrada de la tabla hay que leer. Si la entrada est vaca, el archivo no existe. Para evitar las
colisiones cada entrada se puede implementar como una lista enlazada.
Consistencia
Para verificar la consistencia del sistema de archivos se suele incluir en los sistemas operativos un
verificador de consistencia. las inconsistencias ms frecuentes que pueden presentarse en el sistema
de archivos son:
73
Un bloque figura varias veces en la lista de bloques libres. Solo aparece si se implementa
mediante lista enlazada de bloques libres y se soluciona reconstruyendo la lista.
Para evitar el uso de verificadores los sistemas de archivos modernos (NTFS, ext4, HFS+)
implementan la tcnica del registro diario o journaling, que consiste en almacenar un informe de las
operaciones a realizar antes de hacerlas y eliminar el informe una vez realizadas con xito. Si al
reiniciar el sistema el informe sigue exisistendo significa que ha exisitido un error y vuelve a
repetirse las operaciones pendientes para dejar el sistema de archivos en un estado consistente.
Recuperacin de archivos
Copias de seguridad
Copia de seguridad fsica. Tambin conocida como imagen de disco. Consiste en copiar
bloque a bloque la particin de disco. Son ms simples de realizar pero requieren montar la
imagen para iniciar la recuperacin.
Instantneas
ZFS, de Solaris, utiliza la tcnica de copiar al escribir, copy-on-write. En esta tcnica si el sistema
operativo precisa modificar el contenido de un bloque en el disco se localiza un bloque libre y se
copia el contenido modificado en ese bloque, modificando los punteros para que apunten a ese
nuevo bloque.
El sistema agrupa las modificaciones y las realiza cada cierto tiempo (valor tpico 30 segundos).
Cada modificacin se etiqueta con un nmero de versin diferente. La versn actual coexiste con
versiones anteriores del sistema de archivos. Cada nueva versin se denomina instantnea
(snapshot). Cada instantanea puede montarse como un archivo de solo lectura para reacuperar datos
individualmente o en modo de escritura para restaurar el sistema completo a un estado anterior.
Las instantneas no son una copia de seguridad. Las diferencias fundamentales son:
74
Las instantneas pueden ser restauradas con gran rapidez. Tan solo es necesario volver a
montar el sistema de archivos a partir de la versin anterior.
Las instantneas residen en el mismo disco fsico que los datos que respaldan, por lo que no
son eficaces frente a daos fsicos en el disco y deben complementarse con algn mtodo de
copia de seguridad.
Eficiencia
La eficiencia del sistema aumenta notablemente si se reduce al mnimo imprescindible el nmero de
accesos de E/S a disco. Para lograr ese objetivo algunos sistemas operativos implementan en
memoria principal una cach de bloques de disco.
Para mejorar la tasa de aciertos de cach se utiliza la estrategia de lectura por adelantado de
bloques, que consiste en copiar en la cach no solo el bloque que ha dado el fallo sino varios
bloques contguos a ste.
Tambin puede intentarse que los accesos a disco consuman poco tiempo, por ejemplo almacenando
en el mismo cilindro los bloques a los que se espera acceder de forma secuencial.
En sistemas con nodo-i sera conveniente que stos estuvieran lo ms cerca posible de los bloques
de datos del archivo, por lo que el mejor sitio para almacenarlos sera la zona central del disco.
Otro aspecto a considerar es el tamao de bloque de disco, en un compromiso entre un bloque
pequeo que reduce la fragmentacin interna pero aumenta el nmero de accesos o un bloque
grande que desaprovecha espacio pero con menor nmero de accesos. Distintas pruebas demuestran
que un tamao ptimo de bloque est en unos pocos KiB.
75