Beruflich Dokumente
Kultur Dokumente
Aspectos Introductorios.........................................................................................................................................75
Uso de la memoria en monoprogramacin............................................................................................................75
Proteccin y relocalizacin....................................................................................................................................76
Intercambio de trabajos. Solapamiento..................................................................................................................77
Multiprogramacin con particiones fijas. Fragmentacin interna.........................................................................78
Multiprogramacin con particiones variables. Fragmentacin externa.................................................................80
Captulo 13.- Paginado y segmentado...................................................................................................................82
Tcnicas de asignacin de memoria......................................................................................................................82
Paginado.................................................................................................................................................................85
Segmentado............................................................................................................................................................87
Esquemas combinados...........................................................................................................................................89
Captulo 14.- Memoria virtual................................................................................................................................90
Memoria virtual.....................................................................................................................................................90
Demanda de pgina y prepaginado........................................................................................................................90
Algoritmos de reemplazamiento de pginas..........................................................................................................92
Sobreposicin (Overlays)......................................................................................................................................94
Administracin de memoria en sistemas operativos actuales................................................................................94
Pag - 2
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin.
Todo sistema de cmputo se puede dividir, en forma general, en dos partes: hardware
(aseguramiento tcnico) y software (aseguramiento de programas).
El software hace til al hardware y puede dividirse en dos clase: los programas del sistema
(software de base) que manejan la operacin de la computadora, y el software de aplicacin que
realiza acciones tiles a los usuarios.
Entre los programas del sistema se pueden mencionar: sistemas de operacin (los ms
importantes de todo el conjunto), compiladores, intrpretes, editores, etc.
El sistema operativo es la primera capa de software que se coloca sobre el crudo hardware,
separando a los usuarios de ste.
Intentar dar una definicin formal del concepto de sistema de operacin no resulta una tarea
sencilla y resulta ms conveniente hacerlo despus de ver las funciones que cumplimenta. Todo
sistema operativo cumple dos funciones principales:
La funcin de mquina ampliada o virtual consiste en dar facilidades a los usuarios separndolos
de tener que conocer las obscuras y complejas interioridades del Hardware. Por ejemplo, un
usuario que opera una maquina con ficheros que se abren, leen, escriben, y cierran en lugar de
tener que operar con un nmero de registros, tiempos de posicionamiento, motor apagado o
encendido, etc.
Pag - 3
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La primera funcin antes indicada es la razn primaria de la existencia de los sistemas operativos
y esto resulta ms evidente cuando se trata de las computadoras de uso personal.
Aun cuando no existe una definicin absoluta de que es un sistema operativo y resulta ms claro
llegar a su entendimiento por la va de comprender que hacen, ensayaremos una muy simple.
Un sistema operativo es una interfase entre los usuarios y el hardware que brinda a estos un
ambiente donde se ejecutan con facilidad y conveniencia sus programas y al mismo tiempo se
logra un uso eficiente de los recursos disponibles.
Los sistemas operativos se diferencian de los restantes programas del sistema que no forman
parte de el (compiladores, editores, interprete de comandos, etc.) en que estos corren en modo
usuario mientras que el primero lo hace en modo protegido o kernel (tambin llamado supervisor,
sistema, protegido, etc.).
Lo antes sealado ser aclarado ms adelante, pero se debe puntualizar que tal afirmacin no es
valida para aquellos sistemas operativos que fueron diseados para algunos microprocesadores
antiguos (8086, 8088). Este es el caso del DOS y de ah sus bloqueos y la fcil penetracin de
los virus.
Evolucin Histrica
No es posible analizar la evolucin o desarrollo histrico de los sistemas operativos sin tener en
cuenta el avance de la arquitectura de computadoras. Los sistemas operativos fueron creados para
facilitar y ampliar las posibilidades de uso del hardware, pero estos a su vez pusieron en
evidencia la necesidad de cambios en los equipos para facilitar su actividad y brindar mayores
posibilidades.
Pag - 4
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Primera etapa
Con el paso del tiempo aparecen desarrollos en el Hardware y el Software. Se incluyen los
lectores de tarjetas, las impresoras de lnea y las bandas magnticas. Se crean ensambladores,
cargadores y enlazadores.
Surgen las bibliotecas conteniendo funciones comunes. Dentro de estas resultan importantes los
manejadores de dispositivos (Device driver) que liberaban al programador de los tediosos detalles
de los dispositivos. Estas funciones se pueden considerar embriones de los futuros sistemas
operativos.
Monitores simples
La solucin a la dificultad antes indicada tuvo dos vas o caminos. La primera consisti de
disponer de operadores profesionales y la segunda en procesar los trabajos en forma de lotes
(Batch).
Estos pequeos programas que permitan transferir el control de un trabajo a otro, recibieron el
nombre de monitor residente. Permanecan en memoria todo el tiempo.
Para el logro de este secuenciamiento se requera informar al monitor residente las acciones que
se deban realizar. Esta informacin se suministraba mediante tarjetas perforadas que se llamaban
Tarjetas de Control.
Pag - 5
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Con las soluciones antes explicadas se daba respuesta a las perdidas de tiempo provocadas en el
secuenciamiento entre los trabajos, pero permanecan las existentes a consecuencia de las
diferencias de velocidades entre el procesador central y los dispositivos de E/S (dado su carcter
mecnico).
Lo antes indicado implicaba que el CPU frecuentemente se encontraba inactivo esperando por
una lenta E/S. Por otro lado, cuando el CPU trabajaba, los equipos de E/S estaban desocupados.
Una solucin a la dificultad antes indicada consisti en sustituir las lectoras de tarjetas y las
impresoras de lneas por bandas magnticas, las que brindaban entradas y salidas a una mayor
velocidad, mejorando la proporcin de uso del CPU.
Las bandas que soportaban las entradas eran creadas a partir de lectoras de tarjetas, pero fuera de
lnea. De igual forma las bandas magnticas que reciban las salidas de la computadora eran
impresas tambin fuera de lnea.
Otra solucin a la lentitud de los dispositivos de entrada salida consisti en el uso de buffers. El
uso de estos almacenes temporales es un intento por mantener al CPU y los perifricos ocupados
simultneamente.
La idea es simple. Por ejemplo en la entrada, cuando un conjunto de datos ha sido ledo se le
ordena al dispositivo de lectura proceda con la siguiente y la vaya almacenando en un rea de la
memoria (Buffer), mientras el CPU va procesando la anterior.
Si se logra (lo que es muy difcil) que en el momento que el CPU quede libre ya el dispositivo
de entrada haya ledo los prximos datos, entonces el CPU comienza a procesarlos mientras el
perifrico inicia la prxima transferencia.
En la prctica, rara vez el uso de la tcnica de buffers, logra que el CPU y los dispositivos de
entrada salida se mantengan ocupados todo el tiempo.
Pag - 6
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
En este tipo de procesamiento, de forma continua se van leyendo directamente del lector de
tarjetas los diferentes trabajos que se almacenan en el disco. Cada vez que uno de ellos es
introducido, se anota en una tabla (y el rea donde se encuentra). Cuando el trabajo es ejecutado,
sus solicitudes de entrada se satisfacen leyendo en el disco. De forma similar, cuando el trabajo
solicita la impresora para imprimir, la accin se realizar en un rea del disco y la impresin
realmente se har con posterioridad.
El sistema de operacin se encargar, mediante la tabla antes indicada, de llevar el control de las
entradas y las salidas pertenecientes a cada trabajo.
Mientras el uso de buffers solapa la entrada/salida de un trabajo con sus propios clculos, el
SPOOLING permite igual accin con la entrada, salida y clculos de trabajos diferentes.
La tcnica del SPOOLING constituye un elemento consustancial de los sistemas operativos que
funcionan en computadoras grandes (mainframes) y que realizan procesamientos en lotes.
La tcnica del SPOOLING brinda adicionalmente una importante estructura de datos, la piscina
de trabajos (Job Pool). Es decir, en un momento dado existen varios trabajos ledos y listos para
ser ejecutados. Esta caracterstica brinda la posibilidad al sistema operativo de seleccionar cul
es el trabajo ms conveniente a procesar en cada momento con vistas a elevar el uso del CPU
(hasta ese momento se corran en el orden, primero que llega es el primero que se sirve).
Multiprogramacin
Los sistemas de operacin que permiten la multiprogramacin son algo complejos y este
concepto ha sido el motor impulsor del desarrollo de la teora alrededor de esta materia. La
multiprogramacin es el aspecto central de los sistemas de operacin modernos.
Pag - 7
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Tiempo compartido
A los sistemas de operacin que brindan la posibilidad antes indicada se les conoce como
Sistemas de Tiempo Compartido.
Cada usuario tiene un programa separado en memoria. Cuando a uno de ellos se le asigna el
procesador, ste ejecutar solamente por un perodo breve de tiempo (en un medio interactivo los
procesamiento son generalmente cortos) antes de terminar o realizar una entrada/salida. Debido a
que el hombre que trabaja en la terminal es lento con respecto al CPU, al producirse la
entrada/salida se le retirar el CPU y se comenzar la atencin de otro usuario.
Debido a que el sistema cambia de un usuario a otro rpidamente da a todos la impresin de estar
trabajando con una computadora propia.
Tiempo Real
Los sistemas operativos de tiempo real tambin hacen uso de la multiprogramacin y atienden
varios puntos de accin, pero en su trabajo existen restricciones de tiempo y el procesamiento se
tiene que hacer dentro de estas restricciones.
Este tipo de sistemas es generalmente utilizado para controlar procesos fsicos (experimentos
cientficos, equipos industriales, equipos mdicos, etc.).
Algunos autores (por ejemplo Tanembaun) para analizar la evolucin histrica de los sistemas
operativos lo hacen asociando estos a las distintas generaciones de los sistemas de cmputo. Por
supuesto, esta estructuracin no se aleja de los aspectos antes estudiados.
La segunda generacin (1955-1965) corresponde a la etapa a los equipos que estaban basados en
el uso de los transistores. Eran ms confiables y ms duraderos. Desde el punto de vista de los
sistemas operativos se tiene el uso de monitores simples (lo que implica procesamiento en lote).
Pag - 8
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin de esta etapa son el FMS (Fortran Monitor System) y el IBSYS de la
7094.
En esta etapa no pueden dejar de mencionarse los sistemas de operacin OS/360 y Multics. Aqu
surgen las primeras versiones del Unix.
La cuarta generacin (1980-1990) surge con los circuitos integrados de alta integracin y por ello
aparecen en el mercado las computadoras personales.
El actual desarrollo de los sistemas operativos basados en GUI (Graphic User Interface) y la
incorporacin de orientacin a objetos as como el soporte de la multimedia, es suficientemente
fuerte para hablar de la quinta generacin de los sistemas operativos.
Sistemas multiprocesadores
Los sistemas de cmputo ms comunes con esta organizacin disponen de un procesador maestro
que controla a otros (esclavos) que realizan tareas especficas.
Los sistemas operativos que operan en estas condiciones reciben el nombre de sistemas
operativos de multiprocesador. La imagen de estos sistemas se corresponde con la de los
uniprocesadores, es decir, la de un nico sistema y por ello su diseo e instrumentacin son
similares a la de estos, excepto que se tienen que tener en cuenta consideraciones especiales en el
uso de los componentes que pueden ser accedidos simultneamente por ms de un procesador.
Pag - 9
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Proteccin.
Procesos. Tabla de Procesos.
Servicios del Sistema Operativo.
Programas del sistema
Llamadas al sistema
Interprete de comandos (Shell).
Estructura de un sistema Operativo
Bibliografa:
Operating System Concepts, Peterson y Silberchatz, pag. 39 a la 54
Operating system Design and Implementation, Tanenbaum, pp. 14 a la 42.
Proteccin.
En los primeros sistemas de cmputo que se utilizaron no fue necesario tener en cuenta la
problemtica de la proteccin debido a la forma en que se operaban, es decir se ejecutaba un solo
programa y este estaba en posesin de todos los recursos existentes (en caso de error, solo se
afectaba l).
Otro ejemplo simple se puede notar en el caso de procesamiento en lote. Suponga que un
programa cae en un lazo infinito de lectura de tarjetas. Es evidente que tomar todas las que le
pertenecan y las que le siguen.
El compartir recursos aumenta la utilizacin eficiente de estos, pero a la vez incrementa las
dificultades. Un error en un programa puede afectar a otros trabajos.
Pag - 10
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
En los sistemas operativos que instrumentan la multiprogramacin, Pueden ocurrir muchas otras
situaciones no tan evidentes como las indicadas, por esto este se debe proteger y a la vez brindar
proteccin a todos los programas que se ejecutan.
Todo recurso compartido debe ser protegido, pero al menos deben disponer de esta caracterstica
las entradas y salidas, la memoria y la CPU.
Para evitar que un programa intente operar directamente con la entrada salida, las instrucciones
correspondientes se declaran como privilegiadas (esto tiene que estar instrumentado en el
Hardware) y por ello solo podrn ser utilizadas por parte del Sistema Operativo.
Lo antes indicado quiere decir que el Hardware deber brindar dualidad en dos modos en que los
programas se ejecuten. El primero es el modo kernel (o monitor, supervisor, sistema, protegido) y
el segundo es el modo usuario. El SO correr en modo protegido (con derecho a usar
instrucciones privilegiadas) y todos los dems en modo usuario.
Por supuesto que en la CPU existir un bit que en todo momento indicar el modo en que se est
ejecutando. Este se pondr a 1 o 0 cada vez que se produzca un cambio entre el SO y otro
programa. Es de suponer que las instrucciones que permiten variar este bit son privilegiadas.
Da la impresin que con los aspectos antes indicados ya se tiene garantizada la proteccin de las
entradas salidas, pero antes de dar tal afirmacin se hace necesario estar seguro que ningn
programa usuario pueda ejecutar en modo supervisor. Qu pasara si a un programa usuario se le
permite direccionar el rea de memoria del sistema operativo y modificar un vector de
interrupcin?
Para evitar esta situacin y otras similares se impone disponer de un mecanismo de proteccin de
memoria. Es decir, evitar que un programa usuario pueda acceder el rea de trabajo del Sistema
de Operacin. En los sistemas multiprogramados tambin se tiene que impedir tal accin en el
rea de otro programa.
Pag - 11
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Figura 1.1
Sistema
Operativo
Figura 1.2
Lo antes indicado presupone que cada vez que pasa el control del CPU de un programa a otro, el
sistema de operacin actualice los registros indicados con los nuevos valores requeridos.
La proteccin del procesador tiene como objetivo evitar que un programa usuario caiga en un
lazo de procesamiento infinito aduendose de este por tiempo indefinido. Esto se logra por
Pag - 12
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Antes de continuar estudiando otros aspectos relacionados con los Sistemas Operativos resulta
conveniente puntualizar el concepto de proceso que constituye uno de los ms esenciales en esta
materia.
Un proceso es, bsicamente, un programa en ejecucin y precisamente por esa razn existe la
tendencia a confundir ambos trminos. La diferencia consiste en que un proceso incluye adems
del programa (secuencia de cdigo ejecutable) los datos, la pila, el contador de programa, los
valores almacenados en los registros y todo aquello que refleja el estado de la ejecucin en un
instante.
La importancia de este concepto radica en que un programa por si solo no refleja su estado de
ejecucin lo que resulta esencial a los efectos de continuar su procesamiento futuro si en un
determinado momento se le retira el control del procesador (lo que constituye la base de la
multiprogramacin).
Para guardar la informacin de los procesos que en cada instante estn siendo atendidos por el
sistema de operacin se utiliza la Tabla de Procesos. Esta no es ms que un arreglo o lista de
estructuras donde cada una de ellas contiene los datos que definen el estado del proceso
determinado.
Las informaciones de un proceso se actualizan en numerosos momentos, pero por lo menos cada
vez que se le va a quitar el uso del procesador.
Los campos que componen cada entrada en la Tabla de Procesos varan de un sistema operativo
a otro y generalmente son numerosos. Resultan tpicos algunos como: estado del proceso, valores
de los registros, contador de programa, identificador, rea de memoria utilizada, tabla de ficheros
abiertos, directorio actual, etc.
Todo proceso presente en un sistema operativo se identifica por un nmero entero que se conoce
por el identificador del proceso (PID)
Generalmente un proceso puede crear uno o mas procesos (procesos hijos) que a su vez pueden
crear otros, llegndose a una estructura arbrea.
Como ya se indic una de las dos funciones principales de un Sistema Operativo es servir de
Mquina Ampliada o Virtual, brindando facilidades a los programas de los usuarios y a estos.
Pag - 13
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Para lograr este objetivo, los Sistemas Operativos se encargan de programar el trabajo con los
diferentes dispositivos existentes en el Sistema de Cmputo, separando a los usuarios y
programas de esta tarea compleja y tediosa.
Los servicios a usuarios se brindan bsicamente por medio de los llamados Programas del
Sistema, mientras que a los programas se les brindan a travs de las Llamadas al Sistema.
Los programas del sistema, constituyen una coleccin ms o menos grande de programas (no
funciones o subrutinas) desarrollados por el fabricante (u otra empresa) que permite realizar
operaciones que son comunes a diferentes usuarios, brindando un ambiente ms adecuado para el
desarrollo y explotacin de aplicaciones.
Los programas del sistema pueden ser divididos en varias categoras, aunque esto tambin
depende de cada sistema operativo. Algunos posibles grupos serian: Manipulacin de ficheros
(crear, eliminar, renombrar, imprimir, etc.), obtencin de informacin de estado (fecha, hora,
memoria disponible, espacio en disco, etc.), editores de texto, etc.
En resumen, los programas del sistema son aquellos que ejecutan las acciones descritas en los
comandos de ste o que aparecen en los menes en el caso de las interfaces de este tipo.
Las llamadas al sistema, constituyen la interfase entre el sistema de operacin y los procesos.
Estas llamadas generalmente se hacen por medio de instrucciones en lenguaje ensamblador,
aunque en algunos casos existen facilidades que permiten se realicen desde lenguajes de alto
nivel.
En el segundo caso antes indicado, se dan las variantes de que existan funciones o
procedimientos predefinidos en biblioteca que realicen las llamadas al sistema como tal (UNIX,
WINDOWS) o el compilar genera directamente las instrucciones necesarias para esto.
Los mecanismos que ponen en ejecucin las llamadas al sistema operativo difieren de uno a otro
En el OS/360 existe una instruccin especial (SVC) que provoca una trampa hacia el sistema.
El nmero de la llamada se da en la instruccin.
En el CP/M no existe una instruccin especial y por ello el nmero de la llamada se pone en
el registro C y se salta a la direccin 5 de la memoria.
En MS-DOS se utiliza la instruccin INT seguida de un nmero de interrupcin (21H).
En todos los casos antes indicados se requiere de la transferencia de parmetros desde o haca el
procedimiento que instrumenta la llamada. Este pase de parmetros se ejecuta a travs de los
registros del procesador o por medio de un bloque o tabla de memoria (la direccin del cual se
pasa en un registro).
El nmero de llamadas, la forma y tipo de cada una y los posibles agrupamientos de estas
dependen de cada sistema de operacin en especfico, aunque en forma general se pudieran
catalogar en 4 grupos:
Pag - 14
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Control de procesos.
Incluyen operaciones con los procesos tales como: crear, eliminar, finalizar, abortar,
ejecutar, enviar seal, esperar por seal, etc.
Manipulacin de ficheros.
Incluyen operaciones con los ficheros tales como: crear, eliminar, abrir, cerrar, renombrar,
leer, escribir, etc.
Manipulacin de dispositivos.
Incluyen operaciones con los dispositivos tales como: solicitar, liberar, leer, escribir, etc.
Intercambio de informacin.
Incluyen operaciones tales como: Conocer la fecha, conocer la hora, conocer atributos de
ficheros, fijar atributos de ficheros, fijar la fecha, etc.
Adems de los grupos antes indicados podra haber otros u otras OPERACIONES dentro de
estos. Otros conjuntos podran ser:
La mejor manera de entender la esencia de las llamadas al sistema consiste en hacer una revisin
detallada de las que estn presentes en uno o varios sistemas operativos y por ello se recomienda
revisar las pginas de la 23 a la 36 del libro de Tanenbaum, donde se presenta la explicacin de
una de las ms importantes presentes en la versin 7 del UNIX.
Interprete de comandos
El interprete de comandos toma el control una vez que el sistema operativo ha sido cargado o el
control de una terminal una vez que un usuario se ha identificado en un sistema de tiempo
Pag - 15
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
compartido.
Los intrpretes de comandos han recibido distintos nombres en diferentes sistemas operativos:
interprete de tarjetas de control, intrprete de lnea de comando, procesador de comandos de
consola (CPM), Shell (UNIX), etc.
La funcin del intrprete de comandos es en general bastante simple y consiste en tomar la tarjeta
de control o comando, validar si es correcto o no y en el primer caso realizar la ejecucin
correspondiente. El cdigo que ejecuta el comando puede formar parte del propio intrprete o
constituye otro programa del sistema.
Los intrpretes de comandos que presentan interfaces con usuarios ms amigables, incluyendo las
hoy reconocidas interfaces grficas, tienen una mayor complejidad dada el uso de mens, botones
mouse y otros recursos.
La estructura de un Sistema Operativo se puede analizar desde el punto de vista funcional y desde
el punto de vista organizativo de los programas que lo componen.
Desde el punto de vista funcional hay que tener en cuenta que los sistemas operativos son
programas manejados por eventos. Si no hay programa que ejecutar, dispositivo que brindar
servicio o usuario que atender entonces no har nada.
Los eventos (mensajes o seales) que lo ponen en accin sern las interrupciones o las trampas.
Por lo tanto los sistemas de operacin son programas manejados por interrupcin.
Pag - 16
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Pueden ocurrir tipos diferentes de interrupciones, pero pueden agruparse en tres tipos:
1. Llamadas al Sistema.
2. Interrupcin de un dispositivo.
3. Un error de programa (detectado por hardware).
A los efectos de la accin del sistema operativo los casos 3 y 4 se pueden considerar como
iguales.
De aqu que un sistema operativo estar compuesto por al menos de: manejadores de dispositivos,
atencin a interrupciones (handlers), un conjunto de subrutinas de llamadas al sistema y el
intrprete de comandos o tarjetas de control. Como es lgico, el sistema de ficheros tambin
estar presente.
La mayora de los sistemas operativos brindan funciones adicionales y por ello habr
complejidades an mayores.
Sistemas Monolticos.
Sistemas de Capas.
Se caracterizan por estar organizados como una jerarqua de capas, cada una construida sobre la
anterior.
El primer sistema construido en esta forma fue el THE a cargo de E. W. Dijkstra y sus alumnos
(en 1968). En dicho sistema se consider la existencia de 6 capas:
Pag - 17
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Una generalizacin de este concepto fue aplicado en el sistema operativo MULTICS. Se organiz
como una serie de anillos concntricos, siendo los ms internos los de mayor prioridad. Para que
un procedimiento de un nivel pueda llamar a otro ms interno lo tiene que hacer a travs de una
llamada del sistema.
Mquinas Virtuales.
En este esquema, el centro del sistema operativo se ejecuta directamente en el hardware existente
y permite el logro de la multiprogramacin. Esta, en lugar de ejecutar varios procesos, crea
varias mquinas virtuales en una segunda capa. Estas mquinas virtuales son copias exactas del
hardware original y por ello cada una de ellas puede ejecutar cualquier sistema operativo que
pueda operar en la mquina original.
Este formato es conocido hace tiempo (desde la IBM/360), pero hoy se utiliza para crear
mquinas virtuales que permitan ejecutar en un sistema operativo programas preparados en otro
(WINDOWS).
Es una tendencia de los actuales sistemas de operacin que consiste en instrumentar la mayora
de las funciones en procesos usuarios, construyendo un kernel mnimo.
Para solicitar un servicio, un proceso usuario (llamado cliente) enva la solicitud al proceso
servidor, el cual realiza el trabajo y le regresa la respuesta. En este modelo la funcin principal
del kernel consiste en manejar la comunicacin entre clientes y servidores (y lgicamente la
atencin a las interrupciones de los dispositivos).
La divisin del sistema operativo en partes, cada una de las cuales atiende una faceta de este,
ejecutndose la mayora de ellas (los servidores) en modo usuario permite, dar ventajas
importantes.
La primera consiste en que la aparicin de un error en una parte no implica necesariamente que
todo el sistema se carga (crash). La segunda consiste en la fcil adaptacin de un sistema de este
tipo para su utilizacin en un medio distribuido.
Pag - 18
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Tema II : Procesos
Bibliografa:
Operating System Concepts, Peterson y Silberschatz, pag 103 - 110, pag 307-325.
Oprating Systems: Design and implementation, Tanembaum, pag 45-51.
Como ya se indic, el concepto de proceso juega un rol fundamental en la teora y prctica de los
sistemas operativos.
Cada entrada de esta tabla se corresponde con un proceso en el sistema y recibe el nombre de
bloque de control del proceso (PCB). Este contiene diferentes grupos de informacin para un
proceso en especfico.
Un proceso puede tener diferentes estados durante su existencia. El nmero de estados depender
del diseo del sistema operativo, pero al menos hay tres que siempre estarn presentes:
Si a estos tres estados le agregamos las transiciones entre ellos se obtendra el siguiente grafo.
En ejecucin
1 2
3
Bloqueado Listo
4
Las cuatro transiciones que aparecen en el grafo dirigido se explican en la forma siguiente:
La transicin 1 implica que el proceso estaba en ejecucin y se bloquea debido a que necesita
esperar la ocurrencia de un evento externo. Esta transicin se logra con la propia ejecucin
de una llamada al sistema con este fin o forzado por el sistema operativo (se realiz una
solicitud que no puede ser satisfecha en ese instante).
La transicin 2 ocurre cuando el planificador del procesador (Scheduler, una parte del sistema
operativo) decide que se debe entregar el control del CPU a un proceso, an cuando el actual
estara en condiciones de continuar. Esta decisin puede estar motivada por el hecho de que
el proceso ya consumi el quantum de tiempo asignado o est listo otro que tiene mayor
prioridad que el actual.
La transicin 4 ocurre cuando el evento externo que el proceso estaba esperando tiene lugar.
Si en ese instante no hay otro proceso ejecutando o su prioridad es superior al que est, de
inmediato ocurrir tambin la transicin 3, en caso contrario tendr que esperar en el estado
de listo.
Pag - 20
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Haciendo uso del modelo de procesos resulta ms fcil comprender como puede ser un sistema
operativo por dentro. Algunos de los procesos constituyen programas mandados a ejecutar por los
usuarios en sus comandos, pero otros son parte del sistema (sistema de ficheros, administrador de
memoria y manejadores de dispositivos). Todos estos procesos se bloquean cuando necesitan
esperar por algo y al ocurrir el evento pasan al estado de listo y son ilegibles para ejecutarse (por
supuesto el evento que espera un manejador de dispositivo es la interrupcin correspondiente).
La vista antes dada permite llegar a un modelo del sistema operativo donde el nivel ms bajo es
el planificador y el siguiente lo forman una variedad de procesos (creados por los usuarios o
partes del sistema operativo).
0 1 N -2 N -1
Planificador
Suponga que se dispone de un procesador con varias unidades funcionales para realizar las
instrucciones o simplemente se tienen mltiples CPU y se desean ejecutar en grupo de
instrucciones pertenecientes a un programa.
S1: a = x + y;
S2: b = z + 1;
S3: c = a - b;
S4: w = c + 1;
Lgicamente la instruccin c = a - b no puede ser ejecutada hasta que no hayan sido realizadas la
S1 y la S2 de forma tal que los valores de a y b hayan sido calculados. Lo mismo ocurre con S4
Pag - 21
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
S1 S2
S3
S4
S1
S2 S3 S4
S5
S6
Pag - 22
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Para que dos instrucciones puedan ejecutarse concurrentemente debern cumplir ciertas
condiciones. A estas se le llaman condiciones de concurrencia.
Definamos el conjunto
R(Si) = {a1, a2, , an} como el conjunto de lectura para Si, este est formado por todas las
variables cuyos valores son referenciados en las instruccin Si durante su ejecucin.
Definamos el conjunto
W(Si) = {b1, b2, , bm} como el conjunto de escritura para Si, es decir todas las variables que
cambian de valor (se escriben) como resultado de la ejecucin de la instruccin Si.
Considerando la ecuacin a = x + y se tendr:
Si se toma la ecuacin c = a - b
R(S3) = {a, b} W{S3) = {c}
Para que dos instrucciones sucesivas Sa y Sb puedan ser ejecutadas concurrentemente y producir
el mismo resultado se tienen que cumplir las siguientes condiciones:
El grafo de precedencia es un medio til para ver las restricciones de precedencia que puedan
existir en un conjunto de instrucciones pertenecientes a un proceso, pero no permiten presentar
clculos concurrentes en un lenguaje de programacin.
Las instrucciones fork and join fueron unas de las primeras notaciones que se utilizaron para
especificar en un programa la ejecucin concurrente de instrucciones.
Pag - 23
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
S1;
S1 fork L;
S2;
.
.
fork .
L: S3;
.
S3
.
S2 .
La instruccin join permite unir o recombinar varios hilos de ejecucin en uno solo. Cada una de
las computaciones deben solicitar ser unidas con las otras. Dado que cada hilo de ejecucin debe
ejecutar el join y lo realiza en momentos diferentes, todos terminarn menos el ltimo. Debido a
que el join necesita saber cuantos hilos se debern unir para poder terminar a todos menos el
ltimo, la instruccin tiene un parmetro con esta informacin.
count=2;
.
.
S1 S2
.
S1;
go to L1;
join .
.
.
S3 S2;
L1:join count;
S3;
count = count - 1;
if (count ! = 0) quit;
donde quit es una instruccin que resulta en la terminacin de la ejecucin. Ambas instrucciones
se ejecutan en forma indivisible.
Pag - 24
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
count = 2; count1 = 2;
fork L1; count2 = 2;
a = x + y; S1;
go to L2; fork L1;
L1: b = z + 1; fork l2;
L2: join count; S2;
c = a - b; go to L3;
w = c + 1; L2:S3;
L3:join count2;
S5;
go to L4;
L1:S4;
L4:join count1;
S6;
La construccin fork-join tiene la desventaja de no ser estructurada y por ello le son inherentes
todas las crticas que ha recibido el go to.
Una construccin estructurada para especificar concurrencia es la parbegin / parend. Su forma es:
A manera de ejemplo veamos los dos anteriormente utilizados con el fork y el join :
parbegin S1;
a = x + y; parbegin
b = z + 1; S4;
parend; {
c = a - b; parbegin
w = c + 1; S2;
S3;
parend;
S5;
}
parend;
S6;
Esta construccin estructurada tiene la desventaja de que no puede especificar todos los grafos de
precedencia. No obstante, esta herramienta, unida con otros mecanismos, si da una respuesta
totalmente satisfactoria.
Pag - 25
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Ahora es necesario extender los aspectos antes tratados, en cuanto al uso de grafos de
precedencia y las especificaciones de programacin, de instrucciones dentro de un proceso a la
relacin entre procesos.
En este caso, cada nodo de un grafo de precedencia ser visto como un proceso secuencial. En tal
ambiente los procesos aparecen y desaparecen dinmicamente durante el tiempo de duracin de
una ejecucin.
Cuando un proceso Pi ejecuta una instruccin fork L, se crea un proceso nuevo Pj. Al arribarse a
la instruccin join count, el contador es decrementado por uno y si el resultado es cero, el proceso
continua su ejecucin y en caso contrario terminar .
Como ya se indic con anterioridad un proceso puede crear otros procesos. De igual forma los
nuevos pueden crear otros y as sucesivamente.
Para representar grficamente este proceso de creacin sucesiva de procesos se utiliza el llamado
grafo de procesos que no es ms que un rbol dirigido con raz . Un arco del nodo Pi al nodo Pj.
En este caso se dice que Pi es el padre de Pj o que Pj es hijo de Pi. Cada proceso tiene un solo
padre, pero tantos hijos como sean necesarios.
P1
P3
P2
P5
P4
Existen diversas formas en que un proceso puede crear uno al hacer uso de una operacin con
este objetivo (como la fork). Para ello se debe tener en cuenta como contina la ejecucin y
como se compartirn los recursos.
Desde el punto de vista de como contina la ejecucin se pueden instrumentar dos casos:
Desde el punto de vista de cmo se compartirn los recursos se pueden instrumentar tambin dos
casos:
Pag - 26
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Un proceso termina cuando ejecuta su ltima instruccin, sin embargo existen circunstancias en
que se requiere terminarlo en forma forzada. Un proceso termina a otro mediante una instruccin
del tipo Kill Id.
La operacin kill es usualmente invocada solamente por un proceso padre para culminar la
ejecucin de un hijo. Como la instruccin requiere la identificacin del proceso a ser terminado,
la instruccin fork da como retorno esta informacin (Id = fork L). Existen numerosas razones
por las cuales un padre puede detener la ejecucin de un hijo.
En muchos sistemas operativos se establece la condicin de que los procesos hijos no pueden
continuar la ejecucin si el padre ha sido finalizado.
Un proceso que no termina su ejecucin durante todo el tiempo en que el sistema operativo est
funcionando se dice que es esttico. Un proceso que finaliza se dice que es dinmico.
La jerarqua de procesos antes discutida est presente en la mayora de los sistemas operativos
que soportan el modelo de procesos.
Pag - 27
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografa
En el caso en el cual dos procesos se encuentran en espera por condiciones extremas (buffers
llenos y vacos, respectivamente), uno de los mecanismos utilizados para la espera consista en
ejecutar en forma sucesiva un lazo donde no se haca nada, es decir una espera ocupada.
La espera ocupada puede no ser un mecanismo adecuado. Suponga que cada proceso en un
procesador diferente. En ese caso el que est en espera consume tiempo del CPU de forma
improductiva, ese tiempo podra ser utilizado por otro proceso en una actividad til.
En el caso de un solo procesador las dificultades pueden ser aun mayores, pues si el CPU est
siendo utilizado por el proceso que est en espera, entonces el otro no podr tomarlo y no se
saldr de esa situacin (el consumidor espera debido a que no hay buffers llenos y el productor no
puede generar ya que el procesador lo tiene el consumidor) y lo estudiaremos en detalles ms
adelantes.
Una solucin a la anterior dificultad consistira en que a cada proceso se le asigna un quantum de
tiempo para ejecutar, cuando dicho tiempo expira se le retira el procesador y se le entrega a otro.
De todas formas el proceso que est en espera consumira tiempo en forma no productiva.
La solucin a la dificultad antes enunciada consiste en establecer que cuando un proceso necesita
esperar se deber bloquear, es decir se le debe retirar el CPU y ponerlo en una cola de espera
hasta que ocurra el evento (estado de bloqueado).
Supongamos que disponemos de dos funciones (que llamaremos primitivas) con las siguientes
caractersticas. La primitiva sleep() (pudiera ser block()) implica que el proceso que la ejecuta
pasa al estado de bloqueado. La primitiva wake_up(Proceso) pasa el proceso, que se indique en el
argumento, del estado de bloqueado al estado de listo.
Pag - 28
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Las situaciones en las cuales dos o ms procesos accesan en forma simultnea datos compartidos
y el resultado del procesamiento depende del orden en que las instrucciones se ejecuten reciben el
nombre de condiciones de competencia o concurso (race condition).
Se define como seccin crtica de un proceso al segmento de cdigo que accede a variables,
tablas, ficheros y otros elementos que son comunes o globales con otros procesos.
La exclusin mutua consiste en disear un protocolo que sea utilizado por los procesos para
ejecutar en forma cooperativa. Cada proceso debe pedir permiso para entrar en su seccin crtica,
la parte de cdigo que realiza esta solicitud es la seccin de entrada. La seccin crtica es seguida
por un grupo de cdigos llamada seccin de salida, que en general habilita las condiciones para
que otro proceso pueda entrar en la suya. Por ltimo todo el cdigo restante que no tiene relacin
con la seccin crtica se puede agrupar en la seccin restante.
#define TRUE 1
while (TRUE) {
seccin de entrada
seccin crtica
seccin de salida
seccin restante
}
Para que un mtodo garantice la exclusin mutua y logre un procesamiento paralelo correcto y
eficiente deben cumplirse cuatro condiciones:
Progreso: Ningn proceso que se encuentre fuera de sus seccin crtica (est en la seccin
restante) puede impedir que otro entre en sta. La seleccin de quien entra no se puede
posponer indefinidamente.
Pag - 29
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Lmite de tiempo: Ningn proceso deber esperar un tiempo arbitrariamente largo para
entrar en su seccin crtica (evitar que padezca de inanicin, starvation).
Si los procesos que se ejecutan hacen uso de un solo procesador (seudoparalelismo) entonces una
idea sencilla para lograr la exclusin mutua consiste en que la seccin de entrada de cada proceso
desactive las interrupciones y la de salida las habiliten de nuevo. La racionalidad de esta solucin
se basa en el hecho de que planificador de procesos aprovecha las interrupciones (dispositivos o
reloj) para decir que proceso obtiene la ejecucin, lo que pudiera implicar que el proceso en la
seccin crtica pierda el procesador.
Esta alternativa solo es vlida si la seccin crtica es pequea (unas pocas instrucciones de
mquina), lo que en general no es cierto. Adems, implica que el usuario inhiba las
interrupciones.
Numerosos mtodos y tcnicas se han desarrollado con el objetivo de lograr la exclusin mutua.
En muchos no se logra responder adecuadamente a los 4 requisitos antes indicados, en otros si.
Hagamos una breve revisin de algunos de ellos, considerando que un proceso debe esperar lo
hace en forma ocupada y no bloqueado.
Primero se restringir la atencin a algoritmos que son solamente aplicables a solamente dos
procesos que identificaremos como P0 y P1. Se presentarn las variables comunes y la
representacin de Pi, se asume que el otro proceso es Pj, donde j = 1 - i.
El proceso de alternacin estricta se basa en el uso de una variable entera comn (short) que
recibe inicialmente el valor de 0 ( 1). Si turn = 1 entonces el proceso Pi tiene derecho a ejecutar
su seccin crtica.
Este algoritmo asegura que solo uno de los procesos pueda estar en su seccin crtica en cada
instante, pero no satisface la condicin de progreso, ya que obliga a una alternacin estricta de los
procesos.
Pag - 30
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
El algoritmo anterior falla debido a que no recuerda el estado de cada proceso, sino solamente a
cual le ser permitido entrar en su seccin crtica.
Un segundo algoritmo trata de resolver el problema antes indicado conservando el estado de cada
proceso, para esto utiliza un arreglo de dos enteros (short). Inicialmente ambas entradas del
arreglo se ponen a cero.
#define TRUE 1
#define FALSE 0
short int flag[2];
while (true) {
while (flag[j]) skip; /* Seccin entrada */
flag[i]=TRUE;
seccin_crtica();
flag[i]=FALSE; /* Seccin salida */
seccin_restante();
}
Suponga que los dos procesos realizan el while concurrentemente, entonces ambos entrarn en
sus secciones crticas y por ello no se garantiza la exclusin mutua.
Una variacin del algoritmo anterior consiste en intercambiar la asignacin del valor de la
bandera con el while, de forma tal que ahora significa el deseo de entrar en la seccin crtica. De
esta forma se garantiza la exclusin mutua, pero se puede caer en un abrazo fatal.
Da la expresin que el problema no tiene solucin, pero con el conocido algoritmo de Peterson se
garantiza totalmente todas las condiciones exigidas.
Este algoritmo es una combinacin del algoritmo de alternacin estricta y el antes mencionado.
Se utiliza una variable entera (short) turn y el arreglo de banderas. Inicialmente estas estarn a 0 y
el valor de turn puede ser cualquiera.
#define TRUE 1
#define FALSE 0
short int turn, flag[2];
while (true) {
flag[i]=TRUE; /* Seccin entrada */
turn = j;
while (flag[j]&& turn==j) skip;
seccin_crtica();
flag[i]=FALSE; /* seccin salida/
Pag - 31
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
seccin_restante();
}
Notar que un proceso entra en su seccin crtica cuando se cumple alguna de las siguientes
condiciones:
El turno le corresponde.
Ambas.
Si ambos procesos tratan de entrar concurrentemente en su seccin crtica, solo podr hacerlo uno
(al que le corresponde el turno).
Pag - 32
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografa
Los algoritmos que hemos tratado hasta aqu se han presentado con espera ocupada, es decir,
cuando un proceso necesita entrar en su seccin crtica y no puede, hace la espera en un lazo
malgastando el tiempo del procesador.
Si consideramos una computadora con dos procesos A de tipo prioritario y B que no lo es. Las
reglas de planificacin establece que siempre A se ejecuta si esta listo. Ahora veamos el problema
debido a que B esta en su seccin critica y se le termina su tiempo sale del procesador, por lo que
A que esta listo para entrar al procesador ingresa y debido a que B, esta en seccin critica A no
puede entrar en la suya, el problema radica debido a las prioridades, B no puede entrar mientras A
no termine, por tanto A nunca terminara, debido a que B se quedo en seccin critica. Por lo tanto
A solamente dar vueltas en un ciclo infinito.
Una alternativa a lo anterior consiste en bloquear el proceso hasta que pueda operar en su seccin
crtica en la misma forma que se hace cuando espera por una E/S u otro evento.
Para programar las esperas no ocupadas se hace uso de operaciones atmicas (indivisibles)
conocidas como primitivas. Uno de los mecanismos ms conocidos son los semforos y las
primitivas P y V (en el libro de Tanembaun, Down y Up). Estas ideas fueron desarrolladas por
Dijkstra.
La operacin down aplicada a un semforo determina si su valor es mayor que 0. En tal caso,
decrementa el valor y simplemente continua. Si el valor es 0, el proceso se desactiva sin terminar
la operacin Down por el momento. Verificar el valor, modificarlo y desactivarse (en su caso) se
ejecutan como una sola accin atmica (es decir indivisible).
Esto se garantiza evitando que otro proceso tenga acceso a este hasta que la operacin haya
terminado o se haya bloqueado.
Pag - 33
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La operacin UP incrementa el valor del semforo indicado. Si uno o mas procesos estaban
inactivos en espera de un semforo, sin haber podido terminar una operacin down previa, el
sistema escoge a uno de ellos (quizs al azar) y le permite terminar dicha operacin. As, despus
de un up un semforo con procesos inactivos, el semforo seguir siendo 0, pero habr un
proceso menos esperndolo.
Para estudiar la aplicacin de semforos, realizaremos el estudio del problema del productor-
consumidor.
El problema describe la relacin de dos procesos que comparten el mismo buffer, el procesos
productor que coloca elementos en el buffer y el otro el consumidor que los saca.
El problema surge en el momento en el que el productor desea colocar un elemento pero el buffer
esta lleno, en este caso lo deseable es que se desactive hasta que el consumidor saque uno o mas
elementos, la situacin inversa se da en el momento en el que el consumidor trata de sacar
elementos del buffer pero este se encuentra vaco.
Pag - 34
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Una solucin sencilla es la adicin de un bit de espera para de tal forma que en el momento de
enviar el WakeUP se cambie al valor de 1, cuando el proceso productor quiera desactivarse
primero verificara el bit de espera, si este esta en 1 lo pondr en cero, y continuara su ejecucin,
sin embargo esta solucin requerira de una cantidad elevada de bits.
Pag - 35
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La solucin se basa en el uso de tres semforos: llenas para contar el numero de ranuras
ocupadas, vacas para el numero de ranuras desocupadas y el ultimo llamado mutex, para
garantizar que el productor o el consumidor no tengan acceso al buffer al mismo tiempo.
Pag - 36
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
En el ejemplo usamos el semforo mutex para garantizar la exclusin mutua, garantizando que
solo un proceso lea o escriba en el buffer, el otro uso de los semforos es para la sincronizacin,
en este caso llenas y vacas, que cuidan que en productor deje de ejecutarse cuando el buffer este
lleno o el consumidor se detenga cuado el buffer este vaco.
Cuando no existe la necesidad de contar por el semforo es comn recurrir al uso de semforos
simplificados, los llamados mutex (abreviatura de exclusin mutua). Esto como se menciono
solo sirven para administrar la exclusin, mutua respecto a algn recurso o fragmento de cdigo
compartido.
Este semforo Mutex puede estar en uno de dos estados bloqueado o desbloqueado y solo
necesita de un bit para representarlo, a pesar de que en la practica se utilice un entero (0 o 1).
Por su sencillez, es fcil implementar lo mutexes en espacio de usuario, si se cuenta con una
instruccin TSL.
TSL son las siglas de TEST AND SET LOCK, una instruccin hardware, utilizada por ciertos
procesadores para facilitar la creacin de semforos y otras herramientas necesarias para la
programacin concurrente en computadores. TSL es una instruccin mquina que provoca la
lectura del contenido de una palabra de la memoria en un registro, y el almacenamiento de un
valor distinto de cero en dicha palabra de memoria. Al tratarse de una instruccin mquina, el
procesador nos garantiza que la instruccin TSL es realizada sin ningn tipo de interrupcin por
parte de otro proceso, es decir las operaciones de lectura y escritura de la palabra tienen la
garanta de ser indivisibles. Adems si nos encontramos en un sistema multiprocesador, ninguno
de los dems procesadores tendr acceso a la palabra hasta que termine de ejecutarse la
instruccin. El procesador que ejecuta la instruccin TSL cierra el bus de la memoria para
prohibir a los dems el acceso a la memoria hasta el trmino de la instruccin
Pag - 37
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografa:
Los procesos que se ejecutan concurrentemente con frecuencia necesitan comunicarse entre si a
los efectos de mantener una adecuada cooperacin. La sincronizacin entre procesos no, es ms,
que un caso particular de esta otra problemtica ms general.
Existen dos formas en que los procesos pueden comunicar: la primera es que por medio de
memoria compartida y la segunda a travs de sistemas de mensajes (intercambio de mensajes).
Mientras que el uso de memoria compartida queda a la accin de los programadores, los sistemas
de intercambio de mensajes son responsabilidad del sistema de operacin y por ello dedicaremos
un rato a este respecto.
La funcin de un sistema de mensajes es el permitir a los procesos comunicarse unos con otros
sin la necesidad de recurrir a memoria compartida (lo cual no quiere decir que no se pueda).
receive - Para indicar que se quiere recibir un mensaje (si el mensaje no existe entonces el
proceso se bloquear).
Si dos procesos desean comunicarse, debern enviarse y recibir mensajes entre ellos. Para esto se
requiere que exista un enlace de comunicacin. La implantacin de este enlace puede ser a travs
de memoria, un bus, lneas de comunicacin entre mquinas, etc.
. Cero capacidad.- El enlace no puede tener ningn mensaje esperando. El emisor del
mensaje deber esperar hasta que el receptor lo pueda recibir. A esta situacin se le llama
una cita (rendezvous) y se instrumenta bloqueando al emisor.
. Capacidad limitada.- La cola tendr una longitud finita n. Si la cola no est llena y se enva
un mensaje entonces este es colocado en ella (por copia del mensaje o manteniendo un
puntero al mensaje) y el emisor continua la ejecucin sin esperar. Si la cola esta llena, el
emisor ser detenido hasta que haya espacio.
. Capacidad ilimitada.- La cola tiene una longitud infinita. El emisor nunca es detenido.
El envo de mensajes, en cuanto a las propiedades de estos, puede ser de tres tipos:
. Longitud fija.
. Longitud variable.
Otra variante tambin usada en algunos sistemas operativos consiste en detener al emisor hasta
que se recibe una replica del receptor. Como es de suponer la sincronizacin est garantizada
implcitamente.
Los sistemas de mensajes son de gran utilidad en los ambientes distribuidos, donde los procesos
operan en diferentes lugares. En tales medios la probabilidad de ocurrencia de un error durante la
comunicacin es mucho mayor que en una mquina simple.
Algunas de las situaciones que se pueden presentar en un sistema de mensaje y que requieren de
una manipulacin adecuada son:
. Se perdi el mensaje.
. Se da el mensaje.
Pag - 39
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Tema de investigacin.
En la bibliografa sugerida y otras fuentes, existen soluciones que se pueden adoptar, sobre la
problemtica planteada.
Comunicacin directa.
En la comunicacin directa cada proceso que desea enviar o recibir un mensaje debe
explcitamente indicar el nombre del receptor o emisor de la comunicacin.
. Entre cada par de procesos que estn en comunicacin existe exactamente un enlace.
. El enlace es bidireccional.
El esquema antes indicado tiene una total simetra en cuanto al direccionamiento, es decir, tanto
el emisor como el receptor tienen que dar la identificacin del otro para poder comunicar.
Comunicacin indirecta.-
Cada buzn tiene una identificacin nica para distinguirlo. En este esquema, un proceso puede
comunicarse con otros por un nmero cualquiera de buzones.
. Se establece un enlace entre dos procesos solamente si ellos tienen un buzn compartido.
. Entre cada par de procesos que comunican puede haber una cantidad cualquiera de
enlaces, cada uno correspondiendo a un buzn.
En este contexto, el sistema operativo brinda los mecanismos para permitir a los procesos las
siguientes operaciones:
. Crear un buzn.
. Destruir un buzn.
Un buzn puede ser propiedad de un proceso o del sistema operativo. Si pertenece a un proceso
(ya que el lo defini o se lo ataron), entonces slo l podr recibir mensajes a travs de ste. En
este caso, los usuarios slo podrn mandar mensajes a este buzn.
Hay varias formas de designar el dueo y los usuarios de un determinado buzn. Algunas de las
vas para sealar el dueo son:
Pag - 41
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
- Planificacin de procesos.
- Algoritmos de planificacin.
- Administracin de procesos en sistemas operativos actuales.
Bibliografia:
Planificacin de procesos
La planificacin del uso de los recursos del sistema de cmputo constituye una de las funciones
fundamentales de los sistemas operativos.
En los primeros tiempos de los sistemas operativos la planificacin de los procesos era muy
sencilla, pues simplemente cuando un trabajo culminaba se entregaba el CPU al siguiente en el
batch (estuviera en tarjetas o bandas magnticas).
Con la existencia hoy de diversos sistemas de operacin que operan en ambientes tales como:
Pag - 42
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Como es de suponer, el planificador de procesos acta sobre los procesos que estn listos. Todos
los procesos que estn en este estado se mantienen en una estructura llamada la cola de listos.
Generalmente esta lista es enlazada.
La cabeza de la lista antes indicada contendr dos punteros dirigidos al primer y ltimo proceso
en la lista. Normalmente los elementos que se colocan en la cola son las ltimas entradas de la
tabla de procesos (PCB).
PCB# i PCB# j
Cabeza de la cola . .
. .
. .
Cola de
Registros Registros
listos
. .
. .
. .
La cola de listos pudiera tambin instrumentarse como un rbol, una pila, etc.
El planificador del procesador (short-term o CPU scheduler) selecciona de los que estn listos
en memoria al que se le entrega el CPU.
Una primera diferencia entre estos planificadores es la frecuencia de ejecucin de cada uno. El
planificador del procesador se ejecutar con una alta frecuencia (cada vez que un proceso solicita
entrada - salida, cuando un proceso se bloquea, al terminar un proceso y al ocurrir una
interrupcin). Debido a esta caracterstica, este debe ser rpido.
El planificador de trabajos se ejecuta con menos frecuencia y por ello su cdigo puede ser ms
largo con el objetivo de decidir cual es el trabajo que ms conviene entrar a la lista de listos.
Pag - 43
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Tambin es responsable por garantizar un adecuado balance en memoria de trabajos que hagan un
alto uso del CPU con otros que realicen una gran cantidad de entrada / salida.
El programa encargado de realizar los intercambios antes indicados se les nombra como
planificador de nivel medio (medium term scheduler). Este elemento est presente en los
sistemas de memoria virtual y en instrumentaciones de tiempo compartido.
Planificador Planificador
de nivel medio Procesos parcialmente
de nivel medio
ejecutados
Planificador de
procesos
Cola de listos CPU
Planificador de
trabajos
En el primer caso existir una cola de listos por cada procesador y cada una de ellas funcionar
independiente de la otra.
Si los procesadores son homogneos tambin podr haber una cola independiente para cada uno,
pero esto podra implicar que un procesador est parado por falta de procesos mientras que otro
puede estar muy ocupado.
Una variante a lo antes indicado podra ser el uso de una cola comn. En este caso podran existir
dos alternativas en la operacin. La primera consistira en que cada procesador accedera a la cola
Pag - 44
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
comn para seleccionar un proceso a ejecutar, aunque en este caso se requerira garantizar la
exclusin mutua en el uso del recurso compartido (la lista). La segunda alternativa consiste en
designar un procesador como planificador para los otros, estableciendo una estructura de
maestro / esclavo (master / slave).
Algoritmos de planificacin.
Existen numerosos algoritmos para la planificacin del procesador. Cada uno de ellos tiene
diferentes caractersticas y pueden favorecer un tipo de proceso sobre otros. Es ms, el privilegiar
a unos siempre implica ir en detrimento de los otros.
Existen varios criterios para comparar los diferentes algoritmos. En dependencia de cuales se
utilicen se puede llegar a diferentes conclusiones acerca de cual es el mejor.
Eficiencia o utilizacin del CPU: Mantener el CPU ocupado tanto como sea posible, con un
objetivo terico del 100% (en la realidad puede ir de un 40 a 90 %).
No resulta fcil notar que todos estos indicadores no apuntan en el mismo sentido e inclusive
algunos pueden ser contradictorios. El arte consiste en dar prioridad a aquellos ms convenientes
y necesarios en un medio ambiente, sin provocar que los otros se deterioren en exceso.
Las tcnicas o algoritmos de planificacin se dividen en dos grupos: planificacin con derecho de
prioridad (preemptive scheduling) y planificacin sin derechos de prioridad (non preemptive
scheduling).
Pag - 45
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
El primer grupo est referido a tcnicas que le quitan el CPU a los procesos una vez que ha
transcurrido un tiempo de ejecucin, es decir, se le retira an cuando estara en condiciones de
continuar. El segundo grupo tiene una base cooperativa, es decir, el proceso entrega el procesador
cuando termina o se bloquea.
Las tcnicas con derecho de prioridad son una fuente de condiciones de concurso o competencia
que los procesos debern tener en cuenta. Por otro lado, las sin derecho de prioridad pueden
implicar que un proceso se aduee del procesador por un tiempo indefinido en perjuicio de los
restantes.
La instrumentacin del FCFS es muy simple y solo se requiere que la cola de listos se opere
realmente como una cola. Cada proceso que llega a ella se coloca al final y siempre se le asigna
el CPU al proceso que est en la cabeza, eliminndose de la lista.
Los resultados que se obtienen con este algoritmo son pobres debido a que no tiene en cuenta las
caractersticas de los procesos.
Otra tcnica de planificacin es el Trabajo mas corto primero SJF (Shortest job first) o sea,
la atencin se brinda al que requiere menos tiempo de trabajo en cada instante. Este algoritmo
puede ser con o sin derecho de prioridad.
Este algoritmo es probablemente ptimo y resulta apropiado en los sistemas de lotes (batch),
usndose fundamentalmente en la planificacin de trabajos. Se requiere conocer en adelanto el
tiempo de ejecucin. Es ptimo desde el punto de vista del turnaround promedio, el throughput y
el tiempo de espera.
No resulta fcil hacer uso de esta tcnica en la planificacin del procesador (short - term
scheduling) y para utilizarla se requiere hacer continuamente un pronstico del tiempo de CPU
que requerir cada proceso en cada intervalo de ejecucin. Este algoritmo es ptimo si todos los
trabajos estn disponibles simultneamente. Pero puede provocar inanicin en los trabajos largos
(starvation).
Otra variante de planificacin es el uso de prioridades. En este caso cada trabajo o proceso tiene
asociada una prioridad y el CPU se asigna al que tiene el mayor valor. Este algoritmo puede ser
con o sin derecho de prioridad.
Una primera dificultad con este algoritmo consiste en que un proceso de alta prioridad y con
mucho tiempo de uso del CPU se puede apropiar de l indefinidamente. Una solucin podra ser
que la prioridad vaya disminuyendo con el tiempo.
Pag - 46
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Una segunda dificultad se presenta cuando existe un gran flujo de trabajos de alta prioridad, esto
provocar que los de baja prioridad padecern de inanicin (starvation). La solucin a este
problema se conoce como envejecimiento (aging) y consiste en gradualmente ir incrementando la
prioridad de los procesos que han estado esperando por mucho tiempo.
La asignacin de prioridades a los procesos puede ser externa (esttica) o interna (dinmica). En
el primer caso se usan criterios de costos o importancia del trabajo para definir la prioridad. En el
segundo caso, el sistema operativo utiliza determinadas magnitudes (lmites de tiempo,
requerimientos de memoria, razn entre el tiempo de entrada/salida y el tiempo de uso del CPU,
etc.) para calcular la prioridad.
El proceso que recibe el CPU lo puede utilizar durante un quantum o ranura de tiempo,
transcurrido este lo pierde hasta que le toca de nuevo. Por supuesto, si por alguna razn se tiene
que bloquear o termina, tambin pierde el procesador. Es evidente que en este algoritmo existe
derecho de prioridad.
Si la longitud del quantum es muy pequea entonces existir ineficiencia en el uso del CPU ya
que una parte considerable del tiempo se gastar en el cambio de contexto. El uso de un quantum
muy grande deriva en una respuesta pobre al trabajo interactivo.
Los procesos son asignados a una cola en base a ciertas propiedades, tales como requerimientos
de memoria o tipo de trabajo.
Como ejemplo de lo antes indicado se tiene el clsico agrupamiento de los trabajos en aquellos
que se ejecutan en superficie (foreground) y los que se procesan en el fondo (background). Los
procesos en superficie tienen prioridad sobre los de fondo.
Pag - 47
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Para que a un proceso se le pueda asignar el procesador se requiere que todas las colas de mayor
prioridad estn vacas. Si un proceso est ejecutando y en una cola de mayor prioridad arriba un
proceso, entonces se le quita al que estaba y se le asigna al nuevo.
La dificultad fundamental de esta tcnica consiste en que las colas con baja prioridad pueden
padecer de inanicin (starvation).
Otra posibilidad en las colas mltiples consiste en asignar a cada una parte del tiempo de uso del
CPU, siendo este distribuido entre los procesos que se encuentran en cada una.
Los procesos con la mas alta prioridad se les da un quantum, si lo consumen se pasan a la cola
siguiente, que tiene menos prioridad, donde recibirn el equivalente a dos quantums. Si lo
consumen se repite el proceso y as sucesivamente. La idea es que los trabajos que tienen mucho
uso del CPU van perdiendo prioridad, pero se les aumenta la magnitud de tiempo con la
esperanza de que terminen.
El algoritmo antes explicado tiene como objetivo brindar la mayor prioridad a los trabajos
interactivos y a los que realizan muchas E/S. Similarmente, un proceso que lleva esperando
mucho tiempo en una cola de baja prioridad podra ser movido a una de mayor prioridad.
En el diseo de un planificador lo primero que se hace es definir los criterios acerca de las metas
que se desean lograr en su uso y con posterioridad se trata de medir en que magnitud estas se
logran con los diferentes algoritmos. Para realizar estas mediciones se pueden usar varias
tcnicas:
Windows
Como se conoce del desarrollo de Microsoft. Hasta la versin 3.1 eran realmente ambientes de
trabajo con interfaces de usuarios grficas. An cuando administraba todos los recursos, se
soportaba en MS-DOS y utilizaba su sistema de ficheros. Con el surgimiento de Windows NT se
puede hablar propiamente de un sistema operativo.
Pag - 48
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Cada tarea puede crear subtareas que se ejecutan en paralelo y reciben el nombre de hilos
(threads) y por ello se habla del procesamiento multihilos (multithreads).
En el Windows NT y los de 32 bits (95 y 98) existe un algoritmo de prioridades con asignacin
de quantum de tiempo a los procesos y por ello se trabaja con derecho de prioridad (preemption
scheduling).
Su planificador funciona en base a prioridades estableciendo 32 de estas cada una de las cuales
apunta a su propia lista de sub-procesos listos.
UNIX - LINUX
La primera versin fue desarrollada en 1969 por Ken Thompson en los laboratorios Bell para una
mquina PDP-7 . Con posterioridad fueron apareciendo numerosas versiones para otros equipos y
se crearon otros grupos que desarrollaron sus propias ideas.
De lo anterior se deriva el hecho de que en la medida que un proceso acumula tiempo de CPU
consumido va perdiendo prioridad. En algunas instrumentaciones se emplea la tcnica de
envejecimiento para evitar inanicin (starvation) en los procesos con baja prioridad.
Pag - 49
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La prioridad de un proceso listo puede ser positiva o negativa. Esta ltima la reciben despus de
haber salido de la condicin de bloqueado a consecuencia de una llamada al sistema.
Los procesos listos se mantienen en una estructura consistente en colas de varios niveles. Cada
cola se corresponde con una prioridad.
Cuando un proceso recibe el CPU se le asigna un pequeo quantum de tiempo (aprox. 100 ms) y
culminar ste al menos que finalice u ocurra un bloqueo. Cuando se termina el tiempo, se coloca
al final de la cola de su prioridad.
Se usa el intercambio de trabajos (swapping) y por ello existe un planificador de nivel medio
(medium-term). Por este motivo, en la tabla de procesos se almacenan solamente las
informaciones que tienen sentido tanto si el proceso est en memoria o no. Aquellas que solo
tienen uso cuando el proceso est en memoria se mantienen en una tabla llamada estructura del
usuario que tambin es intercambiada.
La planificacin de Linux es una de las pocas reas que usa un algoritmo distinto al de UNIX.
Inicialmente observemos que los subprocesos de LINUX son subprocesos en kernel, as que la
planificacin se basa en subprocesos, al igual que en Windows 2000.
. FIFO en tiempo real.- estos tienen la prioridad mas alta y solo pueden ser expropiados
por otros FIFO.
. Turno circular en tiempo real. Esto iguales que los anteriores con la diferencia de que
peden ser expropiados por el reloj.
. Tiempo compartido: Ninguna de las dos anteriores clases son realmente en tiempo real,
debido a que no es posible establecer plazos y menos aun garanta, por lo que son
solamente clases que tienen mayor prioridad que las estndar de tiempo compartido.
Cada subproceso tienen una prioridad por defecto 20 pudiendo tomar valores de -20 a 20
formando 40 prioridades, brindando mayor calidad de servicios a aquellos que tengan prioridad
ms alta.
Pag - 50
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografia
Una de las funciones principales de todo sistema operativo es la administracin de los recursos y
dentro de estos los dispositivos de entrada/salida ocupan un lugar importante.
El sistema de operacin enviar rdenes a los dispositivos, captar las interrupciones enviadas
por el hardware para indicar el final de una operacin y manejar los errores. Tambin debe
brindar una interfase con el dispositivo que sea simple y fcil de usar.
Los dispositivos de caracteres brindan o reciben una cadena de caracteres, sin que ellos tengan
estructura de bloques. No son direccionables y no se puede realizar ninguna operacin de
bsqueda en ellos. Ejemplos de ellos seran las terminales (o teclados), interfaces de redes,
ratones, etc.
Un dispositivo que no clasifica en la divisin anterior son los relojes, ellos simplemente causan
interrupciones a intervalos bien definidos.
Pag - 51
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Para comprender bien la funcin de un controlador veamos el caso del disco. Cuando se realiza
una lectura, el controlador recibe del dispositivo un flujo de bits en serie. Lo primero es el
prembulo, despus vendrn los bits que componen el sector y finalmente una suma de chequeo
(checksum) que permite detectar si hubo error (una de las variantes es el conocido CRC). El
prembulo se escribi cuando el disco recibi formato y especifica la cara, la pista (o cilindro), el
nmero del sector y el tamao de ste.
La funcin del controlador consiste en ensamblar, bit a bit, el flujo recibido y convertido en un
bloque que se crea en un buffer interno de ste. Despus se verifica la suma de chequeo. Si no
hay error, entonces el sector puede ser copiado a la memoria.
Cada controlador dispone de algunos registros para comunicarse con la CPU. En algunas
computadoras estos registros forman parte del espacio de memoria normal (PDP-II). En otras
existe un rea de memoria especial con este fin, donde a cada una de las especializaciones se le
conoce como un puerto de E/S.
Cuando la accin ha sido realizada, el controlador emite una interrupcin para que el sistema
operativo tome el control del CPU. Este chequear los registros de estado del dispositivo para
verificar si la operacin se efectu correctamente. En caso de una lectura correcta se copiar la
informacin de los registros a la memoria.
Pag - 52
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
De acuerdo con lo antes explicado, cuando un dispositivo de entrada produce una interrupcin y
como consecuencia el dispositivo toma el control del CPU, este deber tomar de los registros la
informacin leda y trasladarla a memoria. El traspaso se tendr que realizar byte a byte y por ello
se requiere un tiempo considerable del CPU en esta tarea de bajo nivel. En caso de una escritura,
la situacin es la misma pero el traslado se realiza antes de la escritura y es de memoria a los
registros.
El DMA libera a la CPU de realizar esta actividad. En este caso cuando se solicita una
transferencia se especifica la direccin de memoria y la cantidad de bytes a transferir. El
controlador, una vez que ha conformado el bloque en su buffer interno y lo ha chequeado contra
la suma de control, lo transfiere a la posicin de memoria ms indicada, (el caso de escritura lo
tom de dicha posicin). El sistema de operacin no necesita realizar transferencia alguna.
Si hiciera falta realizar transferencias en dos sectores consecutivos, entonces la mayora de los
adaptadores se ven obligados a esperar una nueva rotacin del disco para operar con el segundo
sector.
La solucin a esta dificultad consiste en numerar los sectores del disco en forma intercalada, es
decir con saltos de 1, 2 ms sectores.
7 0 7 0 5 0
1 3 4 2 3
6
5 2 6 1 7 6
4 3 5 4 1
2
Software de Entrada/Salida
Un aspecto importante del software de entrada/salida es que cumpla con las metas en este mbito:
independencia de los dispositivos, nominacin uniforme, tratamiento de errores, imagen
sincrnica y garanta de operacin.
Pag - 53
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La independencia de los dispositivos est referida a que todo programa que realice
entrada/salida pueda hacer uso de un equipo u otro sin tener en cuenta sus caractersticas y sin
necesidad de ser modificados y compilados.
donde input y output puede ser un fichero en disco, una impresora, etc.
La nominacin uniforme est referida a que los nombres de los dispositivos y ficheros utilicen
un mismo convenio y que ste no dependa de los equipos en ninguna forma.
En MS-DOS no se cumple esta condicin, cada torre de disco tiene una identificacin particular.
En el UNIX se garantiza debido a la existencia de un solo sistema de ficheros que cubre a todos
los dispositivos.
El tratamiento de los errores de entrada/salida debe ser manejado tan cerca del hardware
como sea posible. Cuando el controlador detecta un error debe tratar de resolverlo por si mismo.
Si no es posible, entonces le toca al manejador del dispositivo enfrentar la situacin
(probablemente repitiendo la operacin). Slo cuando no se ha logrado la recuperacin es que se
informa a las capas ms altas del sistema.
Algunos dispositivos tienen la caracterstica de ser compartidos (tales como los discos) mientras
que otros son dedicados (tales como las impresoras). En general no existen dificultades en el
funcionamiento de un dispositivo compartido, pero la existencia de dispositivos dedicados
introduce una variedad de problemas. El sistema operativo debe operar con los dispositivos de
forma tal que se eviten las dificultades.
Pag - 54
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La funcin fundamental del manejador de interrupcin es avisar al manejador del dispositivo que
la transferencia fue ejecutada o al menos intentada (en caso de error). El manejador del
dispositivo estar esperando que tal aviso ocurra.
En un sistema monoprogramado el manejador del dispositivo har una espera ocupada. En caso
de existir multiprogramacin la espera ser bloqueada, ya sea el manejador un simple
procedimiento del rea del sistema (estructura monoltica) o un proceso usuario.
La forma de activar al manejador del dispositivo tiene diferentes formas, entre ellas: un indicador
en una bandera, una operacin V en un semforo, el envo de un mensaje, etc.
Un resumen, con carcter general de las operaciones del manejador de interrupcin sern:
Salvar los registros del proceso que fue interrumpido en la tabla de procesos o el stack.
Eliminar del stack la informacin colocada por el hardware y fijar el Stack del manejador del
dispositivo.
Activar el manejador del dispositivo.
Llamar al planificador de procesos.
Poner en ejecucin al proceso seleccionado o restaurar al que estaba.
Todo el cdigo de entrada/salida que se relaciona con las caractersticas del dispositivo se incluye
en este software. Normalmente cada manejador de dispositivo atiende un tipo de elemento o
dispositivos diferentes, pero similar en su uso.
El manejador de dispositivo enva las rdenes a los registros del controlador y chequea si los
comandos fueron ejecutados en forma apropiada. En el caso del disco, por ejemplo, debe
encargarse de encender el motor, mover el brazo, considerar el intercalamiento, esperar el tiempo
de posicionamiento, etc.
Pag - 55
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
De lo antes planteado, tendremos entonces que cada dispositivo dispondr de una cola de
procesos que esperan para ser atendidos, de forma similar a como ocurre con el CPU. Lo anterior
sugiere que deber existir un planificador por cada cola, con mayor o menor medida de
complejidad.
De lo antes sealado se tendr que el esquema de las colas en un sistema operativo tendr la
forma:
Planificador de Planificador de
trabajos procesos
Cola de CPU
listos
(En monoprogramacin (No se incluyen las colas
no existen las colas, ni derivadas del uso de
tampoco en el mecanismo primitivas de bloqueo)
de cita.)
E/S Cola de
E/S
.
.
.
E/S Cola de
E/S
Las colas de entrada/salida se organizan a partir de una estructura llamada Tabla de estado de los
dispositivos.
En cada entrada de esta tabla se encuentra informaciones acerca del dispositivo (su tipo, sus
direcciones, su estado, etc.) y los punteros para formar las colas. En las colas se colocarn
directamente los PCB de los procesos u otro tipo de estructura que contengan la informacin
referente a una solicitud (operacin, direccin, cantidad, etc.).
Como ya se indic con anterioridad, generalmente el manejador de dispositivo, una vez solicitada
una operacin al controlador, tiene que esperar a que esta se realice. Sin embargo existen
situaciones en que esto no es necesario. Tambin hay manejadores, como el caso de los discos
RAM, que nunca realizan esa accin.
Pag - 56
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Un resumen con carcter general, de las operaciones del manejador de un dispositivo sern:
A pesar de que en general la entrada/salida es dependiente del dispositivo, una gran parte de las
operaciones a realizar no tienen esta caracterstica. Ellas son las que constituyen esta capa o
estrato.
La funcin bsica de esta capa es realizar las funciones de entrada/salida que son comunes a
todos los dispositivos y brindar una interfaz uniforme al software del nivel de usuario.
Brindar una interface comn y uniforme para el uso de todos los dispositivos.
Convertir el nombre simblico del dispositivo en la direccin del manejador.
Prevenir el uso de un dispositivo por un usuario no autorizado.
Brindar un tamao de bloque uniforme (aunque los dispositivos fsicamente usen diferentes).
Instrumentar uso de buffers para la entrada/salida de forma tal que el usuario pueda leer la
informacin en las unidades que sea su deseo.
Asignar el espacio en los dispositivos para el almacenamiento de la informacin.
Asignar y liberar dispositivos dedicados.
Tratar los errores y reportarlos.
Las funciones antes indicadas son generalmente brindadas por el sistema o servidor de ficheros.
Aun cuando el software de entrada/salida est dentro del sistema de operacin, una pequea parte
de este se encuentra en bibliotecas y son enlazados con los programas de los usuarios. Los
Pag - 57
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
procedimientos de esta parte consisten de los cdigos que realizan las llamadas al sistema para la
entrada/salida. Es evidente que formarn parte del sistema de entrada/salida como un todo.
Un ejemplo de lo antes indicado es la funcin printf del C que toma una cadena del formato y
algunas variables teniendo que construir una cadena ASCII y despus llamar a WRITE para
lograr la salida.
No todo el software a este nivel est constituido por procedimientos de bibliotecas. Aqu se
incluyen tambin los programas que instrumentan la tcnica conocida como SPOOLING.
Otro ejemplo de lo antes indicado sera la existencia de un demonio de RED para la transmisin
de ficheros en este ambiente.
La creacin de estos SPOOLING evita determinadas dificultades en el uso de algunos
dispositivos.
Como resumen de todo lo tratado se muestra un esquema con las diferentes capas del sistema de
entrada/salida y las comunicaciones entre ellas.
Capa o estrato
Manejadores de dispositivos
Manejadores de interrupcin
Hardware
Pag - 58
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografa:
Puede ocurrir que algn manejador no necesite realizar la espera antes indicada (por ejemplo los
referentes a los discos RAM o al uso de memoria expandida). Tambin puede ocurrir que algunos
tengan que esperar para unas funciones y para otras no.
Un esquema general para cualquier gestor, bajo las consideraciones antes indicadas, podra ser la
siguiente:
El proceso pide un mensaje conteniendo una solicitud (si no la hay se bloquea en espera).
Cuando llega el mensaje se llama a un procedimiento para realizar la accin solicitada.
Si la accin implica la operacin del hardware, entonces se solicita un mensaje de ste (lo
enviar el manejador de interrupcin).
Se enva un mensaje al proceso que solicit la operacin (especificar el resultado de la
accin).
Pag - 59
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
message mensaje;
io_task();
{
int r, quien;
initialize(); /* solo se hace una vez */
while (true) {
receive (any, &mensaje);
quien = mensaje.m_proceso;
switch (mensaje.m_tipo){
case READ : r = do_read();breack;
case WRITE : r = do_write();breack;
case OTHER : r = do_other();breack;
default : r = ERROR;
}
mensaje.m_tipo = TASK_REPLY;
mensaje.m:estado = r;
send(quien, &mensaje);
}
}
Cada uno de los procedimientos do_XXX realiza una de las operaciones de que es capaz el
gestor. En ellos aparecera la solicitud de mensajes al manipulador de interrupcin, si es necesario
esperar.
Reloj
El reloj es un elemento esencial en todo sistema operativo ya que permite mantener la hora y
sobre todo poder controlar determinados eventos en el tiempo, por ejemplo el uso del quantum de
tiempo en sistema de tiempo compartido.
El reloj tiene una determinada instrumentacin fsica, pero lo ms importante es que permite una
interrupcin del CPU cada cierto intervalo fijado. El intervalo entre una y otra interrupcin puede
ser fijada por el software.
Lo antes indicado es lo que hace el reloj, todo lo dems que implique operaciones con el tiempo
tiene que ser hecho por el manipulador del reloj.
Las tareas desarrolladas por el manejador del reloj varan de un sistema operativo a otro, pero
usualmente habr:
Pag - 60
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Conocer la hora.
Fijar la hora.
Atencin al pulso del reloj.
Resulta frecuente tambin que los procesos puedan fijar el recibir una alarma dentro de un
intervalo de tiempo (un mensaje para esperar un tiempo).
De lo anterior, nuestra tarea de entrada/salida quedara como:
clock_task();
{
int codigo;
init_clock();
while (true) {
receive(any, &mensaje);
quien = mensaje.m_proceso;
codigo= mensaje.m_tipo;
switch (codigo) {
case SET_ALARM : do_set_alarm(&mensaje);break;
case GET_TIME : do_get_time();break;
case SET_TIME : do_set_time(&mensaje);break;
case clock_tick : do_clocktick();
default : panic(mensaje equivocado);
}
mensaje.m_tipo = ok;
if (codigo!=clock_tick) send(quien, &mensaje);
}
}
Dentro de estos procedimientos resulta interesante el do_clocktick() que se ejecuta cada vez que
se produce una interrupcin del reloj (un tick) y por ello veremos una instrumentacin
aproximada.
do_clocktick;
{
PCB *PP;
int t;
t = lost_ticks;
realtime+= t+1;
lost_tick-= t;
if (next_alarm <= realtime) {
buscar_proceso(&PP);
cause_sig(PP, SIGALRM);
find_next_alarm(&next_alarm);
}
accounting();
Pag - 61
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
sched_ticks--;
if (sched_ticks==0) {
planificador();
sched_ticks = SCHED_RATE;
}
}
A parte de las funciones implicadas en el algoritmo pudieran existir otras, ente ellas la conocida
como perro de guardia (watchdog). Esta es igual que una alarma, pero en lugar de enviarse un
mensaje, se ejecuta un procedimiento que se estableci al fijar la solicitud. Una variante de esto
existe en el MS-DOS por medio de la interrupcin 1CH.
Discos RAM.
La idea de los discos RAM es bastante simple. Consiste en un rea de memoria reasignada con la
idea de simular un dispositivo de bloque, normalmente un disco. Este dispositivo tiene la ventaja
de un acceso instantneo y por ello resulta conveniente para el almacenamiento de programas y
datos de uso frecuente.
El disco RAM se divide en n bloques y cada uno ellos tiene la misma longitud que la utilizada en
los discos reales.
Cuando el manejador del dispositivo recibe la indicacin para leer o escribir un bloque, este
simplemente calcula donde se encuentra y procede a realizar la lectura o la escritura.
Un manejador de disco RAM puede soportar varias reas de memoria usadas como diferentes
discos, cada una identificada por un nmero de dispositivo diferente.
Cada disco RAM dispondr de dos lmites, uno para indicar la posicin de inicio y el otro su
longitud.
mem_task();
{
int r, quien, codigo;
ram_origen = ORIGEN;
ram_limite = LIMITE;
while (true) {
receive(any, &mensaje);
quien = mensaje.proceso;
codigo = mensaje.m_tipo;
switch (codigo) {
Pag - 62
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
int do_mem(M_ptr)
message *m_ptr;
{
int count;
Los manejadores antes vistos en forma simplificada no resultan de una gran complejidad, en
cambio lo referente a otros dispositivos si tienen numerosos aspectos que atender, en especial los
de discos.
Debido a lo antes indicado se requera un tiempo considerable hacer un anlisis de ellos y por
este motivo se dejarn como tema de lectura adicional de la bibliografa. Tanembaun pginas 479
a la 524.
Pag - 63
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Debido a lo antes indicado, resulta frecuente la existencia de un planificador para este tipo de
dispositivo. Antes de entrar a considerar los diferentes algoritmos de planificacin posibles a ser
utilizados se debe hacer una breve revisin de las caractersticas fsicas de estos dispositivos.
Como es conocido, en los discos magnticos la informacin se almacena por ambos lados y por
ello una primera direccin para localizar una informacin ser la superficie o cara.
La informacin se almacena en anillos concntricos con el llamado agujero de giro. A cada uno
de estos anillos se le llama pista y constituye la segunda coordenada de la direccin.
Dado que es posible tener varios discos unos sobre otros, entonces al conjunto de pistas que
quedan en la misma posicin se les llama cilindro (no porta ninguna nueva direccin, es la misma
de las pistas involucradas).
Normalmente existe una cabeza de lectura/escritura por cada superficie magnetizada, la que
permite la transferencia de informacin con cualquiera de los sectores existentes en ella. En este
caso la cabeza de lectura/escritura se deber mover hacia adentro y hacia afuera con vistas a
ubicarse en cualquier pista.
La velocidad de acceso a un bloque o sector est compuesta de tres partes. Primero se requiere
mover la cabeza de lectura/escritura a la pista apropiada, a esto se llama la bsqueda y a la
demora correspondiente tiempo de bsqueda. A continuacin se debe esperar a que el sector
deseado pase por debajo de la cabeza, a esta demora se le llama tiempo de estado latente. Por
ultimo se realizar es traspaso de la informacin entre el disco y la memoria, la demora se
llamar tiempo de transferencia.
El tiempo total ser la suma del tiempo de bsqueda (Seek Time),el tiempo de estado latente
(Latency Time) y el tiempo de transferencia (Transfer Time).
De los tres factores antes indicados, el nico a considerar desde el punto de vista de optimizar el
tiempo promedio de servicio a las solicitudes es el tiempo de bsqueda y por ello los algoritmos
de planificacin tienen como objetivo disminuir esta componente (bastante significativa).
Antes de estudiar los diferentes algoritmos de planificacin existentes es conveniente sealar que
algunos casos en lugar de usarse la cola de solicitudes antes indicada, se hace uso de otra
estructura de datos.
Pag - 64
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La estructura consiste en tener un arreglo de apuntadores por cada disco, dicho arreglo est
indizado por el nmero de la pista. Cada entrada del arreglo es un puntero a todas las solicitudes
pendientes en la pista correspondiente.
Sea cual sea la estructura, cada solicitud contiene las siguientes informaciones:
Algoritmos de planificacin
El algoritmo ms simple de planificacin en disco es el FCFS (First Come First Served). Este
consiste en atender las solicitudes en el orden de llegada. Es un algoritmo equitativo, pero no es
el ms eficiente.
Suponga que en un momento dado se tienen solicitudes de transferencia a las siguientes pistas: 1,
36, 16, 34, 9, 12 y que el cabezal se encontraba en la pista 11. Entonces la cantidad de pistas
recorridas en las bsquedas ser: 10, 35, 20, 18, 25, 3 para un total de 111.
En nuestro ejemplo se tendra entonces la siguiente secuencia de atencin: 12, 9, 16, 1, 34, 36.
Entonces la cantidad de pistas recorridas en las bsquedas sern: 1, 3, 17, 15, 33, 2 para un total
de 61.
Este algoritmo tiene la dificultad de crear inanicin (starvation) para las solicitudes ms alejadas
de la posicin inicial del brazo. Para comprender esta situacin slo hay que pensar en que existe
un flujo continuo de nuevas solicitudes, muchas de ellas cercanas a la posicin actual.
El reconocimiento del carcter dinmico de la cola lleva al algoritmo conocido como SCAN o del
elevador. En este, las cabezas de lectura/escritura comienzan en una de las pistas extremas (la
inicial o la ltima) y se mueven hacia la otra, brindando servicio a todas las solicitudes que
existan. Al llegar al otro extremo, invierte el sentido del movimiento y se repite toda la operacin.
Para la instrumentacin de este algoritmo se requiere tener un bit que indique el sentido del
movimiento, hacia arriba (up) o hacia abajo (down).
Pag - 65
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Una variacin del SCAN se conoce como C-SCAN (scan circular) y siempre presta servicio en el
mismo sentido, es decir se mueve el cabezal de un extremo al otro y despus se regresa al inicio
para repetir la operacin.
El C-SCAN parte de la lgica de que las nuevas solicitudes en el extremo inicial deben ser las
que ms tiempo deben llevar esperando y adems de que en esta rea es donde debe haber una
mayor concentracin de solicitudes pendientes.
En la descripcin de ambos algoritmos, SCAN y C-SCAN, se plante que las cabezas van desde
un extremo (digamos pista cero) hasta el otro (digamos pista n). En la prctica estos algoritmos
no son instrumentados en esta forma.
Comnmente la cabeza es movida en un sentido hasta la ltima solicitud en dicho sentido. Tan
pronto como no hay otra, se invierte el sentido del movimiento o se reinicia en la primera de las
solicitudes. A estos algoritmos se conocen como LOOK y C-LOOK.
Todas las variantes del algoritmo del elevador combinan eficiencia y equidad.
Pag - 66
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Bibliografa:
En varias ocasiones se ha visto que en un sistema de operacin puede ocurrir que un proceso est
en espera de un evento que debe ser provocado por otro, proceso que est en similar situacin con
respecto a l, esta es la situacin que se presenta en el problema del productor/consumidor si se
intercambian las llamadas a las primitivas P.
A la situacin antes indicada se le conoce como abrazo fatal (deadlock) y constituye uno de los
aspectos a tener en cuenta en el diseo e instrumentacin de un sistema operativo.
Pueden existir diversas situaciones que conduzcan al abrazo fatal, pero este se presenta
fundamentalmente en el uso de los recursos del sistema de cmputo.
El concepto de recurso no slo se refiere a los dispositivos de entrada/salida, sino que tambin
incluye ficheros, tablas, etc. No obstante, los dispositivos de entrada/salida son recursos
importantes y fuente de muchas dificultades.
Los recursos se pueden usar en forma compartida o excluyente, en el primer caso varios procesos
pueden hacer uso del recurso simultneamente y en el segundo caso no.
Hay recursos que por sus propias caractersticas pueden tener un uso compartido (por ejemplo,
los discos) mientras que otros son indiscutiblemente de uso exclusivo (por ejemplo, una
impresora).
Existen recursos que en dependencia de su uso podrn considerarse de un tipo o de otro. Por
ejemplo, un fichero puede ser abierto en lectura por varios procesos a la vez, pero la situacin no
es la misma si alguno lo abre en escritura.
Pag - 67
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
El uso de los recursos compartidos no conduce a abrazo fatal, la dificultad se presenta con los de
uso exclusivo.
En condiciones de operacin normal para que un proceso utilice un recurso deber ocurrir la
siguiente secuencia:
. Solicitud
. Uso
. Liberacin
Los recursos se dividen, de acuerdo a sus caractersticas, en clases o tipos. Cada clase puede
estar conformada por una sola instancia o por varias. Todas las instancias de una clase tienen que
ser iguales.
Cuando un proceso solicita un recurso se le asigna una instancia de la clase si la hay disponible.
En caso contrario debe esperar hasta que otro proceso la libere. La solicitud y liberacin de los
recursos se realiza a travs de llamadas al sistema.
Un ejemplo de abrazo fatal podra ser el siguiente: Un sistema de cmputo dispone de una
impresora y un ploteador digital. En un momento dado un proceso tiene asignada la impresora y
otro el ploteador. Si ahora ambos solicitan el otro recurso resulta evidente que se presenta un
bloqueo mutuo.
Otro ejemplo podra consistir en dos procesos que tengan abiertos con escritura dos ficheros. A
continuacin los procesos tratan de abrir los ficheros en forma intercambiada.
Un tercer ejemplo interesante sera: La tabla de procesos tiene capacidad para n procesos y en un
momento dado todas las entradas estn ocupadas. En esa situacin los n procesos tratan de crear
procesos hijos.
Una definicin formal del concepto de abrazo fatal sera: Un conjunto de procesos est en estado
de abrazo fatal cuando cada uno de ellos est esperando por un evento que slo puede ser causado
por otro proceso del mismo conjunto.
Resulta evidente que el abrazo fatal resulta indeseable, ya que los procesos involucrados nunca
terminarn su ejecucin. Por otro lado, estn reteniendo recursos que otros necesitan para
comenzar.
Antes de comenzar el anlisis de los mtodos existentes para el tratamiento del abrazo fatal
resulta conveniente revisar las condiciones necesarias y suficientes para que se presente.
El abrazo fatal ocurre si y solo si se presentan simultneamente las siguientes cuatro condiciones:
. Exclusin mutua.- Los recursos involucrados se utilizan en forma no compartida, es decir slo
un proceso puede estar usando cada recurso en cada instante. Si est en uso y otro lo solicita,
entonces deber esperar a que se libere.
Pag - 68
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
. Retencin y espera (hold and wait).- Deben existir procesos que teniendo al menos un
recurso asignado con anterioridad, estn
esperando por otros asignados a otros procesos.
. Espera circular.- Deben existir n procesos P1, P2, Pn tal que P1 espera por un recurso
asignado a P2 . P2 est en igual situacin, con respecto a P 3 y as
sucesivamente y por ltimo Pn est esperando por un recurso que tiene
asignado P1.
Para modelar la asignacin de recursos y describir los abrazos fatales se hace uso de un grafo
dirigido que se identifica como grafo de asignacin de recursos.
Los nodos o vrtices del grafo estn formados por dos subconjuntos : P = { P 1, P2, .. Pn } que
constituyen todos los procesos en el sistema y R = { r 1 , r2 , .. , rm } formado por los tipos de
recursos.
Los arcos siempre unen nodos de tipos diferentes. Un arco del proceso P i al recurso r j significa
que el proceso pi esta solicitando el recurso r j y est esperando por l. Un arco del recurso r j al
proceso Pi significa que este tiene asignado el recurso.
Para realizar la representacin grfica se acostumbra, utilizar un crculo para los procesos y un
cuadrado para los recursos.
R1
P r
P1 P2
r
P
R3 R2
Asignado Solicitado
y
Esperando P3
deadlock
El grafo antes mostrado supone que de los recursos r 1, r2, y r3 slo existe una instancia. En este
caso, la ocurrencia de un ciclo en el grafo es condicin necesaria y suficiente para la existencia de
un abrazo fatal.
Pag - 69
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Cuando los recursos tienen varias instancias entonces para la representacin se coloca un punto
dentro del cuadrado por cada una de ellas y las reas de asignacin parten de los puntos.
r1
P1 P2
r2
P3
Las estrategias que se han seguido para el trabajo con los abrazos fatales son:
. Ignorar.
. Prevenir.
. Evitar.
. Detectar y recuperar.
El primer caso no significa ignorar por ignorar, sino que tiene su basamento en el hecho de que
la posibilidad de ocurrencia del abrazo fatal no implica necesariamente que ocurra. Puede pasar
tiempo y no ocurrir. Algunos piensan que es mejor no tenerlo en cuenta que complicar el sistema
operativo y restarle efectividad (esta es la aproximacin del UNIX, al menos de sus versiones
originales).
Para prevenir el abrazo fatal es necesario asegurar que al menos una de las condiciones
necesarias no ocurra, por lo que se requiere analizar cada una para ver las posibilidades.
En general no es posible evitar el abrazo fatal negando la condicin de exclusin mutua. Muchos
recursos son intrinsicamentes no compartibles.
Para negar la condicin de retencin y espera se pueden seguir dos protocolos. El primero
consiste en que cada proceso solicite todos los recursos antes de comenzar la ejecucin y que
Pag - 70
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
sta no puede proceder hasta que todo haya sido asignado, incluyendo temas de cintas
magnticas, printer, etc.
Esta solucin tiene dos dificultades: La primera consiste en que no siempre los procesos utilizan
todos los recursos que necesitan. La segunda es mas breve, es que esta podra ser ineficiente
pues un proceso tendra que solicitar y recibir un recurso que liberar despus de un largo
tiempo de procesamiento (por ejemplo una impresora).
El segundo protocolo slo permite que el proceso solo puede solicitar recursos cuando no tiene
ninguno. Dicho de otra forma mas clara, para que un proceso pueda solicitar recursos
adicionales deber liberar todos los que tiene asignados.
Resulta evidente que esta alternativa tiene para aplicabilidad pues resultar frecuente que un
proceso necesite al mismo tiempo ms de un recurso.
Para negar la no priorizacin implica el permitir que un proceso pueda directa o indirectamente
quitar un recurso a otro.
Una primera instrumentacin de esta alternativa consiste en que si un proceso solicita un recurso
que no se le puede asignar y por ello debe esperar, entonces implcitamente se le retiran todos
los recursos que ya tena asignados. Lgicamente, entonces se le pondr que espera por los que
tena y el que solicit.
Una segunda instrumentacin no quita los recursos al proceso que hizo la solicitud, sino que
busca entre los restantes que estn esperando debido a otras solicitudes y si alguno tiene lo
reclamado se lo quitan. Si no aparece solucin, entonces quedar en espera y slo perder los
recursos que tenga asignados si otro proceso los solicita.
La dificultad de ambas soluciones consiste en que un proceso slo podr ser restaurado cuando
reciba el recurso nuevo que provoc la espera y los que perdi durante sta.
Estas alternativas se aplican con recursos cuyos estados pueden ser fcilmente salvados y
restaurados posteriormente, tales como los registros del CPU y la memoria.
Por ltimo queda la espera o encadenamiento circular. Para evitar que esta condicin se cumpla
se asocia con cada tipo de recurso un nmero nico, lo que permite establecer un ordenamiento
entre ellos.
A partir de lo anterior, el protocolo a usar consiste en establecer que un proceso slo podr
esperar por recursos en orden creciente de numeracin y adems si requiere varias instancias de
un mismo tipo, las deber reclamar en una sola solicitud.
Como consecuencia de lo anterior se deriva que si un proceso deber esperar por un recurso con
un nmero de orden determinado, entonces deber liberar previamente todos los ya asignados
que tengan asociado un nmero mayor que el deseado.
Pag - 71
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Como ejemplo se puede suponer que la impresora tiene asociado el nmero 2 y el ploteador el 5
y se tiene el grafo de asignacin de recursos que se muestra a continuacin:
A B
2 5
Entonces el proceso A puede solicitar el ploteador, pero B tiene que liberarlo para poder esperar
por la Impresora.
Los mtodos de prevencin del abrazo fatal tienden a un efecto secundario consistente en una
baja utilizacin de los dispositivos y un reducido throughput.
Otra alternativa para enfrentar el abrazo fatal consiste en evitar. Esta tendencia requiere
informacin adicional acerca de cmo los recursos van a ser solicitados con vistas a realizar las
asignaciones en forma cuidadosa y as evitar crear las condiciones propicias para un abrazo fatal.
En estos algoritmos se requiere que el sistema operativo, ante cada solicitud, considere los
recursos disponibles, los recursos asignados a cada proceso y las futuras solicitudes y
liberaciones de cada proceso. Con todos estos elementos decide si la solicitud puede ser
satisfecha o si debe esperar para evitar un futuro abrazo fatal.
Existen varios algoritmos con este enfoque y ellos difieren en la cantidad y tipo de informacin
que se requiere.
Se define como estado a la lista de procesos, la lista de recursos ya asignados, la lista de los
recursos que cada proceso an necesita y la lista de los que quedan disponibles (el total de las
necesidades es la suma de los ya asignados y los an faltantes).
Se define como un estado seguro aquel en el cual se puede garantizar una secuencia segura de
terminacin de los procesos. Es decir con los recursos disponibles que quedan se garantiza que
un primer proceso podr terminar. Despus con los disponibles y las que libere el que termin se
asegura la culminacin de otro y as sucesivamente. Un estado que no cumpla con lo antes
indicado se dice que no es seguro.
Pag - 72
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Los algoritmos de evitar el abrazo fatal son ejecutados en cada solicitud de un recurso y analizan
si el estado a que se llega como resultado de la asignacin ser seguro o no. Si es seguro se
realiza la asignacin, si no el proceso deber esperar.
En el libro de texto aparece un algoritmo eficiente para el caso de que cada recurso tenga
solamente una instancia. Est basado en el uso del grafo de asignacin de recursos.
Un mtodo de carcter general que tiene gran uso es el conocido algoritmo del banquero. Su
nombre se deriva de que podra ser utilizado en el sistema bancario.
El mtodo requiere que cada proceso, al incorporarse al sistema, declare la cantidad mxima de
recursos de cada tipo que necesitar. Por supuesto, se asume que se conocen las cantidades de
cada tipo de recurso de que se disponen en el sistema de cmputo.
Por supuesto que al considerar la existencia de varias clases de dispositivos el algoritmo resulta
ms complejo y no tan fcil de verificar. Para ver un ejemplo y el algoritmo propiamente
remitirse de la bibliografa al libro de Peterson.
Pag - 73
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Detectar y recuperar.
Otra lnea de accin en el tratamiento del abrazo fatal consiste en dejar que ocurra. En ese caso,
el sistema invoca peridicamente un algoritmo para detectar si ha ocurrido y en ese caso se trata
de lograr la recuperacin.
La llamada al algoritmo de chequeo puede realizarse cada vez que se solicita un recurso, lo que
puede ser muy costoso en tiempo del cpu, o en momentos arbitrarios.
Cuando un algoritmo de deteccin determina que existe un abrazo fatal entonces se debe pasar a
la recuperacin de ste.
Para la recuperacin existen dos tendencias: La primera opcin consiste simplemente en cancelar
uno o ms de los procesos (y as romper la lista circular). La segunda opcin implica quitar a los
procesos bloqueados algunos recursos.
En el caso de la primera opcin se puede decidir el eliminar todos los procesos participantes del
abrazo fatal o simplemente irlos cancelando uno a uno hasta que la dificultad desaparezca.
En la bibliografa adicional Peterson, se puede realizar una ampliacin con dos algoritmos para
la deteccin del abrazo fatal, uno de ellos es muy parecido al del banquero.
Pag - 74
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Aspectos introductorios.
Uso de la memoria en monoprogramacin.
Proteccin y relocalizacin.
Intercambio de trabajos. Solapamiento.
Multiprogramacin con particiones fijas. Fragmentacin interna.
Multiprogramacin con particiones variables. Fragmentacin externa.
Bibliografa:
Operating System Concepts, Peterson, Silberschatz, pag 143-171.
Operating System: Design and Implementation, Tenenbaum, pag 191-206.
Aspectos Introductorios.
La memoria es uno de los recursos ms importantes de la computadora y por ello debe ser
asignada y utilizada en forma cuidadosa.
La parte del sistema operativo que se encarga de la asignacin de este recurso se nombra
administrador de memoria.
Como es conocido, la memoria est compuesta por un arreglo de bytes o palabras, donde cada
uno de ellos consta de una direccin.
Existen diferentes esquemas para la administracin de memoria y ellos dependen en gran medida
de las posibilidades que brinde el hardware.
La forma ms simple de administracin de memoria es que no haya. Los programas son cargados
completos a la memoria y utilizan todos los recursos del sistema de cmputo. Fue el mtodo
utilizado hasta aproximadamente 1960.
Este esquema consiste en dividir la memoria en dos partes, una para el programa del usuario y la
otra para la parte residente del sistema operativo.
Generalmente la parte residente del sistema operativo se almacena en la parte baja de la memoria
y el programa usuario en la parte alta.
Pag - 75
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Programa
usuario
Sistema de
operacin
Esta estructura fue la utilizada en las primeras microcomputadoras y de ah que los sistemas
operativos CP/M y MS-DOS quedaron condicionados a ella.
Proteccin y relocalizacin.
La proteccin se lograba a travs de un registro lmite tal y como ya fue explicado con
anterioridad.
Si las direcciones generadas son absolutas, entonces el programa tendra que cargarse siempre en
la misma posicin de memoria. Este esquema es poco conveniente y no se utiliza en la
actualidad.
Pag - 76
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
sin modificarlo, la direccin inicial se coloca en el registro. Ahora cada vez que se hace un
direccionamiento se suma la direccin contenida en la instruccin con el valor en el registro (esto
lo hace el hardware) y de esta forma se genera la direccin fsica.
A la relocalizacin antes indicada se le conoce como dinmica. Ntese que con este esquema se
puede, en cualquier momento, mover un programa de una posicin de memoria a otra.
Lgicamente, cada vez que el programa le brinde al sistema operativo una direccin, este la
deber relocalizar antes de utilizarla.
La tcnica consiste en tener los trabajos almacenados en un medio de almacenamiento y uno slo
en memoria ejecutndose. Cuando este finaliza, se va a bloquear o se le acab su tiempo,
entonces su imagen en memoria es trasladada al dispositivo y se carga la correspondiente al
prximo.
El intercambio de trabajos requiere del uso de dispositivos de acceso rpido y con alta velocidad
de transferencia.
Dado que el cambio de contexto puede ser algo largo se podra afectar el tiempo de espera de los
usuarios o la eficiencia del sistema. Una solucin consistira en utilizar el solapamiento.
En este caso se dividira la memoria en 3 reas: en la primera estara el trabajo que ya termin y
se est transfiriendo al dispositivo, en la segunda el que se est ejecutando y hacia la tercera se
estar transfiriendo el prximo a atender.
Sistema de
operacin
Pag - 77
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Por supuesto que en este esquema, con varios procesos en memoria, requiere tambin de un
mecanismo de proteccin. Una alternativa es el uso de dos registros, uno indicando la direccin
inicial y otro la direccin final del proceso que se est ejecutando en cada momento.
A
Lmite
superior
B
Lmite
C inferior
Sistema de
operacin
Otra alternativa es tener igualmente dos registros, uno que indique la direccin inicial del proceso
corriente (el que se est ejecutando) y el otro la longitud del espacio asignado.
Una tercera alternativa fue la usada por la IBM/360. Aqu se dividi la memoria en bloques de
2K y a cada uno se le asociaban 4 bits de proteccin. Cuando un programa se cargaba en
memoria a todos sus bloques se les daba el mismo cdigo. Un programa slo poda acceder los
bloques que tenan su cdigo.
El nmero de particiones existentes y la longitud de estas puede ser fija, definidas estticamente
en el momento de la carga del sistema. En este caso se habla de multiprogramacin con
particiones fijas o MFT (Multi Fixed Tasks).
Generalmente cada particin tiene asociada una cola de entrada y una planificacin por separado,
es decir mltiples colas de entrada. Cada vez que termina el programa que se ejecuta en una
Pag - 78
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
particin se toma el prximo de la cola correspondiente. Los programas van a una cola o a la otra
en dependencia de sus requerimientos de memoria.
Sistema de
operacin
Una alternativa consiste en colocar todos los trabajos en una sola cola de entrada, entonces,
siempre que una particin est libre se escoge uno de la cola que quepa en el espacio de memoria.
En este caso se pueden utilizar numerosas polticas de planificacin para la cola las que estn
explicadas en detalles en el libro de la bibliografa propuesta Tanembaum
Sistema de
operacin
El sistema OS/MFT combinaba las dos alternativas antes explicadas. Es decir, una particin poda
tener asociadas varias colas de entrada y tambin una cola de entrada podra estar asociada a ms
de una particin.
Una situacin crtica en la multiprogramacin con particiones fijas es la decisin de los tamaos.
Si se dan tamaos pequeos, los programas grandes puede que no quepan en ninguna. Por otra
parte, si se les dan tamaos grandes, entonces los programas pequeos malgastan memoria. Al
gasto de memoria antes indicado se le llama fragmentacin interna.
Pag - 79
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
En ese esquema, un trabajo se carga en memoria siempre que haya un espacio libre contiguo. A
cada espacio libre se le llama un hueco (hole).
El sistema de operacin mantiene una estructura de datos indicando que espacios estn libres (los
huecos).
Si el espacio aparece, entonces se le asigna la cantidad que necesita. Si existiera sobrante, ste se
mantiene como un hueco.
Cuando un proceso termina, libera el bloque de memoria que ocupaba y este se coloca como
libre. Si este hueco nuevo es adyacente a otro, entonces se unen para formar una de mayor
longitud. Ntese que la adyacencia puede ser por cualquiera de los extremos.
En ese momento se chequea si hay trabajos esperando por memoria y si el espacio liberado o
recombinado satisface los requerimientos.
Es evidente que a medida que avanza el tiempo la memoria pudiera quedar fragmentada en varias
particiones y varios huecos pequeos que no pueden ser usados por los trabajos que estn
esperando, ya que sus requerimientos son superiores. A esta situacin se le llama fragmentacin
externa.
Una solucin a la fragmentacin externa es mover todos los procesos a un extremo de la memoria
cada vez que se realiza una liberacin de espacio. Es evidente que en este caso siempre la
memoria libre estar constituida por un solo hueco.
Pag - 80
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
En los aspectos discutidos anteriormente sobre el uso de memoria se ha sealado que los trabajos
debern indicar la cantidad de este recurso que requieren. En este caso se deber tener en cuenta
el posible crecimiento del rea de memoria de un proceso debido al uso de la pila o de la
asignacin dinmica (HEAP).
Dicha memoria adicional podr estar incluida en la solicitud o adicionada por el propio sistema
operativo.
Datos dinmicos
Pila
Programa A
Pag - 81
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
En los mapas de bits, la memoria se divide en unidades asignables. A cada una de estas unidades
le corresponde un bit en el mapa. Si el bit est en cero significa que la unidad o bloque est libre,
en caso contrario estar en 1. Si es necesario asignar una longitud de K unidades, entonces se
busca en el mapa K bits consecutivos que se encuentren en 0.
Un aspecto a tener en cuenta es la longitud de las unidades. Si se toman muy pequeas, entonces
el mapa de bits crece demasiado. Si se toman muy grandes, entonces existir una fragmentacin
importante en el ltimo bloque de cada asignacin. La operacin de bsqueda en un mapa de bits
resulta por lo general lenta y por ello sta tcnica no es muy usada.
Una variante que se utiliza frecuentemente es mantener los bloques de memoria, en uso o libres,
enlazados en una lista ordenada en forma ascendente por direcciones.
Lista
Pag - 82
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Cuando un proceso termina se libera el bloque que ocupaba. Como la lista est ordenada
ascendentemente por direcciones es fcil conocer si algunos de los bloques vecinos (el anterior, el
posterior o ambos) es un hueco. Si esto ocurriera, entonces deben unirse en un solo bloque libre.
Para aumentar la velocidad de bsqueda de los huecos se pueden tener dos listas separadas, una
de bloques en uso y otra de huecos. Sin embargo esta tcnica es ms lenta cuando se va a liberar
un bloque.
Tambin, en lugar de tener una estructura especial para construir la lista de huecos, se puede
hacer uso de los propios bloques de memoria para enlazarse entre si. En este caso la primera
palabra del bloque ser su longitud y la segunda contendr la direccin del prximo.
El algoritmo ms simple consiste en buscar el primer hueco que tenga una longitud igual o mayor
que el bloque necesario. Si el bloque libre es mayor que el necesario entonces es dividido en dos,
uno para ser ocupado y otro que permanecer libre. El algoritmo antes escrito se conoce como
primer acceso (First Fit o First Access). Esta tcnica tiende a reducir el tamao de los bloques al
inicio de la lista y por ello con el tiempo demorar las bsquedas.
Una ligera variacin se puede lograr utilizando el algoritmo del Prximo acceso (Next Fit o Next
Access), que comienza la bsqueda en el lugar donde se qued la vez anterior y no por el
principio. De todas formas, ambas tcnicas tienden a reducir los tamaos de los bloques grandes.
Otro algoritmo bien conocido es el del mejor acceso (Best Fit o Best Access). Este recorre toda la
lista buscando el ms pequeo de todos los que puedan utilizarse. Esta tcnica es ms lenta
(revisa toda la lista) y est demostrado que tiende a generar huecos muy pequeos que despus no
pueden ser utilizados. Cuando se utiliza este algoritmo resulta ms conveniente tener ordenada la
lista de huecos por longitud que por direcciones.
Para solventar la dificultad antes indicada se puede hacer uso del peor acceso (Worse Fit o Worse
Access) que consiste en buscar el hueco mayor. Simulaciones realizadas demuestran que no es
una buena idea.
Pag - 83
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Los bloque se asignan en longitudes que son potencias de 2. Por ello, cuando un proceso solicita
una cantidad dada de memoria se busca la primera potencia de 2 que da un valor mayor o igual
que la cantidad solicitada.
La potencia obtenida indicar la cola donde se deber buscar. Si existe un bloque se asigna. Si no
lo hay se ir a la lista inmediata superior, si hay un bloque se pica en dos parte iguales
entregndose la primera mitad al proceso y la otra mitad se coloca en la lista que le corresponde
de acuerdo con su longitud. Si en la lista siguiente no hay bloques libres se contina a la prxima
y as sucesivamente.
Los dos bloques que se obtienen como resultado de un corte se dice que son camaradas. Al
liberarse un bloque de una longitud determinada se coloca en su lista correspondiente, pero si su
camarada est libre entonces se unen y pasan como un solo bloque a la lista correspondiente. El
proceso de unin antes indicado se contina mientras se van encontrando camaradas en forma
sucesiva.
Inicio 1024 K
Lib. C 1024
Pag - 84
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
La mayor dificultad del sistema camarada es que produce fragmentacin interna, pues las
asignaciones siempre se hacen en bloques potencias de 2 (para 33K se asignan 64K).
Paginado.
Existen ventajas en buscar un mecanismo que permita a los procesos tener la memoria a utilizar
distribuida por distintas partes dentro de la existente. Esto permitira que el proceso utilice huecos
que en otras condiciones no tendran uso. Un primer esquema en el sentido indicado lo constituye
el llamado paginado.
Cuando se utiliza el paginado los programas se dividen en unidades de tamao fijo. A estas
unidades se les llama pginas. Es decir, un programa esta compuesto por un conjunto de estas
pginas (probablemente la ultima no este completa).
Por otro lado, la memoria de la maquina se divide en bloques de igual longitud coincidiendo sta
con la que tienen las pginas. A estos bloques se les llaman marcos de pginas (frames). En cada
marco de pgina se puede almacenar justamente una pgina.
En un sistema paginado toda direccin generada esta compuesta por dos partes: un nmero de
pgina y el desplazamiento dentro de sta. Es decir un grupo de bits codificarn la primera
informacin y otros la segunda. Ahora nuestro objetivo es poder colocar cada pgina en cualquier
marco que se encuentre disponible. Para lograr este objetivo se requiere mantener la
correspondencia (mapping) entre las pginas y los bloques donde se encuentran almacenadas.
A los efectos de lo antes indicado, se mantiene, para cada proceso, una tabla (un arreglo) indizada
por el nmero de pagina donde cada entrada contendr la direccin base del marco de pgina.
Como es lgico, si a esta direccin se le suma el desplazamiento arribaremos a la posicin fsica
en memoria donde esta la informacin.
A las direcciones existentes en los programas se les identifica como direcciones lgicas y a las
que se obtienen como resultado de la transformacin se les identifica como direcciones fsicas.
Pag - 85
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Tabla de pginas
. Marco de
. +
. pgina
.
.
.
Como es de suponer esta conversin se tiene que realizar con cada direccionamiento y por ello no
puede ser funcin del software hacerlo, sino del hardware. Es decir, que para poder instrumentar
el paginado se requiere que el sistema de computo brinde la posibilidad.
La parte del hardware que se encarga de convertir las direcciones lgicas en direcciones fsicas se
llama unidad de administracin de memoria (MMU).
Es de notar que el paginado presupone la relocalizacin dinmica de los procesos. O mejor dicho,
el paginado en si es una relocalizacin dinmica.
Una ventaja derivado del paginado es la posibilidad de que en un instante de tiempo dos o mas
proceso estn haciendo uso de un cdigo comn, o sea exista una sola copia del cdigo
(programa). Lo antes indicado se logra con facilidad si en las tablas de paginas aparecen entradas
que apuntan a los mismos marcos de pginas.
Para que un programa pueda ser compartido en la forma antes indicada tiene que ser reentrante o
cdigo puro, lo que implica que no se puede automodificar como resultado de su ejecucin.
Pag - 86
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Como un proceso puede hacer referencia a tantas pginas, como lo permita la parte
correspondiente de la direccin, pero pudiera ocurrir que en realidad disponga de menos,
entonces en cada entrada de la tabla de pginas existir un bit que codificara si esta existe
realmente o no. El hardware har uso de este bit para provocar una trampa en caso de una
referencia ilegal.
Segmentado.
Esta forma de actuar se acerca ms al punto de vista del programador o usuario que piensa en su
aplicacin como varias partes, por ejemplo un segmento de cdigo, un segmento de datos, una
pila, etc.
Cada segmento se almacena en una parte diferente de la memoria. Todos los segmentos que
forman una aplicacin constituyen su espacio lgico. Cada elemento de este espacio lgico esta
caracterizado por un nombre y una longitud.
En un sistema segmentado toda direccin lgica esta compuesta por dos partes: el nombre del
segmento y el desplazamiento dentro de ste. Normalmente el nombre del segmento se toma
como un nmero para facilitar la instrumentacin.
Para convertir una direccin lgica en la direccin fsica donde la informacin se encuentra se
hace uso de una estructura de datos conocida como tabla de segmentos. Cada una de sus entradas
contendr la direccin base del segmento y su longitud.
Pag - 87
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Trap
Tabla de segmentos
.
. + Segmento
.
long. base
.
.
.
Al igual que en el paginado, esta conversin se tiene que realizar con cada direccionamiento y
por ello se requiere tambin que el sistema de computo brinde el hardware necesario para su
operacin.
Para la administracin del espacio libre se utilizara una cualquiera de las tcnicas ya estudiadas:
Mapa de bits, listas enlazadas o sistema camarada.
Dado el carcter dinmico de los bloques de memoria libre, el segmentado adolece del fenmeno
de fragmentacin externa que ya fue analizado para la tcnica de MVT. Ntese que la analoga es
evidente ya que MVT es el segmentado cuando todos los trabajos ocupan un solo segmento.
Los mismos mecanismos de proteccin indicados en el caso del paginado se instrumentan con el
segmentado, es decir bits con los atributos e inclusive derechos de pertenencia.
Con algunas dificultades adicionales con respecto al paginado, pero aqu tambin es posible
compartir segmentos entre diferentes procesos.
Pag - 88
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Esquemas combinados.
Un primer esquema es la paginacin segmentada que consiste en un sistema paginado donde los
procesos tienen varias tablas de pginas que se guardan como un segmento a los efectos de
ahorrar espacio y memoria.
De uso frecuente es el esquema de segmentacin paginada. En este caso la memoria esta dividida
en segmentos y a su vez, cada segmento internamente se divide en pginas. Como es lgico
suponer cada segmento tendr una tabla de pginas.
Todos los segmentos que pertenecen a un proceso estarn controlados en una tabla de segmentos.
Cada uno de ellos tendr una longitud que ser mltiplo de la longitud de una pgina.
Como es de suponer la conversin de una direccin lgica en una fsica presupone buscar la tabla
de pginas en la de segmentos y despus buscar la direccin del marco de pgina
correspondiente. Por ltimo adicionar el desplazamiento.
En el libro de Peterson se presentan grficos y explicaciones que hace ver en forma clara estos
conceptos. Los microprocesadores de Intel del 80286 en adelante brindan todo el hardware
necesario para instrumentar la segmentacin, mientras que del 386 en adelante permite combinar
ambas tcnicas (segmentacin paginada).
Pag - 89
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Sistemas de Operacin
Memoria virtual.
Demanda de pgina y prepaginado.
Algoritmos de reemplazamiento de pginas.
Sobreposicin (Overlays).
Administracin de memoria en sistemas operativos actuales.
Bibliografa:
Memoria virtual.
Por otro lado, se ha dicho que la eficiencia en el uso del CPU se incrementa con el grado de la
multiprogramacin. Pero a su vez dicho grado esta limitado por la memoria disponible para
almacenar los procesos.
La solucin a las dos dificultades antes indicadas se encuentra en el uso de la llamada memoria
virtual. Esta tcnica consiste en permitir la ejecucin de procesos que puedan no estar
completamente en memoria. Dicho de otra forma, ejecutar programas que son ms largos que el
espacio de memoria disponible para su almacenamiento.
La forma mas comn de instrumentar la memoria virtual es por medio del paginado. Es tal la
relacin que a veces se pierde la nocin de que el uso de pginas de memoria no necesariamente
implica un espacio virtual.
Al usar el paginado para instrumentar la memoria virtual se tendr que una parte de las pginas
estarn en memoria y otras, lgicamente, se encontrarn almacenadas en un dispositivo de acceso
directo (tpicamente un disco).
Pag - 90
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Durante la ejecucin, si se hace referencia a una pgina que est en memoria se procede como se
explic con anterioridad y no existe dificultad alguna.
Las acciones implicadas detrs de una demanda de pgina provocan un incremento sustancial del
tiempo de acceso a una posicin de memoria, afectando por ello la utilizacin eficiente del
procesador. La demanda de pgina, aunque inevitable, es indeseable y por ello en el diseo de un
sistema operativo con memoria virtual basado en paginado se deben analizar bien todos los
factores que tienen incidencia en este sentido.
Un aspecto a considerar es la longitud de las pginas. Si estas se toman muy pequeas, entonces
es de esperar una alta frecuencia de ocurrencia de la demanda de pginas. Por otro lado, si fuera
muy grande entonces habra una fragmentacin interna significativa en la ltima.
Al producirse una demanda de pgina, como ya se explic, habr que trasladar a memoria la que
hace falta. Si el sistema operativo an conserva marcos de pginas libres, entonces se tomar uno
de ellos y se almacenar la informacin implicando la operacin un solo acceso al medio de
almacenamiento.
Lo normal ser que al producirse la demanda de pgina no hayan marcos libres. En este caso
habr que sustituir o reemplazar una de las pginas que estaba residiendo en memoria. Si dicha
pgina se ha modificado, entonces deber reescribirse en el medio de almacenamiento,
implicando dos accesos a ste.
Para sustituir una pgina residente en memoria se utilizan diferentes tcnicas conocidas como
tcnicas o algoritmos de reemplazamiento de pginas. En algunos sistemas operativos se le
permite al algoritmo escoger la vctima solamente entre los marcos de pginas que tiene asignado
el proceso (local) o entre todos los existentes (global).
Para conocer si una pgina de memoria ha sido modificada (dirty) o no, se dispondr de un bit en
cada marco de pgina.
Cuando el grado de multiprogramacin es muy alto, el nmero de marcos de pgina que tendr
asignado cada proceso ser bajo y ello puede provocar que un proceso cause una demanda de
Pag - 91
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
pgina y se sustituya una que de inmediato haga falta y as sucesivamente. A este fenmeno se le
llama THRASHING.
Se dice que un proceso est en THRASHING si esta gastando ms tiempo del CPU en
transferencia de pginas que en realizar computaciones tiles.
Si todos los procesos residentes en el sistema estn en la situacin antes indicada, entonces se
dice que el sistema de cmputo est en THRASHING. Como es de suponer, esta situacin es
totalmente indeseable.
Una alternativa a la demanda de pgina consiste en el llamado prepaginado. En este caso se traen
a memoria determinadas pginas que se asumen sern utilizadas en el futuro inmediato. Si lo
asumido fue lo correcto todo ir bien, en caso contrario se producir la demanda de pgina.
Para sustituir una pgina de la memoria lo mejor sera conocer cual es la que ms tiempo
demorar en ser usada de nuevo (o quizs ya no vuelva a ser usada). Este algoritmo es ptimo y
se le conoce como OPT o MIN. Su dificultad consiste en que es imposible de instrumentar, pues
es difcil conocer el futuro. Se utiliza como referencia o comparacin terica.
El algoritmo de reemplazamiento mas simple es el FIFO (First Come - First Out). Consiste en
seleccionar como vctima a la pgina que lleva ms tiempo en la memoria. Para la
instrumentacin se puede hacer uso de una cola en el orden de llegada.
En general no es un buen algoritmo, tiene la dificultad de que se puede sustituir una pgina que
todava se este usando.
Si se usa el pasado reciente como una aproximacin del futuro cercano se llega a todo un
conjunto de tcnicas o algoritmos de reemplazamiento.
El primero en este sentido es el LRU (Least Recently Used). En este caso se sustituye la pgina
menos recientemente usada, es decir la que hace ms tiempo no se usa. Este algoritmo es bastante
bueno, pero se requiere disponer de hardware para su instrumentacin.
Una instrumentacin por software consistira en mantener las pginas en una lista doblemente
enlazada. Cuando se hace referencia a una pgina en la lista, sta se traslada a la cola.
Evidentemente, la pgina en la cabeza de la lista ser la vctima a sustituir (pudiera ser al revs,
como est en el Peterson). Estainstrumentacin es muy costosa en tiempo del CPU.
An cuando casi ningn sistema de computo brinda el hardware necesario para una
instrumentacin del LRU puro, si contienen elementos que permiten una aproximacin. Esta
Pag - 92
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
consiste en tener por cada pgina en memoria un bit que se pondr en 1 si la pgina es
referenciada, lgicamente al ser trada a memoria se pondr en 0. A este bit se le llama bit de
referencia.
Con lo antes indicado, se adiciona a cada pgina en memoria un byte o palabra que se usar como
un registro de desplazamiento. A intervalos fijos (digamos con la interrupcin del reloj) el sistema
operativo introduce el bit de referencia (bit R) en la posicin ms alta del registro, desplazando a
la derecha (el ms bajo se pierde). Como es de esperar al reemplazar una pgina se escoger una
entre aquellas que tenga un valor menor en el registro.
El uso del bit de referencia se puede combinar con el algoritmo FIFO para crear el llamado
Segundo Chance, que consiste en aplicar el algoritmo mencionado, pero si a la que le toca ser
reemplazada tiene el bit de referencia en 1, entonces se le pone en 0 y se le coloca en el final de la
cola. La seleccionada ser la primera que tenga el bit de referencia en 0.
Este algoritmo tiene la deficiencia de que una pgina que tuvo un alto uso en un momento dado
tendr un valor alto en su contador y permanecer en memoria an cuando ya no se utilice. Una
solucin a esta dificultad consiste en el uso del envejecimiento, que consiste en el algoritmo
aproximado del LRU que ya se explic.
An cuando quedaran muchos otros algoritmos, por ltimo se har referencia a la tcnica
llamada Clases de Pginas o NRU (Not Recently Used).
Para su instrumentacin se requiere del bit de referencia R y uno (M) que indica si la pgina fue
modificada o no (El dirty antes mencionado).
Cada cierto tiempo el sistema de operacin limpia el bit R de todas las pginas que estn a 1. El
hardware lo pondr en esta forma cada vez que se produzca una referencia (lectura o escritura) y
al M cada vez que sea escritura. Entonces se tendr:
Pag - 93
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
R M
Clase 0 0 0 (no referido, no modificado)
Clase 1 0 1 (no referido, modificado)
Clase 2 1 0 (referido, no modificado)
Clase 3 1 1 (referido, modificado)
Cuando se produce una falla o demanda de pgina se seleccionar para reemplazar una de clase 0,
si no hay se toma una de clase 1 y as sucesivamente.
Sobreposicin (Overlays).
El overlays es otra variante de memoria virtual donde el usuario tiene que participar en forma
determinante y su logro depende de la planificacin previa que realice en sus programas. Se basa
en la carga dinmica.
La idea del overlay consiste en tener en memoria slo la parte del programa y los datos que son
necesarios en cada instante. Cuando otras partes se vuelven necesarias, se cargan, almacenndose
donde estaban las anteriores.
La dificultad del overlay consiste en que el programador deber decidir y disear las distintas
partes o mdulos que componen la aplicacin considerando cuales debern estar
concurrentemente en memoria y cuales podrn sobrescribirse.
Dada la consideracin anterior es que esta tcnica ha sido sustituida por el uso del paginado.
Windows.
Histricamente el Windows ha utilizado tres modos de administrar la memoria: modo real, modo
standard y el modo protegido (en consecuencia con los modos de la familia de microprocesadores
Intel). En modo real se administraba menos de un megabyte de memoria, en modo standard al
menos uno y hasta 16 megabytes (con un 80286) o menos de dos megabytes (con un 80386 o
superior) y en modo protegido al menos dos megabytes (con un 80386 o superior).
Hasta el windows 3.0 se utilizaban los tres modos, en el Windows 3.1 se hacia uso del standard y
el protegido y a partir del Windows 95 slo se utiliza el modo protegido (incluyendo las versiones
de Windows NT). En los casos en que la versin hacia uso de ms de un modo, ste era
Pag - 94
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Los dos primeros modos, o sea el real y el standard, trabajaban sobre la base del segmentado. En
el segundo caso, se haca uso del mecanismo de segmentado brindado por el hardware a partir del
microprocesador 80286. En modo real, como se asuma que el hardware no brindaba las
facilidades requeridas, se simulaba por software.
En Windows se definan dos tipos de segmentos: fijos (se mantenan en memoria todo el tiempo y
en una posicin determinada) y movibles. Los segundos, a su vez, se dividan en descartables (su
rea de memoria se poda tomar con otro fin, tpicamente programas y recursos) y no descartables
(slo se podan mover de la posicin que tenan en memoria, tpicamente datos).
De aqu la importancia de que los segmentos se declararn como descartables y si no era posible,
al menos como movibles. Solo se indicaba como fijos aquellos en que no quedaba otra alternativa
(por ejemplo, para la caja de mensajes y el icono stop).
Para la simulacin del segmentado en el modo real se hacia uso de una estructura de datos que
recibi el nombre de Burgermaster, donde se llevaba a cabo el control de los movibles. En la
grfica que sigue a continuacin se muestra como se distribua la memoria y el uso de la
estructura de datos antes mencionada
Burgermaster Fijos
Memoria fsica
Cuando se requera espacio para un segmento fijo, se desplazaban hacia arriba los movibles en la
magnitud requerida. En caso de que los requerimientos no se pudieran cumplimentar, entonces se
Pag - 95
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Cuando se requera espacio para un segmento movible, se tomaba del rea libre y en caso de no
poderse satisfacer la demanda, entonces se comenzaban a descartar los que tienen esta condicin.
Cuando se requera espacio para un segmento descartable se aplicaban los mismos pasos que en
el caso anterior.
En el modo protegido se administra la memoria opr segmentado paginado. Se utiliza una longitud
de pgina de 4k y el algoritmo LRU para el reemplamiento.
UNIX.
Las primeras versiones del UNIX manejaban la memoria con el esquema de particiones variables.
El espacio libre se mantena por medio de una lista de huecos. Para la bsqueda de un hueco se
aplicaba el algoritmo del primer acceso o ajuste.
Cada pocos segundos, el intercambiador revisa la lista de procesos llevados al disco para ver si
hay algunos listos para la ejecucin. En caso de existir, procede a realizar los intercambios hacia
la memoria utilizando como criterio el tiempo de permanencia en el dispositivo. Este
procedimiento se continua hasta que:
Pag - 96
Faculta de Tecnologa
Carrera de Ingeniera de Sistemas
Los marcos de pgina libres se mantienen en una lista doblemente enlazada. Cuando un proceso
provoca una demanda de pgina y no existen marcos libres, entonces se bloquea.
Para garantizar la existencia de marcos de pgina libres existe un proceso con alta prioridad cuya
tarea consiste en eliminar pginas de la memoria y liberar marcos en base a un algoritmo
conocido como reloj de una o dos manecillas. Este algoritmo tiene en cuenta que las pginas
eliminadas no sean las que han tenido un uso reciente. El objetivo es tener siempre un porcentaje
de los marcos como libres o disponer de una cantidad entre un mnimo y un mximo.
El algoritmo antes mencionado se aplica con un criterio global (es decir la pgina se le quita a
cualquiera).
Pag - 97