Documente Academic
Documente Profesional
Documente Cultură
(Resumen)
UNIDAD 1 : Introduccin
DIVISIONES DEL SOFTWARE
(1)
(2)
Manejo de Procesos
Manejo de E/S
Manejo de Memoria
Sistema de archivos
COMPONENTES PRINCIPALES
Pgina 1 /59
Pgina 2 /59
FUNCIONES
Programas del usuario.
Sistemas Operativos
3
2
1
0
Administracin de E/S.
Comunicaciones.
Administracin de Memoria.
Multiprogramacin.
Modo Usuario: Es cuando un usuario hace una llamada al sistema operativo para
realizar una tarea. En este modo slo se permiten algunas operaciones por la
proteccin que tiene el sistema operativo.
(2)
Sistemas Operativos
Pgina 4 /59
Estos dos modos cambian constantemente entre si, con lo que se da un cambio de
contexto.
TIPOS DE PROTECCION
1. PROTECCIN E/S: Las instrucciones E/S solo se pueden ejecutar en modo sistema
para prevenir un dao por el usuario y asi el sistema filtra los datos.
2. PROTECCIN DE MEMORIA: Como se ver ms adelante en administracin de
memoria se divide en base y lmite para protegerla.
3. CONTROL DEL CPU: Se previene que no se quite el control al sistema operativo si
sucediera algo como un ciclo infinito en un programa de usuario.
La idea es que el usuario le pide al sistema operativo que haga estas tareas por l a
travs de llamadas al sistema.
LLAMADAS AL SISTEMA
Son instrucciones extendidas que el sistema operativo ofrece como una interfaz entre
los programas de usuario y el sistema operativo como tal.
Modo Usuario
Hace
Llamada al sistema
Modo Supervisor
pasa a
INTERRUPCIONES
Existen interrupciones en software, anlogas a las del hardware. El sistema operativo
se vale de interrupciones para notificar a los procesos mensajes de error o envos de
informacin requerida.
Las llamadas al sistema, en la mayora de los sistemas operativos se hacen por
medio de una interrupcin de software o trap a una ubicacin especfica del vector de
interrupciones. Ejemplo hipottico, (parecido a MSDOS), para borrar un archivo:
1. Poner en registro A el cdigo de la operacin: 41h = borrar archivo
2. Poner puntero al nombre del archivo en registro B
3. INT 21h (generar interrupcin de software)
Como la llamada es a travs de una interrupcin, se hace lo de siempre: cambiar a modo
protegido, y pasar control a la direccin en la posicin 4*21h del vector de interrupciones, o
sea, a la rutina que maneja las llamadas al sistema (o tal vez, la rutina que maneja las
llamadas que tienen que ver con archivos; puede que otras clases de llamadas sean
atendidas por medio de otras interrupciones). Dicha rutina examina el registro A para
determinar qu operacin debe ejecutar, y despus determina el nombre del archivo a
travs del registro B. En seguida, decide si la operacin es vlida: puede que el archivo no
exista o pertenezca a otro usuario; segn eso, borra el archivo o "patalea" de alguna
manera.
Cuando uno hace esto en un lenguaje de alto nivel, como C, simplemente escribe:
char* Nombre = "Datos";
remove(Nombre);
El compilador de C es quien se encarga de traducir esto a una llamada al sistema, ocultando
el detalle de la interfaz con el sistema operativo.
VECTOR DE INTERRUPCIONES
rea de memoria que guarda la direccin inicial de un proceso al ocurrir una
interrupcin.
Sistemas Operativos
Pgina 5 /59
Reservaciones
areas
Compiladores
Editores
Navegador
WEB
Intrprete
de comandos-SHELL
Sistema Operativo
Lenguaje de mquina
Microprogramacin
Dispositivos fsicos
Programas de
Aplicacin
Programas de
Sistema
Hardware
DISPOSITIVOS FISICOS
Circuitos integrados (CHIPS), alambres, fuentes de potencia y otros aparatos fsicos
similares.
MICROPROGRAMACIN
Es una programacin en los dispositivos fsicos, normalmente de slo lectura que
ejecuta cada instruccin, del lenguaje mquina definido en la siguiente capa, en varios
pasos de operaciones sobre el dispositivo fsico.
LENGUAJE MAQUINA
Es el conjunto de instrucciones para hacer funcionar a los dispositivos, pero no todas
las computadoras hacer pasan por la microprogramacin, por ejemplo el procesador IBM
POWER PC o computadoras RISC (computadoras con conjunto de instrucciones reducido)
ejecuta las instrucciones de lenguaje mquina directamente, a diferencia del MOTOROLA
680X0 que si tiene microprogramacin.
Sistemas Operativos
Pgina 6 /59
PROGRAMAS DE SISTEMA
Estos programas no son parte del sistema operativo, aunque generalmente son
dados por el fabricante de la computadora.
El sistema operativo es la porcin de software que corre ya sea en modo Kernel o
modo supervisor y est protegido contra la intervencin del usuario.
PROGRAMAS DE APLICACION
Los usuarios compran o escriben estos programas para resolver problemas
particulares.
Sistemas Operativos
Pgina 7 /59
UNIDAD 2 : Procesos
DEFINICIN DE PROCESO
Es un programa en ejecucin. Cada proceso tiene asociado un espacio de direcciones
en memoria con un mnimo, generalmente 0, hasta un mximo, donde puede leer o escribir,
teniendo en este espacio la siguiente informacin:
Otra informacin para ejecutarse.
(Registros multipropsito)
Otros registros hardware
IF Instruction Fetch
(siguiente instruccin a hacer)
Apuntador de la Pila
Contador del programa
PC Program pointer
(Puntero de memoria del programa)
Pila
Datos del Programa
Programa Ejecutable
IR Instruction Register
(Instrucciones del programa)
Otros Registros
Programa
MULTIPROGRAMACION (TIME-SHARING)
Significa que se pueden ejecutar varias tareas o procesos, mediante el cambio de
una proceso a otro (conmutar o context-switch), aprovechando el tiempo desperdiciado en
esperas E/S. Tambin hace posible el trabajo multiusuario.
Con la conmutacin de procesos ya no se ejecutan todos los procesos con una misma
duracin o un tiempo dado, menos reproducible. Es por esta razn que en adelante Nunca
se hacen suposiciones de tiempo de ejecucin en procesos.
LLAMADAS AL SISTEMA DE ADMINISTRACIN DE PROCESOS
Las Principales son:
(1)
Creacin de Procesos
(2)
Terminacin de Procesos
Algunas otras que se dan son:
(1)
Solicitar ms memoria.
(2)
Liberar memoria no utilizada.
(3)
Esperar a que un proceso hijo termina.
(4)
Superponer otro programa al actual.
Todo el manejo de las interrupciones y de los detalles de echar a andar y suspender
procesos estn escondidos en el administrador de procesos, bastante pequeo y que
adems planifica la ejecucin de los mismos.
Algunos procesos estn ejecutando programas en respuesta a comandos emitidos por
los usuarios (o sea, son procesos de usuario o interactivos) y otros procesos forman
parte del sistema; se encargan, por ejemplo de atender peticiones de otros procesos para
manipular archivos, o de manejar algn dispositivo.
ESTADOS DE PROCESOS
1.
Pgina 8 /59
2.
Listo (se puede ejecutar, pero se suspendi temporalmente para dejar que
otro proceso se ejecute).
3.
Bloqueado (no puede ejecutarse en tanto no ocurra algn evento externo.
TABLA DE PROCESOS
Esta tabla existe porque peridicamente, el sistema operativo decide dejar de
ejecutar un proceso y comenzar otro, volvindose necesario el tener un lugar para guardar
todos los datos al momento de suspender un proceso para despus reanudarlo en el mismo
lugar donde se dej. Por ejemplo: El apuntador de un registro en un archivo abierto para
leer la informacin en ese registro al reanudar el proceso.
En esta tabla se guardan estos datos junto con la direccin y espacio en memoria
que ocupa el proceso suspendido. Todo se guarda en forma de una lista:
Info. Del Nodo
Imagen del Ncleo
Registros
Contador de programa
Estado del programa
apuntador a la pila
Hora de inicio del proceso.
Tiempo del CPU usado
Tiempo de CPU de los hijos
Identificador del proceso.
Sistemas Operativos
Pgina 9 /59
PROCESOS HIJO
Es cuando un proceso crea a otro. Esto va formando una estructura de rbol para los
procesos en la tabla de procesos (lista enlazada):
P1
P1A
P1A1
P2
P1B
(Tabla de Procesos)
P1A2
HILOS DE CONTROL (THREADS)
Los procesos deben sincronizarse entre s, y deben compartir el buffer. Cmo puede
hacerse esto si los procesos tiene espacios de direccionamiento disjuntos?
(Recordemos que el sistema operativo no permite que un proceso escriba en la
memoria que le corresponde a otro proceso). Veremos formas de hacerlo, pero, por
ahora, lo importante es que no es "natural": hay que hacerlo explcitamente.
Para que la CPU suspenda un proceso y retome otro, debe hacer lo que se conoce
como cambio de contexto (context-switch), y para eso, se requiere guardar el estado
del proceso que est ejecutando, y cargar el estado que se haba guardado del nuevo
proceso. El estado de un proceso comprende el PC y los registros de la CPU. Adems,
si se usan las tcnicas de administracin de memoria que veremos ms adelante,
hay ms informacin involucrada. Este cambio es puro overhead, puesto que
entretanto la CPU no hace trabajo til (ningn proceso avanza). Considerando que la
CPU hace varios cambios de contexto en un segundo, su costo es relativamente alto.
Adems, al cambiar de un proceso a otro, como los espacios de direccionamiento son
disjuntos, hay otros costos indirectos, que tienen relacin con el cach de la CPU.
Ejemplo: servidor de archivos, que recibe solicitudes para leer y escribir archivos en un
disco. Para mejorar el rendimiento, el servidor mantiene un cach con los datos ms
recientemente usados, en la eventualidad que reciba algn requerimiento para leer esos
datos, no es necesario accesar el disco. Cuando se recibe una solicitud, se le asigna a un
thread para que la atienda. Si ese thread se bloquea porque tuvo que accesar el disco,
otros threads pueden seguir atendiendo otras solicitudes. La clave es que el buffer debe ser
compartido por todos los threads, lo que no podra hacerse si se usa un procesos pesados
para cada solicitud.
Sistemas Operativos
Pgina 10 /59
(2)
EQUITIVIDAD: Cada proceso recibe una parte justa del tiempo de CPU.
(2)
(3)
(4)
(5)
Sistemas Operativos
Pgina 11 /59
ALGORITMOS DE PLANIFICACIN:
(1) ALGORITMO DE PLAZO FIJO
Se establece la duracin de cada proceso no apropiativo.
(2) ALGORITMO DE FIFO
FCFS (First-come, first-served) por sus siglas en ingls. Es un algoritmo que no usa
expropiacin, y que consiste en atender a los procesos por estricto orden de llegada a la
cola READY. Cada proceso ejecuta hasta que termina, o hasta que hace una llamada
bloqueante (de I/O), o sea, ejecuta su fase de CPU completa. La gracia es que se trata de un
algoritmo muy simple: la cola READY se maneja como una simple cola FIFO.
No apropiativo
Equitativo
Eficiente
El tiempo global no es aceptable.
(3) ALGORITMO DE TORNEO (ROUND ROBIN)
(Nueva)
Suspender un proceso e iniciar otro, requiere tiempo por almacenar datos de estado.
Este tiempo se suma al Quantum lo que lo hace mayor. A Quantum de menor tiempo, ms
suspensiones de procesos y ms tiempo del CPU desperdiciado en cambios de procesos. En
Sistemas Operativos
Pgina 12 /59
Cambios de Nivel
prioridad
Prioridad 3
Prioridad 2
Prioridad 1
(5) ALGORITMO SJF (PRIORIDAD AL PROCESO MAS CORTO)
SJF es planificacin por prioridad donde la prioridad es funcin del estimador de la
duracin de la prxima fase de CPU. Una variante se hizo, haciendo que a todos los proceso
se daba 1 quantum y si el proceso consuma todo su Quantum, se le duplicaba la cantidad
del tiempo o sea 2 Quantums y as sucesivamente, degradndose a su vez de prioridad,
pero a la larga ejecutndose en menos intercambios. No es equitativo.
Pero si el proceso se degradaba y se volva interactivo con el usuario, digamos con la
tecla ENTER, no era correcto dejarlo congelado, por lo que se opt por subirlo de prioridad al
detectar una interaccin.
De esta forma se iba atendiendo ms rpidamente a estos procesos. Todo iba bien
hasta que un usuario coment que cuando presionaba ENTER todo le corra ms rpido...
LAS PRIORIDADES EN ALGORITMOS
Este tema da para mucho, pues hay muchas formas de definir la prioridad. La
prioridad puede definirse de manera esttica o dinmica; interna o externa.
Ejemplos:
Pgina 13 /59
Sistemas Operativos
Pgina 14 /59
Sistemas Operativos
Pgina 15 /59
Procesos
Procesos
Procesos
Procesos
de sistema.
interactivos.
de los alumnos.
por lotes.
ms,
ms,
ms,
40%
30%
15%
de
de
de
CPU.
CPU.
CPU.
As los procesos de fases ms cortas tienen prioridad. Este algoritmo es uno de los
ms generales, pero tambin uno de los ms complejos de implementar. Tambin es difcil
de afinar, pues hay mltiples parmetros que definir.
(10) PLANIFICACIN EN 2 NIVELES
Hasta ahora de alguna manera hemos supuesto que todos los procesos ejecutables
estn en memoria. Pero si hay poca memoria disponible y muchos procesos, entonces
algunos procesos deben mantenerse en disco, lo que cambia radicalmente la problemtica
de la planificacin, porque el tiempo requerido para hacer un cambio de contexto que
involucre traer un proceso del disco es muchsimo mayor que el tiempo de un cambio de
contexto entre procesos en memoria.
Las cosas se simplifican si se divide el problema en dos, y se usa un scheduler
distinto para cada caso. Un scheduler de corto plazo se encarga slo de decidir a qu
proceso se le asigna la CPU, de entre todos los que estn en memoria. Peridicamente, otro
scheduler de largo plazo decide qu procesos que han estado demasiado tiempo en
memoria deben ser pasados a disco para dar oportunidad a procesos que han estado mucho
rato en el disco. Para tomar esa decisin se pueden usar factores como el tiempo que un
proceso lleva en memoria o disco, cantidad de CPU usada hasta el momento, tamao del
proceso, prioridad, etc.
Sistemas Operativos
Pgina 16 /59
Entre los criterios que el planificador superior puede usar para la toma de decisiones
podran estar:
1.
2.
3.
4.
Cuando hay varias CPUs (y una memoria comn), la planificacin tambin se hace
ms compleja. Podramos asignar una cola READY a cada procesador, pero se corre el riesgo
de que la carga quede desbalanceada: algunos procesadores pueden llegar a tener una cola
muy larga de procesos para ejecutar, mientras otros estn desocupados (con la cola vaca).
Para prevenir esta situacin se usa una cola comn de procesos listos. Este enfoque tiene
dos alternativas:
UNIDAD 4: Concurrencia
Muchos problemas se pueden resolver ms fcilmente o ms eficientemente si
usamos procesos (o hebras) cooperativos, que ejecutan concurrentemente, tcnica que se
conoce como programacin concurrente. La programacin concurrente es una herramienta
poderosa, pero introduce algunos problemas que no existen en la programacin secuencial
(no concurrente).
Concurrencia = operaciones paralelas o pseudo paralelas (intercaladas).
COMUNICACIN ENTRE PROCESOS
Se da cuando los procesos trabajan juntos para realizar tareas.
Formas de comunicacin
Existen 2 formas de comunicacin entre procesos:
(1)
(2)
MEMORIA COMPARTIDA
Sistemas Operativos
Pgina 17 /59
A veces los procesos necesitan trabajar juntos con informacin en comn. Bajo este
esquema, los procesos pueden necesitar trabajar con datos en una memoria compartida.
EXCLUSIN MUTUA
Es evitar que los procesos colisionen al querer leer o escribir en sus datos
compartidos al mismo tiempo.
CONDICIONES DE COMPETENCIA (RACE-CONDITION)
Es cuando 2 o ms procesos manipulan datos compartidos y el resultado final
depende de estas condiciones de competencia. Por ejemplo: El ltimo en escribir deja sus
datos.
SECCIONES CRITICAS
Para lograr la exclusin mutua y entrar a concursar se debe evitar que dos o ms
procesos utilicen sus datos compartidos al mismo tiempo. La parte del programa donde
accede a la informacin compartida se denomina regin crtica o seccin crtica. Si se
puede garantiza que 2 procesos no estn en su seccin crtica al mismo tiempo, entran a
condiciones de concurso.
ALGORITMOS PARA LOGRAR EXLUSION MUTUA (MEMORIA COMPARTIDA)
4 CONDICIONES PARA SOLUCION ADECUADA DE DATOS COMPARTIDOS:
1.
2.
3.
4.
Dos procesos nunca pueden estar simultneamente dentro de sus regiones crticas.
No puede suponerse nada acerca de las velocidades o el nmero de las CPU.
Ningn proceso que se ejecute fuera de su regin crtica puede bloquear a otros
procesos.
Ningn proceso deber tener que esperar indefinidamente para entrar en su regin
crtica.
(1) Sistema en Lotes (Inhabilitacin de Interrupciones)
La solucin mas sencilla es hacer que cada proceso inhabilite las interrupciones justo
despus de ingresar en su regin critica y vuelva a habilitarlas antes de salir de ella. De esta
forma, no pueden ocurrir interrupciones de reloj. Este enfoque casi nunca resulta atractivo
porque no es prudente conferir a los procesos de usuario la facultad de desactivar las
interrupciones por el riesgo de no volverlas a habilitar. El Kernel si utiliza esto para algunas
actualizaciones, pero en conclusin la inhabilitacin de interrupciones suele ser una tcnica
til dentro del sistema operativo, pero no es apropiada para los procesos del usuario.
Sistemas Operativos
Pgina 18 /59
La primera solucin por software es tener una variable compartida, con valor inicial
PROCESO 1
WHILE TRUE {
WHILE Cerrado = 0;
Cerrado = 1;
[Seccin Crtica]
Cerrado = 0;
}
PROCESO 2
WHILE TRUE {
WHILE Cerrado = 0;
Cerrado = 1;
[Seccin Crtica]
Cerrado = 0;
}
PROCESO_2
WHILE TRUE {
[ Tareas Previas 2]
WHILE Proceso_1_Adentro;
Proceso_2_Adentro = True;
[Seccin Crtica]
Proceso_2_Adentro = False;
[Tareas no Crticas 2]
}
es 0:
PROCESO 1
WHILE TRUE {
WHILE Cerrado <> 0;
[Seccin Crtica]
Cerrado = 1;
[Seccin no Crtica]
}
Se evita que ambos entren a seccin
Uno bloquea a otro en su seccin no
lento que otro.
PROCESO 2
WHILE TRUE {
WHILE Cerrado <> 1;
[Seccin Crtica]
Cerrado = 0;
[Seccin no Crtica]
}
crtica, pero
crtica cuando hay un proceso mucho ms
Sistemas Operativos
Pgina 19 /59
PROCESO_2
WHILE TRUE {
[ Tareas Previas 2]
WHILE Proceso_1;
[Seccin Crtica]
Proceso_1;
[Tareas no Crticas 2]
}
BEGIN
END
P1_DeseaEntrar = False
P2_DeseaEntrar = False
ParBegin
Proceso_1
Proceso_2
ParEnd
PROCESO_1
PROCESO_2
WHILE TRUE {
WHILE TRUE {
[ Tareas Previas 1]
[ Tareas Previas 2]
P1_DeseaEntrar = True
P2_DeseaEntrar = True
WHILE P2_DeseaEntrar;
WHILE P1_DeseaEntrar;
[Seccin Crtica]
[Seccin Crtica]
P1_DeseaEntrar = False;
P2_DeseaEntrar = False;
[Tareas no Crticas 1]
[Tareas no Crticas 2]
}
}
nter bloqueo, aplazamiento indefinido. Cuando los 2 procesos cambian sus
variables de querer entrar al mismo tiempo y se pasa a espera ocupada.
Garantiza exclusin mutua.
Sistemas Operativos
Pgina 20 /59
Una tentativa para resolver el nter bloqueo es tratar de desbloquear a alguno de los 2
procesos con retardos aleatorios:
BEGIN
P1_DeseaEntrar = False
P2_DeseaEntrar = False
ParBegin
Proceso_1
Proceso_2
ParEnd
END
PROCESO_1
WHILE TRUE {
[ Tareas Previas 1]
P1_DeseaEntrar = True
WHILE P2_DeseaEntrar
P1_DeseaEntrar = False;
Retraso (Aleatorio, Algunos ciclos)
P1_DeseaEntrar = True;
ENDWHILE;
[Seccin Crtica 1]
P1_DeseaEntrar = False;
[Tareas no Crticas 1]
}
PROCESO_2
WHILE TRUE {
[ Tareas Previas 2]
P2_DeseaEntrar = True
WHILE P1_DeseaEntrar
P2_DeseaEntrar = False;
Retraso (Aleatorio, Algunos ciclos)
P2_DeseaEntrar = True;
ENDWHILE;
[Seccin Crtica 2]
P2_DeseaEntrar = False;
[Tareas no Crticas 2]
}
Garantiza exclusin mutua y no hay nter bloqueos por los diferentes retardos.
Aplazamiento indefinido en la ejecucin de 1 o ms procesos.
(5) ALGORITMO DE DECKER
Program Exclusin_mutua;
Var Proceso_favorecido
:(Primero, Segundo);
P1_DeseaEntrar, P2_DeseaEntrar : Boolean;
Matemtico holands
T. DECKER invent este
algoritmo que no
requiere alternancia
estricta.
Procedure Proceso_Uno;
While TRUE do
Begin
[Tareas Previas 1]
P1_DeseaEntrar = True;
While P2_DeseaEntrar do
If Proceso_Favorecido = Segundo Then
Begin
P1_DeseaEntrar = False;
While Proceso_Favorecido = Segundo do;
P1_DeseaEntrar = True;
End;
[Seccin Crtica 1]
Proceso_Favorecido = Segundo;
P1_DeseaEntrar = False;
[ Tareas no crticas 1]
End;
Procedure Proceso_Dos;
While TRUE do
Begin
[Tareas Previas 2]
P2_DeseaEntrar = True;
Sistemas Operativos
Pgina 21 /59
End;
While P1_DeseaEntrar do
If Proceso_Favorecido = Primero Then
Begin
P2_DeseaEntrar = False;
While Proceso_Favorecido = Primero do;
P2_DeseaEntrar = True;
End;
[Seccin Crtica 2]
Proceso_Favorecido = Primero;
P2_DeseaEntrar = False;
[ Tareas no crticas 2]
BEGIN
END
P1_DeseaEntrar = False;
P2_DeseaEntrar = False;
Proceso_favorecido = Primero;
ParBegin
Proceso_Uno;
Proceso_Dos;
ParEnd
Resuelve exclusin mutua.
Utiliza variable de turno con variables de intencin de entrada para resolver casos de
conflicto.
No se produce aplazamiento indefinido.
Sistemas Operativos
Pgina 22 /59
Procedure Proceso_Uno;
While TRUE do
Begin
Actualmente es el ms
[Tareas Previas 1]
usado.
P1_DeseaEntrar = True;
Proceso_Favorecido = Primero;
While P2_DeseaEntrar AND Proceso_Favorecido = Segundo do;
[Seccin Crtica 1]
P1_DeseaEntrar = False;
[ Tareas no crticas 1]
End;
Procedure Proceso_Dos;
While TRUE do
Begin
[Tareas Previas 2]
P2_DeseaEntrar = True;
Proceso_Favorecido = Segundo;
While P1_DeseaEntrar AND Proceso_Favorecido = Primero do;
[Seccin Crtica 2]
P2_DeseaEntrar = False;
[ Tareas no crticas 2]
End;
BEGIN
END
P1_DeseaEntrar = False;
P2_DeseaEntrar = False;
Proceso_favorecido = Primero;
ParBegin
Proceso_Uno;
Proceso_Dos;
ParEnd
Resuelve exclusin mutua y los nter bloqueos.
No se produce aplazamiento indefinido.
Sistemas Operativos
Pgina 23 /59
if (count == 1) wakeup(consumer);
}
void consumer(void)
{
while (true) {
if (count == 0) sleep();
remove_item();
count = count 1;
if (count == N 1) wakeup(producer);
consume_item();
}
Se da un problema porque por ejemplo, al estar vaco el BUFFER, el consumidor esta
evaluando su contador y ve que no hay datos, pero antes de dormirse el CPU pasa a
ejecutar al productor, este pone un dato y despierta al consumidor, sin embargo como el
Consumidor no llego a dormirse al reanudarse se duerme y el productor continua
produciendo. Tarde o temprano el productor habr llenado el BUFFER. Un arreglo es agregar
un bit de espera donde si un proceso quiere despertar a uno que nunca se durmi, este bit
evita que caiga de nuevo al Sleep(), pero esta solucin se vuelve difcil de implementar con
varios procesos y muchos bits de espera.
Semforos
Los semforos vinieron a solucionar el problema de los productores y consumidores
de varios procesos con un bit de espera para evitar problemas con el BUFFER compartido. La
solucin la propuso E.W. Dijkstra (1965) introduciendo la variable de un semforo con dos
funciones manejadas atmicamente.
Sistemas Operativos
Pgina 24 /59
/* Tamao BUFFER.
/* Los semforos son un tipo especial de int.
/* Controla acceso a regin crtica.
/* Cuenta las ranuras vacas
/* Cuenta las ranuras llenas.
Void producer(void)
{
int item;
while (TRUE) {
produce_item(&item);
down(&empty);
/*
down(&mutex);
/*
enter_item(item);
/*
up(&mutex);
/*
up(&full);
/*
}
/* Generar algo.
Decrementa ranuras vacas.
Entrar en seccin crtica
Inserta nuevo elemento.
Sale seccin crtica.
Incrementa ranuras llenas.
}
Void consumer(void)
{
int item;
}
}
while (TRUE) {
down(&full); /* Decrementa ranuras llenas.
down(&mutex);
/* Entra seccin crtica.
remove_item(&item); /* Saca elemento.
up(&mutex);
/* Sale de seccin crtica.
up(&empty);
/* Incrementa ranuras vacas.
consume_item(item); /* Hacer algo con elemento consumido.
Problema de Filsofos con semforos
Cinco filsofos pasan la vida alternando entre comer y pensar, alrededor de una
mesa redonda. Como son medio torpes, requieren dos tenedores para comer, pero como son
pobres, slo tienen 5 tenedores. Han acordado que cada uno usar slo los tenedores a su
Sistemas Operativos
Pgina 25 /59
izq. y a su derecha. Entonces, de los 5 filsofos, slo 2 pueden comer al mismo tiempo, y no
pueden comer dos que son vecinos.
Sistemas Operativos
Pgina 26 /59
Sistemas de Mensajes
Bsicamente se puede dar de 2 formas:
(1)
(2)
Pgina 27 /59
(1)
(2)
(3)
Sistemas Operativos
Pgina 28 /59
Pgina 29 /59
F(CD-ROM)=1
F(impresora)=2
F(plotter)=3
F(Cinta)=4
De esta manera se garantiza que no se generarn ciclos en el grafo de recursos. Una
mejora inmediata es exigir solamente que ningn proceso solicite un recurso cuyo nmero
es inferior a los recursos que ya tiene. Pero tampoco es la panacea. En general, el nmero
potencial de recursos es tan alto que es difcil dar con tal funcin F para ordenarlos.
(5) Evitacin
En vez de restringir la forma u orden en que los procesos deben solicitar recursos,
antes de conceder un recurso, chequeamos que sea seguro.
Hay diversos algoritmos, que varan en el tipo de informacin que requieren a priori
de cada proceso. En el que vamos a ver, necesitamos que cada proceso declare la cantidad
mxima de recursos de cada clase que va a necesitar: Por ejemplo: 2 unidades de cinta, una
impresora lser y 200 bloques de disco, como mximo. (El sistema puede tener varias
unidades de cinta y varias impresoras lser idnticas).
Sistemas Operativos
Pgina 30 /59
Actual
Diferencia
Disponible
10
Prstamo actual
5
3
2
-------------10 utilizadas
Necesidad Mxima
10
5
6
Tengo 2 libres.
A P2 le faltan 2 -> Finalizo P2.
Tengo 5 libres.
A P1 le faltan 5 -> Finalizo P1.
Tengo 10 libres.
A P3 le faltan 4 -> Finalizo P3.
Sistematizando y generalizando para mltiples recursos, obtenemos el algoritmo del
banquero (se supone que los procesos son clientes que piden crdito, y los recursos
corresponden al dinero del que dispone el banco). La idea es bsicamente la misma, slo
que debemos manejar vectores en vez de escalares. Por ejemplo, para 5 procesos y 3
recursos, Mximo, Actual y Diferencia, que antes eran columnas, ahora son matrices de
5x3; y Disponible, que antes era un escalar, ahora es un vector de 3 elementos.
Sistemas Operativos
Pgina 31 /59
Mximo
Actual
Diferencia
Disponible
P0
P1
P2
P3
P4
Actual
Diferencia
Disponible
P0
P1
P2
P3
P4
y tambin es seguro, ya que la secuencia <P1, P3, P4, P0, P2 > es segura. En
consecuencia, podemos otorgar los recursos solicitados por P1.
Si en ese nuevo estado, P4 pide ahora 3 unidades de A y 3 de B, entonces P4 debe
suspenderse porque no hay suficientes recursos para satisfacer el pedido. Si P3 pide 2
unidades adicionales de B, simplemente abortamos el proceso, pues no cumplira con el
mximo declarado. Y si P0 pide 2 unidades de B, tambin debe suspenderse, pero en este
caso porque si se le otorgan, el estado pasara a ser inseguro. Cada vez que algn proceso
libera recursos, debera chequearse cules de las solicitudes pendientes pueden atenderse.
Este algoritmo fue publicado en 1965 y ha sido objeto de innumerables estudios. En
teora funciona muy bien, pero en la prctica, rara vez se usa, puesto que es muy difcil para
los procesos saber a priori sus necesidades mximas de cada recurso.
En resumen, los algoritmos de prevencin son extremadamente restrictivos y los de
evitacin requieren informacin que por lo general no est disponible. Por eso, los mtodos
de deteccin y recuperacin no son tan poco usuales ni descabellados. Tambin se usan
mtodos adecuados a situaciones especficas, pero no existe ningn mtodo mentholatum
(que sirva para todo).
Sistemas Operativos
Pgina 32 /59
Sistemas Operativos
Pgina 33 /59
Multiprogramacin Contigua
Particiones estticas
Ya hemos hablado bastante de las ventajas de la multiprogramacin, para aumentar
la utilizacin de la CPU. La forma ms simple de obtener multiprogramacin es dividiendo la
memoria en n particiones fijas, de tamaos no necesariamente iguales, como lo haca el IBM
360 (dcada del 60; hoy es raro encontrarlo).
Puede haber una cola de trabajos por particin, o bien una sola cola general. En el
primer caso, cuando llega un trabajo, se pone en la cola de la particin ms pequea en la
que todava quepa el trabajo. Si llegan muchos trabajos pequeos podra pasar que,
mientras las colas para las particiones chicas estn llenas, las particiones grandes quedan
sin uso. En el caso de una sola cola, cada vez que un programa termina y se libera una
particin, se escoge un trabajo de la cola general. Cmo escoger?
(1)
(2)
LOAD $210, R1
ADD R1, -1
CMP R1, 0
JNE 102
Sistemas Operativos
Pgina 34 /59
(2)
(3)
en
no
de
en
Hasta ahora hemos supuesto que los procesos son estticos en tamao, pero es ms
realista pensar que pueden crecer, por ejemplo va asignacin dinmica de memoria. Si
es as, conviene reservar un poco ms de memoria que la que estrictamente necesita al
momento de ponerlo en memoria. Al hacer swapping, no es necesario guardar todo el
espacio que tiene reservado, sino slo el que est usando. Qu pasa si proceso quiere
crecer ms all del espacio que se le haba reservado? Si hay un hoyo contiguo se puede
usar. Si no, se puede pasar el proceso a un hoyo ms grande. Si no hay ninguno, se pasa a
disco hasta que haya. Tambin se puede, simplemente, matar al proceso.
Sistemas Operativos
Pgina 35 /59
Otro punto que hay que tener en cuenta al usar swappping, es el I/O que pudiera
estar pendiente. Cuando se hace, por ejemplo, input, se especifica una direccin de
memoria donde se va a poner lo que se lea desde el dispositivo. Supongamos que proceso A
trata de leer del disco hacia la direccin d, pero el dispositivo est ocupado: su solicitud, por
lo tanto, es encolada. Entretanto, el proceso A es intercambiado a disco, y la operacin se
completa cuando A no est en memoria. En esas circunstancias, lo ledo se escribe en la
direccin d, que ahora corresponde a otro proceso. Para evitar tal desastre: no pasar a disco
procesos con I/O pendiente, o bien hacer siempre I/O desde y hacia buffers del sistema
operativo.
Windows 3.x usa swapping, pero un proceso pasado a disco slo vuelve a la memoria
si el usuario activa su ventana. Windows NT usa un esquema ms sofisticado. Unix comienza
a usar swapping cuando se supera un cierto lmite de utilizacin de memoria.
Administracin de Memoria dinmica con mapas de BITS
El sistema operativo debe saber dnde estn los hoyos. Podemos dividir la memoria
en pequeas unidades, y registrar en un mapa de bits (con tantos bits como unidades haya)
las unidades ocupadas con un 1 y las desocupadas con un 0. Las unidades pueden ser de
unas pocas palabras cada una, hasta de un par de KB. A mayor tamao de las unidades,
menor espacio ocupa el mapa de bits, pero puede haber mayor fragmentacin interna.
Desventaja: para encontrar hoyo de n unidades hay que recorrer el mapa hasta encontrar n
ceros seguidos (puede ser caro).
Administracin de Memoria dinmica con lista ligada
Otra forma es con una lista ligada de segmentos: estado (ocupado o en uso),
direccin (de inicio), tamao. Cuando un proceso termina o se pasa a disco, si quedan dos
hoyos juntos, se funden en un solo segmento. Si la lista se mantiene ordenada por direccin,
podemos usar uno de los siguientes algoritmos para escoger un hoyo donde poner un nuevo
proceso (cuyo tamao, obviamente, debe conocerse).
(1)
(2)
(3)
FIRST-FIT: Asignar el primer hoyo que sea suficientemente grande como para
contener al proceso.
BEST-FIT: Asignar el menor hoyo en el que el proceso quepa.
WORST-FIT: Asignar el mayor hoyo.
Cada vez que se asigna un hoyo a un proceso, a menos que quepa exactamente, se
convierte en un segmento asignado y un hoyo ms pequeo. Best-fit deja el hoyo ms
pequeo de todos. La idea de worst-fit es la de dejar hoyos grandes. Simulaciones han
mostrado que first-fit y best-fit son mejores en trminos de utilizacin de la memoria. First-fit
es ms rpido (no hay que revisar toda la lista). Se puede pensar en otras variantes (por
ejemplo, mantener la lista ordenada por tamao, o varias listas, cada una con un rango de
tamaos, etc).
Fragmentacin externa e interna
Los mtodos anteriores de administracin de memoria sufren el problema de la
fragmentacin externa: puede que haya suficiente espacio libre como para agregar un
proceso a la memoria, pero no es contiguo. La fragmentacin puede ser un problema severo.
En algunos sistemas usar first-fit puede ser mejor en trminos de fragmentacin; en otros
puede ser mejor best-fit, pero el problema existe igual. Por ejemplo para first-fit, las
estadsticas hablan de un tercio de la memoria inutilizable por estar fragmentada. Una forma
de resolver este problema es usando compactacin de la memoria: mover los procesos de
manera que queden contiguos. Generalmente no se hace por su alto costo. En una mquina
con 32MB que copia 32 bytes por microsegundo, podra tomar hasta un segundo de CPU. Si
se usa, no es trivial decidir la mejor forma de hacerlo. Si movemos ciegamente los procesos
hacia un extremo de la memoria, podemos estar moviendo de ms, puesto que puede ser
ms barato dejar el hoyo en ese extremo (y no los procesos), o bien dejar el hoyo al medio.
Sistemas Operativos
Pgina 36 /59
Sistemas Operativos
Pgina 37 /59
Se usa una tabla de pginas para saber en que marco se encuentra cada pgina.
Obviamente, necesitamos el apoyo del hardware. Cada vez que la CPU intenta accesar una
direccin, la direccin se divide en nmero de pgina p y desplazamiento u offset d. El
nmero de pgina se transforma en el frame correspondiente, antes de accesar fsicamente
la memoria.
Sistemas Operativos
Pgina 38 /59
El tamao de las pginas es una potencia de 2, tpicamente entre 0.5 y 8K. Si las
direcciones son de m bits y el tamao de pgina es 2n, entonces los primeros m-n bits de
cada direccin forman p, y los restantes n forman d.
Este esquema es parecido a tener varios pares de registros base y lmite, uno para
cada marco (o sea, por cierto, tenemos binding en tiempo de ejecucin).
Cada proceso tiene su propia tabla, es decir, la tabla de pginas forma parte del
contexto: cuando la CPU se concede a otro proceso, hay que cambiar la tabla de pginas a
la del nuevo proceso. La paginacin en general encarece los cambios de contexto. La
seguridad sale gratis, ya que cada proceso slo puede accesar las pginas que estn en su
tabla de pginas.
Fragmentacin? Slo interna, y de media pgina por proceso, en promedio. Esto
sugerira que conviene usar pginas chicas, pero el problema es que aumenta el sobrecosto
de administrar las pginas (entre otras cosas, aumenta el tamao de la tabla de pginas).
En general, el tamao de pgina ha ido aumentando con el tamao de la memoria fsica de
una mquina tpica.
Tablas de pginas
Si las direcciones son de m bits y el tamao de pgina es 2n, la tabla de pginas
puede llegar a contener 2m-n entradas. En el PDP-11 m=16 y m=13; una relacin poco usual,
pero basta con 8 entradas para la tabla de pginas, lo que permite tener 8 registros de CPU
dedicados especialmente a tal propsito. En una CPU moderna, m=32 (y ahora, incluso, 64),
y n=12 o 13, lo que significa que se requeriran cientos de miles de entradas: ya no es
posible tener la tabla en registros.
Lo que podemos hacer es manejar la tabla de pginas de cada proceso
completamente en memoria, y usar slo un registro que apunte a la ubicacin de la tabla.
Para cambiar de un proceso a otro, slo cambiamos ese registro. Ventaja: agregamos slo un
registro al cambio de contexto. Desventaja: costo de cada acceso a memoria se duplica,
porque primero hay que accesar la tabla (indexada por el nmero de pgina). O sea, si sin
paginacin nos costaba 70ns cada acceso, ahora nos cuesta 140!
Solucin tpica (intermedia): usar un pequeo y rpido cach especial de memoria
asociativa, llamado translation look-aside buffer (TLB). La memoria asociativa guarda
pares (clave, valor), y cuando se le presenta la clave, busca simultneamente en todos sus
registros, y retorna, en pocos nanosegundos, el valor correspondiente. Obviamente, la
memoria asociativa es cara; por eso, los TLBs rara vez contienen ms de 64 registros. El TLB
forma parte de la MMU, y contiene los pares (pgina, marco) de las pginas ms
recientemente accesadas. Cuando la CPU genera una direccin lgica a la pgina p, la MMU
busca una entrada (p,f) en el TLB. Si est, se usa marco f, sin acudir a la memoria. Slo si no
hay una entrada para p la MMU debe accesar la tabla de pginas en memoria (e incorporar
una entrada para p en el TLB, posiblemente eliminando otra).
La gracia es que, por pequeo que sea el TLB, la probabilidad de que la pgina est
en el TLB (tasa de aciertos) es alta, debido a que los programas suelen hacer muchas
referencias a unas pocas pginas (por ejemplo, copiar un arreglo). Si la tasa de aciertos es
del 90% y un acceso al TLB cuesta 10ns, entonces, en promedio, cada acceso a memoria
costar 87ns (por qu?). o sea, slo un 24% ms que un acceso sin paginacin. Una Intel
80486 tiene 32 entradas en el TLB; Intel asegura una tasa de aciertos del 98%.
En cada cambio de contexto, hay que limpiar el TLB, lo que puede ser barato, pero
hay que considerar un costo indirecto: si los cambios de contexto son muy frecuentes, la
tasa de aciertos se puede reducir (por qu?).
Otras ventaja de paginacin: tambin se facilita almacenamiento de procesos en el
disco; permite que procesos compartan pginas. Por ejemplo, varios procesos ejecutando el
mismo cdigo (que tiene que ser reentrante): las primeras pginas lgicas apuntan a las
mismas pginas fsicas, que contienen el cdigo. El resto, apunta a datos locales, propios de
cada ejecucin.
Sistemas Operativos
Pgina 39 /59
IMPLEMENTACION:
Similar a paginacin: en vez de tabla de pginas, tenemos tabla de segmentos; para
cada segmento, necesitamos saber su tamao y dnde comienza (base). Una direccin
lgica (s,d), se traduce a base(s)+d. Si d es mayor que el tamao del segmento, entonces
ERROR.
Sistemas Operativos
Pgina 40 /59
Pero la memoria sigue siendo, fsicamente, un slo arreglo de bytes, que debe contener
los segmentos de todos los procesos. A medida que se van creando y eliminando procesos,
se va a ir produciendo, inevitablemente fragmentacin externa.
Si consideramos cada proceso como un slo gran segmento, tenemos el mismo caso que
el de las particiones variables (ver Intercambio). Como cada proceso tiene varios segmentos,
puede que el problema de la particin externa se reduzca, pues ya no necesitamos espacio
contiguo para todo el proceso, sino que slo para cada segmento. Para eliminar
completamente el problema de la fragmentacin interna, se puede usar una combinacin de
segmentacin y paginacin, en la que los segmentos se paginan.
Sistemas Operativos
Pgina 41 /59
Sistemas Operativos
Pgina 42 /59
Pgina 43 /59
Solucin: usar tablas de varios niveles. El 386 usa dos niveles: una direccin lgica
de 32 bits la dividimos en (p1, p2, d), de 10, 10 y 12 bits respectivamente. Usamos p1 como
ndice a una tabla de tablas (o metatabla) o tabla de primer nivel, que contiene 210=1024
entradas de 32 bits (o sea, ocupa justo una pgina). La entrada correspondiente a p1 en esta
tabla indica el frame donde se encuentra otra tabla (de segundo nivel), donde hay que
buscar indexando por p2, el frame donde est la pgina que finalmente se necesita.
La clave es que slo estamos obligados a mantener en memoria la tabla de primer
nivel. Las otras (que tambin ocupan exactamente una pgina), se tratan como pginas
ordinarias, es decir, pueden estar en disco. As, al utilizar la propia memoria virtual para
estas pginas, se mantienen en memoria fsica slo las ms usadas. Claro que estamos
agregando un acceso ms a la memoria para convertir cada direccin lgica a una fsica,
pero con un TLB con tasa de aciertos alta el impacto es mnimo.
Ahora, si las direcciones son de 64 bits, tendramos que usar ms niveles. Otra
posibilidad sera usar tablas de pgina invertidas, en las que, en vez de haber una entrada
por pgina virtual, hay una entrada por marco en la memoria fsica. As, si tenemos 32 MB
de memoria real y pginas de 4 KB, una tabla invertida necesita slo 8K entradas
(independientemente de si las direcciones son de 32 o 64 bits). Cada entrada dice a qu
pgina virtual de qu proceso corresponde el marco. Cuando proceso P accesa direccin
lgica l, hay que buscar un par (P,l) en esta tabla. La posicin de este par es el marco que
hay que accesar. Problema obvio: la bsqueda en una tabla de 8192 entradas puede costar
muchos accesos a memoria. Soluciones: otra vez el TLB evita hacer la bsqueda la mayor
parte de las veces, y se puede implementar la tabla con hashing.
Reemplazo de pginas
Hasta ahora hemos soslayado un tema fundamental. Cuando un proceso accesa una
pgina invlida, hay que ir a buscar su contenido a disco y ponerlo en algn marco. El punto
es en qu marco, si no hay ninguno libre? Una posibilidad en tal caso es pasar a disco un
proceso, con lo cual los marcos que ocupaba quedan libres. Vamos a analizar este caso ms
adelante.
Lo usual es usar algn algoritmo de reemplazo de pginas para seleccionar un marco
vctima (por ejemplo, al azar). Para poder usar ese marco, primero hay que sacar la pgina
que originalmente contena, o sea, pasarla a disco. Sin embargo, si la pgina original no
haba sido modificada, la copia en disco es idntica, as que se puede descartar esta
operacin de escritura. El sistema operativo puede saber si una pgina ha sido modificada
examinando un bit asociado a la pgina (el dirty bit) que el hardware se encarga de poner
en 1 cada vez que se escribe en ella.
O sea, cada falta de pgina produce una o dos transferencias de pginas entre la
memoria y el disco. Moraleja: tratar de reducir las faltas al mnimo. Por lo tanto, para
comparar algoritmos de reemplazo hay que contar cuntas faltas se producen dadas
algunas secuencias de acceso a la memoria (cules?).
Vamos a comenzar por analizar formas de elegir un marco de un conjunto. Despus
vamos a analizar si ese conjunto debe contener todos los marcos, o slo los que le
corresponden al proceso.
Algoritmos para el reemplazo de pginas
Algoritmo ptimo
El algoritmo que evidentemente minimiza el nmero de faltas consiste en escoger la
pgina para la cual el lapso de tiempo hasta la prxima referencia es el mayor.
Si tenemos tres marcos y las pginas son accesadas en la secuencia 7, 0, 1, 2, 0, 3,
0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1, tendramos 9 faltas.
Lo "nico" malo es que es imposible de implementar, pues para escoger una pgina
hay que conocer cules sern los accesos futuros. En todo caso, sirve como referencia.
Sistemas Operativos
Pgina 44 /59
FIFO
Consiste en reemplazar la pgina ms vieja (la que lleva ms tiempo en memoria
fsica). Es simple, pero no es bueno, ya que la pgina ms antigua no necesariamente es la
menos usada. En el ejemplo tendramos 15 faltas. Adems sufre de la Anomala de Belady:
las faltas pueden aumentar si aumentamos el nmero de marcos disponibles (probar
1,2,3,4,1,2,5,1,2,3,4,5 con 3 y 4 marcos).
La menos recientemente usada (LRU)
La poltica ptima usa conocimiento del futuro. Se puede aproximar este
conocimiento usando el pasado reciente para predecir el futuro. Se selecciona la pgina
menos recientemente usada con la esperanza de que, si no ha sido accesada en el pasado
reciente, no lo ser en el futuro cercano. Con el ejemplo LRU producira 12 faltas. Es una
buena poltica, pues los procesos presentan localidad temporal de referencia.
El problema es que la implementacin requiere un apoyo del hardware que es caro
de implementar. Por ejemplo, con un contador y un campo adicional (de unos 64 bits) para
cada pgina. Cada vez que se accesa una pgina, se incrementa el contador y se guarda en
el campo de la pgina accesada. As la pgina menos recientemente usada es aquella con el
menor valor en su campo. Hay otras posibilidades, pero todas caras, por lo que LRU en
general no se usa; ms bien se usan aproximaciones ms baratas.
Fondos de marcos
Independientemente del algoritmo de reemplazo usado, se puede mantener un pool
o fondo de marcos libres. Ante una falta de pgina, se escoge una vctima como siempre,
pero la pgina faltante se pone en un marco del fondo si es que la vctima tiene el bit de
modificacin encendido. La vctima se puede escribir a disco y pasar al fondo despus de
reanudar el proceso, con lo que se reduce el tiempo de espera.
Adems, si se produce una falta sobre una pgina que todava est en el pool,
entonces no es necesario ir a buscarla al disco. Las primeras partidas de la CPU VAX no
mantenan correctamente el bit de referencia, de manera que el sistema operativo VMS
usaba FIFO; pero gracias a un fondo de pginas se mejoraba el rendimiento.
Tambin se pueden aprovechar los momentos en que el disco est libre para escribir
las pginas sucias (qu se gana? por cules pginas conviene comenzar?).
Hiperpaginacin o thrashing
El conjunto de pginas que un proceso est usando se denomina el conjunto de
trabajo.
Supongamos que un proceso est usando 4 pginas en forma intensiva, (por ejemplo,
1,2,3,4,1,2,3,4,1,2,3,4...). Si las 4 pginas que conforman su conjunto de trabajo estn en
memoria, entonces el proceso ejecutar fluidamente. Pero si slo dispone de 3 marcos,
cualquiera sea el algoritmo de reemplazo, slo alcanzar a ejecutar unas pocas
instrucciones cada vez, antes de producir una falta de pgina, o sea, hace Hiperpaginacin,
y como consecuencia el proceso andar un milln de veces ms lento que con cuatro
marcos!
Asignacin de marcos
Cuntos marcos le asignamos a cada proceso? Debemos considerar que:
No podemos asignar ms marcos que los que hay.
Pasado un lmite, si asignamos ms marcos a un proceso no vamos a reducir
significativamente el nmero de faltas de pginas (ejemplo del compilador de dos
pasadas).
Si m es el mximo nmero de marcos que requiere una instruccin de la mquina, no
podemos asignar menos que m. Ejemplo: ADD A,B podra requerir 6 marcos.
Si asignamos pocos, nos caben ms procesos en memoria, pero corremos el riesgo
de que los procesos pasen a rgimen de Hiperpaginacin.
Sistemas Operativos
Pgina 45 /59
Si hay N procesos y M marcos, podemos asignar M/P marcos a cada uno, pero los
procesos chicos podran quedar con ms marcos que los que necesitan. Mejor sera hacer
una asignacin proporcional al tamao de los procesos. En cualquiera de los dos casos, hay
que considerar la entrada y salida de procesos al sistema. Adems, para mantener la
proporcionalidad, el reemplazo de pginas debe ser local, es decir, si un proceso produce
una falta de pgina, se escoge una vctima dentro de sus propios marcos.
Otra posibilidad es dejar que la asignacin se vaya ajustando sola, por la va de usar
reemplazo global, es decir, escoger una vctima entre todos los marcos, sin importar a que
proceso est actualmente asignado. En general, se obtienen mejores resultados, pues la
asignacin se adapta dinmicamente al tamao de los conjuntos de trabajo.
Una manera ms directa de controlar la Hiperpaginacin es monitoreando la tasa de
faltas por segundo de cada proceso. Si supera un lmite MAX se le asignan ms marcos, y si
baja de MIN se le quitan marcos. Si se llega a una situacin en la que no es posible
mantener a todos los procesos bajo MAX, entonces se pasan procesos a disco.
Proceso de Usuario
Software independiente del dispositivo
Manejadores de dispositivo (drivers)
Controladores
Dispositivo mecnico
Pgina 46 /59
pueda usar. La tarea del driver es la de aceptar rdenes abstractas (independientes del
dispositivo) de la capa superior (como por ejemplo, leer el bloque n), traducirla a rdenes
concretas (dependientes del dispositivo) y dar esas rdenes al controlador correspondiente.
El sistema de archivos pertenece a la capa de software independiente del dispositivo, ya
que slo maneja bloques lgicos, numerados correlativamente. Gracias esta estructuracin,
se puede usar el mismo sistema de archivos para una serie de dispositivos diferentes: discos
flexibles, discos duros, CD-ROMs, etc.
La divisin exacta entre las dos capas depende un poco del sistema operativo: tareas
que se pueden considerar independientes del dispositivo pueden asignarse al driver por
razones de eficiencia.
El manejo de errores se hace principalmente en el driver, pues la mayora de los errores
son dependientes del dispositivo (y por ende, slo el driver podra saber qu hacer). Por
ejemplo, si el driver recibe un mensaje de error del controlador al intentar leer un bloque,
reintentar varias veces antes de reportar el error a la capa superior. Entonces el software
independiente del dispositivo decidir qu hacer, en una forma independiente del dispositivo
(por ejemplo, comunicar el error para arriba).
Funcionamiento de un disco duro y bsquedas
Un disco, mirado desde ms bajo nivel, no es simplemente una secuencia de
bloques. Est compuesto de platos, cada uno de los cuales contiene una serie de pistas o
tracks concntricos. A su vez, las pistas se dividen en sectores. Las pistas exteriores, que
son ms grandes, pueden contener ms sectores que las interiores. (En un CD, en realidad
hay una espiral de sectores.) Existe un brazo mecnico con un cabezal lector / escritor para
cada plato. El brazo mueve todos los cabezales juntos. Un cilindro se conforma por las pistas
que los cabezales pueden leer cuando el brazo est en una posicin determinada.
Una de las tareas del manejador de disco es traducir los bloques lgicos que ve el
resto del sistema operativo a un tro (cilindro, plato, sector). El tiempo requerido para leer un
sector depende de:
El seek time o tiempo de bsqueda, es decir, el tiempo requerido para mover el brazo
al cilindro apropiado.
El retardo rotacional, o sea, el tiempo que hay que esperar hasta que el sector
requerido pase por debajo del cabezal.
El tiempo de transferencia de los datos.
Sistemas Operativos
Pgina 47 /59
Los discos, en cuanto dispositivos mecnicos, son propensos a fallas. A veces la falla
es transitoria: el controlador no puede leer un sector debido a que se interpuso una partcula
de polvo entre el cabezal y la superficie del disco. El controlador siempre reintenta varias
veces una operacin que fracasa por si la falla es transitoria; muchas veces se resuelve, sin
que el driver siquiera se entere. En los casos en que el sector est permanentemente
daado, el error se informa al driver, y el driver informa al sistema de archivos, quien de
alguna manera registra el bloque como daado, para no volver a usarlo. Cmo se pueden
registrar los bloques daados? Igual hay bloques crticos: en todo sistema de archivo, debe
haber al menos un bloque en una direccin fija. Si ese bloque se daa, el disco entero se
hace inusable.
Algunos controladores inteligentes reservan de antemano algunas pistas, que no son
visibles para el driver. Cuando se daa un sector, el propio controlador lo reemplaza por uno
de los reservados. (en forma transparente, si la operacin era de escritura, pero no tan
transparente si era de lectura). Muchos discos vienen con sectores daados ya marcados
desde la fbrica. Pero, dnde se guarda la informacin de los bloques malos? As, si el
bloque 5 se daa, entonces el controlador usa, digamos, el 999 cada vez que el driver le
solicita el 5. El problema es que los algoritmos de scheduling de disco se van a las pailas.
Solucin que a veces se usa: que el controlador reserve bloques esparcidos en el disco, y
cuando se dae un sector, trate de sustituirlo por uno de los de reserva que se encuentre en
el mismo cilindro, o por lo menos cerca.
Algoritmos para planificar brazo de acceso en disco
FIFO
Es simple, pero no estamos haciendo nada por la eficiencia. Es malo si las solicitudes
se alternan entre cilindros exteriores e interiores. Por ejemplo, si, mientras se lee el cilindro
11 llegan solicitudes para los cilindros 1,36,16,34,9,12, y se atienden en ese orden, el brazo
recorrer 111 cilindros.
SSTF (shortest seek-time first)
Se trata de atender primero las solicitudes ms cercanas a la posicin actual del
brazo. La atencin sera en el orden 11,12,9,16,1,34,36, para un total de 61 cilindros de
desplazamiento. El problema es que, cuando hay muchas solicitudes, es posible que slo se
atiendan las cercanas al centro. Puede haber inanicin para los procesos que solicitan
cilindros de los extremos.
Algoritmo del ascensor
Para evitar inanicin, se mantiene la direccin de movimiento del brazo hasta que no
queden solicitudes pendientes en esa direccin. Es lo mismo que hacen los ascensores. En el
ejemplo, suponiendo que el brazo iba hacia las direcciones altas, las solicitudes se
atenderan en el orden 11,12,16,34,36,9,1, lo que da un total de 60 cilindros de recorrido del
brazo. O sea, en este caso en particular es un poco mejor que SSTF, pero en general es peor.
Una propiedad interesante es que para cualquier conjunto de solicitudes, el movimiento del
brazo est acotado: 2 veces el ancho del disco. Un pequeo problema es las solicitudes en
los extremos tienen, en promedio, un tiempo de espera mayor. Esto se puede resolver si las
solicitudes siempre se atienden en un solo sentido. En el otro sentido, el cabezal se
devuelve, pero sin atender solicitudes a su paso.
Tambin podramos pensar en un algoritmo ptimo, pero su complejidad no justifica
usarlo. Si la carga es muy poca (la cola nunca tiene ms de una solicitud pendiente) todos
los algoritmos tienen el mismo rendimiento. Para cargas pesadas, se usa el del ascensor.
Arreglos de discos duros
Se puede decir que los discos son la componente menos confiable de un computador,
la componente ms complicada de sustituir, y la que frena el mejoramiento de la velocidad
de procesamiento con los avances tecnolgicos. En efecto, la velocidad de los procesadores
se duplica ms o menos cada 2 aos, y la capacidad de los chips de memoria crece a un
ritmo parecido. No obstante, el ancho de banda (velocidad de transferencia) del I/O ha
variado muy poco.
Sistemas Operativos
Pgina 48 /59
A este ritmo, en 7 aos ms los procesadores van a ser 10 veces ms rpidos, pero
en general las aplicaciones corrern menos de 5 veces ms rpido, por las limitaciones de
I/O.
Una solucin posible: en lugar de uno solo disco grande, usar muchos discos chicos y
baratos, en paralelo, para mejorar el ancho de banda. Para garantizar paralelismo, se hace
disk striping o divisin en franjas. Cada bloque lgico se compone de varios sectores fsicos,
cada uno en un disco distinto. As, cada acceso a un bloque lgico se divide en accesos
simultneos a los discos. En 1991 la situacin era la siguiente:
IBM 3380: 7500 MB, 18 U$/MB, 30000 horas de MTTF (mean time to failure)
Conner CP3100: 100 MB, 10 U$/MB, 30000 horas de MTTF
El IBM 3380 tiene bastante ms ancho de banda que un CP3100, pero si juntamos 75 de
estos ltimos tenemos la misma capacidad total, con menor costo, menor consumo de
electricidad, y potencialmente 12 veces ms ancho de banda. El gran problema es la
confiabilidad: si antes tenamos 30000 horas de funcionamiento sin fallas, ahora tendramos
400 (30000/75) horas, o sea, slo dos semanas. O sea, la tolerancia a fallas es crucial, y
para obtenerla se usa redundancia, en una configuracin conocida como RAID (Redundant
Array of Inexpensive Disks), y que se puede implementar en varios niveles.
RAID 1
Se usan discos espejos, o sea, la informacin de cada disco se mantiene siempre
duplicada en otro idntico. O sea, MTTF aumenta notoriamente, pero duplicando el costo.
RAID 2
Se reduce la redundancia usando tcnicas de deteccin y correccin de errores
(cdigos de Hamming). Por ejemplo, si un bloque se reparte entre 10 discos y suponemos
que no va a haber ms de una falla simultneamente, entonces no necesitamos duplicar el
bloque entero para reconstituirlo en caso de falla, puesto que ante una falla slo se perder
un 10% de la informacin. El problema es que si no sabemos qu 10% se perdi, de todas
maneras se necesita bastante redundancia (20 a 40%).
RAID 3
El punto es que, gracias a que cada controlador usa sumas de chequeo (y
suponiendo que adems podemos saber cundo un controlador falla) s podemos saber qu
trozo de la informacin est errnea. Y sabiendo eso, basta con usar slo un disco adicional
para guardar informacin de paridad con la cual es posible reconstituir la informacin
original.
Hay otros niveles (RAID 4 y 5). Ahora (1996) la situacin es:
La ganancia en ancho de banda es menor que la terica, entre otras cosas porque la
tolerancia a fallas impone un overhead. Por otra parte, con un RAID de 100 discos para datos
y otros 10 para paridad, el MTDL (mean time to data loss) es de 90 aos, comparado con 3
aos de los discos estndares.
Sistemas Operativos
Pgina 49 /59
Sistemas Operativos
Pgina 50 /59
Nodos-I
El ltimo mtodo consiste en mantener juntos los punteros de cada archivo, en una
tabla, asociada al archivo, y que se guarda en un bloque como cualquiera (esta tabla es
anloga a la tabla de pginas). Adems, en ese bloque se puede guardar informacin de los
otros atributos del archivo. El directorio slo contiene un puntero al bloque que contiene la
tabla.
Problema: y si el archivo es grande y su tabla no cabe en un solo bloque?
Soluciones: lista ligada de bloques, ndice multinivel (como en las tablas de pginas), o un
esquema combinado, que es lo que se usa en Unix:
Supongamos que en un bloque, aparte del espacio para los atributos, queda espacio
para 32 punteros a otros bloques. Entonces los 29 primeros se usan como hemos dicho, es
decir, apuntan a bloques que contienen datos del archivo. Pero los tres ltimos apuntan a
bloques indirectos. El antepenltimo apunta a un bloque indirecto simple, es decir a un
bloque que contiene punteros a bloques con datos. El penltimo apunta a un bloque
indirecto doble, es decir a un bloque que contiene punteros a bloques con punteros a
bloques con datos. El ltimo apunta a un bloque indirecto triple, es decir... adivinen. Hasta
qu tamao de archivo soporta este sistema?
Sus ventajas es que prcticamente lo nico que hay que registrar en el directorio es
un puntero al i-node. Acceso aleatorio rpido para archivos pequeos. Bajo overhead fijo (no
hay FAT, entradas en directorios pequeas).
Su desventaja es que es relativamente complejo. Mayor overhead variable: cada
archivo, por pequeo que sea, necesita al menos dos bloques. Acceso aleatorio ms
complicado para archivos grandes (en todo caso, los bloques con ndices pueden guardarse
en memoria para agilizar el acceso).
Sistemas Operativos
Pgina 51 /59
Pgina 52 /59
En Unix, hay una llamada al sistema, sync, para asegurarse que los bloques modificados se
graben en el disco. Por eso, antes de sacar un disquete, se debe hacer sync. MS-DOS, en
cambio, usa un cach write-through, es decir, cada vez que se escribe un bloque en el
cach, este se graba inmediatamente en el disco. Por eso no hay que hacer nada especial
antes de retirar un disquete, pero es menos eficiente.
Sistemas Operativos
Pgina 53 /59
OTROS TEMAS
Sistemas Distribuidos
Un sistema distribuido es una coleccin de computadores conectados por una red de
comunicaciones, que el usuario percibe como un solo sistema (no necesita saber qu cosas
estn en qu mquinas). El usuario accesa los recursos remotos de la misma manera en que
accesa recursos locales.
En comparacin con un sistema centralizado:
Redes de computadores
Cada computador en una red es un nodo. Los nodos pueden estar conectados
fsicamente de diversas maneras: red totalmente conectada, parcialmente conectada,
jerrquica, en estrella, anillo o bus.
Ya que no hay memoria compartida, la comunicacin entre los nodos se basa
exclusivamente en mensajes. Cmo programamos ahora un sistema productor-consumidor,
si el productor est en un nodo y el consumidor en otro? Mediante mensajes. Un sistema
operativo con soporte para redes provee primitivas de comunicacin interprocesos:
send(P, mensaje) enva el mensaje al proceso P, y contina.
receive(Q, mensaje) bloquea el proceso hasta recibir un mensaje de Q.
receive(id, mesaje) bloquea el proceso hasta recibir un mensaje de cualquier proceso. El
Identificador del emisor se devuelve en id.
Cmo se identifican los procesos? Cmo se hace llegar un mensaje a su destino, si
la red no est totalmente conectada? (Estrategias de ruteo). Las redes de comunicacin no
son confiables, lo que significa que no hay ninguna garanta de que un mensaje llegue a
destino. Esta imperfeccin suele ser ocultada por el sistema operativo, quien provee a los
procesos primitivas de comunicacin que son una abstraccin de una red confiable: por
debajo el sistema se las arregla mediante ACKs, timeouts y retransmisiones para resolver
problemas causador por errores transitorios como prdida de mensajes.
En rigor, en un sistema centralizado los procesos tambin se pueden comunicar
mediante mensajes (recordemos que los procesos, por defecto, no comparten memoria).
Sistemas operativos de red
Un sistema operativo de red provee un ambiente en el que los usuarios pueden
accesar recursos remotos, pero deben estar conscientes de la multiplicidad de mquinas.
Login remoto
En Unix, uno puede hacer telnet lucifer.cs.uwm.edu si quiere entrar a esa mquina en
forma remota. Cuando se ejecuta este programa se crea un proceso cliente telnet que
intenta comunicarse con la mquina remota. Para que esto funcione, en tal mquina debe
haber un servidor telnet, que, cuando recibe una solicitud de conexin, crea un proceso que
acta en representacin del usuario (previa autentificacin). Todo lo que el usuario digita es
enviado por el cliente al proceso remoto, quien ejecuta los comandos y enva la salida para
que el cliente la despliegue.
Sistemas Operativos
Pgina 54 /59
Transferencia de archivos
Otra funcin que los sistemas operativos de red proveen es la de transferencia de archivos.
En la Internet hacemos
ftp altar.ing.puc.cl
<autentificacin...>
get archivo
o tambin:
rcp maquina1:archivo1 maquina2:archivo2
Bajo este esquema no hay transparencia para el usuario, pues ste debe saber
exactamente dnde est el archivo que necesita. El acceso a un archivo remoto difiere
bastante del acceso a un archivo local. Adems, los archivos en realidad no se comparten;
ms bien, hay muchas copias de un mismo archivo en todos los lugares en los que se
necesita; no slo se gasta espacio, sino que puede haber problemas de consistencia. FTP se
implementa de manera similar a telnet, slo que el servidor FTP responde slo a un conjunto
predefinido de comandos (get, put, ls, cd, etc.).
Un punto importante acerca de telnet y FTP es que el usuario debe cambiar de
paradigma. Para usar FTP el usuario debe conocer un conjunto de comandos que difiere
bastante de los comandos del sistema operativo. En el caso de telnet la diferencia no es tan
drstica, pero existe en la medida que el sistema operativo de la mquina remota difiera del
de la mquina local.
NFS
Un avance sera proveer un sistema de archivos global, accesible por todas las
estaciones de trabajo en la red. Los servidores de archivos soportan el sistema de archivos,
y atienden solicitudes de las estaciones para leer, escribir y, en general, manipular archivos.
NFS (Network File System) puede clasificarse como un sistema operativo de red. NFS
permite que una coleccin de clientes y servidores compartan un sistema de archivos
comn. Una mquina puede ser cliente y servidor al mismo tiempo. Cada servidor exporta
uno o ms de sus directorios para que sean accesados por clientes remotos. Los clientes
accesan estos directorios montndolos en algn punto de su jerarqua de directorios. (mount
server:/cdrom /net/cdrom). Este esquema permite tener estaciones sin disco.
Una vez que el directorio est montado, para un programa que ejecuta en la mquina
cliente, no hay diferencia en la forma de accesar archivos locales y remotos. Ahora s, los
archivos son verdaderamente compartidos. Hay transparencia, pero menos que la ideal: el
nombre de un archivo compartido depende del lugar desde donde se accese: /net/cdrom de
una mquina puede ser el /remote/cddrive de otra.
Para el montaje, el cliente enva al servidor una solicitud, especificando el nombre de
uno de los directorio que el servidor exporta. Si todo es legal, el servidor devuelve un asidor
file handle al cliente, que contiene, entre otras cosas, el dispositivo en el que se encuentra,
y el nmero del nodo-i del directorio. El cliente debe usar este asidor en todas las
operaciones subsecuentes sobre ese directorio. NFS soporta las mismas operaciones sobre
archivos que UNIX, con la excepcin de open y close. Para usar un archivo, el cliente primero
enva una solicitud de bsqueda (LOOKUP) indicando el nombre del archivo. El servidor, en
vez de almacenar localmente la informacin que tradicionalmente se maneja en una tabla
de archivos abiertos, la enva como respuesta al cliente en un asidor. De ah en adelante,
para leer y escribir archivos, el cliente debe especificar el asidor cada vez. Ventaja: toda la
informacin la maneja el cliente, de manera que el servidor no tiene que recordar nada
(servidor sin estado o stateless). El servidor puede caerse y recuperarse, sin que el cliente lo
note.
NFS soporta sistemas heterogneos. Por ejemplo, un cliente DOS puede accesar archivos de
un servidor Unix.
Sistemas Operativos
Pgina 55 /59
Pgina 56 /59
Sistemas Operativos
Pgina 57 /59
TABLA DE CONTENIDO
UNIDAD 1 : Introduccin......................................................................... 1
DIVISIONES DEL SOFTWARE.............................................................................1
DEFINICIN DE UN SISTEMA OPERATIVO (S.O.)..................................................1
MISIN DEL SISTEMA OPERATIVO.....................................................................................1
COMPONENTES PRINCIPALES............................................................................................ 1
DEFINICIN DE UNA MAQUINA VIRTUAL (MAQUINA EXTENDIDA)......................................1
EL ARRANQUE DE UN SISTEMA OPERATIVO......................................................................1
EVOLUCION DE LAS COMPUTADORAS................................................................1
Primera generacin (1945-1955): tubos de vaco.............................................................2
Segunda generacin (1955-1965): transistores y procesamiento por lotes......................2
Tercera generacin (1965-1980): circuitos integrados y multiprogramacin....................3
Cuarta generacin (1980-): computadores personales.....................................................3
EVOLUCION DE LOS SISTEMAS OPERATIVOS (ESTRUCTURAS).............................3
(1) MONOLTICOS.............................................................................................................. 3
(3) MAQUINAS VIRTUALES................................................................................................4
(4) CLIENTE / SERVIDOR................................................................................................... 4
MODOS DE EJECUCIN.....................................................................................5
TIPOS DE PROTECCION..................................................................................................... 5
INTERRUPCIONES.............................................................................................................. 5
VECTOR DE INTERRUPCIONES.......................................................................................... 6
CATEGORAS PRINCIPALES................................................................................................ 6
LLAMADAS REFERENTES A ARCHIVOS..............................................................................6
CLASIFICACION DE LOS SISTEMAS OPERATIVOS (CAPAS)....................................6
DISPOSITIVOS FISICOS...................................................................................................... 7
MICROPROGRAMACIN..................................................................................................... 7
LENGUAJE MAQUINA......................................................................................................... 7
PROGRAMAS DE SISTEMA.................................................................................................7
PROGRAMAS DE APLICACION............................................................................................ 7
UNIDAD 2 : Procesos.............................................................................. 8
DEFINICIN DE PROCESO.................................................................................8
MULTIPROGRAMACION (TIME-SHARING)...........................................................................8
LLAMADAS AL SISTEMA DE ADMINISTRACIN DE PROCESOS...........................................8
ESTADOS DE PROCESOS...................................................................................8
TABLA DE PROCESOS.......................................................................................9
PROCESOS HIJO.............................................................................................................. 10
HILOS DE CONTROL (THREADS)......................................................................................10
UNIDAD 4: Concurrencia....................................................................... 17
COMUNICACIN ENTRE PROCESOS.................................................................17
Formas de comunicacin................................................................................................ 17
MEMORIA COMPARTIDA..................................................................................18
Sistemas Operativos
Pgina 58 /59
EXCLUSIN MUTUA......................................................................................................... 18
CONDICIONES DE COMPETENCIA (RACE-CONDITION).....................................................18
SECCIONES CRITICAS...................................................................................................... 18
ALGORITMOS PARA LOGRAR EXLUSION MUTUA (MEMORIA COMPARTIDA)..........18
4 CONDICIONES PARA SOLUCION ADECUADA DE DATOS COMPARTIDOS:.......................18
(1) Sistema en Lotes (Inhabilitacin de Interrupciones)..................................................18
(2) Variable de Candado (Sin variables iniciales)............................................................19
(3) Variable de Candado (Con Variables iniciales)...........................................................19
(4) Variable de Candado (Con Variables iniciales de desear entrar)................................20
(5) ALGORITMO DE DECKER............................................................................................ 21
(6) ALGORITMO DE PETERSON........................................................................................ 23
(7) Algoritmo Productor Consumidor..............................................................................23
Semforos.................................................................................................... 24
Aplicados a Productor Consumidor.................................................................................25
Problema de Filsofos con semforos.............................................................................25
Sistemas de Mensajes...................................................................................27
Concurrencia en apartados............................................................................................. 27
Tipos de apartados......................................................................................................... 27
BUFFERING para mensajes............................................................................................. 28
Tipos de Mensajes.......................................................................................................... 28
Pgina 59 /59
OTROS TEMAS...................................................................................... 55
Sistemas Distribuidos....................................................................................55
Redes de computadores................................................................................................. 55
Sistemas operativos de red............................................................................................ 55
Login remoto.................................................................................................................. 55
Transferencia de archivos............................................................................................... 56
NFS................................................................................................................................. 56
Sistemas operativos distribuidos y aspectos de diseo..................................................57
Aspecto 1: Transparencia............................................................................................... 57
Aspecto 2: Confiabilidad................................................................................................. 57
Aspecto 3: Escalabilidad................................................................................................. 57
Aspecto 4: Flexibilidad.................................................................................................... 58
Sistemas Operativos
Pgina 60 /59