Sunteți pe pagina 1din 142

1.

Introduccin
1.0 Sistema Operativo
Es una coleccin organizada de extensiones software del hardware, consistente en rutinas
de control que hacen funcionar un computador y proporcionan un entorno para la
ejecucin de los programas.
Es un paquete de programas que administra los recursos del sistema de computacin. Los
recursos pueden ser fsicos, lgicos o abstractos.
Acta como interfaz entre el usuario y el hardware. No se encuentra completamente en
memoria, solo las funciones mas utilizadas.
Los programas en ejecucin se apoyan en las facilidades proporcionadas por el SO para
obtener acceso a los recursos del sistema informtico.
Los usuarios pueden interactuar con el SO directamente por medio de rdenes del SO.
Un SO acta como gestor de los recursos del sistema informtico, lleva el control sobre el
estado de cada recurso y decide quin obtiene un recurso, durante cunto tiempo y
cundo.
Slo forman parte del SO aquellas funciones administradoras de recursos. Es decir se ve al
SO exclusivamente como un administrador de recursos, dejando para aquellos sistemas
que no comparten recursos la categora de Monitor o Supervisor.

Objetivos del SO:


Lograr que el sistema informtico se use de manera cmoda.
Lograr que el hardware del computador se emplee de manera eficiente.
Ofrecer servicios a los programas y sus usuarios para facilitar la tarea de programacin.
Ejecutar los programas de los usuarios y facilitar la resolucin de sus problemas.

1.1 Qu es un SO?
Un sistema informtico puede dividirse en cuatro componente:
El hardware (CPU, memoria y dispositivos E/S) proporciona los recursos de computacin
bsicos.
Los programas de aplicacin definen la forma en que esos recursos se emplean para
resolver los problemas informticos de los usuarios.
Los usuarios, pueden ser muchos y distintos e intentan resolver problemas diferentes; por
consiguiente, es posible que haya diferentes programas de aplicacin.
El SO, controla y coordina el uso del hardware entre los diversos programas de aplicacin
de los distintos usuarios.
Como hardware no es fcil de utilizar, se desarrollan programas de aplicacin que requieren
ciertas operaciones comunes.
El SO es el programa que se ejecuta todo el tiempo en el computador (conocido
usualmente como ncleo), siendo programas de aplicacin todos los dems.
Un SO puede procesar su carga de trabajos de forma:
Forma serie: los recursos del sistema informtico estn dedicados a un solo programa
hasta que termine

76

Forma concurrente: los recursos del sistema informtico son reasignados dinmicamente
entre una coleccin de programas activos en diferentes etapas de ejecucin, los
denominados sistemas de multiprogramacin.

1.2 Los primeros sistemas


Maquina desnuda:
1. Traduccin manual de secuencias de instrucciones en cdigo binario o alguna otra base.
2. Despus se introducen en el computador las instrucciones y los datos.
3. Los programas se arrancan cargando el registro contador de programa con la direccin de
memoria de la primera instruccin.
4. Los resultados de la ejecucin se obtienen examinando los contenidos de los registros
relevantes y de las posiciones de memoria.
Caractersticas:
La programacin es de muy baja productividad para los usuarios y para el hardware por el
largo y tedioso proceso de introduccin de programas y datos.
El programador tambin era el operador del sistema informtico. La mayora de los
sistemas utilizaban un esquema de reservaciones o de registro para asignar tiempo de
mquina.
Con dispositivos de E/S
Los programas, codificados ahora en un lenguaje de programacin, se traducen a formato
ejecutable mediante un programa, tal como un compilador o intrprete.
Con el paso del tiempo, se desarrollaron software y hardware adicionales para facilitar las
tareas de programacin, y se crearon bibliotecas de funciones comunes.
Para cada uno de los dispositivos de E/S se escriba una subrutina especial, la cual se
denominaba manejador de dispositivo y es la que sabe cmo deben usarse los buffers,
indicadores, registros, bits de control y bits de estado para cada dispositivo. Cada tipo de
dispositivo tena su propio manejador.
Con compiladores:
Ms tarde aparecieron los compiladores lo que facilit la tarea de programacin, pero hizo
ms complejo el funcionamiento del computador.
Cada trabajo consista de varios pasos distintos:

1. Cargar la cinta del compilador


2. Ejecutar la compilacin
3. Descargar la cinta del compilador
4. Cargar la cinta del ensamblador
5. Ejecutar el ensamblado
6. Descargar la cinta del ensamblador
7. Cargar el programa objeto
8. Ejecutar el programa
76

El problema de los sistemas con cinta era que el lector de tarjeta no poda escribir en un extremo
de la cinta mientras la CPU lea del otro. Toda la cinta se tena que escribir antes de rebobinarla y
leerla.

1.3 Monitor sencillo


La solucin para aumentar la utilizacin de las computadoras tuvo dos facetas una despus de la
otra:
1. Se contrat a un operador profesional para manejar el computador. Cuando el programador
terminaba un trabajo, el operador iniciaba el siguiente, con lo que se eliminaban los
periodos de inactividad.
Puesto que el operador tena ms experiencia que el programador para montar y
desmontar cintas, se reduca el tiempo de preparacin.
Los programadores dejaban sus programas al operador, quien los clasificaba y agrupaba en
lotes con requisitos similares y, en cuanto estuviera disponible el computador, ejecutaba
cada lote. La salida de cada uno de los trabajos se devolva al programador
correspondiente.
En caso de un error en el programa se haca un vuelco de memoria y de registros, y el
programador efectuaba la depuracin a partir del vuelco.
2. Reducir el periodo de preparacin. Los trabajos con requisitos semejantes se agrupaban en
lotes y se ejecutaban como un grupo en el computador.
Se deseaba era un procedimiento para transferir automticamente el control de un
trabajo al siguiente:
Se cre un pequeo programa llamado monitor residente.
El monitor residente siempre se encuentra (reside) en la memoria.
Al encender el computador se invocaba al monitor residente, que transfera el control a un
programa. Cuando ste terminaba, devolva el control al monitor residente, el cual pasaba
al siguiente programa. As, el monitor pasaba automticamente de un programa a otro y
de un trabajo a otro.
Para proporcionar la descripcin de los programas que se deban ejecutar y con que datos
directamente al monitor, se crearon las tarjetas de control.
El intrprete de tarjetas de control es el responsable de leer y llevar acabo las instrucciones
de las tarjetas al momento de la ejecucin, este invoca a intervalos a un cargador para que
se cargue en la memoria los programas del sistema y las aplicaciones.
El monitor residente o los manejadores de dispositivos incluyen buffers del sistema para
cada dispositivo de E/S.

1.4 Operacin fuera de lnea


La operacin fuera de lnea, consiste en la interposicin fuera de lnea de un dispositivo rpido
entre uno lento y la CPU.

El problema es la velocidad de los dispositivos mecnicos de E/S, que son ms lentos que los
dispositivos electrnicos:
La lentitud de los dispositivos de E/S provoca que la CPU con frecuencia se encuentre esperando
E/S. El problema es que, mientras se lleva a cabo una operacin de E/S, la CPU est inactiva,

76

esperando que termine la E/S, y mientras la CPU est trabajando, los dispositivos de E/S estn
inactivos.
Una solucin comn:
Sustituir los lectores de tarjetas y las impresoras de lneas con las ms rpidas unidades de cinta
magntica. Las tarjetas primero se copian a una cinta magntica y cuando se llena lo suficiente,
se desmonta y se lleva al computador. Cuando se requera una tarjeta como entrada para un
programa, se lea el registro equivalente desde la cinta. En forma anloga, la salida se escriba en
la cinta y el contenido de sta se imprima ms tarde.
Los lectores de tarjetas y las impresoras de lneas se operaban fuera de lnea (off line);
no lo haca el computador central.
Para el procesamiento fuera de lnea se utilizaban dos mtodos:
1. Se desarrollaron dispositivos de propsito especial que enviaban la salida a la cinta
magntica o tomaban la entrada de ella, directamente. Contaban con hardware adicional
diseado especficamente para esa tarea.
2. Se dedicaba un pequeo computador a la tarea de copiar en cinta y de ella; este pequeo
computador era un satlite del computador principal. El procesamiento satlite fue uno de
los primeros casos de sistemas informticos mltiples que trabajan en conjunto para
mejorar el rendimiento, no era necesario modificar los programas de aplicacin para pasar
de una operacin de e/s directa a una fuera de lnea.
Hay que modificar el manejador del dispositivo. Cuando el programa necesita una tarjeta
de entrada, llama a la misma rutina de sistema que antes, sin embargo, ahora el cdigo
para la rutina no es el manejador del lector de tarjetas, sino una llamada al manejador de
la cinta magntica.
La capacidad para ejecutar un programa con diferentes dispositivos de E/S se llama
independencia de dispositivos, y se obtiene cuando el SO es capaz de determinar el
dispositivo que realmente usa un programa cuando solicita E/S.
Los programas se escriben para usar los dispositivos lgicos de E/S. Las tarjetas de control indican
la correspondencia entre los dispositivos lgicos y los fsicos.
Con la posibilidad de usar varios sistemas lector-cinta y cinta-impresora con una misma CPU, se
puede producir suficiente cinta para mantener activa a la CPU.
Hay un mayor retardo para iniciar la ejecucin de un trabajo determinado.

1.5 Almacenamiento temporal (Buffering y Spooling)


Permite hacer simultneas las operaciones de la CPU y de E/S ejecutando estas dos acciones en
dos mquinas independientes. Si deseamos lograr esta superposicin en una sola mquina, se
debe colocar ciertos elementos entre los dispositivos y la CPU para permitir una separacin similar
de la ejecucin.
Un registro es una unidad natural de datos, puede ser un registro fsico o un registro
lgico.
Un registro fsico puede ser una lnea imaginada para imprimir, o un carcter a ingresar
desde teclado, o un bloque a leer desde una cinta magntica o desde un disco rgido. Ej:
disco rgido.
Un registro lgico puede ser una lnea entrada, una palabra o una orden. Es la informacin
que tengo.

76

Los registros fsicos son definidos por la naturaleza de los dispositivos de E/S y los
registros lgicos son definidos por los programas de aplicacin.
La conversin entre registros lgicos y fsicos se realiza por Software.
generalmente contendr varios registros lgicos de menor tamao.

Un registro fsico

Las operaciones de E/S leen o graban registros fsicos.

1.5.1 Almacenamiento temporal con buffers


Un buffer mantiene los registros que fueron ledos y no procesados (buffer de entrada)
o los procesados pero no sacados (buffer de Salida), tiene un tamao suficiente que le
permite almacenar temporariamente varios registros. Buffering, es un mtodo para
hacer simultnea la E/S de un trabajo con su propio procesamiento.

1. Cuando la CPU est lista para comenzar a trabajar con ellos, se ordena al dispositivo que
inicie de inmediato la siguiente lectura. En ese momento tanto la CPU como el dispositivo
se encuentran ocupados.

2. Cuando la CPU est lista para el siguiente elemento de datos (registro), el dispositivo de
entrada habr terminado de leerlo, la CPU puede entonces comenzar el procesamiento de
los datos recin ledos, mientras el dispositivo de entrada comienza a leer los datos
siguientes.
Tenemos un acceso directo a memoria, cuando la CPU necesita datos los busca en el
Buffer de entrada y despus los imprime en el buffer de salida.
Si la CPU termina antes deber esperar y en el peor de los casos, la espera no sera mayor
que si no existiera el buffer.
Si el dispositivo de entrada termina antes, entonces deber esperar o podr proseguir con
la lectura del siguiente registro. Los buffers en general tienen el tamao suficiente para
almacenar varios registros.
Las llamadas de subrutinas al manejador de dispositivo efectuadas por los programas de
aplicacin provocan una transferencia de o hacia un buffer del sistema.
TRABAJO LIMITADO POR LA E/S: Si la CPU es siempre ms rpida, encontrar el buffer de
entrada vaco y tendr que esperar al dispositivo de entrada. Para la salida, la CPU puede
proseguir a toda velocidad hasta que, finalmente, se llene el buffer de salida y la CPU deber
esperar al dispositivo de salida.
TRABAJO LIMITADO POR LA CPU: los buffers de entrada siempre estn llenos y los dispositivos
de salida siempre vacos; la CPU no puede mantener el ritmo de los dispositivos de E/S.
Controladores de dispositivos:
Cada uno de los controladores de dispositivos se encarga de un tipo especfico de
dispositivo.
Un controlador de dispositivo cuenta con almacenamiento local en buffer y un conjunto de
registros de propsito especial.
El controlador del dispositivo es el responsable de transferir los datos entre el perifrico
que controla y su buffer local.

1.5.2 Spooling

76

El objetivo del Spooling es la independencia de los programas respecto de los dispositivos lentos.
Como la cabeza del disco se mueve de un rea del disco a otra, ste puede cambiar rpidamente
el rea utilizada por el lector de tarjetas para almacenar nuevas tarjetas a la posicin requerida
por la CPU para leer la siguiente.
Las tarjetas se leen directamente del lector de tarjetas al disco.
Forma de trabajo:
La ubicacin del contenido de las tarjetas se anota en una tabla que mantiene el SO.
Cuando se ejecuta un trabajo, el SO satisface las solicitudes de entrada del lector de
tarjetas, leyendo del disco.
Cuando el trabajo solicita a la impresora que imprima una lnea, sta se copia a un buffer
del sistema y se escribe en el disco.
Con el Spooling, se utiliza el disco como un buffer de gran tamao.
Da inicio al concepto de multiprogramacin.
Ventajas:
Hace simultnea la E/S de un trabajo con el clculo de otro trabajo.
La CPU puede hacer simultneos los clculos de un trabajo con la E/S de otros.
Mejora el rendimiento
Se necesitan tablas y espacio en disco.
Un depsito de trabajo en el disco permite al SO seleccionar cul ser el siguiente trabajo
por ejecutar, para as incrementar la utilizacin de la CPU.
Desventajas:
El tourn-around-time aumenta ya que al tiempo original del programa se agrega el tiempo
de ejecucin de la rutina y el tiempo de grabacin en el dispositivo rpido.
Aumenta el troughput que es el nmero de trabajos que atraviesan el sistema por unidad
de tiempo.

1.8 Sistemas distribuidos


Es un sistema constituido por varios procesadores (nodos) y poseen la caracterstica de
la especializacin de funciones, es decir que cada nodo posee un conjunto de funciones
particulares que combinadas brindan la totalidad del sistema. Ej: cajeros automticos.
Un SO distribuido es una coleccin de sistema informticos autnomos capaces de
comunicacin y cooperacin mediante interconexiones hardware y software.
Los SOs de cada nodo, no necesariamente deben ser iguales, incluso el hardware de cada
nodo puede ser diferentes (distinto tamao y quizs distinto fabricante).
En aplicaciones donde todas las funciones son conocidas y pueden ser perfectamente
predefinidas, la comunicacin entre nodos puede ser pensada como una responsabilidad de
la aplicacin, sin embargo, es preferible que esta responsabilidad recaiga sobre los SOs.
Una aplicacin ha sido diseada para servirse de una familia de procesadores, de manera
tal que solo ciertas funciones de la aplicacin se ejecutan en cada computadora.
La relacin entre nodos es estricta, las interacciones frecuentes y la dependencia entre los
sistemas estrecha.

76

Un SO distribuido gobierna la operacin de un sistema informtico distribuido y proporciona


una abstraccin de mquina virtual a sus usuarios.
El objetivo clave de un SO distribuido es la transparencia.
La distribucin de componentes y recursos debera quedar oculta a los usuarios y a los
programas de aplicacin a menos que estos demanden lo contrario.
Facilitan el acceso a recursos remotos, la comunicacin con procesos remotos y la
distribucin de los clculos.
Existen dos esquemas bsicos para la construccin de estos sistemas:
1. Sistema fuertemente acoplado: los procesadores comparten la memoria y un reloj, y por lo
general la comunicacin se lleva a cabo a travs de la memoria compartida.
2. Sistema dbilmente acoplado: los procesadores no comparten ni memoria ni reloj, pues
cada uno cuenta con su propia memoria local.

Razones para construir sistemas distribuidos:


Compartimiento de recursos: compartir archivos en instalaciones remotas, procesar
informacin en una base de datos distribuida, imprimir archivos en instalaciones remotas,
utilizar dispositivos remotos de hardware especializado.
Aceleracin de los clculos: Si un clculo determinado puede dividirse en varios
subclculos, un sistema distribuido permitira distribuir los clculos entre las diversas
instalaciones y tambin ejecutarlos
concurrentemente. Si una instalacin est
sobrecargada con trabajos, algunos de ellos pueden pasarse a otras instalaciones con poca
carga.
Confiabilidad: Si falla una instalacin de un sistema distribuido, las restantes pueden,
potencialmente, continuar operando. En general, si hay suficiente redundancia en el
sistema (tanto en hardware como en datos), el sistema puede continuar su operacin,
incluso cuando fallen algunas de las instalaciones.
Comunicacin: Existen varias situaciones ms donde los programas de un sistema
necesitan intercambiar datos entre s, como los sistemas de ventanas.

1.10 Sistema monousuario o Computadores Personales (PC)


Es un sistema informtico para un solo usuario.
Los dispositivos de E/S han cambiado apareciendo los teclados, los mouses, pantallas e
impresoras pequeas y veloces.
En vez de tratar de maximizar la utilizacin de la CPU y los perifricos, han optado por la
comodidad y la rapidez de respuesta a los usuarios.

76

2. Estructura de los Sistemas de Computacin


2.1 Sistemas basados en interrupciones
INTERRUPCIN
Mecanismo utilizado para lograr la coordinacin necesaria entre distintas unidades de un
sistema y para responder a condiciones especficas que se presentan en el procesador.
Cuando se produce una interrupcin el procesador es forzado a reconocer un evento en el
sistema.
Para cada interrupcin se debe seleccionar y ejecutar un procedimiento adecuado que
implica una combinacin de soft y hard.
El hardware debe proporcionar al menos la siguiente informacin:
El tipo de interrupcin que se produce
El resultado de la interrupcin en el Descriptor de Interrupciones (ID) disponible en
memoria para ser leda cuando se necesite. En el caso de una unidad de cinta seria la
siguiente:
(1) De que unidad de cinta se trata.
(2) Si existi error de condicin de excepcin, que tipo.
(3) Si se detecto marca de principio o fin de cinta.
(4) Si se lleno el buffer de entrada de la lectora
El software debe poder realizar las siguientes operaciones:
Mantener registros del flujo de operaciones de I/O
Asociar la interrupcin con la operacin de I/O que la produjo
Analizar el resultado y de existir excepcin, encargarse de ellas (ej. podra intentar un
proceso de recupero)
Volcar los resultados al programa que lo requiera
Indicar que se ha completado la operacin de I/O
Controlar si hay ms operaciones de I/O listas e iniciarlas
Hay un vector de estado compuesto por registros de hardware del procesador que
representan el estado del programa que en ese momento corre.
Los registros del vector de estado son:
AC y MQ, contienen resultados de operaciones aritmticas
IX 1, es un registro ndice del procesador
Reg. Base, Apunta a la ms baja direccin de memoria real que puede referenciar el
programa que en ese momento corre (es la palabra cero de ese programa).
IC, contador de instrucciones, que apunta a la direccin en memoria real de la prxima
instruccin a ejecutarse.

76

Tambin hay un bloque de definicin de interrupciones (IDB) que reside en memoria


real
Palabras del IDB:
JMP, apunta a la direccin en memoria real que contiene la primera instruccin de la rutina
que atiende la interrupcin.
ID (Descriptor de interrupciones): define la interrupcin con informacin que fue
colocada por el dispositivo que ocasiona la interrupcin.
Reg. Base, apunta a la menor direccin de memoria real que puede referenciar la rutina
que atiende la interrupcin.
Tipos de interrupciones:
Error de procesador se presenta al intentar dividir por cero, o si se detecta un error de
paridad, o si ocurre un overflow, etc.
Error de direccionamiento se presenta cuando se referencia una direccin de memoria
real invlida.
E/S por Canal 1 o 2, ocurre cuando se completa una operacin de E/S sobre alguno de
esos canales.
Pasos cuando se produce una interrupcin:
(El SPR que contiene el puntero a la prxima rea save disponible).
1. Guardar el vector estado en el rea de salvado (save) en el lugar indicado por SPR.
2. Cargar los registro del vector de estado IC, MQ y Reg.Base con los contenidos de las
palabras JMP, ID y Reg.Base extrados del IDB.
3. Una vez procesada la interrupcin reiniciar el programa interrumpido a travs de la
ejecucin de la instruccin JMP STACK.
Mtodos para realizar la desincronizacin y resincronizacin de las operaciones mientras se realiza
una E/S:
Transferencia de datos dirigida por interrupciones
Transferencia de datos por acceso directo a memoria (DMA, Direct Memory Access)
Espera activa: en sistemas antiguos la transferencia de datos se efectuaba bajo el control de la
CPU. Ya que la CPU necesita realizar un seguimiento del estado de la E/S y, por consiguiente, esta
activa mientras espera que termine la E/S.
Pasos para iniciar una operacin de E/S:
1. La CPU carga los registros apropiados del controlador del dispositivo y luego contina con
su operacin normal
2. El controlador del dispositivo examina el contenido de estos registros para determinar que
accin emprender.
3. Una vez concluida la transferencia de datos, el controlador del dispositivo informa a la CPU
que su operacin ha terminado. Esta comunicacin se logra causando una interrupcin.

76

4. Cuando se interrumpe a la CPU, sta suspende lo que estaba haciendo y transfiere de


inmediato la ejecucin a una posicin fija, la cual generalmente contiene la direccin de
inicio donde se encuentra la rutina de procesamiento de la interrupcin.
5. La rutina de procesamiento de la interrupcin transfiere los datos del buffer local del
controlador del dispositivo a la memoria principal.
6. Una vez lograda esta transferencia, la CPU puede continuar con los clculos interrumpidos.
La interrupcin debe transferir el control a la rutina de procesamiento de la interrupcin
reservando un conjunto de posiciones en la parte baja de la memoria para que se almacenen las
direcciones de las rutinas de procesamiento de la interrupcin para los distintos dispositivos, este
vector de direcciones, usa como ndice el nmero de dispositivo nico que se da junto con la
solicitud de interrupcin.
Las arquitecturas complejas de interrupciones permiten procesar una interrupcin mientras se
atiende otra, por lo general siguiendo un esquema donde se asignan prioridades a los tipos de
solicitud.
La rutina de interrupcin debe tambin ajustar los punteros y contadores para asegurar que el
siguiente carcter de entrada se almacene en la siguiente posicin del buffer.
A la E/S asncrona generalmente se le asigna una prioridad de interrupcin baja,
permitiendo que antes se procesen otras interrupciones ms importantes, o incluso
que una interrupcin se sustituya por otra.
Para resolver este problema se usa el acceso directo a memoria (DMA) para los dispositivos de E/S
de alta velocidad.
Despus de fijar los buffers, punteros y contadores para el dispositivo de E/S, el controlador del
dispositivo transfiere directamente todo un bloque de datos de su almacenamiento en buffer a la
memoria, o viceversa.
Un programa de usuario, o el mismo SO, puede solicitar una transferencia de datos, el SO localiza
un buffer de una cola de buffers para la transferencia.
Entonces el controlador del DMA tiene sus registros con las direcciones fuentes y destinos
apropiadas y la longitud de la transferencia. En general, esto lo lleva a cabo un manejador de
dispositivo. Luego se ordena al controlador del DMA que comience la operacin de E/S. El
controlador del DMA interrumpe a la CPU cuando termina la transferencia.

2.2 Estructura de E/S


Los sucesos (eventos) casi siempre se avisan mediante una interrupcin, o una trampa.
Una trampa (o excepcin) es una interrupcin generada por el software a causa de un error
o de una solicitud especifica de un programa de usuario para que se realice un servicio del
SO.
Manejo de interrupciones:
1. Ocurre una interrupcin (o trampa).
2. El hardware transfiere el control al SO.
3. El SO preserva el estado de la CPU almacenando los registros y el contador del programa, y
luego determina que tipo de interrupcin ha ocurrido.
Interrupciones de E/S: Un dispositivo de E/S generar una interrupcin al terminar una
solicitud de E/S.

76

Una vez que la E/S se ha iniciado, es posible seguir dos cursos de accin:
La E/S se inicia y al terminar, se devuelve el control al programa usuario (el caso ms
simple).
Ventaja: Como mximo hay una solicitud de E/S pendiente en cada ocasin entonces el SO
sabe exactamente cual es el dispositivo que interrumpe.
Devolver el control al programa de usuario sin esperar que la E/S termine.
Se requiere entonces una llamada al sistema (una solicitud al SO) para permitir al usuario
que espere la terminacin de la E/S.
La espera de la terminacin de la E/S puede lograrse de 2 maneras:
Con una instruccin especial de espera (wait) que mantiene inactiva a la CPU hasta la
siguiente interrupcin
Con un ciclo de espera: Ciclo- jmp. Ciclo muy cerrado que contina hasta que ocurre una
interrupcin, lo cual transfiere el control a otra parte del SO.
El SO usa una tabla que contiene una entrada por cada dispositivo de E/S: la tabla de estado de
dispositivos. Cada entrada de la tabla indica el tipo de dispositivo, as como su direccin y su
estado.
Si el dispositivo est ocupado con una solicitud, el tipo de solicitud y otros parmetros se anotarn
en la entrada de la tabla correspondiente al dispositivo. Adems de la tabla de dispositivos de E/S,
un SO puede contar con una lista de solicitudes para cada dispositivo.
Manejo con interrupcin de E/S:
1. Un dispositivo de E/S interrumpe cuando requiere servicio.
2. El SO determina cul fue el dispositivo de E/S que caus la interrupcin y acude, usando un
ndice, a la tabla de dispositivos de E/S para determinar el estado del dispositivo y
modificar la entrada de la tabla para reflejar la aparicin de la interrupcin.
3. Finalmente se devuelve el control desde la interrupcin de E/S.
(a) Si el programa estaba esperando a que terminara esta solicitud ahora podemos
devolverle el control.
(b) Si el programa no estaba esperando regresamos a lo que estbamos haciendo antes de
la interrupcin.

2.3 Operacin de modo dual


Un SO correctamente diseado debe asegurar que un programa incorrecto no provoque la
ejecucin incorrecta de otros programas.
El hardware detecta muchos errores de programacin. Si el programa de usuario falla, el hardware
dirigir una trampa al SO, la trampa transfiere el control al SO a travs del vector de
interrupciones, igual que una interrupcin.
Al ocurrir un error de programa, el SO debe terminarlo anormalmente, se enva un mensaje de
error apropiado y se vuelca la memoria del programa. En un sistema Batch, este vuelco de la
memoria puede imprimirse. En un sistema interactivo, el vuelco puede escribirse en un archivo.

76

Necesitamos dos modos de operacin distintos:


Modo usuario y modo monitor (tambin llamado modo de supervisin o modo de sistema).
El concepto de modo monitor se desarrolla por la necesidad de tener un mecanismo de
coordinacin entre programas que no saben de la existencia de otros.
Se aade un bit, llamado bit de modo al hardware del computador, para indicar el modo
actual; monitor (0) o usuario (1). Con el bit de modo podemos distinguir entre una
ejecucin efectuada por el SO y una efectuada por el usuario.
Al ocurrir una trampa o interrupcin, el hardware cambia de modo usuario a modo monitor,
as, cada vez que el SO obtiene el control del computador, se encuentra en modo monitor.
El sistema siempre cambia a modo usuario antes de pasar el control a un programa de
usuario.
El modo dual de operacin nos proporciona un medio para proteger al SO de los usuarios
errantes.
Logramos esta proteccin clasificando algunas de las interrupciones de la mquina que
pueden causar dao como instrucciones privilegiadas, a las cuales el hardware permite
ejecutarse solo en modo monitor.

2.4 Hardware de proteccin


Para evitar que un usuario lleve a cabo una E/S ilegal, las instrucciones de E/S se definen
como privilegiadas.
Los usuarios no pueden ejecutar directamente instrucciones de E/S, tienen que hacerlo por
medio del SO.
Para que la proteccin de la E/S sea completa, debemos asegurar que el programa de
usuario nunca obtenga el control del computador en modo monitor.
Debemos cuidar que el vector de interrupciones no sufra modificaciones por parte del
programa de usuario.
Debemos proteger las rutinas de procesamiento de interrupcin en el SO.
Debemos proporcionar proteccin para la memoria, por lo menos para el vector de
interrupciones y las rutinas de procesamiento de interrupcin del SO.

2.4.1 Mecanismo de direccionamiento


El SO deber determinar como las direcciones de los programas son asociadas con sus
ubicaciones en memoria, como se formarn las ubicaciones de las distintas posiciones
y como se estructurarn los programas de aplicacin para una mquina dada.
Mecanismo de direccionamiento simple:
Incluye el campo de direccin de una instruccin y un registro ndice.
Mecanismo de direccionamiento bidimensional:
Tiene doble ndices y soportan el concepto lgico de segmentos de un programa que les
permite referenciar distintas direcciones lgicas sin conocer el emplazamiento fsico real.
Mecanismo de asociacin en forma dinmica:
Las mquinas organizan su memoria en bloques de direcciones que se asocian en forma
dinmica con franjas de direcciones lgicas.
Determinar intervalo de direcciones legales a las que puede acceder un programa: Reg. Base y
Reg. Limite:

76

El registro base contiene la menor direccin de memoria fsica permitida.


El registro lmite el tamao del intervalo.
El hardware de la CPU compara cada una de las direcciones generadas en modo usuario con los
registros. Cualquier intento de un programa que se ejecuta en modo usuario de tener acceso a la
memoria del monitor o a la memoria de otros usuarios generar una trampa para el monitor, el
cul trata el intento como un error fatal.
El SO carga valores en los registros base y lmite mediante una instruccin privilegiada
especial.

2.4.2 Mecanismo de proteccin de la CPU


Para asegurar que el SO mantenga el control, debemos evitar que un programa de usuario entre
en un ciclo infinito y nunca devuelva el control al SO. Aunque este sea el nico que est
disponible, no drselo ms.
Usamos un cronmetro fijado para interrumpir al computador despus de determinado
periodo.
Asignar al contador un valor inicial con la cantidad de tiempo permitida para la ejecucin
del programa.
Si el cronmetro interrumpe, el control se transfiere automticamente al SO, el cual puede
tratar a la interrupcin como un error fatal, o decidir que debe darse mayor tiempo al
programa
El uso ms comn de un cronmetro es implantar el tiempo compartido.
El SO tambin restablece los registros, variables internas y buffers, y modifica varios
parmetros ms para preparar la ejecucin del siguiente programa. Despus de esto, el
siguiente programa contina su ejecucin a partir del punto donde se qued, por
lo tanto si haba entrado en un ciclo infinito va a continuar as.

2.5 mbito de procesamiento


Para el ambito de procesamiento necesito:
Mecanismos de instrucciones.
Mecanismos de direccionamiento.
Mecanismos de proteccion de la CPU.
Mecanismos de protecciones de I/O
El programa ve
Las instrucciones de trabajo.
Su rea de memoria direccionable defina de 0 a X.
Una serie de mdulos del SO que actan como interfase entre el programa usuario y las
instrucciones privilegiadas que proveen servicios tal como si fueran instrucciones de
mquina ejecutables.
Lo que el programa no ve
Las instrucciones privilegiadas que estn ocultas

76

Un rea de memoria protegida, donde se encuentran todas las direcciones de memoria que
el programa no puede referenciar y es donde se almacenan las rutinas del SO y el resto de
los programas usuarios concurrentes.

2.6 Arquitectura general de sistema


Con el modo dual de funcionamiento el usuario debe pedir al monitor que efecte la
instruccin privilegiada en su nombre, generalmente con una instruccin especial
denominada llamada al sistema.
Antes las llamadas al sistema se activaban cuando el programa de usuario ejecutaba un
cdigo de instruccin no definido, para el cual no se haba determinado ninguna operacin
de hardware.
Un parmetro indica qu tipo de servicio requiere el programa de usuario, y la informacin
adicional necesaria para la solicitud puede pasarse en registros o en memoria.

2.7 Diferentes clases de computadores


2.7.1 Sistemas multiprocesadores
Tienen ms de una CPU en estrecha comunicacin, compartiendo el canal del computador
y en ocasiones la memoria y los dispositivos perifricos.
Ventajas:
Incrementar la productividad: efectuar ms trabajo en menor tiempo.
Confiabilidad: la avera de un procesador no detendr el sistema, nicamente lo har ms
lento, porque los restantes debern hacerse cargo de una porcin del trabajo del que fall.
La operacin contina en presencia de errores.
El sistema Tndem:
Dos procesadores idnticos, un procesador es el primario y el otro el de respaldo.
Se conservan dos copias de cada proceso, una en la mquina primaria y la otra en la de
respaldo.
Si se detecta un error, se activa la copia de respaldo y se vuelve a iniciar a partir del
punto de verificacin ms reciente.
Multiprocesamiento simtrico: cada procesador ejecuta una copia idntica del SO y todos ellos se
comunican entre s segn se requiera.
Multiprocesamiento asimtrico: Un procesador principal controla el sistema y los dems acuden a
l para recibir instrucciones o tienen tareas predefinidas.

2.7.2 Computadores personales


En muchos se utilizan Spooling y Buffering, incluso algunos incluyen procesamiento
multitarea
La proteccin de archivos no es necesaria en una mquina personal.
La disminucin de los costos de hardware.

76

La ausencia de esta proteccin permite que programas malintencionados destruyan datos


del sistema.

76

3. Estructura de los Sistemas Operativos


3.1.1 Administracin de procesos
La CPU es necesaria para otras actividades del sistema que se denominan procesos. Un proceso
es un programa en ejecucin.
El SO es responsable de las siguientes actividades relacionadas con la administracin de procesos:
Crear y eliminar los procesos de usuarios y del sistema
Suspender y reanudar la ejecucin de los procesos
Proporcionar mecanismos para la sincronizacin de procesos
Proporcionar mecanismos para la comunicacin de proceso
Proporcionar mecanismos para el manejo de bloqueos mutuos

3.1.2 Administracin de la memoria principal


La memoria es un gran arreglo de palabras o bytes, cada uno con su propia direccin. Es un
depsito de datos de acceso rpido compartido por la CPU y los dispositivos de E/S.
La CPU lee las instrucciones de la memoria principal durante el ciclo de bsqueda de
instrucciones, y lee y escribe datos en la memoria principal durante el ciclo de bsqueda de
datos.
La E/S realizada mediante DMA tambin lee y escribe datos en la memoria principal.
La memoria principal es el nico dispositivo de almacenamiento al que la CPU
puede acceder directamente.
Para que la CPU procese datos de disco, primero hay que transferir los datos a la memoria
principal usando llamadas de E/S generadas por la CPU.
Las instrucciones deben estar en la memoria para que la CPU pueda ejecutarlas.
El SO es responsable de las siguientes actividades relacionadas con la administracin de memoria:
Llevar un control de cules son las zonas de la memoria que se estn usando y quin las
usa
Decidir qu procesos se cargarn en memoria cuando haya espacio disponible
Asignar y recuperar el espacio en memoria segn se requiera

3.1.3 Administracin del almacenamiento secundario


Respalda a la memoria principal ya que esta es demasiado pequea para almacenar
permanentemente todos los datos y programas.
Son guardados los programas y datos hasta cargarse en memoria principal.
Muchos programas se almacenan en disco hasta que se cargan en la memoria, y luego
utilizan el disco como fuente y destino de su actividad.
El SO es responsable de las siguientes actividades relacionadas con la administracin de discos:
Administracin del espacio libre
Asignacin del almacenamiento

76

Planificacin de las operaciones sobre el disco

3.1.4 Administracin del sistema de E/S


El SO oculta las particularidades de los dispositivos de E/S mediante:
1. Sistema de memoria cach mediante Buffering.
2. Interfaz general con los manejadores de dispositivos (drivers).
3. Manejadores p/dispositivos de hardware especficos.

3.1.5 Administracin de archivos


Un archivo es un conjunto de informacin relacionada definida por su creador.
Un archivo es una secuencia de bits, bytes, lneas o registros, cuyo significado ha sido
definido por sus creadores.
El SO se vale de las propiedades fsicas de sus dispositivos de almacenamiento para definir
una unidad de almacenamiento lgico, el archivo.
El SO es responsable de las siguientes actividades relacionadas con la administracin de archivos:
La creacin y eliminacin de archivos
La creacin y eliminacin de directorios
El manejo de operaciones primitivas para manipular archivos y directorios
La correspondencia entre archivos y almacenamiento secundario
La copia de seguridad de archivos en medios de almacenamiento estables (no voltiles)

3.1.6 Sistema de proteccin


Se proporcionan mecanismos para asegurar que los archivos, segmentos de memoria, la CPU y
otros recursos puedan ser usados nicamente por aquellos procesos que han recibido la
correspondiente autorizacin del SO.
El hardware de direccionamiento a memoria asegura que un proceso slo puede trabajar
dentro de su espacio de direcciones.
El cronmetro asegura que ningn proceso pueda obtener el control de la CPU sin perderlo
eventualmente.
El SO no permite que los usuarios realicen por su cuenta sus operaciones de E/S, para
proteger as la integridad de los dispositivos perifricos.

3.1.7 Redes
Es un sistema distribuido es un conjunto de procesadores que no comparten memoria ni
reloj, pues cada uno tiene su propia memoria.
Los procesos se comunican entre s a travs de diversos medios, como canales de alta
velocidad o lneas telefnicas.
Permite al usuario el acceso a recursos que mantiene el sistema, haciendo posible aumentar la velocidad de los clculos, ampliar la disponibilidad de los datos y mejorar la
confiabilidad.
Los SOs generalizan el acceso a la red como una forma de acceso a archivos, con los
detalles de la red contemplados en el manejador de la interfaz de la red.

76

3.1.8 Sistema intrprete de mandatos


Se ejecuta automticamente.
Su funcin es obtener el siguiente enunciado de mandato y ejecutarlo.
Diversos nombres: intrprete de tarjetas de control, intrprete de lnea de mandato, Shell,
etc.
Los enunciados de mandatos se encargan de:
La administracin de procesos,
Manejo de E/S,
Administracin del almacenamiento secundario,
Administracin de la memoria principal,
Acceso al sistema de archivos,
Proteccin
Redes.

3.2 Servicios del SO


El SO ofrece ciertos servicios para los programas y para los usuarios de estos. Podemos
identificar varias clases:
Ejecucin de programas: El sistema debe ser capaz de cargar en memoria un programa y
ejecutarlo. El programa debe terminar su ejecucin, ya sea normal o anormalmente.
Operaciones de E/S: Un programa en ejecucin puede requerir E/S y sta quiz un archivo o
dispositivo. Ya que un programa de usuario no puede ejecutar directamente E/S, el SO
ofrece formas de llevarlas a cabo.
Manipulacin del sistema de archivos : Los programas necesitan leer y escribir archivos, as
como crearlos y eliminarlos basndose en su nombre.
Comunicaciones: Un proceso necesita intercambiar informacin con otro; esta
comunicacin puede efectuarse a travs de memoria compartida o por paso de mensajes; y
puede ocurrir en dos formas:
(a) Entre procesos que se ejecutan en el mismo computador
(b) Entre procesos que se ejecutan en sistemas de computacin diferentes unidos
por una red.
Deteccin de errores: El SO debe estar constantemente pendiente de posibles errores, los
cuales pueden darse en el hardware de la memoria y la CPU, en dispositivos de E/S o en un
programa de usuario. Para cada tipo de error, el SO debe emprender la accin adecuada,
para asegurar un funcionamiento correcto y consistente.
Asignacin de recursos: Cuando varios usuarios o trabajos se ejecutan al mismo tiempo, se
debe asignar recursos a cada uno de ellos. El SO administra varios tipos de recursos.

76

Algunos pueden tener un cdigo de asignacin especial, mientras otros pueden poseer un
cdigo de solicitud y liberacin ms general.
Contabilidad: Deseamos llevar un control de cules usuarios utilizan cuntos recursos del
computador y de qu tipo. Estas anotaciones pueden tener fines contables o simplemente
para recopilar estadsticas de uso.
Proteccin: Cuando varios trabajos independientes se ejecutan al mismo tiempo, no
debera ser posible que un trabajo interfiera con los dems, ni con el SO. La proteccin
implica revisar la validez de todos los parmetros que se pasan en las llamadas al sistema
y asegurar que todo el acceso a los recursos del sistema est controlado.

3.3 Llamadas al sistema


Un programa en algn momento requerir servicios de instrucciones privilegiadas que no
pueden compilarse dentro de l ejecutando una llamada al monitor.
Una llamada al monitor genera una interrupcin poniendo al sistema en modo monitor.
Cuando se ejecuta una llamada al sistema, el hardware la trata como una interrupcin:
El control pasa a travs del vector de interrupciones a una rutina de procesamiento
del SO y el bit de modo se coloca en modo monitor, la rutina de procesamiento de la
llamada al sistema forma parte del SO; el monitor examina la instruccin que
provoca la interrupcin para determinar que ha ocurrido una llamada al sistema.
Las llamadas al sistema proporcionan la interfaz entre el SO y un programa en
ejecucin.
Estas llamadas generalmente son instrucciones de lenguaje ensamblador.
Algunos sistemas permiten efectuar llamadas al sistema directamente desde un programa
realizado en lenguaje de mayor nivel.
Para pasar parmetros al SO se utilizan distintos mtodos:

(a) Pasar los parmetros en registros, cuando esto sucede, usualmente se


almacenan en un bloque o tabla en la memoria, y la direccin del bloque se pasa
como parmetro en un registro.

(b) El programa tambin puede colocar o meter en la pila los parmetros, de donde
los saca el SO.
Las llamadas al sistema se pueden agrupar en cinco grandes categoras:
Control de procesos
finalizar, abortar
cargar, ejecutar
crear proceso, terminar proceso
obtener atributos de proceso, establecer atributos de proceso
esperar un tiempo
esperar suceso, sealar suceso
asignar y liberar memoria
Manipulacin de archivos
crear archivos, eliminar archivos

76

abrir, cerrar
leer, escribir, reposicionar
obtener atributos de archivos, establecer atributos de archivos
Manipulacin de dispositivos
solicitar dispositivo, liberar dispositivo
leer, escribir, reposicionar
obtener atributos de dispositivos, establecer atributos de dispositivos
unir o separar dispositivos lgicamente
Mantenimiento de informacin
obtener hora o fecha, establecer hora o fecha
obtener datos del sistema, establecer datos del sistema
obtener o establecer atributos de proceso, archivo o dispositivo
Comunicaciones
crear, eliminar conexin para comunicacin
enviar, recibir mensajes
transferir informacin de estado
unir o separar dispositivos remotos

3.3.1 Control de procesos y trabajos


Ya sea en circunstancia normales o anormales, el SO debe transferir el control al
intrprete de mandatos y ste lee entonces el siguiente mandato.
En un sistema interactivo, el intrprete de mandatos slo prosigue con el siguiente
mandato, pues se supone que el usuario responder ante cualquier error con el mandato
apropiado.
En sistemas Batch, el intrprete de mandatos en general termina todo el trabajo y contina
con el siguiente.
Algunos sistemas permiten tarjetas de control para indicar acciones de recuperacin
especiales en caso de que ocurra un error.
Cuando termina el programa que se ha cargado:
Si el control regresa al programa existente cuando termina el nuevo programa, debemos
guardar el contenido de la memoria del programa existente y as habremos creado
efectivamente un mecanismo para que un programa llame a otro.
Si ambos programas continan concurrentemente, habremos creado un nuevo trabajo o
proceso que se ser multiprogramado.
Habiendo creado nuevos trabajos o procesos, tendremos que esperar a que terminen su ejecucin.
Es posible que esperemos durante cierto tiempo, pero con mayor probabilidad esperaremos un
suceso especfico (esperar suceso).

76

Un rastreo del programa presenta cada instruccin a medida que se ejecuta.


Modo paso a paso de la CPU: la CPU ejecuta una trampa despus de cada instruccin que
generalmente es capturada por el depurador, un programa del sistema diseado para
ayudar al programador en la deteccin y correccin de errores.
Perfil de ejecucin del programa: indica la cantidad de tiempo en que se ejecuta un
programa en determinada posicin o conjunto de posiciones.
Un perfil de ejecucin requiere una capacidad de rastreo o interrupciones de cronmetro
regulares. Cada vez que ocurre una interrupcin del cronmetro, se anota el valor del
contador del programa.

3.3.2 Manipulacin de archivos


Necesitamos poder crear y eliminar archivos; requiriendo el nombre del archivo y algunos
de sus atributos.
Es necesario abrir, leer, escribir o posicionar y por ultimo se debe cerrar el archivo.
Tanto para archivos/directorios, hay que determinar los valores de los atributos y/o
reasignarlos.
Los atributos del archivo incluyen: nombre, tipo de archivo, cdigos de proteccin,
informacin contable, etc.
Se requieren dos llamadas al sistema: obtener atributos de archivo y establecer atributos
de archivo.

3.3.3 Administracin de dispositivos


Si hay varios usuarios, primero tenemos que solicitar el dispositivo para asegurar que
tenemos su uso exclusivo y al terminar de usarlo debemos liberarlo.
Una vez que hemos solicitado (y se nos ha asignado) el dispositivo, podemos leer, escribir y
(posiblemente) posicionar el dispositivo, lo mismo que con archivos.
Muchos SOs los combinan en una estructura archivo/dispositivo.

3.3.4 Mantenimiento de informacin


El SO conserva informacin de sus trabajos y procesos.
Hay llamadas al sistema que pueden devolver dicha informacin.
Hay llamadas para restablecer la informacin.

3.3.5 Comunicacin
Modelo de paso de mensajes:
La informacin se intercambia a travs de un medio de comunicacin entre procesos que
ofrece el SO.
Antes de que la comunicacin pueda tener lugar, se debe abrir una conexin y conocer el
nombre del otro comunicador.

76

En una red, cada computador tiene el nombre del anfitrin y cada proceso tiene un nombre
de proceso.
Hay llamadas al sistema obtener identificacin del anfitrin y obtener identificacin del
proceso.
Los identificadores se transmiten a las llamadas abrir conexin y cerrar conexin.
El proceso receptor generalmente tiene que otorgar su permiso para que se lleve a cabo la
comunicacin con una llamada aceptar conexin.
La fuente de la comunicacin es conocida como cliente, y el demonio que recibe es
conocido como servidor.
Se intercambian mensajes mediante llamadas al sistema leer mensaje y escribir mensaje.
La llamada cerrar conexin termina la comunicacin.
El paso de mensajes es til cuando hay que intercambiar pequeas cantidades
de datos.

Modelo de memoria compartida:


Los procesos utilizan llamadas al sistema para correspondencia de memoria con el
propsito de obtener acceso a las regiones de memoria que pertenecen a esos procesos.
La forma de los datos y la ubicacin, estn determinadas por esos procesos y no por el SO.
Los procesos son tambin responsables de poder asegurar que no estn escribiendo
simultneamente en la misma posicin de memoria.
La memoria compartida permite la mxima velocidad y conveniencia en la
comunicacin.

3.4 Programas del sistema


Ofrecen un entorno ms cmodo para el desarrollo y ejecucin de programas.
Pueden dividirse en varias categoras:
Manipulacin de archivos: Manipulan archivos y directorios.
Informacin de estado: informan fecha, hora, espacio de memoria o disco disponible,
nmero de usuarios o informacin de estado similar.
Modificacin de archivos: Puede haber varios editores de texto para crear y modificar el
contenido de archivos almacenados en cinta o disco.
Apoyo a lenguajes de programacin : Con frecuencia, con el SO se ofrecen compiladores,
ensambladores e intrpretes para los lenguajes de programacin habituales.
Carga y ejecucin de programas : Una vez ensamblado o compilado un programa, se debe
cargar en la memoria para ejecutarlo. El sistema puede ofrecer cargadores absolutos,
cargadores relocalizables, editores de enlace y cargadores de superposicin.
Comunicaciones: Estos programas proporcionan el mecanismo para crear conexiones
virtuales entre procesos, usuarios y diferentes sistemas de computacin.
Programas de aplicacin: programas tiles para solucionar problemas comunes, o para
efectuar operaciones comunes.

76

Interprete de mandatos: Quiz sea el programa de sistema ms importante para un SO y su


funcin principal es obtener el siguiente mandato especificado por el usuario y ejecutarlo.
Existen dos mtodos generales para poner en prctica estos mandatos:
El mismo intrprete de mandatos contiene el cdigo para ejecutarlo. El nmero de
mandatos que se puede proporcionar determina el tamao del intrprete, ya que cada
mandato requiere su propio cdigo de implantacin.
Implanta todos los mandatos con programas especiales del sistema . En este caso, el
intrprete no comprende el mandato de ningn modo; Los programadores pueden agregar
fcilmente nuevos mandatos creando nuevos archivos con el nombre adecuado. El
programa intrprete de mandatos, que ahora puede tener un tamao reducido, no necesita
modificarse para agregar nuevos mandatos.

o Problemas:
(a)SO debe ofrecer un mecanismo para transmitir parmetros del intrprete a los
programas de sistema, ya que el cdigo para ejecutar un mandato se encuentra en
un programa de sistema separado.
(b) Es ms lento cargar un programa y ejecutarlo que simplemente saltar a otra seccin
del cdigo dentro del programa actual.
(c)La interpretacin de los parmetros queda en manos del autor del programa de
sistema.

3.5 Estructura de sistemas


3.5.1 Estructura sencilla
Se escribi para una mayor funcionalidad en el menor espacio y no se dividi
cuidadosamente en mdulos.
Vulnerable a los programas imperfectos, provocando colapsos totales del sistema o
eliminacin de datos en el disco cuando fallan los programas de los usuarios.
El ncleo se subdivide en una serie de interfaces y manejadores de dispositivos
que se han ido agregando y ampliando.
Lo que se encuentra debajo de la interfaz de llamadas al sistema y encima del hardware
fsico es el ncleo.
La interfaz con el programador y la interfaz con el sistema definen el contexto
que debe proporcionar el ncleo.

3.5.2 Enfoque por capas


Los SOs se pueden dividir en fragmentos ms pequeos y adecuados.
Facilita que el SO mantenga un control mayor sobre el computador y las aplicaciones que lo
utilizan.
Da a los implantados mayor libertad para realizar cambios en las partes internas del
sistema.
Pueden determinarse la funcionalidad y las caractersticas globales y separarlas en
componentes.
Consiste en dividir el SO en varias capas (niveles) cada una construida sobre las inferiores.
La capa ms baja (capa 0) es el hardware; la ms alta (capa N) es la interfaz con el usuario.
La principal ventaja del enfoque por capas es la modularidad.

76

Las capas se seleccionan de manera que cada una utilice funciones (operaciones) y
servicios nicamente de las capas inferiores.
Simplifica mucho la depuracin y verificacin del sistema.
Cada capa se implanta utilizando nicamente las operaciones que proporcionan las capas
inferiores.
Cada capa oculta la existencia de ciertas estructuras de datos, operaciones y hardware a
los niveles superiores.
La mayor dificultad con el enfoque por capas es definir los niveles: como una capa slo
puede utilizar las capas inferiores, es necesaria una planificacin cuidadosa

3.6 Mquinas virtuales


A cada proceso se le otorga una copia del hardware subyacente.
Puede planificarse la CPU para compartirla y aparentar que los usuarios cuentan con su
propio procesador.
Los recursos del computador fsico se comparten para crear las mquinas virtuales.
Se proporcionan discos virtuales, idnticos en todo excepto en el tamao.
Se puede ejecutar software almacenado en la mquina subyacente.
El software de la MV se encarga de la multiprogramacin de varias mquinas virtuales en la
mquina fsica.
Cuenta con un modo usuario virtual y un modo monitor virtual, ambos ejecutndose en
modo usuario fsico.
Cuando el monitor de la mquina virtual obtiene el control, puede cambiar el contenido de
los registros y el contador de programa para que la mquina virtual simule el efecto de la
llamada al sistema.
Al emplear tcnicas de planificacin de la CPU y de memoria virtual, un SO puede crear la
ilusin de procesos mltiples que se ejecutan cada uno en su propio procesador con su
propia memoria (virtual).
El software de la mquina virtual necesita un espacio considerable en disco para ofrecer
memoria virtual y Spooling.
Desventajas:
La CPU se multiprograma entre
impredeciblemente ms lentas;

varias

mquinas

virtuales,

lo

que

las

hace

Suponga que la mquina fsica tiene tres manejadores de disco pero quiere dar servicio a
siete mquinas virtuales; es obvio que no puede asignar una unidad de disco a cada una.
La solucin es proporcionar discos virtuales, idnticos en todos los aspectos excepto en el
tamao. En el SO VM se les denomina minidiscos.
Ventajas:
Se da proteccin completa a los distintos recursos del sistema.
Los recursos no se pueden compartir directamente; para compartirlos se han implantado
dos estrategias:
o

Es posible compartir un minidisco.

Se puede definir una red de mquinas virtuales y cada una puede enviar
informacin a travs de la red virtual de comunicaciones.

Es un vehculo perfecto para la investigacin y desarrollo de SOs.

76

La E/S virtual podra requerir menos tiempo (por encontrarse en el Spooling) o ms (por ser
interpretada).

3.7 Diseo e implantacin de sistemas


Al disear un sistema,
especificaciones.

el primer problema consiste en

definir sus objetivos y

El diseo del sistema se ver considerablemente afectado por la seleccin del hardware y
el tipo de sistema.
Puede ser mucho ms difcil especificar los requisitos, los cuales pueden dividirse
bsicamente en dos grande grupos: objetivos del usuario y objetivos del sistema.

3.7.2 Mecanismos y polticas


Un principio muy importante es la separacin entre poltica y mecanismos.
Los mecanismos determinan cmo realizar algo
Las polticas deciden qu se har.
La separacin entre polticas y mecanismos es muy importante para conseguir flexibilidad,
pues es probable que las polticas cambien en distintos momentos y en distintos lugares.
Las decisiones polticas son importantes para todos los problemas de asignacin y de
planificacin de recursos.
Cuando es necesario decidir si se asigna o no un recurso, se debe tomar una decisin
poltica, pero cuando la pregunta es cmo (y no cuando) entonces se debe definir un
mecanismo.

3.7.3 Implantacin
Ventajas:
El cdigo se puede escribir ms rpido, es ms compacto y bastante fcil de comprender y
depurar.
Es ms fcil transportar (llevar a otro hardware) un SO si est escrito en lenguaje de alto
nivel.
Despus de escribir el sistema y mientras funciona correctamente, se puede identificar las
rutinas que provocan cuellos de botella y sustituirlas con sus equivalencias en lenguaje
ensamblador.
Se puede calcular y mostrar en tiempo real las mediciones del rendimiento lo cual puede
permitir que los operadores se familiaricen con el comportamiento del sistema y lo
modifiquen en tiempo real.
Desventajas:
Reduccin en la velocidad.
Aumento en los requisitos de almacenamiento.
Un compilador puede producir un cdigo tan bueno como el de un programador normal de
lenguaje ensamblador.
El administrador de memoria y el planificador de la CPU son quiz las rutinas ms crticas para
conseguir una buena productividad.

76

3.8 Generacin del sistema


El sistema se debe configurar o generar para cada instalacin especfica, proceso que se
denomina generacin del sistema.
Normalmente, el SO se distribuye en cinta o disco y para generar el sistema empleamos un
programa especial.
El programa de generacin del sistema lee de un archivo o solicita al operador informacin sobre
la configuracin especfica del hardware: Qu CPU se usar? Qu opciones hay instaladas?
Cunta memoria hay disponible? Qu dispositivos hay disponibles? Qu opciones del SO se
desean o qu valores de parmetros se deben emplear?
Una vez obtenida la informacin se puede:
Se puede usar para modificar una copia del cdigo fuente del SO y luego compilarlo todo.
Produciran una versin objeto del SO hecho a la medida del sistema descrito.
La descripcin del sistema podra provocar la creacin de tablas y la seleccin de mdulos
de una biblioteca previamente compilada. Estos mdulos se enlazaran para formar el
nuevo SO y la seleccin permitira que la biblioteca contuviera los manejadores para todos
los dispositivos de E/S previstos, pero nicamente se enlazaran aquellos que en realidad se
necesiten.
Sera posible construir un sistema completamente dirigido por tablas. Todo el cdigo
siempre formara parte del sistema, y la seleccin se efectuara en el momento de la
ejecucin, no al compilar o al enlazar.

Diseo de SO:
Debe ser cmodo, fcil de usar y de aprender.
Separacin de polticas (que se har) y mecanismos (cmo hacerlo).
Implantacin: antes los sistemas se escriban en Assembler, hoy en da pueden ser escritos en
lenguajes de alto nivel. Ventajas: Se escribe ms rpido, fcil de entender y depurar.
Generacin del sistema para ejecutarse en una determinada mquina
o

Que CPU

Cuanta memoria

Que dispositivos

Parmetros generales

Con esta informacin puedo modificar el original y compilarlo, o utilizar un sistema dirigido por
tablas

76

4. Aspectos Estructurales de los SOs.


4.1 Aspectos estructurales
4.1.1 Concepto de Sistema
Un sistema es un conjunto de objetos y un conjunto de relaciones entre esos objetos.
Las propiedades de un sistema derivan de los atributos de los objetos que la componen y
de la naturaleza de las relaciones entre ellos.

4.1.2 Divisin en tiempos de un sistema


Tiempo de pre-procesamiento
o
o
o
o
o

Tiempo
Tiempo
Tiempo
Tiempo
Tiempo

de
de
de
de
de

demanda
seleccin
compilacin
combinacin
activacin

Tiempo de procesamiento
Tiempo de post-procesamiento

4.1.3 Tiempo de pre-procesamiento


En este tiempo el SO brinda un conjunto de servicios que ejecutan todas las acciones
necesarias para preparar un trabajo para ser corrido y al sistema para que pueda
correrlo.

4.1.3.1 Tiempo de compilacin


Es el tiempo durante el cual un programa fuente es un dato para un mecanismo
denominado compilador o ensamblador, que lo traduce a programa objeto ejecutable o
bien a una forma prxima a la requerida.
Compilador produce un objeto ejecutable: incluye todas las funciones necesarias para su corrida y
no requiere de ningn proceso adicional.
Compilador produce objeto no ejecutable: necesita de un proceso de combinacin para
incorporarle ciertas funciones en el tiempo de combinacin o bien en el tiempo de activacin
durante la carga del programa a memoria.

4.1.3.2 Tiempo de combinacin


Se enlaza un programa objeto junto con rutinas del sistema y con otros programas de
aplicacin previamente compilados, produciendo un mdulo directamente ejecutable.
Esta combinacin puede realizarse entre compilacin y seleccin o en la activacin durante la
carga del programa a memoria.

76

4.1.3.3 Tiempo de demanda


Es el tiempo en el cual un usuario reclama la atencin del sistema.
En procesamiento Batch, es el tiempo en el que un lote de tarjetas de control es ingresado al
sistema.
Las demandas son monitoreadas por un receptor de demandas quien las valida sintcticamente y
las graba en una cola interna de trabajos en espera (C.T.E.). Este mecanismo receptor de
demandas generalmente es denominado Reader o Command Interpreter.

4.1.3.4 Tiempo de seleccin


Es el tiempo durante el cual el sistema decide posponer u otorgar atencin a la demanda.
En esta etapa, el SO elige de la C.T.E. el prximo trabajo a ser activado, aplicando algn
determinado criterio.

4.1.3.5 Tiempo de activacin


Es el tiempo durante el cual se ejecutan acciones para iniciar un programa, como la
asignacin de recursos.
A medida que se anticipan las decisiones en materia de asignaciones, el sistema es menos
flexible.
A medida que estas decisiones se posponen el sistema deviene ms flexible.
Un vez que un trabajo tiene asignado todos los recursos que necesita en forma esttica, el mismo
se encuentra listo para ser activado; entonces se graba un elemento en la cola de procesos
activos (C.P.A.) creada por el activador.

4.1.4 Tiempo de procesamiento


Es el perodo en el cual decimos que un programa est activo en el sistema.
En los sistemas de serie simples, el tiempo de procesamiento es un intervalo continuo de
tiempo durante el cual el programa ejecuta sus operaciones hasta su conclusin (desde el
inicio hasta el fin de la corrida).

76

En sistemas de multiprogramacin y de tiempo compartido, es el intervalo durante el cual


el programa est representado en el sistema por algn elemento (TCB PCB) que describe
el estado y las capacidades del programa.
Es durante el tiempo de procesamiento cuando un programa es usuario de la arquitectura
ampliada a travs de una serie de servicios provistos por componentes del SO.
El Dispatcher se encarga de conmutar la CPU entre los distintos programas que conforman la
mezcla de multiprogramacin (o sea los que estn representados en la C.P.A.).

4.1.5 Tiempo de post-procesamiento


Es el perodo durante el cual el sistema evacua un programa ya completado.
Los recursos usados por el programa son recuperados por el sistema para signarlos a otro
programa. En ciertos sistemas es el tiempo durante el cual el output producido por el programa es
impreso o grabado en un dispositivo.

TIPOS DE COMPILACIONES:
Compilacin absoluta: particiones fijas: Con una memoria dividida as permite la ejecucin
de N programas a la vez pero el inconveniente es la compilacin absoluta porque un
programa solo puede ser ejecutado en la misma.
Compilacin relativa: Se incorpora un redireccionador de direcciones para pasar a una
compilacin relativa restando o sumando a las direcciones cuando quiero ejecutar un
programa compilado en otra particin. Ahora las particiones no son definitivas.
Eliminacin de la fragmentacin fsica: Para no realizar una fragmentacin fsica, se
realizan particiones lgicas. De esta manera se va ocupando solo el lugar necesario.
Cuando un programa finaliza y deja un espacio libre este se puede administrar. Como no
siempre los espacios libres se van a ir llegando completamente se va a ir creando una
fragmentacin interna, que se fue solucionando redireccionando los programas.
Optimizacin: Se fragmentan los programas y en memoria se tiene que tener un
PROGRAMA RAIZ y uno de los fragmentos. Si en la memoria entra el programa raz y el mas
grande de los fragmentos el programa correra. Esto lleva mucho tiempo.

4.1.6 Evolucin
4.1.6.1 Tiempo Simple
Se fusionan prcticamente todos los tiempos de pre-procesamiento en el
compilador.
Los servicios del tiempo de demanda son satisfechos por un operador o por un programa
monitor residente que llama al compilador o a un programa del usuario segn lo
especificado en el control-stream.

76

El compilador realiza todas las asignaciones de las ubicaciones en memoria y tambin


de los dispositivos que atendern las E/S, de modo que las direcciones reales de memoria y
las direcciones reales de los perifricos son fijadas y compiladas dentro del programa.
El resultado de esta compilacin puede ser un programa directamente ejecutable.
Los programas a ser combinados con el programa a compilar, pueden ser combinados por
recompilacin o bien dndole al compilador acceso a una biblioteca de rutinas
precompiladas.
La activacin es simplemente el acto de cargar un programa dentro de la mquina en las
direcciones absolutas generadas por el compilador.

4.1.6.2 Combinar y activar


Distinguir un tiempo de combinar y activar, como un tiempo definido para demorar la
asociacin del programa a los recursos.
Facilita la combinacin de programas escritos en distintos lenguajes.

4.1.6.3 Carga
Fusionaba inicialmente los tiempos de seleccin y activacin.
Se convoca ahora al cargador (o Loader) para que cargue el programa objeto en memoria.
El programa es asignado en memoria y los dispositivos y programas precompilados son
enlazados (link-editados) al programa a ser cargado.
Incluye la asignacin de memoria y la carga junto con el programa, de las rutinas de
manejo de dispositivos de E/S.
El Loader tiene la capacidad de cargar el programa en cualquier conjunto de ubicaciones
contiguas de memoria de dimensiones apropiadas: Reasignacin de Memoria.
El compilador genera ahora programas reasignables (compilacin relativa) y asignacin
simblica de perifricos.
En la etapa final de la carga, el Loader ubica el programa en memoria principal y le
transfiere el control.
La existencia del Loader requiere un conjunto de tablas representando los recursos
disponibles del sistema (en archivo) y un conjunto de bloques de control (en el mbito
de procesamiento) representando la asociacin de nombres simblicos de archivos con
nombres de dispositivos reales que los contienen.

4.1.6.4 Link-edicin
Tiempo independiente, precediendo al tiempo de activacin.
Una serie de programas usuario podan ser combinados independientemente de la
asignacin y activacin.
Ahora nicamente el resultado de la combinacin (o link-edicin) es sometido al tiempo de
activacin.
4.1.6.5 Asignadores

76

La asignacin de conjuntos de datos y dispositivos es separada de la asignacin de


ubicaciones de memoria y sta, a su vez, separada de la carga del programa en la memoria
principal.
Un activador recibe un programa desde un Scheduler y le asigna los recursos necesarios.
Una vez cumplida esta operacin el programa es pasado al cargador.
Una alternativa frecuente: tener una clasificacin de los recursos del sistema en clases o
tipos y asociar un asignador para cada clase o tipo de recurso. En este caso el tiempo de
activacin es el tiempo que lleva ejecutar todas las funciones de asignacin que requiera
un programa.
Un programa va pasando de la asignacin de archivos a la asignacin de
perifricos y de all a la asignacin de memoria principal.
Cada uno de los Asignadores debe tener acceso a tablas que reflejen la disponibilidad de
los recursos particulares.
Este diseo funciona entonces en un solo tiempo, los de seleccin y activacin.

4.1.6.6 Conclusiones
Las rutinas para el manejo de las E/S , stas pueden ser incorporadas (o brindadas) al programa
en:
El tiempo de compilacin: La biblioteca es propiedad del compilador y este se encarga de
incorporar al programa usuario las funciones que este necesita para su corrida.
El tiempo de activacin: Disminuye el espacio requerido para guardar programas en el
almacenamiento secundario e incrementa el tiempo necesario para cargar el programa en
memoria.
El tiempo de combinacin: la biblioteca es del combinador quien se encarga de adicionarle
al programa las funciones correspondientes. Incrementa la necesidad de almacenamiento
secundario y disminuye el tiempo empleado para la carga del programa.
El tiempo de procesamiento La biblioteca reside en memoria, formando parte del SO y las
funciones estn disponibles para que los programas las convoquen cuando las necesiten.
Disminuye el espacio necesario para almacenamiento de programas, se reduce el tiempo
para cargar el programa y decrece la cantidad de memoria que ste necesita; a costa de
una sobrecarga en el mbito de procesamiento.
As mismo la memoria puede ser asignada a un programa en:
El tiempo de compilacin: En los sistemas de tiempo simple con compilacin absoluta.
El tiempo de activacin: En los sistemas de multiprogramacin bsica con compilacin
relativa.
El tiempo de procesamiento: En los sistemas de multiprogramacin avanzada con
memoria virtual.

4.1.8 Servicios del sistema y privilegios


Si el compilador es un programa de trabajo, entonces el deber experimentar la secuencia de los
tiempos de demanda, seleccin, activacin y procesamiento.
Esto lleva a la simple observacin de que compilacin y combinacin podran ser suprimidas de la
secuencia de tiempos.

76

Problema adicional: si las funciones de demanda, seleccin y activacin son simplemente


programas de trabajo independientes, cmo pueden ser demandadas, seleccionadas, activadas y
corridas ?.
Una solucin es la de un operador que fuerce la seleccin y activacin de los mecanismos de
demanda, seleccin y activacin, de modo que stos estn continuamente representados en el
mbito de procesamiento por un elemento del sistema (TCB).
Estos programas estarn inactivos (latentes) hasta que un control-stream arribe al sistema y en
ese instante se tornarn listos para correr.

4.1.9 Subsistemas
Ciertos servicios del tiempo de pre-procesamiento pueden combinarse dentro de subconjuntos, de
capacidades conceptualmente distintas, por ejemplo subsistemas.
Cualquier conjunto de servicios de pre-procesamiento puede ser organizado para formar un
subsistema.
Un subsistema puede presentar un conjunto mejorado de interfaces del tiempo de
procesamiento.
Es un nico conjunto de servicios macro-enriquecidos empaquetados para facilitar la
corrida de programas que requieren de ellos sin molestar a aquellos programas que no los
necesitan.

4.2 Asignacin de Recursos


4.2.1 Asignacin Esttica
Durante el tiempo de pre-procesamiento, luego de haber seleccionado un trabajo.
La ventaja para el usuario es que se asegura los servicios requeridos hasta su finalizacin.
El problema principal para el usuario, es que el trabajo demandado puede experimentar una
demora indefinida antes de que sea iniciado dado que todos los recursos deben ser adquiridos
conjuntamente.
El problema principal para el sistema, se presenta el inconveniente de comprometer un recurso
que puede no ser realmente necesitado por el programa.

4.2.2 Asignacin Dinmica


El Scheduler seleccionea un trabajo sin asignarle ningn recurso.
Los recursos son entonces adquiridos en forma dinmica mediante macros que forman
parte del mbito de procesamiento, luego de la iniciacin del programa.
El Scheduling consiste en el acto de conceder permiso para competir por recursos.
El objetivo de un sistema de asignacin dinmica es minimizar la diferencia entre uso
nominal y uso real de un recurso.
El uso nominal de un recurso representa aquellos intervalos de tiempo durante los cuales
un recurso es asignado y retenido por un programa aunque ste no lo est utilizado
activamente.
La ventaja para el usuario de este mtodo es un ms rpido arranque del programa.

76

La ventaja para el sistema es la recuperacin dinmica de recursos no utilizados.


La desventaja para el sistema: Se recarga el mbito de procesamiento debido a los mltiples actos
de asignacin y desasignacin.

4.2.3 Tcnicas de Asignacin


4.2.3.1 Staging
Consiste en definir clases de recursos y asignar cada clase desde una cola de recursos
separada.
Si no se dispusiese de esta tcnica, el programa debera esperar que todos los recursos
estn disponibles en forma simultnea. En cambio slo se requiere que estn disponibles
simultneamente aquellos recursos de una misma clase.
La ventaja para el usuario es que facilita el ingreso del programa. Todos los recursos no necesitan
estar disponibles simultneamente. A medida que es adquirida una clase, el programa retiene el
recurso y avanza a la siguiente cola.
La desventaja para el sistema es que los recursos son retenidos durante perodos de tiempo en
que se est esperando por otros recursos.

4.2.3.2 Aging
Se va aumentando la prioridad de un programa con el transcurso del tiempo, o bien en
funcin del nmero de negativas recibidas ante la solicitud de un recurso.
Puede definirse un umbral de prioridades que cuando es alcanzado impedir al sistema que
siga asignando recursos hasta que el demandante de requerimiento que super el umbral
sea completado.

4.3 Administracin de Recursos


4.3.1 Introduccin
1. La nocin de que el SO provee mecanismos que permiten compartir los recursos de un
sistema de computacin, protegindolos y resolviendo la competencia por el uso de los
mismos. La administracin de recursos implica resolver los conflictos de demanda, asignar
y proteger un recurso.
2. La nocin de que ciertos recursos son definidos por el SO a travs del uso del mismo. O sea
que el propio SO los define y reconoce como recursos. Estos recursos son la materializacin
o conceptualizacin de estructuras abstractas. Es decir que a travs del SO la memoria se
presentar como un espacio de direcciones referenciables, no necesariamente de la misma
dimensin que la memoria fsica.
El concepto de administracin de recursos contiene tres ideas principales:
1. La idea de recurso
2. La idea de poltica para alcanzar un objetivo con la administracin de recursos.
3. Una relacin entre los recursos que son administrados y la naturaleza de los programas que los
demandan.

76

4.3.2 Recurso
Abstraccin definida por el SO quien otorga una serie de atributos referentes a la forma de
acceso al mismo y a su representacin fsica en el sistema.
Un conjunto de recursos del software, sujetos a la administracin del SO, pueden ser
definidos en un sistema de computacin como objetos a los cuales se debe controlar el
acceso.
La funcin del SO es definir una mquina abstracta, compuesta por recursos abstractos que son
convenientemente manejados por los procesos para proteger la utilizacin de los mismos, para
asegurar un uso coherente y para imponer polticas de explotacin.

4.3.3 Poltica
Dado un conjunto de recursos, el uso de los mismos debe ser fijado por una poltica.
Una poltica es el enunciado de los objetivos de una empresa en lo que hace a la operacin
satisfactoria de un sistema de informacin.
El SO presenta una interface que permite, mediante sentencias, establecer la
importancia que debe darse a una determinada clase de trabajos y establecer cmo
sern tratados los distintos programas que compiten por los recursos del sistema.
Motivaciones:
Motivos econmicos para compartir memoria y CPU que decrecen;
Motivos econmicos para compartir la informacin, los cuales crecen;
Mecanismos fundamentales de acceso y asignacin mantienen su importancia.
Objetivos:
Minimizar el flow-time promedio (tiempo que tarda un programa en atravesar la mquina
desde la demanda hasta la obtencin de los resultados).
Minimizar el nmero de respuestas tardas.
Minimizar el tiempo mximo de las respuestas tardas.
Maximizar la utilizacin del hardware.
Maximizar la utilizacin del hardware pero con la restriccin de que ninguna respuesta sea
superior a un cierto tiempo lmite.
Brindar servicios de la clase A en un cierto porcentaje, de la clase B en otro porcentaje,
etc.
En general un SO brinda todos algunos de los siguientes servicios:
Una interface para administrar las polticas de explotacin del sistema.
Una interface que permite a un profesional en sistemas ajustar la performance del equipo.
Una interface que posibilita describir la importancia relativa de un trabajo en particular en
trminos de su pertenencia a un determinado grupo o clase, a un determinado plazo de
finalizacin, o a una prioridad relativa.
Una interface para describir las caractersticas del consumo de recursos de un determinado
proceso.

76

Inconvenientes:
En las interfaces de los SOs no existe una clara diferenciacin entre definicin de poltica y
operacin, pues no se distinguen ntidamente los roles de administracin y operacin del
equipo.
Necesidad de formular la poltica de administracin en trminos de parmetros que slo
pueden ser comprendidos por profesionales.

4.3.4 Influencia de la programacin


La efectividad de la administracin de recursos depende:
De la apropiada formulacin y expresin de una poltica
De las caractersticas del estilo de programacin.
Influencia:
La programacin: Restringe la eficiencia de la administracin de recursos por la definicin
de objetos (programas) que usan los recursos en una forma que puede escapar al control
del sistema.
El estilo de programacin determina el tamao de un programa y consecuentemente la
cantidad de recursos que ste emplear.
Los patrones de direccionamiento de memoria y disposicin de pginas: afectan la
performance de un SO ms all de la capacidad de control del mismo, implicarn el uso
de mecanismos muy complejos.
El SO podr penalizar o alentar programas con ciertas caractersticas, asignando o desasignando
recursos para enfatizar o neutralizar cierto tipo de programas, pero el sistema no podr llegar a la
estructura bsica de un programa para modificar su performance, ni la forma en que interactuar
con otros programas de la mezcla.
El tamao estimado de los programas puede afectar las estrategias de administracin de recursos
de varias maneras.
1. Conjunto de programas de tamao reducido. La cantidad de recursos que ellos usan y la
cantidad de tiempo que los disponen, representa, por cada programa, una pequea carga
para el sistema. La diferencia entre utilizacin nominal y utilizacin real de un recurso
puede ser lo suficientemente pequea como para que no se necesite incluir un mdulo en
el sistema para controlar el uso de recursos en un nivel inferior al de asignacin.
2. nico programa de gran dimensin. Los requerimientos de recursos de este programa
sern considerablemente superiores que los requerimientos individuales de cada una de las
unidades lgicas que lo componen. El sistema podr adoptar, en este caso, una o ambas de
las siguientes estrategias:
a) Asignar recursos dinmicamente: Otorgar los recursos slo cuando ellos son
especficamente solicitados.
b) Administracin dinmica de recursos : mecanismos con un mdulo distinto al de
asignacin, segn la forma en que el proceso est usando los recursos asignados, se
los ampla o restringe, cedindolos y recapturndolos.

76

Los recursos que pueden ser administrados de esta forma son slo los recursos
reasignables, o sea aquellos que pueden ser dados a y quitados de un proceso,
sin causar efectos en su lgica.
Costo relativo: Costo de los mecanismos de asignacin versus el costo por la subutilizacin del
equipo.
Utilizacin Real: Intervalo de tiempo en que el recurso es usado efectivamente (intervalo de
tiempo que un programa se sirve del recurso).
Utilizacin Nominal: Perodo de tiempo desde que un recurso es asignado hasta su desasignacin.
Deadlock: Es un estado en el que existe la posibilidad de que un proceso sea mantenido
indefinidamente en el mbito de procesamiento, por no encontrarse disponible un determinado
recurso que necesita.

4.3.5 Fundamentos econmicos


El valor puede derivar:
- De la reduccin de los costos de creacin, manipulacin, clasificacin y almacenamiento
de datos
- Del aumento de la productividad de los usuarios y profesionales ligados al sistema
- De la provisin de informacin de mejor calidad y en margen de tiempo mas conveniente.
El costo de computacin incluye:
- El costo del hardware
- El costo del staff de profesionales.
- De los costos derivados del efectivo uso del equipo.
El valor de un sistema de computacin debe ser medido por el valor de la informacin que
produce. Hay informacin que es muy sensible al transcurso del tiempo.
Se percibe claramente que el costo de una mquina sobrecargada puede ser tanto o
ms grande que el costo de una mquina subcargada si, debido a la sobrecarga, se
desbarata la productividad econmica de los usuarios de terminales.
Sub-Administracin: Es cuando a un hard con muchos recursos se lo administra con un SO que fue
concebido para regular un hard mas sencillo.
Sobre-Administracin: Es cuando un hard con pocos recursos es administrado por un SO preparado
para controlar un hard mas complejo.

4.3.6 Lmites de la administracin de recursos


Una mquina con un rico conjunto de diferentes clases de recursos justificar ms una
intensa administracin de recursos que otra mquina con recursos escasos.
La administracin de recursos se debe adaptar y limitar a las posibilidades del hardware, de
lo contrario, se corre el riesgo de sub-administrar o sobre-administrar el equipo.
El consumo de recursos deber facilitar que el exeso neto de recursos permita soportar
mayor carga de trabajos
Conclusin: la administracin de recursos debe establecer que el consumo de recursos utilizados
para ejecutar estas funciones de administracin sea tal que el saldo neto de recursos disponibles

76

permita soportar una mayor carga de trabajos que la que soportara sin los mdulos de
administracin.

4.4 Funcin de los Sistemas Operativos


Un SO es un programa o conjunto de programas que:
Acta como una interface entre el usuario y el hardware
Provee un mbito donde puedan ejecutarse los programas de aplicacin
Controla y coordina el uso del hardware entre distintos programas
Los objetivos principales de un SO son:
Conveniencia: Hacer al sistema de computacin fcilmente utilizable.
Eficiencia: Maximizar el aprovechamiento del sistema de computacin, optimizando el uso
de los recursos.
Las funciones que generalmente se le atribuyen a un SO son:
Proveer un conjunto de aparentes recursos lgicos que sean ms fcil de manipular que el
hardware que los soporta.
Proveer mecanismos de acceso, secuenciacin y proteccin en un medio en el que los
recursos son compartidos.

76

5. Clasificacin de los Sistemas Operativos


Los SO difieren porque el hardware de base que los soporta y el medio en el cul ser utilizado
tambin difieren.

5.1 Clasificacin
1. Toma como parmetro el hardware subyacente:
Gran equipo:
o

Es caro y sus propietarios desearn un uso correcto e intensivo, un gran nmero de


trabajos independientes provenientes de distintas fuentes, diversidad de la carga de
trabajo y su volumen.

Es deseable que soporten diversas formas de acceso y que brinden servicios de alto
nivel.

Es una estructura compleja, posiblemente con varios procesadores, con una amplia
variedad y cantidad de dispositivos.

Tienen altos niveles de independencia de perifricos, secuenciamiento dinmico,


tcticas de asignacin de recursos y un importante conjunto de interfaces.

Maquina pequea:

2.

Se limita el tipo de acceso que puede hacerse al sistema, permitir slo el acceso
desde una terminal para el desarrollo de programas y la ejecucin de pequeos
programas como esperados.

El SO slo podr ofrecer administracin de archivos de forma sencilla y con limitado


acceso a la informacin.

Segn el mtodo primario de acceso que brindan:


Sistemas Conversacionales
Sistemas de Tiempo Real
Sistemas de Procesamiento en Lotes

3.

Segn las caractersticas del usuario:


Sistemas de Programacin
Computadores Personales (PC)
Sistemas de Consultas

4.

Otra clasificacin se puede presentar por la sofisticacin de las funciones particulares:


Existe una relacin con el tamao de la maquina.

5.

De manera tradicional, los SOs pueden clasificarse de la siguiente manera:


SOs de Tiempo Real
SOs de Procesamiento en Lotes (Batch)
SOs de Serie Simple
SOs de Multiprogramacin bsica

76

SOs de Multiprogramacin avanzada


SOs de Tiempo Compartido
SOs Multipropsitos
6.

Se consideran las relaciones entre el tamao del hardware, los tipos de accesos y el sistema
usado:

TAMAO
MAQUINA

ACCESO
APLICACION
ON
LINE

BATC
H

PEQUE
A

GRAN
DE

SI

SI

SI

SI

PROCESAM.
TRANSACCIONES

SI

NO

SI

SI

BASES DE DATOS

SI

SI

SI

SI

COMPUTADORAS
PERSONALES

SI

NO

SI

SI

SI

NO

SI

SI

FACILIDADES
PROGRAMACION

DE

Lo que sugiere es que la facilidad de


desarrollo de programas es independiente
del tamao de la mquina y del tipo de
acceso a la misma.

SISTEMAS DE PRODUCCION

SISTEMAS DE TIEMPO REAL

5.2 Tiempo Real


Pueden ser:

1. De lazo abierto: la computadora informa.


2. De lazo cerrado: la computadora realiza la accin necesaria.

5.2.1 Clasificacin
Adquisicin de datos.
Por medio de sensores adecuados deben leerse datos de un proceso externo y almacenarse
convenientemente para un uso posterior. Los datos deben ser adquiridos y almacenados en
tiempo real.
Sistemas de control a lazo abierto.
El sistema de computacin adquiere los datos del proceso externo, los procesa
convenientemente y los muestra a un operador humano.
Sistemas de control a lazo cerrado.
El sistema de computacin adquiere los datos del proceso externo, evala las desviaciones
respecto de los objetivos buscados y emite por s mismo (sin intervencin humana) los
comandos correctivos adecuados.

5.2.2 Caractersticas
La actividad de procesamiento es disparada por eventos aleatorios externos.
Suele usarse como dispositivo de control en una aplicacin dedicada.
Mnima intervencin
desperfectos)

humana

(modificacion

de

parametros,

violacion

de

limites,

76

El recurso crtico puede ser la CPU o los canales.


Pueden tener memoria virtual pero casi nunca se aplica
Es conveniente para estos sistemas la asignacin esttica ya que son mas
veloces.
Relativa pobreza de los algoritmos de administracin de recursos.
La base del hardware puede ser muy pequea (microcomputador) o muy grande
(macrocomputador) dependiendo de las necesidades de la aplicacin.
Existen sensores que llevan la informacin al computador, el cual debe analizar los datos y
quiz ajustar los controles para modificar las entradas de los sensores.
El procesamiento debe llevarse a cabo dentro de los lmites de tiempo definidos o el
sistema fallar.
Es habitual que se procesen rfagas de miles de interrupciones por segundo sin perder un
solo suceso, tales exigencias no pueden ser satisfechas por la multiprogramacin
solamente, y los SO de tiempo real confan generalmente en algunas polticas y tcnicas
especficas para realizar su trabajo.
Bsicamente cada proceso separado est a cargo del manejo de un nico suceso externo.
El proceso se activa tras la ocurrencia del suceso en cuestin.
La operacin multitarea se consigue planificando los procesos para ser ejecutados
independientemente unos de otros.
Cada proceso tiene asignado un cierto nivel de prioridad que se corresponde con la
importancia relativa del suceso al que sirve.
Forma de planificacin expropiativa basada en prioridades.
Por lo general no hay ningn tipo de almacenamiento secundario o es limitado y en su
lugar los datos se almacenan en memoria a corto plazo o en memoria de slo lectura
(ROM).
La gestin de archivos se encuentra generalmente slo en las instalaciones ms grandes
de sistemas de tiempo real.
Se acepta en este caso, sacrificar el aprovechamiento ptimo del hardware en funcin de
satisfacer los requerimientos de la aplicacin en el estrecho margen de tiempo disponible.
Si el evento es cercano al sistema se considera local y no necesita telecomunicaciones.
Si el evento esta ubicado en un lugar lejano, entonces se considera remoto y se necesita
poder transmitir las seales hasta el sistema de computacin.

El intercambio entre el dispositivo y el sistema puede ser iniciado:


Por el sistema que solicita informacin al dispositivo (iniciativa central).
Por el dispositivo que enva seales con una frecuencia predeterminada o segn sus
necesidades (iniciativa perifrica).
Los atributos de un computador que lo hacen un buen procesador en tiempo real, son:
El diseo del manejo y anlisis de las interrupciones, ya que deben responder a las
interrupciones externas rpidamente
El diseo de los mecanismos de conmutacin de tareas, ya que deben disparar ejecucin
de procesos muy rpidamente.

76

El poder y la flexibilidad de sus mecanismos para determinar intervalos de tiempo y la hora


real, ya que se necesita muchsima precisin.

5.2.3 Software
Hay un conjunto de caractersticas comunes al software de todos los sistemas de tiempo real:
El software posee una estructura de las conocidas como event driven o queve driven, es
decir que el sistema selecciona los programas a procesar como resultado de una seal
externa de determinada caracterstica.
El corazn es un mdulo llamado Queve manager que recibe o solicita las seales del
proceso externo, las analiza y hace ejecutar un programa que procesa esa seal.
La administracin del procesador es estructurada en forma relativamente simple.
Se les permite a los programas correr hasta su finalizacin o durante un lapso de tiempo
prefijado, dependiendo del diseo del sistema.
No se intenta el balance en la utilizacin de los canales, CPU o memoria, en funcin de los
factores de consumo de tales recursos.
Normalmente la aplicacin tiene el control del equipo, se desprende de la CPU al finalizar
su ejecucin o al cabo del tiempo prefijado por el queve manager, mdulo que cumple con
las funciones de monitor.
Los programas de aplicacin estn ms cercanos a los dispositivos por lo tanto comparten
la responsabilidad de la integridad del sistema y de su coordinacin.
La programacin y el desarrollo del sistema estn separados de la fase operacional del
mismo.
Cross-compiler y Cross-assemblers son programas que ejecutados en una mquina generan
cdigo para otra. Una generalizacin de estos programas es el Meta-assembler que puede
generar cdigos para cualquier arquitectura que le sea previamente descripta.
Toda la informacin est en lnea y todos los programas de procesamiento tambin, en
estado de ejecucin o muy prximo a ejecutarse.
El mantenimiento de los estados de control y las instrucciones privilegiadas representa una
sobrecarga para el sistema.
Un SO de tiempo real tpico realiza una rigurosa particin de la memoria en particiones:
Foreground: para tareas de mayor prioridad; son numerosas de modo de poder soportar el
concepto de programas procesadores organizados en un gran nmero de tareas
Bakground: para tareas de menor prioridad; es utilizado frecuentemente para soportar
compiladores, editores y utilitarios orientados al desarrollo de programas.
Una tarea es por definicin una unidad de programa que puede ser cargada en una particin y
ejecutada en la misma.
Las particiones se definen durante la generacin del SO.

5.3 Procesamiento Batch


76

Hace referencia a la capacidad de un centro de cmputos de aceptar demandas de trabajos no


relacionadas entre s, formar una sucesin con los mismos conformando lotes de trabajo que son
sometidos al sistema.
Caractersticas:
Ejecutan bloques de demandas sin relacin entre s.
Permite la separacin de las tareas de programacin y operacin debido a que permite al
programador desarrollar su programa, enviar el lote de tarjetas y juntarse con los
resultados despus de un tiempo (TAT) el cual debe ser lo mas corto posible.
Permite aumentar la productividad del programador debido a que lo libera de tiempos de
espera frente a la mquina y le permite organizar su trabajo durante el TAT.
Agrupacin en lotes de trabajos similares.
Un SO Batch normalmente lee un flujo de trabajos separados, cada uno con tarjetas de
control que definen qu hace el trabajo. Cuando ste termina, generalmente se imprime la
salida.
Hay ausencia de interaccin entre el usuario y el trabajo mientras ste se ejecuta.
Dificultades:
Como el usuario no puede interactuar con el trabajo mientras este se ejecuta, debe
preparar las tarjetas de control para que manipulen todos los resultados posibles.
Los programas tienen que depurarse estticamente, usando vuelcos que no los alteren
(snapshot dumps).
Objetivos fundamentales:
Aumentar la productividad del equipo, disminuyendo el tiempo de transicin entre trabajos.
Aumentar la eficiencia del programador.
Grado de elaboracin de los mecanismos de ordenamiento de trabajos y de asignacin de
recursos; en:
Sistemas de serie simple (simple stream)
Sistemas de multiprogramacin bsica
Sistemas de multiprogramacin avanzada

5.4 Serie simple


El sistema atiende los trabajos en la secuencia en que se presentaban para su ejecucin, por lo
tanto el ordenamiento se hace a mano.
Pertenecen a serie simple: Spooling.
Introdujeron la mayora de los conceptos utilizados por los actuales sistemas:
Control stream
Soporte de E/S
Reubicacin de programas

76

Independencia de perifricos
Encapsulamiento de la mquina por medio de su SO y el paquete de software.

5.4.1 F.M.S (Fortran Monitor System)


Slo admite lenguaje Fortran.
Compilaciones y ejecuciones consecutivas.
Aceptaba directivas sofisticadas de depuracin(debugging) y permitia realizar vuelcos.
Programa en ejecucin tenia completo control del hard. No existen estado de control (modo
monitor) y operaciones privilegiadas. Tampoco funciones del monitor residente.
Asignaciones de dispositivos de E/S mantenidas en una tabla por el compilador, para
cambiar las asignaciones era necesario usar el editor.
Compilacin absoluta
Dispositivos comunes para los Job Stream
Cintas comunes a todos los trabajos (simplificando el tiempo de montaje)

5.4.2 IBSYS-IBJOB
Admite lenguajes Fortran, Cobol y Map(Macro Assembly Program).
Introdujo funciones del monitor residente para soporte de E/S.
Tablas de asignaciones de perifricos manipuladas por el operador mediante tarjetas de
control del IBSYS (paso importante hacia la independencia de dispositivos)
Asignacin esttica de memoria y perifricos y al mismo tiempo.
Compilacin relativa
Programas linkeditados
1) IBSYS es residente y contiene:

Funciones residentes para soporte de E/S (o sea que maneja las E/S)

Posibilidad de almacenamiento

Interfase para el IBJOB

2) IBJOB contena:

Intrprete de sentencias de control que permita seleccionar el compilador.

Cargador responsable de la asignacin de dispositivos del programa, de la


carga y de subrutinas del sistema solicitadas por el programa.

Biblioteca de rutinas de control de operaciones de E/S (IOCS=Input Output


Control System).

5.5 Multiprogramacin Batch


La aparicin discos rgidos present tres posibilidades fundamentales:
Mayor variedad de dispositivos de almacenamiento masivo.
Capacidad significativa de memoria auxiliar On-line y la necesidad de organizarla y
administrarla para lograr una utilizacin eficiente.

76

Posibilidad de direccionamiento directo en la memoria auxiliar, brindando nuevas


facilidades para las interfaces entre programas y sus operaciones de E/S.
Aparicin de una cola interna de trabajos Permiti que el job stream fuera internalizado
de manera que las funciones de ordenamiento pasen a formar parte del SO (en serie simple
se haca a mano). Esta cola se hace accesible a un ordenador (Scheduler) que puede
buscar el trabajo en espera que tenga mayor prioridad o el que mas convenga.
Funciones de ordenamiento pasen a formar parte del SO.
Multiprogramacin:
1. El SO escoge uno de los trabajos del depsito y lo comienza a ejecutar.
2. En algn momento, el trabajo tendr que esperar que se efecte cierta tarea, entonces el
SO cambia a otro trabajo y lo ejecuta;

3. cuando ese trabajo tiene que esperar, la CPU cambia a otro, etc.
Mientras haya otro trabajo por ejecutar, la CPU nunca estar inactiva.
Para que pueda haber varios programas listos para ejecutarse, el sistema debe conservarlos todos
en la memoria al mismo tiempo. Cuando se consigue esto, se necesita alguna forma de
administracin de memoria, el sistema debe elegir uno de ellos, esta decisin se denomina
planificacin de la CPU.
Ventajas:
Aumenta la utilizacin de la CPU organizando los trabajos para que sta siempre tenga algo
que ejecutar.
La aparicin y/o mejoramiento de los conceptos de interrupcin
Instrucciones privilegiadas y mecanismos de proteccin
Existencia de una cola interna de trabajos.

5.6 Multiprogramacin bsica


Caractersticas:
La memoria estaba dividida en particiones definidas en el momento de la instalacin.
Los compiladores y ensambladores traducan los programas para ser ejecutados en una
determinada particin.
Definan mltiples mquinas independientes (una en cada particin).
Estas maquinas eran atendidas independientemente, compartiendo perifricos y el uso de
la CPU.
Las colas de trabajos eran creadas para cada particin.
Las funciones de ordenamiento se corran en forma independiente de cada particin.
Las colas estaban armadas por trabajos compilados y ensamblados para esas particiones.
Requieren un importante trabajo de planificacin Off-line
Poseen administracin rgida de la memoria con particiones fijas o redefinidas por el
operador y que no se modifican por largos perodos de tiempo.
Poseen una gestin de conmutacin de la CPU con un mnimo esfuerzo para el balance de
la utilizacin de los recursos del sistema

76

Poseen asignacin de archivos y perifricos a los programas, vlidos durante toda la vida
activa de los programas (desde el comienzo a la finalizacin de la ejecucin - asignacin
esttica)
Desventajas:
En realidad la preparticin tiende a producir una considerable subutilizacin de la memoria.
Aumento en los costos de programacin y la disminucin de la productividad de los
programadores, ya que el desarrollo de una aplicacin debe encararse teniendo en cuenta
el tamao de la particin en la que se ejecutar.
Una distorsin en la estructura del programa ya que la distribucin de funciones en el
programa no conforma un flujo armnico acorde a la lgica de la aplicacin, sino en funcin
del tamao de la particin
Un incremento en la dificultad de programacin que redunda en una mayor subutilizacin
del
Ventajas:
Posibilidad de redefinir las particiones desde la consola del operador
Ensamblado y compilacin de programas reasignables.
Asignacin simblica de dispositivos a travs de sentencias de control ya sea por clase o
por tipo.
Facilidad de organizar los programas en una estructura de tareas (tasks) permitiendo que
un programa ejecutado en una determinada particin solicite que comience la ejecucin
asincrnica de programas en la misma particin y provea los mecanismos de sincronizacin
entre ellos.
Memoria virtual, asociada a los mecanismos de paginacin y segmentacin que permiti la
construccin de programas con tamaos mayores a la capacidad de la memoria principal.
Desarrollo de mecanismos de soportes avanzados de administracin con facilidades para
centralizar el spooling.
Un programador o un usuario, utiliza una terminal On-line para desarrollar sentencia de
control necesarias para la ejecucin de su programa, finalizado esto, a travs de un
comando (submit) enva estas a la cola de trabajos en espera de ejecucin.

5.7 Multiprogramacin avanzada


La principal diferencia entre multiprogramacin bsica y avanzada, est dado por el
grado en que los SOs administran los recursos del sistema.
Proveen grandes posibilidades de administracin de recursos, brindan importantes
funciones que amplan las posibilidades de programacin.
Proveen adems un lenguaje de control considerablemente expandido en cuanto a su
poder expresivo.
Cierto grado de administracin dinmica de la memoria.
Cierta posibilidad de compartir cdigos, diseando reas especiales para la residencia en
memoria de determinadas rutinas de control.
Considerable elaboracin de los sistemas de bibliotecas con mecanismos para la
administracin, acceso y actualizacin de archivos On-line.

76

Desarrolladas estructuras de envos de trabajos (job-submission), es ms elaborada la


lectura de las sentencias de control ya que ahora enva a las colas de trabajos (job-queve)
un stream de control comprimido.
Cierta dependencia de la gestin del operador a pesar de la sofisticacin de la planificacin
de las tareas.
Elaboracin de los mecanismos de asignacin de la CPU, incluyendo la heurstica con el
objeto de mejorar dinmicamente la respuesta.
Dentro de los SOs orientados hacia la multiprogramacin, el ms elaborado extiende su memoria
fsica menor por medio de su memoria virtual, conservando con una mnima perturbacin la
estructura e interfaces de los sistemas anteriores.

5.8 Tiempo compartido


Un sistema de tiempo compartido es aquel cuya intencin principal es distribuir la
capacidad de procesamiento entre un conjunto de usuarios asociados cada uno a una
terminal de E/S, brindando a cada usuario la imagen de tener una computadora
dedicada para soportar sus demandas de servicios.
Los objetivos principales son brindar un servicio efectivo en cuanto a la disponibilidad y una
respuesta eficiente a los requerimientos por lo que la efectiva utilizacin del hardware puede
verse afectada.
Caractersticas:
Es una extensin lgica de la multiprogramacin.
La CPU ejecuta las diversas tareas alternando entre ellas, pero estos cambios son tan
frecuentes que los usuarios pueden interactuar con cada programa mientras se ejecuta.
Sistema de archivos en lnea.
Los trabajos suelen estar formados por
impredecibles. Tiempo de respuesta breve.

varias

acciones

breves,

con

resultados

Usa la planificacin de la CPU y la multiprogramacin para dar a cada usuario, que tiene su
programa en memoria, una pequea porcin de la computadora.
Como el sistema pasa rpidamente de un usuario al siguiente cada uno tiene la sensacin
de que cuenta con su propia computadora.
Requiere: Administracin de memoria, proteccin y administracin de CPU, administracin
de disco.
El tiempo de respuesta debe ser breve, a lo sumo de unos cuantos segundos.
Se crearon para ofrecer un uso interactivo de los sistemas informticos a un costo
razonable.
Utiliza la planificacin de la CPU y la multiprogramacin para proporcionar a cada usuario
una pequea porcin de un computador de tiempo compartido.
Para que los usuarios tengan un acceso cmodo a los datos y al cdigo, deben disponer de
un sistema de archivos en lnea.
Un sistema informtico interactivo ofrece una comunicacin en lnea entre el usuario y el sistema .
1. El SO termina de ejecutar un mandato.
2. Busca el siguiente enunciado de control en el teclado del usuario.

76

3. El usuario proporciona un mandato, espera la respuesta y decide sobre el siguiente


mandato segn el resultado del anterior.
Un archivo es un conjunto de informacin relacionada que ha sido definido por su
creador. Los archivos generalmente se organizan en agrupamientos lgicos, o
directorios, para facilitar su uso.

5.8.1 Desarrollo de programas


En general un sistema orientado hacia el desarrollo de programas debe incluir:
un conjunto de comandos para la activacin, testeo y modificacin de programas.
un sistema de administracin de archivos con mecanismos que brinden proteccin.
uno o ms lenguajes de programacin.
una interface para procesamiento que puede superponerse con el lenguaje de comandos.
Un sistema para desarrollo de programas no necesariamente debe estar asociado a un
sistema de tiempo compartido.

Posibilidades:
Un lenguaje de comandos extendido y adaptado, creando diferencias sintcticas para los
usuarios especializados.
La facilidad de llamar para la ejecucin a cualquier programa desde la terminal
El pasaje de argumentos de un comando a otro
La definicin de reglas que permitan a un conjunto de usuarios compartir archivos,
controlando el acceso a travs de una identificacin de grupo
La definicin de operaciones como no atendidas para cualquier programa.

5.8.2 Procesamiento de transacciones


Existen SOs orientados hacia aplicaciones On-line, donde coexisten las caractersticas
de los SOs de tiempo real y de tiempo compartido.
Desarrollados para atender la ocurrencia de determinados eventos.
Pobreza de los algoritmos de administracin de recursos.
Cada transaccin que ingresa al sistema proviene de una terminal.
Estos sistemas no son sistemas de tiempo compartido, y esta divisin del tiempo
limita el perodo ininterrumpido en el cual una terminal utiliza los servicios del procesador.
Es comn que se permita procesar la transaccin hasta su finalizacin, o por un perodo de
tiempo determinado. Si el procesamiento no se completa en ese perodo, la transaccin se
aborta.
El proceso de ejecucin:

1. Recibir y analizar un mensaje proveniente de una terminal.

76

2. Transferir dicho mensaje a un programa que lo procesa, algunas referencias a bases de


datos en lnea para preparar la informacin necesaria para responder el mensaje.

3. Direccionar la respuesta hacia la terminal.


Estos sistemas tienen caractersticas generales que los diferencian:
Facilidades de telecomunicaciones.
Bases de datos integradas con un sistema sencillo de acceso.
El sistema de base no provee lenguaje de control ni facilidades para el desarrollo de
programas.
Un programa de ejecucin cerrada (loop) que inspecciona las colas de los programas listos,
de entrada y diferidos.
Poseen un mbito de procesamiento simple
La asignacin de memoria es realizada de acuerdo a demandas en bloques de memoria de
tamao fijo.

5.9 Multipropsito
Podemos definir un sistema multipropsito como aquel que posee el atributo de que
cualquier mtodo de acceso y uso (subsistemas) son soportados de la misma forma y
con igual eficiencia que en el sistema en que fueron desarrollados.
Generalmente estos sistemas poseen caractersticas comunes como:
- Administracin dinmica de recursos
- Soporte de memoria virtual
- Permiten distintas formas de acceso.

5.10 Tipos de acceso


En sistemas donde programacin y demanda de servicios se fusionan en un medio totalmente
interactivo, ciertos comandos aparecen como una extensin del lenguaje de programacin El
lenguaje de programacin est encapsulado por el propio lenguaje de comandos.
En general, podemos definir:
En batch: Lenguaje de control = Lenguaje de control
En On-line: Lenguaje de control = Lenguaje de comandos
Existen distintos tipos de acceso:

1. Acceso organizado por el operador: implica la existencia de un ordenador humano entre


el usuario y el sistema, con perodos fijos de tiempo de uso.

2. Acceso local en modo Batch, este acceso elimin la interface humana. La demanda de
servicios de realiza enviando en control stream a procesar, los trabajos se ejecutan en
secuencia de entrada aunque es posible que el SO resecuencie el comienzo de los trabajos.

3. Acceso remoto en modo Batch, este acceso extiende el SO al usuario y elimina al operador,
la extensin supera las dimensiones fsicas del centro de cmputos. Cuando se somete una
demanda, un elemento del SO se torna activo y la coloca en una cola de espera.

4. Acceso interactivo en modo Batch, este acceso permite al demandante realizar


requerimientos dinmicamente. El demandante dispone de lenguaje de manipulacin de
archivos y bibliotecas, tambin puede ingresar sentencias de lenguajes de programacin y

76

recibir una validacin lnea por lnea de las mismas. Cuando un trabajo est listo, enva su
control stream al mbito de procesamiento, a partir de ese momento pierde todo control
sobre el trabajo y solo retorna al contacto con el mismo cuando recibe los resultados.

5. Acceso interactivo para programacin. Ahora es posible intercalar actos de programacin y


ejecucin.

6. Acceso a un procesamiento distribuido, el objetivo es permitir a un usuario acceder a


procesos o informacin (datos) de otras computadoras que estn interconectadas.

76

6 Procesos
Un proceso es un programa en ejecucin, y en general necesitar ciertos recursos para
cumplir su tarea. Estos recursos se asignan al proceso en el momento de crearlo o mientras
se est ejecutando.
Un proceso es la unidad de trabajo dentro de un sistema, el cual consiste en un conjunto de
procesos: los procesos del sistema operativo ejecutan cdigo de sistema y los procesos de
los usuarios ejecutan cdigo de los usuarios.
Un proceso puede considerarse como un trabajo en Batch o un programa en Tiempo
compartido.
Es posible proporcionar llamadas al sistema que permitan a los procesos crear subprocesos
que se ejecutan concurrentemente.
Un proceso necesita determinados recursos para cumplir con su tarea que se proporcionan
al crear el proceso, o se le asignan mientras se ejecuta.
En el momento de su creacin, pueden transferirse algunos datos iniciales (entrada).
Un programa no es un proceso, es una entidad pasiva; mientras que un proceso
es una entidad activa con un contador de programa que especifica la siguiente
instruccin que debe ejecutarse..
La ejecucin de un proceso debe efectuarse secuencialmente.
Cada sistema consiste en un conjunto de procesos, algunos de los cuales son procesos del
SO y los dems son procesos de usuario. Todos estos procesos pueden ejecutarse en forma
concurrente, multiplexando la CPU entre ellos.
El sistema operativo es responsable de:
La creacin y eliminacin de procesos.
La planificacin de procesos.
Suministro de los mecanismos para la sincronizacin, comunicacin y manejo de bloqueos
mutuos entre procesos.

6.1.1 Proceso Secuencial


Un proceso secuencial es un programa en ejecucin.
Un proceso es ms que el cdigo del programa unido a la actividad que se desarrolla,
incluye tambin la pila del proceso que contiene datos temporales y una seccin de datos
con variables globales.
Aunque dos procesos se pueden asociar al mismo programa, se consideran como dos
secuencias de ejecucin separadas.

6.1.2 Estados de un proceso

En ejecucin: Las instrucciones se estn ejecutando. (CPI)

En espera: El proceso est esperando a que ocurra algn suceso. (CPE)

Listo: El proceso est esperando que se le asigne a un procesador. (CPT)

En un momento determinado slo un proceso puede encontrarse en ejecucin, aunque


varios procesos pueden estar listos en espera.

76

6.1.3 Bloque de control del proceso PCB TCB


Cada proceso se representa por medio de su propio bloque de control del proceso (PCB o TCB). Un
PCB es un bloque o registro de datos que contiene diversa informacin relacionada con un proceso
concreto, incluyendo:
Estado del proceso: puede ser nuevo, listo, en ejecucin, en espera detenido.
Contador del programa: indica la direccin de la siguiente instruccin que este proceso
ejecutar.
Registros de la CPU: varan en nmero y tipo. Incluyen acumuladores, registros ndices,
apuntadores de pila y registros de propsito general, ms cualquier informacin en cdigos
de condicin.
Informacin de planificacin de la CPU: incluye una prioridad del proceso, apuntadores a las
colas de planificacin y otros parmetros de planificacin.
Informacin de administracin de memoria: incluye registros lmites tablas de pginas.
Informacin contable: incluye la cantidad de tiempo real y de la CPU utilizado, lmites de
tiempo, nmeros de cuenta, nmeros de proceso o trabajo, etc.
Informacin del estado de la E/S: incluye solicitudes de E/S pendientes, dispositivos de E/S
asignados a este proceso, una lista de archivos abiertos, etc.
El PCB sirve nicamente como depsito de cualquier informacin que pueda variar de un proceso
a otro.

6.2 Procesos concurrentes


Los procesos del sistema pueden ejecutarse concurrentemente: puede haber mltiples tareas en
la CPU con varios procesos.
Existen varias razones para permitir la ejecucin concurrente:
Compartir recursos fsicos. Ya que los recursos del hardware del computador son limitados.
Compartir recursos lgicos. Puesto que varios usuarios pueden interesarse en el mismo
elemento de informacin.
Acelerar los clculos. Si queremos que una tarea se ejecute con mayor rapidez, debemos
dividirla en subtareas, cada una de las cuales se ejecutar en paralelo con las dems.
Obsrvese que esta aceleracin puede lograrse nicamente si el computador posee
mltiples elementos de procesamiento.
Modularidad. Podremos construir el sistema en forma modular, dividiendo las funciones del
sistema en procesos separados.
Comodidad. Un usuario puede tener que ejecutar varias tareas a la vez.

6.2.1 Creacin y Terminacin de procesos


Para conseguir la ejecucin concurrente, debemos contar con un mecanismo que permita la
creacin y terminacin de procesos.
Creacin de procesos
Durante su ejecucin, un proceso puede crear varios procesos nuevos a travs de una
llamada al sistema para la creacin de procesos.
Al proceso que crea se lo denomina proceso padre, mientras que a los nuevos procesos se
les llama hijos de ese proceso.

76

Cuando un proceso crea un subproceso, ste puede obtener sus recursos directamente del
sistema operativo o estar restringido a un subconjunto de los recursos del proceso padre, el
cual debe dividir sus recursos entre sus hijos, o bien compartir algunos (como archivos o
memoria) entre varios de sus hijos.
Se pueden pasar datos iniciales (entrada) del proceso padre al hijo.
Cuando un proceso crea otro nuevo, hay dos alternativas habituales de la posible forma de
ejecucin:
El padre contina su ejecucin concurrentemente con sus hijos.
El padre espera a que todos sus hijos hayan terminado.
Terminacin de procesos
Un proceso termina cuando concluye la ejecucin de su ltimo enunciado y solicita al
sistema operativo que elimine el proceso.
En ese momento, el proceso puede devolver datos (salida) a su proceso padre.
Un proceso puede provocar la terminacin de otro a travs de la llamada apropiada al
sistema.
Un padre puede terminar la ejecucin de alguno de sus hijos por varias razones:

El hijo ha excedido el uso de alguno de los recursos que se le han asignado: el padre
necesita un mecanismo para inspeccionar el estado de sus hijos.

Ya no se requiere la tarea asignada al hijo.

Terminacin en cascada: en sistemas que no permiten que un hijo exista si su padre ha terminado.
Es iniciada por el SO.

6.2.2 Relacin entre procesos


Proceso independiente:
No puede afectar o ser afectado por los otros procesos que se ejecutan en el sistema.
Su estado no es compartido de ninguna manera por otro proceso.
Su ejecucin es determinista: el resultado de la ejecucin depende en exclusiva del estado
de entrada.
Su ejecucin es reproducible: el resultado de la ejecucin siempre ser el mismo para una
misma entrada.
Su ejecucin puede detenerse y reiniciarse sin ocasionar efectos adversos.
Cualquier proceso que no comparte datos con otro, es independiente.
Proceso cooperativo:
Puede afectar o ser afectado por los dems procesos que se ejecutan en el sistema.
Su estado es compartido por otros procesos.
No puede predecirse el resultado de su ejecucin, ya que depende de una secuencia de
ejecucin relativa.

76

El resultado de su ejecucin es no determinista, puesto que no siempre ser el mismo para


una misma entrada.
Cualquier proceso que comparte datos con otros procesos ser cooperativo.
Pueden compartir directamente un espacio lgico de o se les puede permitir que
compartan datos nicamente a travs de archivos. El primer caso se logra usando procesos
ligeros o hilos.

6.2.3 Hilos
Un hilo es una unidad bsica de utilizacin de la CPU y tiene poco estado no
compartido.
El entorno en el cual se ejecuta un hilo se llama tarea.
Un proceso tradicional (pesado) equivale a una tarea con un hilo.
El costo de conmutacin de la CPU entre hilos del mismo grupo y el de creacin de hilos se
reducen en comparacin con el cambio de contexto entre procesos pesados.
Pueden ser:
Sincrnicos: un hilo del mismo grupo slo puede ejecutarse si el hilo en ejecucin libera el
control.
Asncronos: hay que emplear un mecanismo de bloqueo explcito, como en los sistemas
donde varios procesos comparten datos.

6.3 Conceptos de planificacin


Productividad: es la cantidad de trabajo desarrollada en un intervalo de tiempo.

6.3.1 Colas de planificacin

1.

procesos entran en el sistema.

Los

2. Se colocan en una cola de trabajos formada por todos los procesos que residen en el
almacenamiento secundario esperando la asignacin de la memoria principal.
3. Un proceso nuevo se coloca inicialmente en la cola de procesos listos.
4. Una vez que se asigna la CPU al proceso y se ejecuta, puede ocurrir uno de estos sucesos:
o

El proceso puede emitir una solicitud de E/S y colocarse en una cola de dispositivo.

El proceso puede crear un nuevo proceso y esperar a que ste termine.

76

El proceso podra ser extrado de la CPU por la fuerza, como resultado de una
interrupcin, y colocarse de nuevo en la cola de procesos listos.

Caractersticas:
Los procesos que residen en la memoria principal y que estn listos y esperando su
ejecucin se mantienen en una lista llamada cola de procesos listos.
Un encabezado de la cola de procesos listos contendr apuntadores al primer y ltimo PCB
de la lista. Cada PCB tiene un campo apuntador que indica el siguiente proceso en la cola
de procesos listos.
La lista de procesos que espera a un dispositivo de E/S determinado se denomina cola del
dispositivo, y cada dispositivo tiene su propia cola.
Representacin de diagramas de colas:
Cada rectngulo representa una cola y hay dos tipos de colas: la cola de procesos listos y
un conjunto de colas de dispositivo.
Los crculos representan los recursos que dan servicio a las colas.
Las flechas indican el flujo de los procesos en el sistema.

6.3.2 Planificadores
En el transcurso de su vida, un
proceso
transita
entre
las
distintas colas de planificacin, y
el sistema operativo de alguna
manera
debe
seleccionar
procesos de estas colas. Esta
actividad
de
seleccin
es
realizada por el planificador
correspondiente.

6.3.2.1 Planificador a Largo Plazo (OAN)


El OAN selecciona una unidad de trabajo desde una cola de trabajos en espera para
pasarlos a otra cola de procesos activos o iniciados, desde donde competirn por la CPU.
En la CTE est grabado es un bloque de control del trabajo que tiene bsicamente la
memoria que necesitar y la prioridad del trabajo.
Selecciona un trabajo de la CTE.
Luego el Activador le asigna los recursos que requerir en forma esttica y crea el PCB.
Luego el Loader (cargador) lo carga en memoria (en la CPI CPA guarda el PCB ya que al
cargarlo en memoria genera el proceso y crea el PCB).
El OAN se ejecuta con una frecuencia mucho menor que el OBN, es un evento
nico en la vida de un programa, por eso puede emplear mas tiempo para decidir
qu trabajo se debe seleccionar para su ejecucin.
El OAN controla el grado de multiprogramacin; si el grado de multiprogramacin es
estable, entonces la tasa promedio de creacin de procesos debe ser igual a la tasa
promedio de salida para los procesos que dejan el sistema, de modo que slo hay que
invocar al planificador a largo plazo cuando un proceso sale del sistema.
Es importante que el planificador a largo plazo seleccione una buena mezcla de procesos
limitados por la CPU y limitados por E/S.

76

En sistemas de tiempo compartido: es posible que no exista el OAN o que su funcin sea minima.
En un sistema por lotes: con frecuencia se presentan ms procesos que los que se pueden
ejecutar de inmediato; estos procesos se envan a un Spooler en un dispositivo de
almacenamiento masivo donde se conservan para su posterior ejecucin. El OAN selecciona
procesos de este depsito y los carga en memoria para su ejecucin.
Un proceso limitado por E/S es aquel que emplea ms tiempo en realizar E/S que efectuar clculos.
Un proceso limitado por la CPU es el que genera solicitudes de E/S con poca frecuencia, invirtiendo
la mayor parte del tiempo en efectuar clculo que los procesos limitados por E/S.

6.3.2.2 Planificador a Corto Plazo (OBN)


El OBN selecciona, desde la CPA, uno de los procesos listos para ejecucin y le
asigna la CPU.
El acto de planificacin a corto plazo puede ocurrir frecuentemente en la vida de
un programa.
Es invocado cada vez que la CPU queda inactiva para que seleccione un proceso.
El OBN debe ser muy rpido debido al breve lapso entre ejecuciones.
El planificador a corto plazo debe seleccionar con mucha frecuencia un nuevo proceso para
la CPU.
El OBN conmuta la CPU entre los distintos procesos que conforman la mezcla de
multiprogramacin.

6.3.2.3 Planificador a Mediano Plazo (ONI)

Algunos sistemas operativos (Tiempo compartido, Multiprog. avanzada o Multipropsitos)


pueden presentar un nivel intermedio adicional de planificacin.
La idea clave de un ONI es que en ocasiones puede ser ventajoso eliminar
procesos de la memoria y de este modo reducir el grado de multiprogramacin.
A este esquema comnmente se le denomina intercambio (swapping).
El ONI intercambia el proceso, sacndolo y volvindolo a introducir ms tarde.
Los intercambios pueden ser necesarios cuando se requiere mejorar la mezcla o cuando se
requiere ms memoria.
Este planificador tiene por objetivo flexibilizar el sistema sin sobrecargar al planificador a
corto plazo.

76

En multiprogramacin bsica no se usa el ONI.


En multiprogramacin avanzada es el ONI quien regula la mezcla de procesos que
compiten por la CPU.
Permite utilizar la heuristica
Libera de trabajo al OBN
Proceso del ONI:
1. Los procesos que residen en la CPI esperan a que el ONI les permita pasar a competir por el
uso de la CPU.
2. El ONI elegir un programa de la CPI para ser pasado a la CPA en base a dos grupos de
informacin que recibe:

Informacin sobre la utilizacin que se est haciendo del sistema.

Informacin sobre el grado de progreso de los programas.

3. Cuando un proceso activo es intercambiado, el proceso en s en sacado de memoria pero el


PCB de ste va a la CPI.
El ONI:
1. Si el nmero de pginas disponibles cae por debajo de cierto nivel. Suspende proceso.
2. Cuando defina la mezcla tendr en cuenta que los CPT no sobrecarguen la memoria
3. Balancea dinmicamente la mezcla intercambiando procesos.
4. Para un proceso con tiempo limite de finalizacin calcula al inicio el monto total de recursos
en unidades de servicios (tiene en cuenta todos los recursos) y le modifica la prioridad
dinmicamente segn su grado de avance.
Un sistema de dos niveles se torna inadecuado por diversas razones:
Complican la decisin del planificador a corto plazo (OBN).
Imposibilidad de considerar la heurstica. Particularmente en los sistemas conversacionales
donde el nmero de demandas suele ser muy superior a lo que puede admitir la cola del
OBN.
Cuando se pretende balancear dinmicamente la mezcla, computamos parmetros tales
como grado de avance de un programa, o tiempo lmite de finalizacin se requiere
correr un nmero de funciones de anlisis del estado del sistema que cargara en demasa
la etapa del OBN.
El ONI podr operar sobre la base de un tiempo fijo o bien en respuesta a un evento .
Por ejemplo:
Cuando en un sistema que soporta paginacin el nmero de pginas disponibles en
memoria cae por debajo de un cierto nivel, el ONI puede suspender programas pasndolos
a su cola y libera las reas utilizadas por esos programas logrando reducir el nivel de
multiprogramacin y achicar el nmero de elementos en la cola del OBN. En cambio en los
sistemas de dos niveles, en los que no existe el ONI, el operador directamente extrae un
programa de la mezcla abortndolo, perdiendo as el grado de avance hasta all logrado por
el mismo.
Para definir la mezcla de programas activos tendr en cuenta que el conjunto de pginas
de trabajo (CPT) de los programas con los que conforma la mezcla puedan acomodarse sin

76

problemas en la memoria principal. As cada vez que reconforme la mezcla, tendr en


cuenta que la sumatoria de los CPT de los programas de la mezcla no supere por ejemplo el
80 % del total de bloques disponibles en memoria principal. De este modo, un programa no
ser incluido en la mezcla hasta tanto no se le pueda signar un nmero de pginas
suficientes para contener su CPT.
Cuando se quiere balancear dinmicamente la mezcla, el ONI remplaza por ejemplo
programas cuyo recurso lmite es la CPU por otros cuyos recursos crticos son los canales,
para esto recibe informacin de los administradores de carga, CPU y anales sobre el
avance de un determinado programa y de los ratios de utilizacin de CPU y canales.
Para un programa con tiempo lmite de finalizacin, se calcula en el momento de su
iniciacin el monto total de recursos que necesita, expresado en unidades de servicio, y
al final de cada perodo se controla el grado de avance del programa; y segn est
retrasado o adelantado se le modificar, si es necesario, la prioridad relativa.
Unidad de servicio es un concepto que permite medir el grado de avance de un
programa en una mezcla, conformar una misma unidad los montos necesarios de: ciclos
de CPU, demanda de E/S y montos de memoria.
CPT: Conjunto de paginas de trabajo.

6.4 Planificacin de la CPU


La planificacin es una funcin fundamental del sistema operativo. Casi todos los recursos de un
computador se planifican antes de usarse.

6.4.1 Ciclo de rfagas de CPU y de E/S


La ejecucin de un proceso consiste en un ciclo de ejecucin de la CPU y espera de E/S, y
los procesos se alternan entre estos dos estados.
1. La ejecucin del proceso se inicia con una rfaga de CPU; le siguen una rfaga de
E/S, otra rfaga de CPU, una ms de E/S, etc.
2. Finalmente, la ltima rfaga de CPU terminar con una solicitud al sistema para que
concluya la ejecucin, en vez de otra rfaga de E/S
Hay un gran nmero de rfagas de CPU de corta duracin y un pequeo nmero de rfagas
de larga duracin.
Un programa limitado por E/S normalmente tendr muchas rfagas de CPU breves.
Un programa limitado por la CPU tendr pocas rfagas de muy larga duracin.

6.4.2 Planificador de la CPU


Siempre que la CPU queda inactiva, el sistema operativo debe seleccionar para su ejecucin uno
de los procesos de la cola de procesos listos. El proceso de seleccin es realizado por el
planificador a corto plazo.
Todos los procesos de la cola de procesos listos estn en fila esperando una oportunidad para
ejecutarse en la CPU. Los registros de las colas suelen ser los PCB de los procesos.

6.4.3 Estructura de planificacin


Las decisiones de planificacin de la CPU pueden efectuarse en una de las cuatro circunstancias
siguientes:

76

1. Cuando un proceso cambia del estado de ejecucin a estado de espera (por ejemplo,
solicitud de E/S, peticin de esperar la terminacin de uno de los procesos hijo).
2. Cuando un proceso cambia del estado de ejecucin al estado listo (por ejemplo, cuando
ocurre una interrupcin).
3. Cuando un proceso cambia del estado de espera al estado listo (por ejemplo, al
completarse la E/S).
4. Cuando termina un proceso.
Para los casos 1 y 4 no hay opcin en trminos de planificacin: se debe seleccionar un nuevo
proceso para su ejecucin (si existe en la cola de procesos listos). Sin embargo, esto no se aplica a
los casos 2 y 3.
Cuando la planificacin tiene lugar nicamente en las situaciones 1 y 4, decimos que el
esquema de planificacin es no apropiativo; de lo contrario decimos que es apropiativo.
En la planificacin no apropiativa, una vez que la CPU se ha asignado a un proceso,
ste la conserva hasta que la libera, ya sea por terminar o por cambiar al estado de
espera.

6.4.4 Cambio de contexto


Para cambiar la CPU a otro proceso se requiere guardar el estado del proceso anterior y
cargar el estado guardado para el nuevo proceso. Esta tarea se conoce como cambio de
contexto.
El tiempo de cambio de contexto es un puro gasto adicional, y vara de una mquina a otra.
Los tiempos de cambio de contexto dependen en gran medida del apoyo del hardware.
Si hay ms procesos activos que conjuntos de registros, el sistema copia los datos usando
la memoria.

6.4.5 Despachador (Dispatcher)


Es el mdulo que realmente entrega el control de la CPU al proceso seleccionado por el
planificador a corto plazo.
Esta funcin implica:
Cambiar de contexto
Cambiar a modo usuario
Saltar a la posicin adecuada del programa del usuario para reiniciar el programa

6.5 Algoritmos de planificacin


La planificacin de la CPU tiene que ver con el problema de decidir a cul de los procesos que
estn en la cola de procesos listos se le asignar la CPU.
Para comparar los algoritmos de planificacin de la CPU se han propuesto varios criterios:

76

Utilizacin de la CPU (CPU utilization). Queremos que la CPU se mantenga tan ocupada
como sea posible. En un sistema real debe fluctuar entre el 40% (para un sistema con poca
carga) y un 90 % (para un sistema con gran carga de trabajo).
Productividad (Throughput). Una medida del trabajo es el nmero de procesos que se
completan por unidad de tiempo, llamada productividad.
Tiempo de retorno (Turnaround time). Cunto tiempo tarda en ejecutarse un proceso. El
intervalo entre el momento de demandarlos hasta el momento en que termina es el tiempo
de retorno, es decir, la suma de los perodos transcurridos esperando entrar en la memoria,
esperando en la cola de procesos listos, ejecutndose en la CPU y efectuando E/S. Se
encuentra limitad por la velocidad del dispositivo de salida.
Tiempo de espera (Waiting time). El algoritmo afecta nicamente a la cantidad de tiempo
que el proceso espera en la cola de procesos listos, de modo que en vez de tener en cuenta
el tiempo de retorno, podemos considerar slo el tiempo de espera para cada proceso.
Tiempo de respuesta (Response time). Con frecuencia un proceso puede producir alguna
salida en los primeros instantes y continuar calculando nuevos resultados mientras se
presentan al usuario los resultados anteriores. El tiempo de respuesta es la cantidad de
tiempo para comenzar a responder.

6.5.1 Planificacin Servicio por orden de llegada (FCFS)


El proceso que primero solicita la CPU es el primero al que se le asigna.
La poltica FCFS se implanta fcilmente con una cola FIFO: cuando un proceso entra en la
cola de procesos listos, su PCB se enlaza al final de la cola; cuando la CPU est libre se
asigna el proceso colocado al inicio de la cola de procesos listos, y entonces el proceso en
ejecucin se elimina de esa misma cola.
El tiempo promedio de espera en la poltica FCFS generalmente no es mnimo y puede
variar bastante si los tiempos de rfagas de CPU de los procesos varan mucho.
Efecto de convoy: provoca que la CPU y los dispositivos se aprovechen menos
que si se permitiera que los procesos ms cortos pasaran antes.
El algoritmo de planificacin FCFS es no apropiativo. Una vez que se ha asignado la CPU a
un proceso, ste la conserva hasta que desee liberarla, ya sea por terminacin o por
solicitud de E/S.

6.5.2 Planificacin Primero el trabajo ms breve (SJF)


Asocia a cada proceso la longitud de su siguiente rfaga de CPU.
Cuando la CPU est disponible, se le asigna al proceso que tiene la rfaga siguiente de CPU
menor.
Si dos procesos tienen la misma longitud para la siguiente rfaga de CPU, se utiliza la
planificacin FCFS para romper el empate.
Ofrece el mnimo tiempo promedio de espera para un conjunto de procesos dado.
El algoritmo SJF puede ser apropiativo o no apropiativo. La alternativa se plantea cuando
un nuevo proceso llega a la cola de procesos listos mientras se est ejecutando otro
proceso. El nuevo proceso puede tener una rfaga de CPU menor que lo que resta del
proceso que se ejecuta en ese momento.
o

Un algoritmo SJF apropiativo desplazar al proceso que se ejecuta.

76

Un algoritmo SJF no apropiativo permitir que el proceso que se ejecuta termine su


rfaga de CPU.

Problema: conocer la longitud de la siguiente solicitud de CPU


Para la planificacin a largo plazo
lmite del proceso.

en un sistema por lotes, podemos utilizar el tiempo

No puede implantarse al nivel de la planificacin a corto plazo de CPU. No hay manera de


conocer la longitud de la siguiente rfaga de CPU, pero se puede tratar de efectuar una
aproximacin a la planificacin SJF. Aunque no conocemos la longitud de la siguiente rfaga
de CPU, podemos predecir su valor.

Es ms habitual que = , por lo que la historia reciente y antigua se ponderan de igual manera.

Puesto que tanto a como (1 - ) son menores o iguales a 1, cada trmino sucesivo tiene menor
peso que su predecesor.

6.5.3 Planificacin por prioridades


Se asocia una prioridad a cada proceso y la CPU se asigna al de mayor prioridad.
Los procesos con igual prioridad se planifican en orden FCFS.
Un algoritmo SJF es sencillamente un algoritmo de prioridades, donde la prioridad ( p ) es la
inversa de la siguiente rfaga (prevista) de CPU (t ) : p = 1 / t .
Las prioridades generalmente corresponden a un intervalo fijo de nmeros.
Las prioridades pueden definirse interna o externamente.
o

Las prioridades definidas internamente utilizan alguna cantidad o cantidades


mensurables para calcular la prioridad del proceso.

Las prioridades externas se fijan empleando criterios ajenos al sistema operativo,


como la importancia del proceso, el tipo y cantidad de fondos que se pagan por
utilizar el computador, el departamento que patrocina el trabajo y otros factores,
con frecuencia de carcter poltico.

76

La planificacin por prioridades puede ser apropiativa o no apropiativa. Cuando un proceso


llega a la cola de procesos listos, su prioridad se compara con la del proceso en ejecucin.
o

Un algoritmo apropiativo para la planificacin por prioridades se apropiar de la CPU


si la prioridad del proceso recin llegado es mayor que la del proceso en ejecucin.

Un algoritmo no apropiativo para la planificacin por prioridades nicamente dejar


al nuevo proceso al inicio de la cola de procesos listos.

Bloqueo indefinido o inanicin. Un proceso que est listo para ejecutarse pero no obtiene la
CPU puede considerarse como bloqueado, en espera de la CPU. Un algoritmo para la planificacin
por prioridades puede dejar a un proceso de baja prioridad esperando indefinidamente a la CPU.
Por lo general suceder una de estas dos cosas: o el programa finalmente se ejecuta o el sistema
de computacin falla y pierde todos los procesos de baja prioridad.
Una solucin es el envejecimiento (aging), tcnica por la cual aumenta gradualmente la prioridad
de los procesos que esperan durante mucho tiempo en el sistema.

6.5.4 Planificacin circular (Round Robin)


En los sistemas de tiempo compartido ms simples para alcanzar una perfecta distribucin de
servicios, es suficiente y conveniente el uso de un Dispatcher como el round robin.
Asocia un determinado intervalo de tiempo a la ejecucin de un programa, luego otro
programa lo suceder por un perodo de tiempo idntico (quantum).
Es posible sofisticar este mecanismo cambiando el tiempo asignado a cada programa en
base a alguna prioridad relativa.
Est diseado especialmente para sistemas de tiempo compartido.
Se define una pequea unidad de tiempo, llamada quantum de tiempo o porcin de tiempo,
que generalmente vara entre 10 y 100 milisegundos.
La cola de procesos listos se trata como una cola circular, el planificador de la CPU la
recorre asignando la CPU a cada proceso por un intervalo de hasta un quantum de tiempo.
Para poner en prctica la planificacin RR, mantenemos la cola de procesos listos
como una cola FIFO.
El tiempo promedio de espera es bastante grande en la poltica RR.
En el algoritmo de planificacin RR, la CPU no se asigna a ningn proceso por ms de un
quantum consecutivo de tiempo.
Si la rfaga de CPU de un proceso excede un quantum, se desaloja y regresa a la cola de
procesos listos.
El algoritmo de planificacin RR es apropiativo.
El rendimiento del algoritmo RR depende en gran medida del tamao del quantum de
tiempo. En un extremo, si el quantum es muy grande, la poltica RR es la misma que la
FCFS. Si el quantum es muy pequeo, el enfoque RR se llama compartir el procesador y
para los usuarios parece que cada uno de los n procesos tiene su propio procesador que se
ejecuta a 1 / n de la velocidad del procesador real.
El tiempo de retorno tambin depende del tamao del quantum de tiempo. En general, el
tiempo de retorno promedio puede mejorar si la mayora de los procesos terminan su
siguiente rfaga de CPU en un solo quantum de tiempo. Si se aade el tiempo de cambio
de contexto, el tiempo de retorno promedio aumenta para un quantum de tiempo ms
pequeo, puesto que se requieren ms cambios de contexto.

76

Queremos que el quantum de tiempo sea grande respecto al tiempo de cambio de


contexto. Si el tiempo de cambio de contexto es aproximadamente 10% del quantum,
entonces en el cambio de contexto se invierte cerca de un 10% del tiempo de la CPU.
Entonces suceder una de estas dos cosas:
1. El proceso puede tener una rfaga de CPU menor que un quantum de tiempo: el proceso
liberar voluntariamente a la CPU y el planificador continuar con el siguiente proceso de
la cola de procesos listos.
2. Si la rfaga de la CPU del proceso en ejecucin es mayor que 1 quantum de tiempo: el
timer se activar y provocar una interrupcin para el sistema operativo. Se ejecutar un
cambio de contexto y el proceso se colocar al final de la cola de procesos listos.

6.5.5 Planificacin de colas de mltiples niveles


Una divisin habitual consiste en diferenciar los procesos de primer plano o Foreground
(interactivos) de los procesos de segundo plano o Bakground (por lotes o batch).
Un algoritmo de planificacin de colas de mltiples niveles divide la cola de procesos listos
en diversas colas.
Los procesos se asignan en forma permanente a una cola, generalmente a partir de alguna
propiedad del proceso como puede ser el tamao de la memoria o el tipo de proceso.
Los procesos se asignan de manera permanente a una cola al entrar al sistema y no se
mueven a otras colas.
poco gasto de procesamiento adicional durante la planificacin, pero es inflexible.
Cada cola tiene su propio algoritmo de planificacin.
Debe existir adems una planificacin entre las colas, la cual generalmente es una
planificacin apropiativa de prioridad fija.
Cada cola tiene prioridad absoluta sobre las colas de menor prioridad.
Otra posibilidad es utilizar una porcin de tiempo para las colas. Cada cola recibira cierta
porcin del tiempo de la CPU, la cual se planificara entre los procesos de su cola.

6.5.6 Planificacin de colas de mltiples niveles con realimentacin


Permite a un proceso moverse de una cola a otra.
La idea es separar los procesos con diferentes caractersticas en cuanto a rfagas de la
CPU.
Si un proceso utiliza demasiado tiempo de la CPU, se pasar a una cola de menor prioridad.
Este esquema deja a los procesos limitados por E/S y a los procesos interactivos en las
colas de mayor prioridad.
Si un proceso espera demasiado tiempo en una cola de menor prioridad se puede mover a
una de mayor prioridad.
Esta es una forma de envejecimiento (aging) que evitara el bloqueo indefinido.
Por lo general, un planificador de colas de mltiples niveles con realimentacin se define con los
siguiente parmetros:
El nmero de colas
El algoritmo de planificacin para cada cola

76

El mtodo utilizado para determinar cundo promover un proceso a una cola de mayor
prioridad
El mtodo utilizado para determinar cundo degradar un proceso a una cola de menor
prioridad
El mtodo utilizado para determinar a cul col entrar un proceso cuando necesite servicio

6.5.6.1 Aplicacin de colas cclicas realimentadas


Es una estructura de cola en la cual la cola del Dispatcher aparece particionada en n
subcolas.
Se tiene una ley de residencia de los programas que residen en cada subcola, y un conjunto
de relaciones entre las mismas.
Una estructura de subcolas permite clasificar dinmicamente programas, segn
caractersticas intrnsecas de los mismos, y tratarlos en forma diferencial. Para cada
subcola se define:
o N=Iteraciones: Nmero mximo de veces que un programa puede recibir la CPU desde
una determinada subcola.
o Q=Quantum: Perodo mximo de tiempo contino que un programa de esa subcola
puede usar la CPU.
o RL=Regla de residencia: Determina la permanencia de un programa en una
determinada subcola, o su pasaje a otra.
o VL=Regla de visita: Controla el servicio de la CPU a cada una de las subcolas,
regulando la importancia (P) que se le dar a c/u.
El principio bsico es asumir que un programa que ha consumido muchos servicios del
sistema en el pasado, tiene an muchos servicios por consumir.
Se definen distintas reglas de visita a cada subcola, cada una de ellas con distinto grado
de severidad.
Un DCB se inicia en la subcola 1, cuando llega al tope de la misma recibe un golpe de CPU de
largo Q(1) y, por aplicacin de la regla de residencia, es bajado al ltimo lugar de dicha subcola
1 es pasado a otra subcola i, donde se repite el procedimiento con distintos parmetros Q(i) y
N(i), recibiendo la CPU menos frecuentemente y por intervalos de tiempo ms prolongados, y as
sucesivamente hasta completar su ejecucin.

6.5.6.2 Aplicacin a sistemas de tiempo compartido


Una estructura de subcolas permite, en este tipo de sistemas, distinguir los programas
largos de los cortos para privilegiar o beneficiar a stos ltimos respecto de los dems; y
como consecuencia, disminuir para los programas largos el nmero efectivo de cargas y
descargas en memoria.
1. Un programa podr recibir la CPU desde una subcola i a lo sumo N(i) veces;
2. Al recibir el golpe de CPU N(i) es pasado a la subcola i+1 y as sucesivamente hasta
finalizar.
3. En caso de llegar a la ltima subcola, permanecer all hasta finalizar ya que el N(n) es
prcticamente infinito.

6.5.6.3 Aplicacin a sistemas de procesamiento Batch

76

Por lo tanto se utiliza como poltica del Dispatcher la regla de residencia enunciada como
el ms corto primero, que consiste clasificar los programas segn su consumo de E/S y
otorgarle la CPU al programa que correr el menor tiempo antes de solicitar una operacin
de E/S. De esta manera se le da prioridad a los programas cuyos recursos crticos son los
canales, maximizando el ratio de dispatching, lo que deriva en una maximizacin del
throughput.
Si el programa utiliza totalmente es tiempo mximo (quantum) sin solicitar una operacin
de E/S, es pasado a la siguiente subcola.
Esta regla asume el concepto de la regla heurstica, segn la cual: un programa que ha
demandado gran cantidad de recursos de canal, lo seguir haciendo en el futuro.
La relacin entre dispatching y asignacin de canales, afecta en forma directa las tcticas de
dispatching. Consideremos dos casos:
Supongamos una mquina de muchos canales en que se debern correr en forma concurrente
la mayor cantidad posible de programas, entonces se debern asignar todos los archivos de un
programa a un nico canal; sto imposibilita que un programa superponga sus operaciones de
E/S, pero elimina el uso compartido de canales entre programas y por lo tanto elimina la
formacin de colas de espera y esto permitir predecir fcilmente la performance de un
determinado programa.
Veamos ahora el caso contrario. Supongamos una mquina con un algoritmo de asignacin de
canales que tienda a distribuir la asignacin de archivos de un determinado programa entre los
distintos canales, el efecto del algoritmo del dispatching se distorsionar.; esta distribucin
presentar una fuerte tendencia a la comparticin de canales entre programas.
Supongamos que en un momento dado el sistema detecta que la mezcla proporciona una baja
utilizacin de la CPU, la solucin sera agregar a la mezcla un programa cuyo recurso crtico sea la
CPU.
El resultado de introducir este programa en la mezcla puede ser contrario al esperado, el ratio de
la CPU puede bajar an mas pues el tiempo ocioso de CPU se deba a que el Dispatcher no
encontraba trabajos listos para correr debido al tiempo que transcurre entre la demanda de una
E/S y su efectiva cumplimentacin; entonces el programa agregado a la mezcla aumenta
ligeramente la carga de E/S.
Para dicho programa su tiempo de espera para las E/S es el propio ms el de todos los programas
anteriores, por lo tanto se incrementa el tiempo de espera para los otros programas y el tiempo
que transcurre para que un programa este listo aumenta y por lo tanto baja el ratio de utilizacin
de la CPU en lugar de aumentar.
La utilizacin de subcolas tiende a facilitar el logro del equilibrio entre dispatching y
asignacin, asegurando que el programa que solicita una operacin de E/S ms rpido
(pronto) tenga el control de la CPU siendo la regla de residencia en una subcola para
este caso: el tiempo mximo que puede correr un programa antes de solicitar una
operacin de E/S.

6.5.6.4 Prioridades
Un aumento de la prioridad de un PRG representa una menor utilizacin de los canales. Por
ejemplo: un PRG de baja prioridad recibe la CPU por un lapso de tiempo, otro PRG de mayor
prioridad y de la misma subcola, tendr el uso de la CPU por un lapso mas prolongado para correr
sin ser penalizado (pasado a la subcola siguiente). Por no requerir una operacin de E/S en el
quantum, es pasado a la subcola siguiente, por lo tanto se disminuye la utilizacin de los canales.

76

6.6 Planificacin de procesadores mltiples


Si hay mltiples CPU, el problema de planificacin se vuelve ms complejo.
Uno de los factores principales es el tipo de procesadores que entran en juego, los cuales
pueden ser idnticos (un sistema homogneo) o distintos (un sistema heterogneo).
o

Si los procesadores son diferentes, las opciones son relativamente limitadas. Cada
procesador tiene su propia cola y su propio algoritmo de planificacin. Los procesos
estn tipificados intrnsecamente por su estructura, y deben ejecutarse en un
procesador determinado; los procesos se restringen a ciertos procesadores y cada
procesador puede planificarse a s mismo.

Si hay varios procesadores idnticos, pueden compartir cargas. Sera posible


proporcionar una cola distinta a cada procesador, pero en esta situacin un
procesador podra estar inactivo, con una cola vaca, mientras los dems
procesadores estuvieran muy activos. Para evitarlo utilizamos una cola comn de
procesos listos; todos los procesos entran a esta cola y se planifican en cualquier
procesador disponible.

Debemos asegurar que dos procesadores no elijan el mismo proceso, y que no se pierdan
procesos de la cola. La otra estrategia evita este problema estableciendo un procesador como
planificador para los dems, creando as una estructura amo-esclavo, esto es, el
multiprocesamiento asimtrico.

6.7. Evaluacin de algoritmos


Primero se toma un criterio para seleccionar un algoritmo:
Maximizar la utilizacin de la CPU con la restriccin de que el tiempo mximo de respuesta sea
un segundo.
Maximizar la productividad de manera que el tiempo de retorno sea lineal// proporcional al
tiempo de ejecucin.

Luego se puede evaluar de varias formas:


Evaluacin analtica. Utiliza el algoritmo y la carga de trabajo del sistema para producir una
frmula o un nmero que evale el rendimiento del algoritmo para esa carga de trabajo.

Modelado determinista. Toma una carga de trabajo y define el rendimiento de cada


algoritmo para esa carga de trabajo. Es sencillo y fcil, ya que proporciona nmeros
exactos, pero requiere entradas precisas.

Modelos de colas. Describe al sistema como una red de servidores, cada uno de los cuales
tiene una cola de procesos en espera (la CPU y los dispositivos tienen sus propias colas). Si
se conocen las tasas de llegada y de servicio, se puede calcular la utilizacin, la longitud
promedio de la cola, el tiempo promedio de espera, etc. A esta rea de estudio se la llama
anlisis de redes de colas. Puede ser bastante til, pero como son nicamente una
aproximacin de un sistema real puede cuestionarse la exactitud de los resultados.

Simulaciones. Implican programar un modelo del sistema de computacin. Puede producir


resultados muy preciso para sus entradas. Las simulaciones pueden ser muy costosas, y con
frecuencia requieren horas de uso del computador.

76

Implantacin. Es la nica manera completamente exacta de evaluar un algoritmo de


planificacin. Se lo codifica y coloca en el SO para ver cmo funciona. Su mayor problema es el
costo.

6.8 Coordinacin de Procesos


La base de los sistemas multiprogramados es el procesamiento concurrente. Los sistemas
concurrentes son un conjunto de procesos: los procesos del SO ejecutan cdigo del sistema y los
procesos de los usuarios ejecutan cdigo de los usuarios. Todos estos procesos pueden,
potencialmente, ejecutarse concurrentemente.

6.8.1 Antecedentes
Los procesos productor-consumidor son habituales en los SO.
Un proceso productor genera informacin que ser utilizada por el proceso consumidor.
Para que los procesos productores y consumidores puedan ejecutarse concurrentemente,
debemos crear un depsito (pool) de buffers que pueda llenar el productor y vaciar el
consumidor.
Se deben sincronizar el productor y el consumidor, para que este ltimo no trate de
consumir algo que an no se ha producido.
El caso del productor-consumidor con buffer ilimitado no establece lmites en el nmero
de buffers: el consumidor puede tener que esperar nuevos elementos, pero el productor
puede producirlos porque siempre hay buffers vacos.
El caso del productor-consumidor con buffer limitado supone que hay un nmero fijo de
buffers: el consumidor debe esperar si todos los buffers estn vacos y el productor deber
esperar si estn todos llenos.

6.8.2 El problema de la seccin crtica


Consideremos un sistema compuesto de n procesos {P0, P1, ..., Pn-1}.
Cada proceso tiene un segmento de cdigo, llamado seccin crtica, en el cual el proceso puede
estar modificando variables comunes, actualizando una tabla, escribiendo un archivo, etc..
La caracterstica importante del sistema es que, cuando un proceso se ejecuta en su seccin
crtica, no se permite que ningn otro proceso se ejecute en su seccin.
El problema de la seccin crtica consiste en disear un protocolo que los procesos puedan usar
para cooperar.
Cada proceso debe solicitar permiso para entrar en su seccin crtica; la seccin de cdigo que
implementa esta solicitud es la seccin de entrada. A la seccin crtica puede seguir una seccin
de salida y el cdigo que queda es la seccin restante.
Una solucin para el problema de la seccin crtica debe cumplir los tres requisitos siguientes:
1.

Exclusin mutua. Si un proceso P1 se est ejecutando en su seccin crtica, entonces ningn


otro proceso se puede estar ejecutando en la suya.

2.

Progreso. Si ningn proceso se est ejecutando en su seccin crtica y hay otros procesos que
desean entrar en las suyas, entonces slo aquellos procesos que no se estn ejecutando en su
seccin restante pueden participar en la decisin de cul ser el siguiente en entrar en la
seccin crtica, y esta seleccin no puede postergarse indefinidamente.

76

3.

Espera limitada. Debe haber un lmite en el nmero de veces que se permite que los dems
procesos entren en su seccin crtica despus de que un proceso haya efectuado una solicitud
para entrar en la suya y antes de que se conceda esa solicitud.

Las soluciones no se basan en ninguna suposicin relacionada con las instrucciones del hardware
ni en el nmero de procesadores que permite el hardware.

6.8.3 Hardware de sincronizacin


El problema de la seccin crtica puede solucionarse simplemente evitando que ocurran
interrupciones mientras se modifica una variable compartida, aunque esto no siempre es factible.
La caracterstica importante es que la instruccin se ejecuta atmicamente, es decir, como una
unidad ininterrumpible, de modo que si dos instrucciones evaluar-y-asignar se ejecutan
simultneamente (cada una en una CPU diferente), lo harn secuencialmente siguiendo algn
orden arbitrario.
Si la mquina permite la instruccin evaluar-y-asignar, entonces podemos implementar la
exclusin mutua declarando una variable booleana cerradura con valor inicial falso.
Este algoritmo no satisface el requisito de la espera limitada.

6.8.4 Semforos
Un semforo es una variable entera a la que, salvo por la asignacin de valores iniciales, slo
puede accederse mediante dos operaciones atmicas comunes: espera (wait) y seal (signal).
Cuando un proceso modifica el valor del semforo, ningn otro proceso puede modificar
simultneamente ese mismo valor. Adems, en el caso de la espera (S), la evaluacin del valor
entero de S (S =< 0) y su posible modificacin (S := S - 1), tambin deben ejecutarse sin
interrupcin.

6.8.4.1 Utilizacin
Los semforos pueden utilizarse al tratar el problema de la seccin crtica para n procesos; estos n
procesos comparten un semforo comn, mutex (que representa a la exclusin mutua), con un
valor inicial 1.

6.8.4.2 Implementacin
La principal desventaja de la definicin de semforos es que todas requieren una espera activa.
Mientras un proceso se encuentra en su seccin crtica, cualquier otro proceso que intente entrar
en esta seccin deber ejecutar un ciclo continuo en la seccin de entrada. Esto, obviamente, es
un problema en un sistema multiprogramado real, donde varios procesos comparten una sola CPU.
La espera activa desperdicia ciclos de CPU que otros procesos podran usar productivamente. A
este tipo de semforo se le llama cerradura giratoria. La ventaja que tienen es que no es necesario
efectuar un cambio de contexto.
El aspecto crucial de los semforos es que ejecutan atmicamente. Debemos garantizar que dos
procesos no puedan ejecutar operaciones espera y seal al mismo tiempo en el mismo semforo.

6.8.4.3 Bloqueos mutuos y bloqueos indefinidos


La implementacin de un semforo con una cola de espera puede dar como resultado una
situacin donde dos o ms procesos esperan indefinidamente un suceso que slo puede ocasionar
uno de los procesos en espera. El suceso en cuestin consiste en la ejecucin de una operacin
seal.

76

Bloqueo mutuo: cuando cada uno de los procesos del conjunto est esperando un suceso
que nicamente puede ser provocado por otro proceso del conjunto.
Bloqueo indefinido o inanicin, en que los procesos pueden esperar indefinidamente dentro
del semforo. El bloqueo indefinido se puede presentar si aadimos y eliminamos procesos
de la lista asociada con un semforo en orden LIFO.

6.8.4.4 Problemas (o errores) de sincronizacin


Estos errores suceden slo si se presenta una determinada secuencia de ejecuciones, y no siempre
se aparecen estas secuencias.
Estas dificultades se presentarn incluso si un solo proceso no se comporta adecuadamente. Esta
situacin puede ser el resultado de un error involuntario de programacin o de un programador
poco cooperativo.

6.8.5 Comunicacin entre procesos


Principalmente hay dos esquemas complementarios de comunicacin: sistema de memoria
compartida y de mensajes.
Estos dos esquemas no son mutuamente exclusivos, y podran utilizarse simultneamente en un
sistema operativo.
Los sistemas de memoria compartida
Requieren que los procesos comunicantes compartan algunas variables.
Se espera que los procesos intercambien informacin por medio de estas variables
compartidas.
La responsabilidad de proporcionar la comunicacin recae sobre los programadores de
aplicaciones.
El mtodo del sistema de mensajes
Permite que los procesos intercambien mensajes.
La responsabilidad de proporcionar la comunicacin corresponde al propio sistema
operativo.
La funcin de un sistema de mensajes es permitir que los procesos se comuniquen entre s
sin tener que recurrir a variables compartidas. Un medio para la comunicacin entre
procesos facilita bsicamente dos operaciones: enviar(mensaje) y recibir(mensaje).
Los mensajes que enva un proceso pueden ser de tamao fijo o variable.

6.8.5.1 Nominacin
Los procesos que desean comunicarse deben tener una manera de referirse unos a otros. Pueden
utilizar la comunicacin directa o la comunicacin indirecta, que analizaremos a continuacin.

76

Comunicacin directa
Cada proceso que desea enviar o recibir un mensaje debe nombrar explcitamente al receptor o
emisor.
En este esquema, las operaciones primitivas enviar y recibir se definen de la manera sgte:
enviar (P, mensaje). Enviar un mensaje al proceso P.
recibir (Q, mensaje). Recibir un mensaje del proceso Q.
Un enlace de comunicacin en este esquema posee las siguientes propiedades:
Se establece un enlace automticamente entre cada par de procesos que quieren
comunicarse.
Los procesos slo necesitan conocer la identidad del otro para comunicarse.
Un enlace est asociado exactamente a dos procesos.
Entre cada par de procesos en comunicacin hay exactamente un enlace.
El enlace es bidireccional.
Una variante de este esquema emplea la asimetra en el direccionamiento:
enviar (P, mensaje). Enviar un mensaje al proceso P.
recibir (id, mensaje). Recibir un mensaje de cualquier proceso. A id se le asigna elnombre
del proceso con el cual se ha establecido la comunicacin.
Comunicacin indirecta
Los mensajes se envan y reciben usando buzones (mailbox). Un buzn puede considerarse de
manera abstracta como un objeto en el que los procesos pueden colocar mensajes y del cual se
pueden extraer los mensajes. Cada buzn tiene una identificacin nica. Dos procesos nicamente
pueden comunicarse si comparten un buzn.
enviar (A, mensaje). Enviar un mensaje al buzn A.
recibir (A, mensaje). Recibir un mensaje del buzn A.
En este esquema, un enlace de comunicacin tiene las propiedades siguientes:
Se establece un enlace entre un par de procesos slo si comparten un buzn.
Un enlace puede asociarse a ms de dos procesos.
Entre cada par de procesos en comunicacin puede haber varios enlaces diferentes,
correspondiendo cada uno a un buzn.
Un enlace puede ser unidireccional o bidireccional.
Si el buzn pertenece a un proceso entonces hacemos una distincin entre el dueo y el usuario
del buzn. Cuando termina un proceso dueo de un buzn, ste desaparece.
Hay varias maneras de designar al dueo y a los usuarios de un buzn en concreto. Una
posibilidad es permitir que un proceso declare variables de tipo buzn. El proceso que declara un
buzn es su dueo. Cualquier otro proceso que conozca el nombre de este buzn podr utilizarlo.
Por otra parte, un buzn que pertenece al sistema operativo tiene existencia propia, es
independiente y no est unido a un proceso en particular.

76

6.8.5.2 Utilizacin de buffers


Un enlace tiene cierta capacidad que determina el nmero de mensajes que puede contener
temporalmente. Esta propiedad puede considerarse como una cola de mensajes unidas al enlace.
Hay tres maneras bsicas de implementar esta cola:
Capacidad cero. <Sistema de mensajes sin buffer> La cola tiene una longitud mxima 0,
de modo que el enlace no puede contener ningn mensaje esperando. Los dos procesos se
deben sincronizar para que pueda tener lugar la transferencia de un mensaje.
Capacidad limitada. <Con buffer automtico> La cola tiene una longitud finita n; as, como
mximo pueden residir n mensajes en ella. Si la cola no est al enviar un nuevo mensaje,
se guarda en la cola y el emisor puede continuar su ejecucin sin esperar. Si el enlace est
lleno, el emisor debe demorarse hasta que haya espacio disponible en la cola.
Capacidad ilimitada. <con buffer automtico> La cola tiene una longitud potencialmente
infinita. El emisor nunca se demora.
En los casos de capacidad no nula, un proceso no sabe si un mensaje ha llegado a su destino
despus de concluir la operacin enviar.
Existen casos especiales que no encajan en ninguna de las categoras que hemos visto:
El proceso que enva el mensaje nunca se demora. Sin embargo, si el receptor no ha
recibido el mensaje antes de que el proceso emisor enve otro, el primer mensaje se pierde.
Los procesos se deben sincronizar, par asegurar que los mensajes no se pierdan y que el
emisor y el receptor no manipulen simultneamente el buffer de mensajes.
El proceso que enva un mensaje se demora hasta que recibe una respuesta. La primitiva
enviar hace que el proceso emisor se bloquee, mientras que responder permite que ambos
procesos, el receptor y el emisor, prosigan de inmediato su ejecucin.

6.8.5.3 Condiciones de excepcin


Un sistema de mensajes es particularmente til en un entorno distribuido, donde los procesos
pueden residir en distintas mquinas. En este entorno es mucho mayor la probabilidad de que
ocurra un error durante la comunicacin (y procesamiento) que en un entorno con una sola
mquina. En un entorno con una sola mquina los mensajes en general se implementan en
memoria compartida. Si ocurre un error, afecta a todo el sistema. En un entorno distribuido, los
mensajes se manejan a travs de lneas de comunicacin, y no necesariamente un error en la
instalacin (o enlace) causa un paro en todo el sistema.
Terminacin del proceso
Tanto un receptor como un emisor pueden terminar antes de haber procesado un mensaje. Esta
situacin dejar mensajes que nunca se recibirn o procesos que esperan un mensaje que nunca
se enviar. Aqu consideramos dos casos:
1. Un proceso receptor P puede esperar un mensaje de un proceso Q que ha terminado. Si no
se emprende ninguna accin, P quedar bloqueado eternamente (esta condicin no es un
bloqueo mutuo en el sentido clsico, puesto que no hay espera circular). En este caso el
sistema puede terminar la ejecucin de P o notificar a P que Q ha terminado.
2. El proceso P puede enviar un mensaje a un proceso Q que ha terminado. En el esquema de
los buffers automticos no hay daos; sencillamente P contina con su ejecucin, debe
programar explcitamente una confirmacin. En el caso sin buffers, P quedar bloqueado
para siempre. Como en el caso 1, el sistema puede terminar la ejecucin de P o notificar a
P que Q ha terminado.

76

Mensajes perdidos
Existen tres mtodos para tratar esta situacin:
1. El SO es responsable de detectar el suceso y reenviar el mensaje.
2. El proceso emisor es responsable de detectar este suceso y retransmitir el mensaje, si as
lo desea.
3. El SO es responsable de detectar el suceso y notificar al proceso emisor que ha perdido el
mensaje.
Mensajes alterados
El mensaje puede llegar a su destino, pero alterarse por el camino (por ejemplo, por ruidos en el
canal de comunicaciones). Esta situacin es similar a la de un mensaje perdido. El sistema
operativo retransmitir el mensaje original o notificar este suceso al proceso. Para detectar este
tipo de error generalmente se utiliza la suma de verificacin (paridad o CRC).

76

7. Administracin de memoria
La memoria es un gran arreglo de palabras o bytes, cada uno con su propia direccin.
La interaccin se logra por medio de una secuencia de lecturas o escrituras a direcciones
especificas de memoria.
La UCP busca informacin de la memoria o la almacena en ella.
Es parte capital del sistema. Los algoritmos de administracin de memoria tienen un
requisito bsico: todo el proceso debe encontrarse en memoria fsica antes de que pueda
ejecutarse.
Un ciclo tpico para la ejecucin de una instruccin:
Primero buscar una instruccin de la memoria.
Luego la instruccin se descodifica y puede provocar que se busquen operandos de la
memoria
Despus de aplicar la instruccin a los operandos, los resultados pueden guardarse en
memoria.
Observe que la unidad de memoria solo ve un flujo de direcciones de memoria;
7.1.1 Enlace de direcciones
Para ejecutar un proceso, ste debe cargarse en memoria.
El proceso reside en disco como archivo binario ejecutable.
El conjunto de procesos en disco que esperan entrar en la memoria para ejecutarse
integran la cola de entrada.
El procedimiento normal consiste en seleccionar uno de los procesos de la cola de entrada
y cargarlo en memoria.
Provoca la relocalizacin de direcciones o el enlace de referencias externas a puntos de
entrada, segn sea necesario.
Cuando el programa termina y su espacio en memoria se declara disponible.
Un programa de usuario pasar por varias antes de ejecutarse:
1. Un compilador normalmente enlazar estas direcciones simblicas con direcciones
relocalizables.
2. El editor de enlaces o el cargador enlazara
direcciones relocalizables con direcciones absolutas

estas

El enlace de las instrucciones y datos con las direcciones de


memoria puede efectuarse en cualquier etapa del camino:
Compilacin:
Si en el momento de la compilacin se sabe dnde residir el
programa en memoria puede generarse cdigo absoluto.
Si mas tarde cambia la posicin de inicio, ser necesario volver a
compilar el cdigo.
Carga:

76

El compilador deber generar cdigo relocalizable. Se posterga el enlace final hasta el momento
de la carga.
Si cambia la direccin de inicio, slo tenemos que cargar de nuevo el cdigo del usuario para
incorporar el valor modificado.
Ejecucin:
Si durante la ejecucin el proceso puede moverse de un segmento de memoria a otro. Se debe
tener hardware especial para que este esquema funcione.

7.1.2 Carga dinmica


Una rutina no se carga hasta que se le llama.
Todas las rutinas se almacenan en disco en formato de carga relocalizable.
o

El programa principal se carga en memoria y se ejecuta.

Cuando una rutina tiene que llamar a otra, la rutina llamadora primero comprueba si se
ha cargado la otra.

Si no es as, se llama al cargador de enlace relocalizable para que cargue en memoria la


rutina deseada y actualice las tablas para reflejar este cambio.

Luego el control se transfiere a la rutina recin cargada.

Nunca se carga una rutina que no se usa.

7.1.3 Enlace dinmico


Se posterga el enlace hasta la ejecucin.
Se emplea generalmente con las bibliotecas del sistema, como las bibliotecas de
subrutinas de lenguaje.
Desperdicia espacio en disco y en memoria principal.
En el contenido binario se incluye un fragmento (stub) para cada referencia a una rutina de
la biblioteca. Este fragmento es un pequeo trozo de cdigo que indica cmo localizar la
rutina de biblioteca residente en memoria. Al ejecutar este fragmento se remplaza a s
mismo con la direccin de la rutina y la ejecuta.
De esta manera, la siguiente vez que se llega a ese segmento de cdigo, la rutina de
biblioteca se ejecuta directamente, sin que el enlace dinmico suponga costos adicionales.
Se puede cargar en la memoria varias versiones de una biblioteca y cada programa utiliza
esta informacin sobre la versin para decidir qu copia utilizar.

7.1.4 Superposiciones
Para que un proceso pueda ser mayor que la cantidad de memoria que se le
asigna.
La idea es conservar en memoria slo aquellas instrucciones y datos que se requieren en
un momento determinado.
Cuando se necesitan otras instrucciones, se cargan en el espacio que antes ocupaban las
que ya no se requieren.
Los cdigos de las superposiciones A y B se conservan en disco como imgenes de
memoria absoluta, y el manejador de la superposicin los lee segn se requiera.
Para construir las superposiciones se necesitan algoritmos especiales de relocalizacin y
enlace.

76

Las superposiciones no requieren apoyo especial del SO.


El usuario puede implantarlas en su totalidad utilizando sencillas estructuras de archivo,
leyendo de los archivos a memoria y saltando a esa memoria para ejecutar las
instrucciones recin ledas.
Lo nico que nota el SO es que hay ms E/S que de costumbre.
El programador debe disear y programar adecuadamente la estructura de las
superposiciones.

7.2 Intercambios
Un proceso puede intercambiarse temporalmente, saliendo de la memoria a un
almacenamiento secundario, y regresando luego a la memoria para continuar su ejecucin.
En algoritmos basados en prioridades: Si llega un proceso de mayor prioridad y desea
ejecutarse, el administrador de memoria puede intercambiarlo con un proceso de menor
prioridad para as cargar y ejecutar el de mayor prioridad. Cuando ste termina puede
devolver el proceso de menor prioridad y continuar su ejecucin.
Normalmente un proceso que sale de un intercambio regresar al mismo espacio de
memoria que antes ocupaba.
Mtodo de enlace de direcciones.
Si el enlace se emplea durante el ensamble o la carga, el proceso no puede moverse a
otras localidades.
Si el enlace se emplea durante la ejecucin, entonces es posible intercambiar un proceso
colocndolo en un espacio de memoria distinto.
El tiempo de cambio de contexto es bastante alto.
El tiempo de transferencia total es directamente proporcional a la cantidad de memoria que
se intercambia.
Seria importante saber con precisin cunta memoria est usando un proceso de usuario y
podramos intercambiar slo lo que se utiliza, reduciendo el tiempo de intercambio.
El sistema mantiene una cola de procesos listos que consiste en todos los procesos
cuya imagen de memoria se encuentra en el almacenamiento auxiliar o en memoria y
estn listos para ejecutarse.
Cuando el planificador de la UCP decide ejecutar un proceso:
1. El planificador de la UCP llama al despachador.
2. El Dispatcher comprueba si el siguiente proceso de la cola esta en memoria.
3. Si no esta, y no se cuenta con una regin de memoria libre, el despachador intercambia un
proceso en memoria con el proceso deseado.
Existen otras restricciones para los intercambios.

76

Si queremos intercambiar un proceso, debemos estar seguros de que est completamente


inactivo.
Cualquier solicitud de E/S que est pendiente tiene una importancia especial.
Si un proceso espera una operacin de E/S, puede ser que deseemos intercambiar ese
proceso para liberar su memoria.
Si la E/S tiene acceso asncrono a la memoria del usuario para usar sus buffers de E/S,
entonces el proceso no se puede intercambiar.
Las dos soluciones principales para este problema son:
1 - Nunca intercambiar un proceso con E/S pendiente
2 - Ejecutar las operaciones de E/S slo en los buffers del SO.

7.3 Asignacin de una sola particin


Al usuario se le proporciona la mquina bsica y tiene absoluto control sobre todo el espacio de
memoria.
Ventajas:
Mxima flexibilidad, pues le permite controlar como desee el uso de la memoria.
No requiere hardware especial.
Limitaciones:
No ofrece servicios.
El SO no tiene control absoluto sobre las interrupciones, ni tampoco posee un mecanismo
para procesar llamadas al sistema, o errores, ni espacio para ofrecer la multiprogramacin.
Dividir la memoria en dos particiones:
Una para el usuario y otra para el SO residente. Es posible colocar el SO en la memoria
baja o en la memoria alta.
Como el vector de interrupciones generalmente se encuentra en la memoria baja es ms
frecuente colocar tambin all el SO.
Si el SO reside en memoria baja y un proceso de usuario se ejecuta en memoria alta ,
debemos proteger el cdigo y los datos del SO. Esta proteccin debe ser proporcionada por
el hardware.
Otro problema que hay que tener en cuenta es la carga de los procesos de usuario.
Si las direcciones de usuario estn enlazadas a las direcciones fsicas por medio de la base,
entonces estas direcciones no sern vlidas si la base cambia. Por esto, la direccin base
slo se puede cambiar cuando no se ejecuta ningn programa de usuario.
Existen casos, no obstante, donde es deseable cambiar el tamao del SO (y por
consiguiente la posicin base) durante la ejecucin del programa.
Maneras de modificar el esquema bsico para que cambie dinmicamente el tamao del
SO.

76

Cargar el proceso de usuario en la memoria alta, descendiendo hacia el valor del registro
base. Todo el espacio no utilizado se encuentra en la parte media, por lo que, el proceso de
usuario o el SO pueden extenderse a la memoria no utilizada.
Postergar el enlace de direcciones hasta la ejecucin lo que requiere un apoyo de hardware
ligeramente distinto. Al registro base ahora se le llama registro de relocalizacin. El valor
del registro base se suma a cada direccin generada por un proceso de usuario en el
momento de enviarla a memoria.
Observaciones:
Observe que un programa de usuario nunca ve las direcciones fsicas reales. El programa
de usuario trata con direcciones lgicas.
El hardware de correspondencia de memoria convierte las direcciones lgicas en
direcciones fsicas.
Un cambio en la localidad de inicio slo requiere un cambio en el registro base y la
transferencia de toda la memoria del usuario a las localidades correctas respecto al nuevo
valor base.
Puede requerir que se copie una gran cantidad de memoria, pero permite cambiar la base
en cualquier momento.
Observe tambin que ahora tenemos dos tipos distintos de direcciones:

direcciones lgicas - (en el intervalo 0 a mdx)

direcciones fsicas - (en el intervalo R + 0 a R + mdx siendo R el


valor).

7.4 Asignacin de particiones mltiples


Uno de los esquemas ms sencillos para la asignacin de memoria consiste en dividirla
en varias particiones de tamao fijo.
Cada particin puede contener exactamente un proceso.
El nivel de multiprogramacin est limitado por el nmero de particiones.
Cuando una particin esta libre, se selecciona un proceso de la cola de entrada y se carga
en la particin libre; cuando el proceso termina la particin esta disponible para otro.
Se usa sobre todo en entornos de procesamiento por lotes.

7.4.1 Esquema bsico


El SO conserva una tabla que indica cules partes de la memoria estn disponibles y
cules estn ocupadas. Inicialmente toda la memoria est disponible para los procesos
de usuario.
1. Cuando llega un proceso y necesita memoria, se busca un hueco de tamao suficiente para
ese proceso.
2. Si lo encontramos, slo asignamos la cantidad de memoria necesaria, quedando disponible
el resto para satisfacer solicitudes posteriores.
Observaciones:
En general, en cualquier momento hay un conjunto de huecos de distintos tamaos y
disperses por toda la memoria.
Si un nuevo hueco es adyacente a otros, los fusionamos formando uno mayor.

76

Estas funciones son llevadas a cabo por el OAN.


Presenta el problema de fragmentacin externa y el de fragmentacin interna.
Fragmentacin externa: se presenta cuando el espacio de memoria libre es suficiente para
atender una solicitud pero no es contiguo.
Fragmentacin interna: se presenta cuando una parte de la memoria pertenece a una particin
pero no se usa.
Estas estrategias son las mas comunes para seleccionar un hueco libre de un conjunto
de huecos disponibles.
Primer ajuste: Asignar el primer hueco que tenga el tamao suficiente. La bsqueda
puede comenzar en el inicio del conjunto de huecos o a partir de donde termin la
bsqueda del primer hueco anterior. Podemos dejar de buscar en el momento en que
encontremos un hueco libre de tamao suficiente.
Mejor ajuste: Asignar el hueco ms pequeo que tenga el tamao suficiente. Debemos
recorrer toda la lista, a menos que sta se mantenga ordenada por tamao. Esta estrategia
produce el hueco sobrante ms pequeo.
Peor ajuste: Asignar el hueco ms grande. Una vez ms, debemos buscar en toda la lista,
a menos que est ordenada por tamao. Esta estrategia produce el hueco sobrante ms
grande, el cual puede ser ms til que el hueco sobrante ms pequeo producido por la
estrategia del mejor ajuste.
Estos algoritmos padecen fragmentacin externa.
Como varios procesos pueden residir en memoria al mismo tiempo, sta se debe proteger
utilizando registros base y limite que permiten la relocalizacin dinmica durante la ejecucin.
El registro base contiene el valor de la menor direccin fsica.
El registro limite contiene el intervalo de direcciones lgicas.
Cada una de las direcciones lgicas debe ser menor que el registro limite; relocalizamos
dinmicamente la direccin lgica sumando el valor del registro base y esta direccin relocalizada
se enva a memoria
Cuando el planificador de la CPU selecciona este proceso, el despachador carga los valores
correctos en los registros base y limite.

7.4.2 Planificacin a largo plazo


El planificador a largo plazo tiene en cuenta los requisitos de memoria de cada proceso y la
cantidad de memoria disponible para determinar a qu procesos se les asigna.
Cuando a un programa se le asigna espacio, se carga en memoria. Entonces puede competir por
la CPU. Cuando termina un proceso, libera su memoria, y el planificador de la CPU puede llenarla
con otro proceso de la cola de entrada.
El planificador a largo plazo puede ordenar la cola de entrada de acuerdo con algn
algoritmo de planificacin. La memoria se asigna a los procesos hasta que finalmente
no haya ningn bloque de memoria (hueco) de tamao suficiente para contener el
proceso. Entonces el planificador a largo plazo puede o recorrer la cola de entrada para
ver si pueden satisfacerse las solicitudes de menor cantidad de memoria de algn
proceso de menor prioridad.
Con este esquema casi no hay fragmentacin interna (o no la hay), sin embargo, podemos tener
fragmentacin externa.

76

7.4.3 Compactacin
Una solucin para el problema de la fragmentacin externa es la compactacin, se utiliza
para desfragmentar la memoria y obtener el mximo lugar vaco.
El objetivo consiste en desplazar el contenido de la memoria para colocar junta toda la
memoria libre en un solo bloque de gran tamao.
La compactacin no siempre es posible. Al mover procesos, para que estos procesos
puedan ejecutarse en sus nuevas posiciones, hay que relocalizar todas las direcciones
internas.
Si la relocalizacin es esttica y se efecta durante el ensamblado o la carga, la
compactacin no puede realizarse.
La compactacin slo es posible si la relocalizacin es dinmica y se efecta en el
momento de la ejecucin. Slo requiere mover el programa y los datos, y luego cambiar el
registro base para reflejar la nueva direccin base.
El algoritmo de compactacin ms sencillo consiste en mover todos los procesos
hacia un extremo de la memoria; todos los huecos se mueven en la direccin
contraria produciendo un gran hueco de memoria disponible. Es Bastante
costoso.
Si la cola contuviera slo un proceso podramos satisfacer esa solicitud en particular
moviendo el proceso a otro lugar. Esta solucin no crea un solo hueco de gran tamao, si
crea uno de tamao suficiente para atender la solicitud inmediata.
Se puede combinar el intercambio con la compactacin para liberar memoria y luego
compactar, obviamente si la relocalizacin es esttica cuando el proceso se reintegre a
memoria deber volver a su particin original. Cundo el proceso se descarga, se libera su
memoria y quiz se reutilice para algn otro proceso. Cuando el proceso tiene que
reincorporarse por intercambio, pueden aparecer varios problemas.
o

Si se utiliza la relocalizacin esttica, el proceso debe reincorporarse exactamente a


las mismas posiciones de memoria que antes ocupaba.

Con relocalizacin dinmica, entonces el proceso se puede reincorporar a una


localidad diferente.

Una estrategia para la compactacin consiste en descargar los procesos que hay
que mover, y reincorporarlos a localidades de memoria diferentes.

7.5 Registros base mltiples


Una forma de reducir la cantidad de fragmentacin externa es dividir en varias partes la
memoria que necesita un proceso.
Cada parte es menor al todo y, por tanto, ms fcil de acomodar en la memoria.
Para esto hay que tener mltiples registros base con un mecanismo para traducir las
direcciones lgicas a fsicas.
Una forma de lograr esto es dividir la memoria en dos partes disjuntas:

El sistema tiene dos pares de registros base y limite. La memoria se divide por la
mitad usando el bit de direccin de orden superior.

Los compiladores y ensambladores colocan valores de slo lectura en la memoria


alta y las variables en la memoria baja.

Se asocian bits de proteccin a cada par de registros y pueden asegurar que la


memoria alta sea slo de lectura.

Otra manera de lograr esto es separar un programa en dos partes: cdigo y datos:

76

La CPU sabe si quiere una instruccin o datos.

Se proporcionan dos pares de registros base y limite: uno para las


instrucciones y otro para los datos.

El par de registros base y lmite para las instrucciones es, automticamente, de slo
lectura.

Al separar programas y datos, y relocalizarlos por separado, podemos compartir


programas entre varios usuarios;

Utilizamos mejor la memoria.

Se reduce la fragmentacin y las copias mltiples del mismo cdigo.

7.6 Paginacin
Como la memoria asignada a un proceso concreto debe ser contigua, no puede utilizarse esta
memoria dispersa. Este problema tiene dos soluciones generales: la compactacin y la
paginacin.
La paginacin permite que la memoria de un proceso no sea contigua, y que a un
proceso se le asigne memoria fsica donde quiera que sta est disponible.
Evita el gran problema de acomodar trozos de memoria de tamao variable en el
almacenamiento auxiliar.
Los problemas de fragmentacin son tambin frecuentes con el almacenamiento auxiliar,
excepto que el acceso es mucho ms lento, por lo que la compactacin es imposible.
Para paginar se necesitan 4 tablas: 3 en software y 1 en hardware.
o

Hard: Tabla de dispositivos.

Soft: Tabla de paginas, de direccionas y de marcos.

La memoria fsica se divide en bloques de tamao fijo llamados marcos.


El almacenamiento auxiliar se divide en bloques de tamao fijo del mismo tamao que los
marcos de memoria.
La memoria lgica tambin se divide en bloques del mismo tamao llamados
pginas.
Cuando un proceso se va a ejecutar, sus pginas se cargan desde el almacenamiento
auxiliar en cualesquiera de los marcos disponibles.
El tamao de la pgina, al igual que el tamao del marco, est definido por el hardware.
El tamao de una pgina generalmente es una potencia de 2. Si el tamao de pgina es
2, entonces los n bits de orden inferior de la direccin lgica representan el
desplazamiento en la pgina y los bits restantes, de orden superior, indican el nmero de
pgina.
La paginacin es una forma de relocalizacin dinmica.
Cada direccin lgica est enlazada a la direccin fsica mediante el hardware de
paginacin.
La paginacin es semejante al uso de una tabla de registros base, uno para cada marco de
memoria.
No presenta fragmentacin externa, cualquier marco libre se puede asignar a un proceso
que lo necesite; adems la paginacin es una forma de relocalizacin dinmica, o sea que
c/direccin lgica est enlazada a la direccin fsica por medio del hardware de paginacin.
Si los requisitos de memoria de un proceso no coinciden con los lmites de las pginas, el
ltimo marco asignado puede estar parcialmente vaco, produciendo fragmentacin
interna.

76

Si el tamao del proceso es independiente del tamao de pgina, esperamos una


fragmentacin interna de media pgina por proceso.
Cada SO tiene sus propios mtodos para almacenar tablas de pginas. La mayora asigna
una tabla de pginas para cada proceso.
En el bloque de control del proceso (PCB) se almacena un apuntador a la tabla de pginas
junto con los valores de registros.
Cuando al despachador se le indica que inicie un proceso, debe volver a cargar los
registros del usuario y definir los valores correctos de hardware para la tabla de pginas
usando la tabla de pginas de usuario almacenada.
Posibilidad de compartir cdigo en comn.
Clara separacin entre la perspectiva del usuario de la memoria y la memoria fsica real.
Cada direccin generada por la CPU se divide en dos partes:

Un nmero de pgina (p)

Un desplazamiento en la pgina (d)

Nmero de pgina: ndice en una tabla de pginas, que contiene la direccin base para cada
pgina de la memoria fsica.
Direccin base: se combina con el desplazamiento en la pgina para definir la direccin de
memoria fsica que se enva a la unidad de memoria.
Observaciones:
Una pgina slo existe cuando el programa est cargado en memoria, o sea cuando el
programa pasa a ser proceso.
En multiprogramacin bsica, la tabla de pginas contiene a todas las pginas.
En multiprogramacin avanzada slo las que estn en memoria principal; ya que hay
memoria virtual y sta tiene su propia tabla de pginas (ubicada en memoria principal), la
cual indica dnde se encuentran las pginas guardadas en el disco.

7.6.2 Planificacin a largo plazo (OAN)


1. Cuando un proceso llega para ejecutarse, el OAN examina su tamao, el cual est
expresado en pginas.
2. Luego, el planificador comprueba la memoria disponible.
3. Cada pgina de usuario necesita un marco; por tanto si el proceso requiere N paginas debe
haber N marcos disponibles en memoria; si los hay, el planificador a largo plazo los asigna
al proceso.
4. La primera pgina del proceso se carga en uno de los marcos asignados y el nmero del
marco se registra en la tabla de pginas para este proceso, y as con todas las paginas.

7.6.3 Implantacin de la tabla de pginas


Caso 1:
Se implanta como un conjunto de registros dedicados.

76

Cada acceso a memoria debe pasar por el mapa de paginacin, la eficiencia es un


elemento principal.
El despachador de la CPU vuelve a cargar estos registros de la misma manera que carga los
dems.
Las instrucciones para cargar o modificar los registros de la tabla de pginas son
privilegiadas, por lo que slo el SO puede cambiar el mapa de memoria.
Es satisfactorio si la tabla es pequea.
Caso 2:
La tabla de pginas se conserva en la memoria principal y un registro base de tabla de
pginas(PTBR) apunta a la tabla de pginas.
Para cambiar entre tablas de pginas slo hay que modificar este registro, lo que reduce en
gran medida el tiempo de cambio de contexto.
Tiene un acceso a memoria mas lento: Si queremos llegar a la localidad i:
1. Primero debemos utilizar el ndice de la tabla de pginas, usando el valor de
desplazamiento del PTBR para el nmero de pgina i. Esta tarea requiere acceso a
memoria.
2. Nos proporciona el nmero de marco, el cual se combina con el desplazamiento en
la pgina para producir la direccin real.
En este esquema se necesitan dos accesos a memoria para tener acceso a una palabra
(uno para la entrada de la tabla de pginas, otro para la palabra).
Solucin comn: utilizar una memoria especial, de tamao pequeo, llamada registros
asociativos o buffers de traduccin con bsqueda anticipada.
Caso 3:
Utilizar una memoria especial de tamao pequeo, llamada registros asociativos (tabla del
hardware) o buffers de traduccin con bsqueda anticipada (TLB).
Los registros asociativos son los registros mas rpidos que hay en el sistema. La bsqueda
es muy rpida pero el hardware es muy costoso.
Contienen slo algunas de las entradas de la tabla de pginas.
Cuando la CPU genera una direccin lgica, su nmero de pgina se presenta a un
conjunto de registros asociativos que contienen nmeros de pgina y sus nmeros de
marco correspondientes.

Si el nmero de pgina se encuentra en los registros asociativos, su nmero de


marco est inmediatamente disponible y se utiliza para acceder a la memoria.

Si el nmero de pgina no se encuentra en los registros asociativos, hay que


efectuar una referencia de memoria a la tabla de pginas. Cuando se obtiene el
nmero de marco, podemos usarlo para tener el acceso deseado a la memoria,
adems, aadimos los nmeros de pgina y marco a los registros asociativos, para
que puedan localizarse con rapidez en la siguiente referencia.

7.6.4 Pginas compartidas

76

El cdigo rentrante (tambin llamado cdigo puro) es un cdigo que no se modifica a s


mismo. Si el cdigo es rentrante, nunca cambia durante la ejecucin, de manera que
dos o ms procesos pueden ejecutar el mismo cdigo al mismo tiempo.
Cada proceso tiene su propia copia de los registros y su almacenamiento para contener los
datos durante la ejecucin.
Los datos variarn para cada proceso.
Slo es necesario conservar una copia del editor en la memoria fsica.
Cada tabla de pginas de los usuarios corresponde a la misma copia fsica del editor, pero
las pginas de datos corresponden a marcos diferentes.

7.6.5 Proteccin
La proteccin de memoria en un entorno paginado se logra por medio de bits de proteccin
asociados a cada marco.
Estos bits se conservan en la tabla de pginas.
Un bit puede definir si una pgina es de slo lectura o de lectura y escritura.
Un intento de escribir en una pgina de slo lectura ocasiona una trampa de hardware para
el SO.
Esta estrategia de proteccin puede ampliarse fcilmente para ofrecer un nivel de
proteccin ms fino.
En estos casos sera un derroche crear una tabla de pginas con registros para cada pgina
del intervalo de direcciones. La mayor parte de esta tabla no se utilizara, pero ocupara un
valioso espacio en memoria.

7.6.6 Dos perspectivas de la memoria


La diferencia entre la perspectiva que el usuario tiene de la memoria y la memoria fsica
real se concilia a travs del hardware de traduccin de direcciones.
Las direcciones lgicas se traducen a direcciones fsicas. Esta correspondencia se oculta al
usuario y es controlada por el SO.
Con la multiprogramacin, el sistema puede utilizar toda la memoria; sin embargo, los
usuarios no pueden usar ms memoria que antes, ya que el espacio de direcciones lgicas
no ha aumentado.
El SO controla esta correspondencia y puede activarla para el usuario o desactivarla para el
SO.
Tabla de marcos contiene la informacin de la asignacin de memoria fsica; tiene una
entrada por cada marco fsico de pgina, que indica si el marco est libre o asignado y, de
estar asignado, a qu pgina de qu proceso.
El SO mantiene una copia de la tabla de pginas para cada usuario, al igual que mantiene
una copia del contador de instrucciones y del contenido de los registros. Esta copia se
emplea para traducir las direcciones lgicas a direcciones fsicas. Tambin la utiliza el
despachador de la CPU para definir la tabla de pginas del hardware.

7.7 Segmentacin
Un aspecto importante de la administracin de memoria (que desapareci con la paginacin) es la
separacin de la perspectiva del usuario y la memoria fsica real.

76

Se prefiere pensar en la memoria como un conjunto de segmentos de tamao variable,


sin ningn orden en especial Donde cada uno de estos segmentos tiene una longitud
variable, y la longitud est definida intrnsecamente por el propsito del segmento en
el programa.
Los elementos dentro de un segmento se identifican por su desplazamiento a partir del
inicio del segmento.
Un espacio de direcciones lgicas se compone de un conjunto de segmentos, cada uno de
los cuales tiene un nombre y una longitud.
Las direcciones especifican el nombre del segmento y el desplazamiento dentro de l.
Los segmentos se numeran y se hace referencia a ellos mediante un nmero de segmento,
en vez de por un nombre.
Normalmente el programa de usuario se ensambla (o compila) y el ensamblador (o
compilador) construye automticamente segmentos que reflejan el programa de entrada.

7.7.2 Hardware:
El usuario se puede referir a los objetos de un programa utilizando direcciones
bidimensionales.
La memoria fsica real sigue siendo, por supuesto, una secuencia unidimensional de
palabras.
Debemos definir una forma de implantar la correspondencia entre direcciones
bidimensionales definidas por el usuario y direcciones fsicas unidimensionales. Esta
correspondencia se logra por medio de una tabla de segmentos.
Una direccin lgica consiste en dos partes (s,d):
o

Un nmero de segmentos, s

Un desplazamiento dentro del segmento, d.

El nmero de segmento se utiliza como ndice en la tabla de segmentos.


El desplazamiento d de la direccin lgica debe estar entre 0 y el lmite del segmento.
Cada entrada de la tabla de segmentos tiene una base y un lmite para el segmento.
Si el desplazamiento es vlido, se suma a la base del segmento para producir la direccin
en memoria fsica de la palabra deseada.
La tabla de segmentos es un arreglo de pares de registros base y lmite.
La tabla de segmentos tiene una entrada separada para cada segmento, proporcionando la
direccin de inicio del segmento en la memoria fsica (la base) y la longitud del segmento
(el lmite).

7.7.3 Implantacin de las tablas de segmentos


Una tabla de segmentos puede ubicarse en registros rpidos o en memoria, se pueden
efectuar referencias rpidas a una tabla de segmentos almacenada en registros.
En el caso donde un programa puede consistir en un gran nmero de segmentos, no es
factible conservar la tabla de segmentos en registros, por lo que debemos mantenerla en
memoria.
Un registro base de la tabla de segmentos (STBR) apunta a la tabla de segmentos.
Se usa un registro de longitud de la tabla de segmentos (STBR).
Para una direccin lgica (s,d):
1. Comprobamos si el nmero de segmento s es legal (es decir, s < STBR).

76

2. Sumamos el nmero de segmento al STBR, lo que da como resultado la direccin (STBR


+ s) en memoria de la entrada de la tabla de segmentos.
3. Se lee esta entrada de la memoria
4. Comparamos el desplazamiento con la longitud del segmento y calculamos la direccin
fsica de la palabra deseada como la suma de la base del segmento ms el
desplazamiento.
Al igual que ocurre con la paginacin, esta transformacin requiere dos referencias a
memoria por cada direccin lgica, lo que reduce en un factor de 2 el rendimiento del
sistema de computacin, a menos que se haga algo al respecto.
La solucin normal consiste en emplear un conjunto de registros asociativos para que
contengan las entradas (de la tabla de segmentos) usadas ms recientemente.

7.7.4 Proteccin y compartimiento


Asociacin de la proteccin a los segmentos.
Tenemos algunos segmentos que son instrucciones, mientras que otros son datos.
El hardware de transformacin de memoria consultar los bits de proteccin asociados a
cada entrada de la tabla de segmentos para evitar accesos ilegales a la memoria.
Compartimiento de cdigo o datos.
Cada proceso tiene una tabla de segmentos asociada a su PCB (bloque de control de
proceso), utilizada por el despachador para definir la tabla de segmentos del hardware
cuando se asigna la CPU a ese proceso.
Los segmentos se comparten cuando las entradas de las tablas de segmentos de dos
procesos distintos apuntan a las mismas localidades fsicas.
El compartimiento tiene lugar a nivel de segmento, de manera que cualquier informacin
puede compartirse si est definida como un segmento. Pueden compartirse varios
segmentos.
Si tratamos de compartir un segmento que hace referencia a si mismo, todos los procesos
que lo comparten deben definir el segmento de cdigo compartido con el mismo nmero
de segmento.
Los segmentos de slo lectura (sin apuntadores) pueden compartirse con nmeros de
segmento distintos, al igual que muchos segmentos de cdigo que no se refieren a s
mismos de manera directa, slo indirecta.

7.7.5 Fragmentacin
El OAN debe encontrar y asignar memoria para todos los segmentos de un programa de
usuario.
La asignacin de memoria es un problema de asignacin dinmica del almacenamiento,
que generalmente se resuelve con el algoritmo del primer ajuste o del mejor ajuste. La
segmentacin puede entonces ocasionar fragmentacin externa.
Como la segmentacin es, por naturaleza, un algoritmo de relocalizacin dinmica, cuando
lo deseemos podemos compactar la memoria.
Si el planificador de la CPU debe esperar por culpa de un proceso, debido a algn problema
de asignacin de memoria, puede omitirlo o no al recorrer la cola de la CPU en busca de un
proceso ms pequeo, de menor prioridad, para ejecutarlo.
En un extremo, podemos definir que cada proceso sea un segmento. Se reduce al esquema
de las particiones de tamao variable.

76

En el otro extremo, cada palabra puede colocarse en su propio segmento, donde se elimina
por completo la fragmentacin externa; Pero cada palabra necesitara un registro base
para su relocalizacin, duplicando la utilizacin de memoria.
Generalmente, si el tamao promedio de los segmentos es pequeo, la fragmentacin
externa tambin ser pequea.

7.7.6 Observaciones:
Un segmento es una unidad lgica de informacin que puede incluir tanto cdigo como
datos, en cambio una pgina es algo fsico.
En segmentacin se especifica una direccin mediante un nombre (numero) de segmento y
desplazamiento, en cambio en paginacin el usuario especifica una sola direccin que el
hardware separa para producir un numero de pgina y desplazamiento, todo invisible al
usuario (programador)
Tanto la segmentacin como la paginacin llevan a la comparticin de cdigo.
La segmentacin posibilita el direccionamiento relativo dentro del espacio lgico.

7.8 Segmentacin paginada


La solucin que se adopt fue paginar los segmentos.
La diferencia: la entrada de la tabla de segmentos no contiene la direccin base del
segmento, sino la direccin base de una tabla de pginas para este segmento.
El nmero de pgina se usa como ndice para la tabla de pginas a fin de obtener el
nmero de marco. Y el nmero de marco se combina con el desplazamiento en la pgina
para formar una direccin fsica.
Ahora debemos tener una tabla de pgina particular para cada segmento.
Como cada segmento tiene limitada su longitud por su entrada de la tabla de segmentos,
la tabla de pginas no necesita ser de tamao completo. Slo requiere tantas entradas
como las que realmente se necesitan.
La ltima pgina de cada segmento en general no estar llena, por lo que tendremos en
promedio media pgina de fragmentacin interna por segmento, en consecuencia, aunque
hemos eliminado la fragmentacin externa, hemos introducido la fragmentacin interna y
aumentado el espacio consumido por la tabla.
Observaciones:
Si la compilacin es absoluta, le memoria debe estar pre-particionada, y, para cada
particin habr una cola.
Si la compilacin es relativa, se puede colocar un proceso en cualquier particin en donde
quepa, entonces no habr una cola por particin, sino una para todas.
Tambin dentro de la compilacin relativa se puede hablar de paginacin y segmentacin.
La relocalizacin de una direccin relativa a una direccin fsica es tarea del hardware, lo
hace sumndole el registro base a la direccin relativa.

76

8 - Memoria Virtual
La memoria virtual es una tcnica que permite la ejecucin de procesos que
pueden no estar completamente en memoria.
La principal ventaja es que los programas pueden ser mayores que la memoria
fsica.
Abstrae la memoria principal para formar un arreglo uniforme muy grande de
almacenamiento, separando la memoria lgica que contempla el usuario de la
memoria fsica.

8.1 Motivacin
Requisito bsico: todo el espacio de direcciones lgicas de un proceso debe encontrarse
en memoria fsica antes de que el proceso se pueda ejecutar.
Esta restriccin limita el tamao de un programa al tamao de la memoria fsica.
La capacidad de ejecutar un programa que se encuentra parcialmente en memoria tendra
varias ventajas:
o

Un programa ya no estara restringido por la cantidad de memoria fsica disponible.

Podran ejecutarse ms programas al mismo tiempo, aumentando la utilizacin de la


CPU y la productividad, pero sin incrementar el tiempo de respuesta o el tiempo de
retorno.

Se requerira menos E/S por lo que se ejecutaran ms rpido.

La memoria virtual es la separacin de la memoria lgica del usuario, de la memoria fsica.


Las superposiciones casi desaparecen.
Se implanta mediante la paginacin por demanda o en un sistema de segmentacin.
Se implanta mediante la paginacin por demanda o la segmentacin por demanda.

8.2 Paginacin por demanda


Los procesos residen en memoria secundaria. Cuando queremos ejecutar un proceso, lo
metemos en la memoria utilizando un intercambiador perezoso.
Un intercambiador perezoso nunca reincorpora una pgina a memoria a menos que se
necesite.
Como ahora consideramos un proceso como una secuencia de pginas la mejor opcin es
un paginador ya que est en relacin con la paginacin por demanda.
El paginador slo trae a memoria las pginas necesarias reduciendo el tiempo de
intercambio y la cantidad de memoria fsica necesaria.
Este esquema requiere apoyo del hardware. Generalmente se aade un bit ms a cada
entrada de la tabla de pginas: un bit que puede asignarse como vlido o invlido.
Cuando este bit est asignado como vlido, este valor indica que la pgina asociada se
encuentra en memoria. Si el bit est como invlido, indica que la pgina est en disco.
En el caso extremo, podemos comenzar la ejecucin de un proceso sin pginas en
memoria.
En teora, algunos programas pueden acceder a una nueva pgina de memoria con cada
instruccin que ejecutan.

76

Debemos corregir la omisin de una


pagina:
1. Consultamos
una
tabla
correspondiente al proceso para
determinar si la referencia fue un
acceso a memoria vlido o invlido.
2. Si fue invlido, abortamos el proceso.
Si se trat de una referencia vlida,
pero an no hemos trado la pgina, la
incorporamos.
3. Encontramos un marco libre.
4. Planificamos una operacin para leer
de disco la pgina deseada en el
marco recin asignado.
5. Cuando ha concluido la lectura del
disco, modificamos la tabla interna
que se conserva junto con el proceso y
la tabla de pginas para indicar que
ahora la pgina se encuentra en
memoria.
6. Reiniciamos la instruccin interrumpida por la trampa de direccin ilegal y el proceso
puede acceder a la pgina como si siempre se hubiera encontrado en memoria.
Como almacenamos el estado del proceso interrumpido, al ocurrir la falla de pgina,
podemos reanudar el proceso exactamente en el mismo punto y estado, excepto que
ahora la pgina deseada se encuentra en memoria y se puede acceder a ella.
El hardware:
Tabla de pginas: marcar una entrada como invlida usando un bit vlido/invlido o un
valor especial de los bits de proteccin.
Memoria secundaria. Contiene las pginas que no se conservan en la memoria principal.
Casi siempre es un disco de alta velocidad, que se conoce como dispositivo de
intercambios; la seccin del disco que se usa para este fin se denomina espacio de
intercambios o almacenamiento auxiliar.
Observaciones:
Capacidad para reiniciar cualquier instruccin despus de una falla de pgina.
Si la falla de pgina ocurre al buscar la instruccin, podemos reiniciar efectuando de nuevo
la bsqueda.
Si la falla ocurre al buscar un operando, debemos buscar de nuevo la instruccin,
decodificarla y luego buscar el operando.
La principal dificultad surge cuando una instruccin puede modificar varias localidades
distintas.

76

Si alguno de los bloques (fuente o destino) sobrepasa un lmite de pgina, puede ocurrir
una falla de pgina despus de haber efectuado parte de la transferencia.
Si los bloques fuente y destino se superponen es probable que se modifique el bloque
fuente, por lo que no podramos reiniciar la instruccin.
Este problema se resuelve de dos maneras, dependiendo del modelo.
o

El micro cdigo calcula y trata de acceder a ambos extremos de los dos bloques. Si
va a ocurrir una falla de pgina, suceder en esta etapa, antes de modificar algo.

Registros temporales para contener los valores de las localidades sobrescritas. Si se


presenta una falla de pgina, todos los valores que haba antes de que ocurriera la
trampa regresan a la memoria.

Un problema arquitectnico similar se presenta en mquinas que utilizan modos de


direccionamiento especiales, incluyendo modos de autoincremento y autodecremento.
Estos modos de direccionamiento utilizan un registro como apuntador e incrementan o
reducen automticamente el registro segn se indique.
Una solucin es crear un nuevo registro especial de estado para anotar el nmero de
registro y la cantidad modificada para cualquier registro que cambie durante la ejecucin
de una instruccin.

8.3 Rendimiento de la paginacin por demanda


TAE: tiempo de acceso efectivo.
TAM: tiempo de acceso a memoria.
Mientras no tengamos fallas de pgina: TAE = TAM
Si ocurre una falla de pgina:

Sea p la probabilidad de una falla de pgina (0 p 1).

TAE = (1-p) x TAM + p x tiempo de falla de pgina


Una falla de pgina desencadena la siguiente secuencia:
1. El hardware de paginacin traduce la direccin mediante la tabla de pginas, y observa
que el valor del bit es invlido.
2. Trampa para el SO.
3. Guardar los registros de usuario y el estado del proceso.
4. Determinar si la interrupcin fue una falla de pgina.
5. Verificar que la referencia a la pgina haya sido legal y determinar la ubicacin de la
pgina en el disco.
6. Leer de disco a un marco libre:
1.

Esperar en la cola del dispositivo hasta que se atienda la solicitud de lectura.

2. Esperar durante el tiempo de posicionamiento o de latencia (o ambos) del


dispositivo.
3.

Comenzar la transferencia de la pgina al marco libre.

7. Durante la espera, asignar la CPU a otro usuario (planificacin de la CPU; opcional).


8. Interrupcin del disco (fin de la E/S).
9. Guardar los registros y el estado del proceso del otro usuario.
10. Determinar si la interrupcin provino del disco.
11. Corregir la tabla de pginas y las dems tablas para indicar que la pgina deseada se
encuentra en memoria.

76

12. Esperar que la CPU se asigne nuevamente a este proceso.


13. Restablecer los registros de usuario, estado del proceso y la nueva tabla de pginas, y
reanudar la instruccin interrumpida.
Es posible que no sean necesarios todos los pasos para todos los casos.
Componentes principales del tiempo de servicio de la falla de pgina:
1. Servir la interrupcin de falla de pgina.
2. Leer la pgina.
3. Reanudar el proceso.
Si una cola de procesos espera al dispositivo, tenemos que aadir el tiempo de
cola.
El TAE es directamente proporcional a la tasa de fallas de pgina.
La E/S de disco para el espacio de intercambios generalmente es ms rpida que con el
sistema de archivos.
Es posible que el sistema obtenga una mejor productividad de la paginacin copiando todo
el contenido del archivo al espacio de intercambios al iniciar el proceso, y luego efectuar la
paginacin por demanda desde el espacio de intercambios.
Los sistemas con espacio de intercambios limitado, tambin pueden emplear este esquema
cuando se usan archivos binarios.
Las pginas solicitadas de estos archivos se traen directamente del sistema de archivos.
Sin embargo, cuando se solicita el remplazo de pginas, stas pueden sobrescribirse y
leerse de nuevo del sistema de archivos si se necesitan.
Otra opcin ms consiste en solicitar inicialmente pginas del sistema de archivos, pero
escribirlas en el espacio de intercambio conforme se remplazan.

Esta estrategia asegura que slo se lean las pginas necesarias del sistema de
archivos.

8.4 Reemplazo de pginas

Si un proceso de 10 pginas slo emplea la mitad de ellas, entonces la paginacin por demanda
ahorra la E/S necesaria para cargar 5 pginas que nunca se usarn. Si aumentamos nuestro nivel
de multiprogramacin, estamos sobreasignando la memoria.

76

Si ocurre una falla de pgina: El hardware genera una trampa para el SO. El SO consulta sus tablas
internas para ver si se trata de una falla de pgina o de un acceso ilegal a la memoria.
El SO determina en qu lugar del disco reside la pgina deseada, pero luego descubre que no
quedan marcos libres en la lista; se est usando toda la memoria.
El SO tiene varias opciones, como abortar el proceso del usuario. Sin embargo, la paginacin por
demanda es algo que el SO hace para mejorar la utilizacin y la productividad del sistema de
computacin. Podemos descargar un proceso liberando todos sus marcos y reduciendo el nivel de
multiprogramacin.
El remplazo de pginas adopta la estrategia siguiente:
Si no hay ningn marco libre, encontramos uno que no se est utilizando en ese
momento y lo liberamos.
Ahora se modifica la rutina de servicio de la falla de pgina para incluir el remplazo de pgina:
1. Encontrar la ubicacin en disco de la pgina deseada.
2. Buscar un marco libre:
- Si hay un marco libre, utilizarlo.
- De lo contrario, utilizar un algoritmo de remplazo de pgina a fin de seleccionar un
marco vctima.
- Escribir la pgina vctima en disco; ajustar las tablas de marcos y pginas.
3. Leer la pgina deseada en el (nuevo) marco libre; modificar las tablas de pginas y marcos.
4. Reanudar el proceso de usuario.
Desventaja:
Si no quedan marcos libres, se requieren dos transferencias de pginas (una de entrada y una de
salida). Esta situacin duplica el tiempo de servicio de la falla de pgina y en consecuencia
aumenta el TAE.
Solucin:
El hardware pone a 1 el bit de modificacin para una pgina cuando en ella se escribe una palabra
o un byte, indicando que ha sido modificada.

Si el bit est activo, sabemos que la pgina ha sido modificada desde que se ley de disco.
En este caso, debemos escribir la pgina en disco.

Si el bit de modificacin no est activo, la pgina no ha sido modificada desde que se ley
en memoria. Por tanto, si la copia de la pgina en disco no ha sido sobrescrita podemos
evitar la escritura en disco de esta pgina, pues ya se encuentra all.

Con la paginacin sin demanda, las direcciones de usuario se corresponden con


direcciones fsicas, permitiendo que ambos conjuntos de direcciones sean bastante
diferentes. Con la paginacin por demanda, el espacio de direcciones lgicas ya no est
restringido por la memoria fsica.
Para implantar la paginacin por demanda debemos resolver dos grandes problemas:

76

Desarrollar un algoritmo de asignacin de marcos y un algoritmo de remplazo de pginas.


Si tenemos varios procesos en memoria, debemos decidir cuntos marcos asignar a cada
uno.
Cuando se requiere un remplazo de pgina es necesario seleccionar los marcos que se
remplazarn.

8.5 Algoritmos de remplazo de pginas


Evaluamos un algoritmo:
a) Ejecutndolo para una serie determinada de referencias a memoria y calculando el nmero
de fallas de pgina.
b) Podemos generar artificialmente las series de referencias o rastreando un sistema y
anotando la direccin de cada referencia a memoria. Genera muchos datos, para reducirlos
observamos:
o

Para un tamao de pgina dado necesitamos considerar slo el nmero de pgina,


no toda la direccin.

Si tenemos una referencia a una pgina p, entonces ninguna referencia a la pgina


p que se presente inmediatamente despus provocar una falla de pgina.

8.5.1 Algoritmo FIFO


El primero en entrar es el primero en salir (FIFO, first-in, first-out). Asocia a cada pgina el
instante en el cual se trajo a memoria. Cuando hay que remplazar una pgina, se elige la
ms antigua.
Es fcil de comprender y programar, pero su rendimiento no siempre es bueno.
Aunque para el remplazo seleccionemos una pgina que est activa, todo funciona
correctamente. Despus de descargar una pgina activa para incorporar una nueva,
provocaremos casi de inmediato una falla por la pgina activa. Tendremos que remplazar
otra pgina para devolver a memoria la pgina activa.
Presenta la Anomala de Belady que refleja que, para algunos algoritmos de remplazo de
pginas, la tasa de fallas de pgina puede aumentar al incrementarse el nmero de marcos
asignados.

8.5.2 Algoritmo ptimo


Tiene la menor tasa de fallas de pgina de todos los algoritmos.
Un algoritmo ptimo nunca presentar la anomala de Belady.
Remplazar la pgina que no se usar durante el mayor periodo de tiempo.
Es imposible implantar el algoritmo de remplazo de pginas ptimo, y se utiliza sobre todo
para estudios comparativos.

8.5.3 Algoritmo LRU


Remplazaremos la pgina que no se ha utilizado durante el mayor periodo de tiempo.

76

Es ms, si S es la inversa de la serie de referencias S, podemos demostrar que la tasa de


fallas de pgina del algoritmo OPT para S es la misma tasa de fallas de pgina del
algoritmo LRU para S.
El problema principal es cmo implantar el remplazo LRU. Un algoritmo LRU para el
remplazo de pginas puede requerir una ayuda considerable del hardware. El problema
consiste en determinar un orden para los marcos definido por el instante del ltimo uso.
Son factibles dos implantaciones:
o

Contadores: a cada entrada de la tabla de pginas asociamos un registro de


instante de uso y aadirnos a la CPU un reloj lgico o contador. El reloj se
incrementa con cada referencia a memoria y el contenido se copia al registro de
instante de uso en la tabla de pginas para esa pgina. Remplazamos la pgina con
el menor valor. Hay que tener en cuenta el desbordamiento del reloj.

Pila: mantener una pila de nmeros de pgina. Cuando se hace referencia a una
pgina, se saca de la pila y se coloca en la parte superior. En la parte superior de la
pila siempre se encuentra la pgina ms recientemente usada, y en la parte inferior,
la menos recientemente usada. Puesto que las entradas deben sacarse de la mitad
de la pila, puede implantarse mejor con una lista doblemente ligada.

8.5.4 Algoritmos aproximados al LRU


Muchos sistemas ofrecen cierta ayuda, en la forma de un bit de referencia. El hardware coloca a
(1) el bit de referencia para una pgina cada vez que se hace una referencia a ella. Los bits de
referencia estn asociados a cada entrada de la tabla de pginas.
En un principio, el SO borra todos los bits (asignndoles 0). Al ejecutarse un proceso de usuario, el
hardware activa (asignando 1) el bit asociado a cada pgina referida. Podemos determinar cules
pginas se han utilizado y cules no.

Algoritmo de bits adicionales de referencia


Podemos obtener informacin adicional de la ordenacin anotando los bits de referencia a
intervalos regulares. En una tabla en memoria podemos conservar 1 byte (8 bits) para cada
pgina.
El SO desplaza el bit de referencia de cada pgina al bit de orden superior de su byte,
desplazando los otros bits una posicin a la derecha y descartando el bit de orden inferior.
Estos registros de desplazamiento de 8 bits contienen la historia de la utilizacin de la
pgina durante los ltimos 8 perodos. Si interpretamos estos bytes como enteros sin signo,
la pgina con el menor nmero, es la pgina menos recientemente utilizada y puede
remplazarse.
El nmero de bits histricos puede variar.
Algoritmo de segunda oportunidad
Cuando se selecciona una pgina, examinarnos su bit de referencia; si es igual a 0,
reemplazamos la pgina. Sin embargo, si el bit de referencia es 1, damos a la pgina una
segunda oportunidad y pasamos a seleccionar la siguiente pgina en el orden FIFO.
Cuando a una pgina se le brinda una segunda oportunidad, se borra su bit de referencia.
Una forma de implantar el algoritmo de segunda oportunidad consiste en usar una cola
circular. Un apuntador indica cul es la siguiente pgina que se remplazar.

76

Cuando se requiere un marco, el apuntador avanza hasta encontrar una pgina con bit de
referencia en 0; conforme avanza, borra los bits de referencia.
Si todos los bits estn activos, el remplazo de segunda oportunidad se convierte en un
remplazo FIFO.
Algoritmo LFU (menos frecuentemente utilizada)
Mantiene un contador del nmero de referencias que se han hecho para cada pgina.
Se remplaza la pgina con el menor recuento.
Este algoritmo tiene problemas cuando una pgina se usa mucho en la fase inicial de un
proceso, pero despus ya no se utiliza.
Una solucin consiste en utilizar un recuento promedio.
Algoritmo MFU (mas frecuentemente utilizada)
Se basa en el argumento de que la pgina con el menor recuento probablemente acaba de
llegar y an tiene que usarse.
Algoritmos adicionales
Si consideramos el bit de referencia y el bit de modificacin como un par ordenado,
tenemos las 4 clases siguientes:
o

(0, 0) ni usada ni modificada

(0, 1) no usada (recientemente), pero modificada

(1, 0) usada pero limpia (no modificada)

(l, 1) usada y modificada

8.5.5 Algoritmos ad hoc


Es habitual que los sistemas mantengan un depsito de marcos vacos.
Antes de sacar la pgina a remplazar, su remplazante se pasa a un marco libre del depsito
(mantiene un deposito de marcos libres). Esto permite que el proceso se reanude lo ms
rpido posible. Cuando se saca la victima su marco se agrega al depsito.
Tambin podemos aprovechar los momentos en que el dispositivo de paginacin este libre
para ir actualizando las paginas modificadas a disco.
Se puede recordar que pagina se encuentra en el deposito para luego buscar primero ah.

8.6 Asignacin de marcos


Podemos requerir que el SO asigne todo su espacio de almacenamiento temporal y de tablas de la
lista de marcos libres.
Podemos tratar de reservar todo el tiempo 3 marcos libres en la lista de marcos libres. As, si se
presenta una falla de pgina, hay 1 marco libre para introducir la pgina. Mientras se lleva a cabo
el intercambio de la pgina, puede seleccionarse un reemplazo, que se escribe a disco mientras
contina la ejecucin del proceso de usuario.

8.6.1 Nmero mnimo de marcos

76

Hay un nmero mnimo de marcos que pueden asignarse. Si se reduce el nmero de


marcos asignados a cada proceso, aumenta la tasa de fallas de pgina, haciendo ms lenta
la ejecucin de los procesos.
En teora, una sencilla instruccin de carga puede hacer referencia a una direccin indirecta
que puede hacer referencia a una direccin indirecta (en otra pgina), que a su vez podra
referirse a otra direccin indirecta (en otra pgina), etc., hasta alcanzar cada una de las
pginas en memoria virtual.
El nmero mnimo de marcos por proceso est definido por la arquitectura del computador,
mientras que el nmero mximo est definido por la cantidad de memoria fsica disponible.

8.6.2 Algoritmos de asignacin


Asignacin equitativa: dividir m marcos entre n procesos consiste en otorgar una parte
igual: m/n marcos.
Asignacin proporcional: los diversos procesos necesitarn cantidades distintas de
memoria. Asignamos la memoria disponible a cada proceso de acuerdo con el tamao de
ste. Sea: v el tamao de la memoria virtual,
V =
v
p el proceso y m el total de marcos
Asignamos a marcos al proceso p:

a = v / V x m

Debemos ajustar los a para que sean enteros, mayores al nmero mnimo requerido por el
conjunto de instrucciones, y que sumados no excedan de m.
Tanto en la asignacin equitativa como en la proporcional, la asignacin para cada proceso
puede variar de acuerdo con el nivel de multiprogramacin.
Si aumenta el nivel de multiprogramacin, cada proceso puede perder algunos marcos
para proporcionar al nuevo proceso la memoria necesaria.
Se trata de igual manera a un proceso de alta prioridad y a uno de baja prioridad.

Una estrategia consiste en usar un esquema de asignacin proporcional donde la


tasa de marcos no dependa de los tamaos relativos de los procesos, sino de sus
prioridades o de una combinacin de tamao y prioridad.

Otra estrategia consiste en permitir que un proceso de alta prioridad seleccione


para su remplazo los marcos de un proceso de menor prioridad.

8.7 Hiperpaginacin
Si el nmero de marcos asignados a un proceso de baja prioridad desciende por debajo del
nmero mnimo requerido por la arquitectura del computador, debemos suspender la ejecucin de
ese proceso.
Luego debemos descargar sus pginas restantes, liberando todos los marcos asignados. Esta
medida introduce un nivel de intercambios de la planificacin a mediano plazo de la CPU.
Cualquier proceso que no tiene marcos suficientes:

a) Provocar fallas de pgina muy frecuentemente; en este momento debe remplazar


alguna pgina.

b) Como todas sus pginas estn activas, debe remplazar una pgina que casi de
inmediato se volver a necesitar.

c) Pronto vuelve a fallar, y una y otra vez ms. El proceso sigue generando fallas,
remplazando pginas por las cuales fallar y se reincorporara en seguida.

76

Un proceso est en hiperpaginacin si emplea ms tiempo paginando que ejecutando.


Con la hiperpaginacin aumenta el TAE.
La hiperpaginacin ocasiona severos problemas de rendimiento.

8.7.1 Causas de la hiperpaginacin


Utilizacin de un algoritmo global de remplazo (si utilizo uno local la limito a ese proceso) y
asignacin esttica del CPT.
La grfica de la utilizacin de la CPU frente
al
nivel
de
multiprogramacin.
Al
aumentar el nivel de multiprogramacin,
tambin aumenta la utilizacin de la CPU,
aunque cada vez con mayor lentitud hasta
alcanzar un punto mximo.
Si
se
incrementa
multiprogramacin,
hiperpaginacin.

ms
el
nivel
comienza

de
la

Los efectos de la hiperpaginacin se pueden limitar:


Utilizando un algoritmo de remplazo local (o por prioridades). Con el remplazo local, si en
un proceso comienza la hiperpaginacin, no puede robar marcos de otro proceso y
provocar que ste tambin entre en hiperpaginacin. Las pginas se remplazan
considerando el proceso al cual pertenecen.
Tcnica del rea activa: comienza buscando cuntos marcos est usando realmente un
proceso. Esta estrategia define el modelo de localidad de la ejecucin de procesos.
El modelo de localidad establece que un proceso, durante su ejecucin, pasa de una
localidad a otra.
Una localidad es un conjunto de pginas que se utilizan conjuntamente. Un
programa generalmente est compuesto por varias localidades distintas, las cuales pueden
superponerse.
Generar fallas por las pginas en su localidad hasta que todas se encuentren en memoria;
luego no fallar hasta que cambie de localidad. Si asignamos menos marcos que el tamao
de la localidad, el proceso entrar en hiperpaginacin, ya que no puede mantener en
memoria todas las pginas que est usando en ese momento.

8.7.2 Modelo del rea activa


El modelo utiliza un parmetro , para definir la ventana del rea activa.
La idea es examinar las referencias ms recientes a pginas.
El conjunto de pginas en las referencias ms recientes constituye el rea
activa, es decir, el conjunto de pginas de mayor demanda.
Si una pgina est en uso pertenecer al rea activa, y si ya no se usa se descartar del
rea activa tras unidades de tiempo despus de su ltima referencia. De esta manera, el
rea activa es una aproximacin de la localidad del programa.
La exactitud del rea activa depende de la seleccin de .
Si calculamos el tamao del rea activa TAA para cada proceso del sistema, podemos
entonces considerar: =TAA donde D es la demanda total de marcos.

76

Cada proceso utiliza las pginas de su rea activa, por lo que el proceso i necesita TAA
marcos.
Si la demanda total es mayor que el nmero total de marcos disponibles ( > m) se
producir la hiperpaginacin, ya que algunos procesos no tendrn marcos suficientes.
El SO supervisa el rea activa de cada proceso y le asigna marcos suficientes para
proporcionarle el tamao del rea activa. Si aumenta la suma de los tamaos de las reas
activas, excediendo el nmero total de marcos disponibles, el SO selecciona un proceso y lo
suspende.
La estrategia del rea activa evita la hiperpaginacin manteniendo a la vez el
nivel de multiprogramacin lo ms alto posible.
Una pgina se encuentra en el rea activa si existe una referencia a ella en
cualquier lugar de la ventana del rea activa.

8.7.3 Frecuencia de fallas de pgina


Cuando la tasa de fallas de pgina es demasiado alta sabemos que un proceso necesita
ms marcos, y si es demasiado baja, puede ser que el proceso tenga demasiados marcos.
Podemos establecer lmites superior e inferior para la tasa deseada de fallas de pgina
Si la tasa de fallas de pgina excede el lmite superior, asignarle otro marco a
ese proceso; si la tasa cae por debajo del lmite inferior, quitamos un marco al
proceso.
Podemos medir y controlar directamente la tasa de fallas de pgina para evitar la
hiperpaginacin.
Si aumenta la tasa de fallas de pgina y no hay marcos disponibles, debemos seleccionar
un proceso y suspenderlo.

8.8 Otras consideraciones


Las selecciones de un algoritmo de remplazo y una poltica de asignacin son las principales
decisiones que hay que tomar para un sistema de paginacin. Existen otros muchos factores que
hay que considerar.

8.8.1 Asignacin global frente a asignacin local


Podemos clasificar los algoritmos de remplazo de pginas en dos grandes categoras:
El remplazo global:
o

Puede aumentar el nmero de marcos asignados.

Permite que un proceso seleccione un marco para remplazar de entre todo el


conjunto de marcos, incluso si ese marco est asignado a otro proceso; un proceso
puede quitar un marco a otro.

Problema: un proceso no puede controlar su propia tasa de fallas de pgina. El


conjunto de pginas en memoria para un proceso no slo depende del
comportamiento de paginacin de ese proceso, sino tambin del de otros.

Generalmente brinda una mayor productividad.

El remplazo local:
o

No aumenta el nmero de marcos asignados.

76

Requiere que cada proceso seleccione slo de su propio conjunto de marcos


asignados.

Puede afectar un proceso al no permitir que tenga acceso a otras pginas de


memoria menos usadas.

8.8.2 Prepaginacin
En un sistema de paginacin por demanda hay un gran nmero de fallas de pgina que
ocurren al iniciar un proceso.
La Prepaginacin es un intento para evitar este alto nivel de paginacin inicial.
La estrategia consiste en traer a memoria al mismo tiempo todas las pginas que
se necesitarn.
Suponga que las pginas estn prepaginadas y una fraccin de estas s pginas
realmente se usan (0 >= <=1). La pregunta es si el costo de las .s fallas de pgina que
se evitan es mayor o menor al costo de la Prepaginacin de (1 - )s pginas innecesarias.
Si a es cercana a 0, pierde la Prepaginacin; si a es cercana a 1, la Prepaginacin gana.

8.8.3 Tamao de pgina


Los tamaos de pgina son invariablemente potencias de 2.
Tamao pequeo:
Aumenta el nmero de pginas y el tamao de la tabla de pginas.
Mejor utilizacin de la memoria.
Disminucin de la fragmentacin interna.
Disminucin del nmero total de operaciones de E/S.
Tamao grande:
Minimizar el tiempo de E/S.
Minimizar numero de fallas de paginas.
Disminuir tamao de tabla de paginas.

8.8.4 Estructura de los programas


La paginacin por demanda est diseada para ser transparente para el programa de
usuario.
En muchos casos, el usuario no se percata de que la memoria est paginada. Sin embargo,
en otros casos el rendimiento del sistema puede mejorarse si se es consciente de la
paginacin por demanda subyacente.
Una tabla de dispersin (hash table) est diseada para dispersar las referencias, lo que
ocasiona una mala localidad.
Otros factores de peso incluyen la velocidad de bsqueda, el nmero total de referencias a
memoria y el total de pginas a las que se accedi.
El compilador y el cargador pueden tener un efecto considerable sobre la paginacin.
Las pginas limpias no tienen que sacarse y escribirse cuando se reemplazan.

76

El cargador puede evitar la colocacin de rutinas que crucen los lmites de pgina,
manteniendo toda una rutina dentro de la misma pgina.
Esta es una variante del problema de empaquetamiento en investigacin
operativa: tratar de empaquetar los segmentos de carga de tamao variable en pginas
de tamao fijo para minimizar las referencias entre pginas.

8.8.5 Fijacin de pginas para E/S


Cuando se utiliza la paginacin por demanda, en ocasiones tenemos que permitir que algunas
pginas se fijen en memoria. Muchas veces la E/S se implanta con un procesador separado de E/S.
Debemos asegurar que no se presente la siguiente secuencia de sucesos:
1. Un proceso emite una solicitud de E/S y se coloca en la cola para ese dispositivo de E/S.
2. Mientras tanto, se asigna la CPU a otros procesos, stos generan fallas de pgina y, usando
un algoritmo de remplazo global, uno de ellos remplaza la pgina que contiene el buffer de
memoria del proceso en espera.
3. Se sacan las pginas y ms tarde, cuando la solicitud de E/S avanza hasta el inicio de la
cola del dispositivo, se efecta la E/S para la direccin especificada.
4. Sin embargo, este marco se est utilizando ahora para una pgina que pertenece a otro
proceso.
Hay dos soluciones habituales para este problema:
a) No ejecutar nunca la E/S a memoria de usuario, sino copiar los datos entre la memoria del
sistema y la de usuario. La E/S slo se realiza entre la memoria del sistema y el dispositivo
de E/S. Para escribir un bloque en cinta, primero copiamos el bloque a la memoria del
sistema y luego lo escribirnos en cinta.
b) Permitir que las pginas se fijen en memoria (a cada marco se asocia un bit de fijacin). Si
se ha fijado el marco, no puede seleccionarse para remplazo. En este esquema, para
escribir un bloque en cinta fijamos en memoria las pginas que contienen el bloque;
despus el sistema puede continuar de la manera habitual. Las pginas fijadas no pueden
remplazarse. Cuando termina la E/S, se desactiva la fijacin de las pginas.
Cuando se selecciona una pgina para su remplazo, se activa el bit de fijacin y permanece
activo hasta que se despache el proceso que provoc la falla.
Sin embargo, puede ser peligroso usar el bit de fijacin si se activa y nunca se desactiva el
marco sera inutilizable.

8.8.6 Tabla de pginas invertida


Dado que la tabla de paginas est ordenada por direccin virtual, el SO puede calcular en
qu parte de ella se encuentra la entrada de la direccin fsica asociada y utiliza ese valor
directamente.
Uno de los inconvenientes de la memoria virtual es el tamao de las tablas de
pginas. Los espacios de direcciones de memoria virtual pueden ser del orden de
gigabytes, generando tablas con millones de entradas.
Solucin: algunos SOs utilizan tablas de pginas invertidas: tiene una entrada para cada
pgina real de memoria. Luego con cada entrada se asocia la direccin virtual de la pgina
almacenada en esa localidad de memoria real, de manera que slo hay una tabla de
pginas en todo el sistema y slo tiene una entrada para cada pgina de memoria fsica.

76

Tabla de pginas:
Si se encuentra un valor igual, digamos en la entrada i, entonces se genera la direccin
fsica: <i, desplazamiento>.
Si no hay coincidencia, entonces ocurre una falla de pgina, indicando que se ha generado
una direccin ilegal o que la pgina en cuestin no se encuentra en memoria.
Al conservar informacin sobre qu pgina de memoria virtual se almacena en cada marco
fsico, las tablas de pginas invertidas reducen la cantidad de memoria fsica
necesaria para almacenar esta informacin.
No contiene informacin completa sobre la memoria virtual, para lo que habra que
mantener tablas de paginas externas que se descargan y reincorporan cuando ocurre una
falla de pagina, es decir segn se necesiten.
Aumenta el tiempo necesario para buscar en la tabla cuando hay una referencia
a una pgina.
Como la tabla de pginas invertida est ordenada por direccin fsica, pero las bsquedas
se efectan por direcciones virtuales, habra que recorrer toda la tabla para
encontrar una coincidencia.
Solucin: Usar una tabla de dispersin para limitar la bsqueda a una, o unas cuantas, de
las entradas de la tabla. Una referencia a memoria virtual requiere por lo menos dos
lecturas en memoria real:

La entrada de la tabla de dispersin

La tabla de pginas.

Para mejorar el rendimiento, usamos registros asociativos de memoria para contener las
entradas localizadas recientemente. Primero se busca en estos registros, antes de
consultar la tabla de dispersin.
Tambin ocasiona problemas la implantacin de memoria compartida en sistemas
que emplean tablas de pginas invertidas. No puede emplearse este mtodo comn, ya
que se dispone slo de una entrada para la pgina virtual por cada pgina fsica, por lo que
una pgina fsica no puede tener dos (o ms) direcciones virtuales compartidas.

8.9 Segmentacin por demanda


Se asigna la memoria por segmentos, en vez de pginas y los controla por medio de
descriptores de segmento, que incluyen informacin sobre el tamao, proteccin y
ubicacin del segmento.
Un proceso no requiere que todos sus segmentos se encuentren en memoria para poder
ejecutarse.
El descriptor de segmento contiene un bit de validez para cada segmento, el cual indica si
se encuentra actualmente en memoria.
Aumenta considerablemente el tiempo de procesamiento.
Cuando un proceso direcciona un segmento que contiene datos o cdigo, el hardware examina
este bit de validez:
a) Si el segmento est en memoria principal, el acceso contina sin problemas
b) Si el segmento no est en memoria principal, se genera una trampa al SO (falla de
segmento).El SO saca, en un intercambio, un segmento al almacenamiento secundario e
incorpora todo el segmento requerido.
Para determinar que segmento se remplazar en caso de que ocurra una falla de segmento: bit
de acceso.
1. Se activa al escribir o leer cualquier byte en el segmento.
2. Se mantiene una cola que contiene una entrada por cada segmento en memoria.

76

3. Despus de cada porcin de tiempo, el SO coloca al inicio de la cola cualesquiera


segmentos con el bit de acceso activado; luego pone a 0 todos los bits de acceso.
De esta manera, la cola se mantiene ordenada con los segmentos de utilizacin ms reciente
al inicio.
Puede efectuarse una compactacin de la memoria para eliminar la fragmentacin externa:
Si, despus de la compactacin, an no hay bastante memoria libre, se lleva a cabo el remplazo
del segmento. Para el remplazo, se escoge el segmento del final de la cola y se escribe en el
almacenamiento de intercambio.

76

9. Administracin del Almacenamiento Secundario


9.1.- Introduccin
Sera una situacin ideal si todos los programas y los datos a los que acceden residieran en forma
permanente en la memoria principal, pero esto no es posible, ya que generalmente sta es
demasiado pequea para contenerlos permanentemente y adems es un dispositivo de
almacenamiento voltil.

9.2.- Estructura fsica de los sistemas de almacenamiento


9.2.1.- Discos Rgidos
9.2.1.1.-Estructura fsica
Est compuesto por un disco generalmente metlico, recubierto en ambas superficies
cubiertas con un material especial, en el cual se registra la informacin a almacenar
mediante variaciones del campo magntico.
Cuando el sistema est en uso, el disco gira permanentemente a alta velocidad.
La superficie del disco se divide lgicamente en pistas y a su vez, cada pista se divide en
sectores.
Un sector es la menor unidad de informacin que puede leerse o escribirse en un disco.
La informacin es grabada o leda de la superficie del disco por medio de cabezales, los
cuales miden el campo magntico (lectura) o bien modifican el mismo (escritura).
Para acceder a un sector, las cabezas deben moverse a la pista correcta y esperar a que el
sector solicitado pase por debajo de la cabeza
Para obtener mayor capacidad de almacenamiento por unidad, se utilizan varios discos
magnticos apilados, unidos solidariamente a un mismo eje, donde cada uno de ellos tiene
una cabeza de lectoescritura por cara.
El conjunto de pistas a las que se puede acceder sin mover las cabezas dentro de una
unidad es denominado cilindro.

9.2.1.2.- Direccionamiento
Sistemas de referencia:
CHS Cylinder Head Sector: utiliza una direccin compuesta por tres coordenadas: cilindro,
cabeza y sector
Direccionamiento Lgico de Bloques (LBA Logical Block Addressing): Los sectores del
disco son tratados por el SO como un nmero unidimensional de bloques, donde cada
bloque es un sector.
Zone Bit Recording (ZBR): agrupa las pistas en zonas, de acuerdo a su distancia al centro
del disco. Cada una de estas zonas se disea con cantidades de sectores por pista
diferentes, creciendo la misma hacia las pistas exteriores.
Para convertir entre los sistemas de referencia: LBA = ((c x HPC) + h) x SPT + s -1
c: nmero de cilindro [0...N]
h: nmero de cabeza [0...N]
s: nmero de sector [1...N]

76

HPC: cabezas de lectoescritura por cilindro


SPT: Cantidad de sectores por pista
LBA: nmero de bloque de direccionamiento lgico
Directorio del dispositivo: En l se encuentra la informacin de los archivos que se encuentran en
el disco (ubicacin, longitud, tipo, propietario, fecha y hora de creacin, fecha y hora del ltimo
acceso, protecciones, etc.).

9.2.1.3.- Componentes internos


La parte electromecnica:
Discos
Motor de rotacin
Cabezas
Actuador.

La parte lgica:
Controlador del disco:
Realiza la interaccin lgica con el resto
del sistema informtico, recibiendo
instrucciones del mismo a travs del bus
de datos, y comandando a las partes
electromecnicas.

9.2.1.4.- Caractersticas tcnicas de funcionamiento


Tiempo de posicionamiento: (tiempo medio de bsqueda) es el tiempo medio
que tarda el cabezal en situarse en la pista especificada, se estima como la
mitad del tiempo empleado por el cabezal desde la pista ms perifrica hasta la
ms central del disco.
Tiempo de latencia: Tiempo medio que tarda el cabezal en situarse en el sector
deseado, se estima como la mitad del tiempo empleado en una rotacin
completa del disco.
Velocidad de rotacin: Revoluciones por minuto de los platos. A mayor
velocidad de rotacin, menor latencia media.
Tiempo de transferencia: Tiempo que tarda la informacin leda desde la
superficie del disco en llegar a la memoria principal una vez que el cabezal est
situado en la pista y sector correctos.
Memoria Cach: Es una memoria tipo RAM, que ayuda a mejorar el rendimiento
del sistema, manteniendo una copia parcial pequea de los datos almacenados.
Interfaz: Medio de comunicacin entre el disco duro y la computadora. Puede
ser IDE/ATA, SCSI, SATA, etc.

9.2.1.5.- Tipos de interfaces


IDE o ATA:
o 40 conductores en paralelo para transmitir bloques de 16 bits de
informacin.
o Hasta dos dispositivos por bus (Maestro y Esclavo).
SCSI:
o Bloques de 8 y 16 bits en paralelo
o 68 o 80 conductores, llegando hasta una transferencia mxima de
320MBps.
o Hasta 16 dispositivos.
Serial ATA o SATA
o Mayores velocidades de transferencia.

76

o
o
Serial
o

o
o
o

Capacidad para conectar discos en caliente.


Bus serie para la transmisin de datos, de 7 conductores.
Attached SCSI o SAS
Transferencia de datos en serie, sucesor del SCSI paralelo.
FC
Disponible a 2, 4 y 8 Gbps, generalmente sobre fibra ptica.
Permite conectar dos dispositivos en conexiones punto a punto.
Hasta 127 en conexiones en anillo y hasta 2 en conexiones
conmutadas.

9.2.2.- Canales (Adaptadores de Bus de Host - HBA)


Dispositivo que conecta el sistema principal a dispositivos de almacenamiento.
Organiza la lectura y escritura en las unidades de disco en un sistema
informtico.
El HBA es el equivalente al canal de entrada/salida, o bien, directamente canal,
en la arquitectura de los mainframes.

9.2.2.1.- Adaptadoras simples


Se limitan a la inicializacin de los dispositivos de almacenamiento y al
intercambio de datos entre el sistema principal y los discos.
Generalmente se encuentran incluidas dentro de la placa base o madre del
sistema.

9.2.2.2.- Adaptadoras de arreglos de discos


Poseen funcionalidades adicionales, que permiten
utilizar los discos rgidos en forma de arreglo (RAID,
como veremos ms adelante) para optimizar la
tolerancia a fallos, la velocidad o ambos aspectos.

9.3.- Estructura lgica de los sistemas de


almacenamiento
9.3.1.- Particiones
Un disco puede dividirse en mltiples
particiones, o bien un volumen puede abarcar mltiples particiones en
mltiples discos.
Cada particin puede ser :
o

"En bruto": sin formato, que no contenga ningn sistema de archivos.


Los discos sin formato se utilizan en aquellos casos en que no resulte
apropiado emplear un sistema de archivos.
Los discos sin formato tambin pueden almacenar la informacin que
necesitan los sistemas de discos RAID pueden contener una base de
datos en miniatura que almacene la informacin de configuracin RAID.

"Procesada": que s contenga un sistema de archivos.

76

La informacin de arranque es, usualmente, una serie secuencial de bloques,


que se cargan como una imagen binaria en la memoria. La ejecucin de esa
imagen binaria comienza en una ubicacin predefinida.
Podemos almacenar en el espacio de arranque un cargador de arranque que
sea capaz de comprender mltiples sistemas de archivos y mltiples sistemas
operativos; una vez cargado, ese cargador de arranque puede iniciar uno de los
sistemas operativos disponibles en el disco.
El disco puede tener mltiples particiones, cada una de las cuales contendr un
tipo diferente de sistema de archivos y un sistema operativo distinto.
La particin raz, que contiene el kernel del sistema operativo y, en ocasiones,
otros archivos del sistema, se monta en el momento del arranque.
Otros volmenes pueden montarse automticamente durante el arranque o
pueden ser montados manualmente en algn momento posterior, dependiendo
del sistema operativo.
Como parte de una operacin de montaje, el sistema operativo verifica que el
dispositivo contenga un sistema de archivos vlido.
El sistema operativo registrar en su tabla de montaje de la memoria que se ha
montado un sistema de archivos, indicando el tipo de sistema de archivos de
que se trata.
La entrada de la tabla de montaje contiene un puntero al superbloque del sistema de
archivos existente en dicho dispositivo. Este esquema permite que el sistema
operativo recorra su estructura de directorios, conmutando entre sistemas de archivos
de diferentes tipos.

9.3.2.- Sistemas de archivos


Los sistemas de archivos estructuran la informacin guardada en una unidad de
almacenamiento, que luego ser representada ya sea textual o grficamente
utilizando un gestor de archivos.
Es responsable de la organizacin de los sectores o bloques de un dispositivo
de almacenamiento en archivos y directorios.
Mantiene un registro de qu sectores pertenecen a qu archivos y cules no
han sido utilizados (bloques libres).
Proveen mtodos para crear, mover, renombrar y eliminar tanto archivos como
directorios.
La estructura de directorios que contiene a los archivos suele ser jerrquica,
ramificada o "en rbol", aunque en algn caso podra ser plana.
En algunos sistemas de archivos los nombres de archivos son estructurados,
con sintaxis especiales para extensiones de archivos y nmeros de versin. En
otros, los nombres de archivos son simplemente cadenas de texto y los
metadatos de cada archivo son alojados separadamente.
En los sistemas de archivos jerrquicos, usualmente, se declara la ubicacin
precisa de un archivo con una cadena de texto llamada "ruta" (path).
Una ruta viene dada por una sucesin de nombres de directorios y
subdirectorios, ordenados jerrquicamente de izquierda a derecha y separados
por algn carcter especial que suele ser una barra ('/') o barra invertida ('\') y
puede terminar en el nombre de un archivo presente en la ltima rama de
directorios especificada.

76

Veamos los distintos tipos:


Sistemas de archivos de disco: Un sistema de archivo de disco est diseado
para el almacenamiento de archivos en una unidad de disco, que puede estar
conectada directa o indirectamente a la computadora.
Sistemas de archivos de red: Un sistema de archivos de red es el que accede a
sus archivos a travs de una red.
Sistemas de archivos de propsito especial: Aquellos tipos de sistemas de
archivos que no son ni sistemas de archivos de disco, ni sistemas de archivos
de red.

9.3.3.- Mtodos de asignacin de archivos


Nuestro inters en estudiar la asignacin de espacio a los archivos, es para lograr una
eficaz utilizacin del espacio en disco y un rpido acceso a los archivos.
Consideraremos un archivo como una secuencia de bloques.

9.3.3.1.- Asignacin contigua


Requiere que cada archivo ocupe un conjunto de direcciones contiguas en el
disco.
Las direcciones en disco definen una ordenacin lineal, de esta manera, para
acceder al bloque b+1 despus del bloque b, no se requiere movimiento de la
cabeza.
La entrada del directorio para cada archivo indica la direccin del bloque inicial
y la longitud del rea asignada al archivo. Si el archivo tiene una longitud de n
bloques y comienza en la localidad b, entonces ocupa los bloques b, b+1, ...,
b+n-1.
Generalmente se utilizan las estrategias del primer ajuste, el mejor ajuste y el
peor ajuste; surge entonces el problema de la fragmentacin externa.
Problema: poder determinar cunto espacio se necesita para un archivo. Es
fcil determinarlo cuando se copia un archivo, pero no si es un archivo de
salida. Si asignamos poco espacio, el archivo puede no tener posibilidad de
extenderse.
Solucin: dos posibilidades

o Abortar el programa de usuario, asignar ms espacio y

ejecutar
nuevamente el programa. El costo de estas repeticiones es alto, para
evitarlas, el usuario normalmente asignar ms espacio del necesario,
con el desperdicio que ello representa.

o Encontrar un hueco ms grande, copiar el archivo al nuevo espacio y


liberar el anterior.

9.3.3.2.- Asignacin enlazada


El directorio contiene un puntero al primero y al ltimo bloque del archivo.
Cada bloque tiene un puntero al prximo bloque del archivo.
Estos punteros no estn disponibles para el usuario.

76

Cada entrada del directorio tiene un puntero al primer bloque del archivo en el
disco.
Crear un archivo: se crea una nueva entrada en el directorio del dispositivo. Se
asigna un valor inicial nulo para representar un archivo vaco, y tambin se
asigna cero al campo de tamao.
Una escritura a un archivo quita el primer bloque disponible de la lista de
espacio libre y escribe en l; luego se enlaza el nuevo bloque al final del
archivo.
Para leer un archivo, basta con leer los bloques siguiendo los punteros.
Con este tipo de asignacin no es necesario declarar el tamao del
archivo durante su creacin.
No tenemos fragmentacin externa.
Inconvenientes:
Slo puede aplicarse eficazmente al acceso secuencial, ya que para encontrar
un bloque tenemos que comenzar desde el principio del archivo y seguir los
punteros hasta encontrar el bloque en cuestin.
El espacio requerido por el puntero nos quita espacio para los datos,
requiriendo entonces cada archivo un poco ms de espacio.
La fiabilidad: Un error en el software del SO o un problema en el hardware,
puede provocar que se elija un puntero incorrecto, enlazando el archivo a la
lista de espacio libre o a otro archivo.
Una solucin consiste en usar listas doblemente ligadas o almacenar en cada
bloque el nombre del archivo y el nmero de bloque relativo.
Una variante:
Es la tabla de asignacin de archivos (FAT):
Tiene una entrada para cada bloque del disco y est indexada por nmero de
bloque.
El directorio contiene el nmero del primer bloque del archivo y la entrada
obtenida con ese nmero guarda el nmero del siguiente bloque.
Esta cadena contina hasta el ltimo bloque.
Para asignar un nuevo bloque a un archivo, slo hay que localizar la primera
entrada de la tabla con valor cero y sustituir el valor anterior de fin de archivo
con la direccin del nuevo bloque, despus se remplaza el cero por el valor de
fin de archivo.

9.3.3.3.- Asignacin indexada


Este tipo de asignacin resuelve algunos problemas de la asignacin enlazada,
reuniendo todos los punteros en un solo lugar: el bloque de ndices.
Cada archivo tiene su propio bloque de ndices, el cual es un arreglo de
direcciones de bloques en disco.
El directorio contiene la direccin del bloque de ndices.
Para leer el bloque i, usamos el puntero de la entrada i del bloque de ndices
para localizarlo.

76

Al crear el archivo, se asigna nulo a todos los apuntadores del bloque de


ndices.
Cuando el bloque i se escribe por primera vez se saca un bloque de la lista de
espacio libre y se coloca su direccin en la entrada i del bloque de ndices.
Permite el acceso directo sin el problema de fragmentacin externa.
El desperdicio de espacio puede ser mayor que en la asignacin
enlazada.
Surge aqu una duda sobre el tamao de los bloques de ndices. Queremos
hacerlo lo ms pequeo posible, pero puede que no alcance para guardar todos
los punteros de un archivo grande, razn por la cual se hace necesario tratar
esta situacin mediante un mecanismo adecuado:
o

Esquema enlazado: se enlazan varios bloques de ndices. Un bloque


de ndices puede contener el nombre del archivo y las primeras 100
direcciones de bloques en el disco, la siguiente direccin puede tener un
puntero a otro bloque de ndices con ms punteros que apuntan a otros
bloques del archivo o puede tener valor nulo si no hay ms bloques.

Esquema multinivel: se tiene un bloque de ndices que apunta a los


bloques de ndices, que a su vez apuntan a los bloques de archivo. Para
acceder a un bloque de datos se debe pasar por los dos niveles de
bloques de ndices.

Esquema combinado: se tiene en el directorio del dispositivo algunos


punteros del bloque de ndices. Los primeros apuntan a bloques directos,
es decir, contienen las direcciones de datos. Los otros 3 hacen
referencias a bloques indirectos. El primer puntero es la direccin de un
bloque indirecto sencillo, un bloque de ndices que no contiene datos,
sino las direcciones de bloques que s los contienen. Luego est el
puntero del bloque indirecto doble, que contiene la direccin de un
bloque que almacena las direcciones de otros bloques que apuntan a los
bloques de datos. El ltimo apuntador, contendr la direccin de un
bloque indirecto triple.

9.3.4.- Mtodos de asignacin del espacio libre


El sistema mantiene una lista de espacio libre, donde se registran todos los bloques
del disco que no estn asignados a un archivo. Para crear un archivo, recorremos la
lista de espacio libre hasta encontrar espacio suficiente, y se lo asigna al nuevo
archivo; luego, se elimina este espacio de la lista.

9.3.4.1.- Vector de bits


Se tiene un vector o mapa de bits, donde cada bloque se representa con un bit.
Si el bit es 0 el bloque est libre, y est ocupado si el bit es 1.

9.3.4.2.- Lista ligada


Enlazar todos los bloques libres del disco, manteniendo un puntero al primer
bloque libre, el cual contiene otro puntero al siguiente bloque libre, etc...
Este esquema no es eficiente, pues para recorrer la lista, tenemos que leer
cada uno de los bloques, lo que representa un tiempo considerable de E/S.

9.3.4.3.- Agrupamiento
Almacenar en el primer bloque las direcciones de n bloques libres.

76

Los primeros n-1 bloques estn libres.


El ltimo contiene la direccin en disco de otro bloque que contiene las
direcciones de otros n bloques libres.

9.3.4.4.- Recuento
Consiste en aprovechar que varios bloques contiguos se pueden asignar o
liberar simultneamente, especialmente en asignacin contigua.
As podemos tener la direccin del primer bloque libre y los n bloques libres
contiguos que le siguen.
Cada entrada de la lista de espacio libre consiste en una direccin en disco y un
recuento.

9.3.5.- Consideraciones de rendimiento y eficiencia


Con la asignacin enlazada:
o

Es posible conservar en memoria la direccin del bloque siguiente y


leerlo en forma directa.

Acceso secuencial: para llegar a un bloque i, con el acceso directo,


pueden ser necesarias i lecturas del disco.

Con la asignacin contigua:


o

Acceso directo

Por lo tanto, algunos sistemas permiten el acceso directo a los archivos con la
asignacin contigua y el acceso secuencial con la enlazada.
o

En estos sistemas, al crear un archivo hay que declarar el tipo de acceso


que se usar.

Un archivo para acceso secuencial estar enlazado y no podr usarse


para acceso directo.

Un archivo creado para acceso directo ser contiguo y permitir ambos


tipos de acceso.

La asignacin indexada:
o

Si el bloque de ndices ya se encuentra en memoria, el acceso puede


efectuarse directamente.

Se requiere mucho espacio para almacenar en memoria el bloque de


ndices. Para un ndice de dos niveles, tal vez sean necesarias dos
lecturas de bloques de ndices.

El rendimiento de la asignacin indexada depende de la estructura de


ndices, del tamao del archivo y de la posicin del bloque.

Algunos sistemas combinan la asignacin indexada con la contigua.


o

El rendimiento promedio es bueno si la mayora de los archivos son


pequeos, ya que la asignacin contigua es eficiente en estos casos.

76

9.4.- Planificacin del acceso a disco


9.4.1.- Introduccin
El tiempo total para atender una solicitud del disco es la suma de los tiempos de
posicionamiento, de latencia y de transferencia.
Cada vez que un proceso necesita E/S del disco, emite una llamada al SO, esta
solicitud especifica la siguiente informacin necesaria:
Si se trata de una operacin de entrada o de salida.
Cul es la direccin en disco (unidad, cilindro, superficie, bloque).
Cul es la direccin en memoria.
Cunta informacin se transferir (nmero de bytes o palabras).
Si la unidad y el controlador estn disponibles, es posible atender la demanda de
inmediato.
En un sistema de multiprogramacin con varios procesos, es poco frecuente que la
cola del disco est vaca,.

9.4.2.- Planificacin FCFS


Es por orden de llegada.
Es fcil de programar e intrnsecamente justo.
No ofrece el mejor tiempo promedio de servicio.

9.4.3.- Planificacin SSTF


Servir primero
posicionamiento.

la

solicitud

de

acceso

de

menor

tiempo

de

Implementamos esta estrategia moviendo la cabeza a la pista ms prxima de


la cola de solicitudes.
Se puede tener un bloqueo indefinido para algunas solicitudes: En un sistema
real, permanentemente estn llegando solicitudes, y en teora, podra llegar
una serie continua de solicitudes prximas entre s, ocasionado que algunas
solicitudes sean postergadas indefinidamente.

9.4.4.- Planificacin SCAN


La cabeza barre el disco de un extremo al otro atendiendo las solicitudes al
llegar a cada pista. Luego invierte la direccin del movimiento de la cabeza y
contina el servicio, rastreando continuamente de un extremo al otro.
Debemos conocer la direccin del movimiento de la cabeza y su posicin ms
reciente.
Considere la densidad de solicitudes cuando la cabeza llega a un extremo e
invierte la direccin. En ese momento hay pocas solicitudes para la zona
inmediatamente detrs de la cabeza, ya que estas pistas acaban de servirse.
La mayor densidad de solicitudes se encuentra en el extremo opuesto del disco.
As mismo, estas solicitudes son las que ms han esperado.

76

9.4.5.- Planificacin C-SCAN


La cabeza se mueve de un extremo del disco al otro, sirviendo solicitudes en su
marcha, y al llegar al fin del disco regresa de inmediato al inicio del mismo sin
servir ninguna solicitud en el camino.
Considera al disco como si fuera circular, con la ltima pista adyacente a la
primera.

9.4.6.- Planificacin LOOK


La cabeza se mueve de un extremo al otro del disco.
En la prctica es ms comn que la cabeza se mueva hasta la ltima solicitud
en cada direccin.
Si ya no existen solicitudes en la direccin actual, se invierte el movimiento.

9.5.- Mejoras en el rendimiento y la fiabilidad


9.5.1.- Introduccin
Si tenemos una falla en el disco, adems de reponer el disco daado, tambin hay que
hacer lo propio con la informacin que estaba almacenada en l.
Una mejora tcnica es la utilizacin de varios discos que trabajen cooperativamente.
Para mejorar la velocidad, los discos se separan (o intercalan). El tiempo necesario
para transferir un bloque a memoria se reduce.
Esta idea fue la base para desarrollar lo que se denomina arreglo redundantes de
discos de bajo costo (RAID, redundant arrays of inexpensive disks), que mejoran el
rendimiento, sobre todo la relacin costo-rendimiento y ofrecen un medio para duplicar
los datos y mejorar la confiabilidad.

9.5.2.- RAID
RAID hace referencia a un sistema de almacenamiento que utiliza mltiples
discos rgidos entre los que distribuye o replica los datos.
Dependiendo de su configuracin, un arreglo de discos puede presentar beneficios:
Integridad
Tolerancia a fallos
Rendimiento
Capacidad
RAID combina varios discos rgidos en una sola unidad lgica y el sistema
operativo ve uno solo.

9.5.3.- Implementaciones
La distribucin de datos en varios discos puede ser gestionada por hardware dedicado
o por software.
Con la implementacin por software:
o

El sistema operativo gestiona los discos del conjunto a travs de una


adaptadora de disco simple.

76

Son mucho ms flexibles, permitiendo, por ejemplo, construir RAID de


particiones en lugar de discos completos y agrupar en un mismo RAID
discos conectados en varias adaptadoras.

Una implementacin basada en hardware:


o

Requiere al menos una adaptadora RAID especfica que gestione la


administracin de los discos y efecte los clculos de.

Esta opcin suele ofrecer un mejor rendimiento.

Pueden incorporar un cach de escritura no voltil que permite


aumentar el rendimiento del conjunto de discos sin comprometer la
integridad de los datos en caso de fallo del sistema.

Todas las implementaciones pueden soportar el uso de uno o ms discos de reserva


(hot spare), unidades preinstaladas que pueden usarse inmediatamente.

9.5.3.1.- RAID 0
Un RAID 0 distribuye los datos equitativamente entre dos o ms discos sin
informacin de paridad que proporcione redundancia: no es redundante.
Una buena implementacin de un RAID 0 dividir las operaciones de lectura y
escritura en bloques de igual tamao y los distribuir equitativamente entre los
dos discos.
Es posible crear un RAID 0 con ms de dos discos, si bien la fiabilidad del
conjunto ser igual a la fiabilidad media de cada disco dividido el nmero de
discos del conjunto.
Cuando uno de ellos falla se pierde una parte muy importante de los datos.
Con un RAID 0, si todos los sectores accedidos estn en el mismo disco,
entonces el tiempo de bsqueda ser el de dicho disco.
Si los sectores a acceder estn distribuidos equitativamente entre los discos,
entonces el tiempo de bsqueda aparente estar entre el ms rpido y el ms
lento de los discos del conjunto.
Si los discos giran sincrnicamente, lo que resultara tiempos de bsqueda slo
ligeramente superiores al de un nico disco.
La velocidad de transferencia del conjunto ser la suma de la de todos los
discos, limitada slo por la velocidad de la adaptadora RAID.

9.5.3.2.- RAID 1
Crea una copia exacta (o espejo) de un conjunto de datos en dos o ms discos.
Un conjunto RAID 1 slo puede ser tan grande como el ms pequeo de sus
discos.
Un RAID 1 clsico consiste en dos discos en espejo.
Incrementa exponencialmente la fiabilidad: para que el conjunto falle es
necesario que lo hagan todos sus discos.
Dado que todos los datos estn en dos o ms discos, el rendimiento de lectura
se incrementa.
El tiempo medio de lectura se reduce, ya que los sectores a buscar pueden
dividirse entre los discos, bajando el tiempo de bsqueda y subiendo la tasa de
transferencia.

76

9.5.3.3.- RAID 5
Usa divisin de datos a nivel de bloques distribuyendo la informacin de
paridad entre todos los discos miembros del conjunto.
Bajo coste de redundancia.
Cada vez que un bloque de datos se escribe en un RAID 5, se genera un bloque
de paridad dentro de la misma divisin (stripe).
Un bloque se compone a menudo de muchos sectores consecutivos de disco.
Una serie de bloques recibe el nombre colectivo de divisin (stripe).
Si otro bloque, o alguna porcin de un bloque, es escrita en esa misma divisin,
el bloque de paridad es recalculada y vuelta a escribir.
Los bloques de paridad no se leen en las operaciones de lectura de datos, pero
se leen cuando la lectura de un sector de datos provoca un error de CRC4.
Si falla un disco del conjunto, los bloques de paridad de los restantes discos son
combinados matemticamente con los bloques de datos de los restantes discos
para reconstruir los datos del disco que ha fallado al vuelo.
El RAID 5 requiere al menos tres unidades de disco para ser implementado.
El fallo de un segundo disco provoca la prdida completa de los datos.
El nmero mximo de discos en un grupo de redundancia RAID 5 es
tericamente ilimitado, pero en la prctica es comn limitar el nmero de
unidades.
A medida que el nmero de discos en un conjunto RAID 5 crece, el MTBF puede
ser ms bajo que el de un nico disco.

9.6 Jerarqua de Almacenamiento:


1) Registros.
2) Memoria Cach.
3) Memoria Principal.
4) Almacenamiento Auxiliar.
5) Unidades de Disco.
6) Cinta Magntica.

76

10 - Sistemas de Archivos
10.1 Archivo
Un archivo es un conjunto de informacin relacionada cuyo significado ha sido definido por su
creador.
El formato de la informacin puede ser libre (como los archivos de texto) o rgido. Tiene un
nombre, informacin y elementos adicionales llamados atributos.

10.1.1 Manipulacin de archivos y sus elementos


Los archivos pueden ser manipulados como una unidad pero los elementos de datos individuales
de un archivo tambin pueden ser manipulados.
La informacin que contiene un archivo, en su manipulacin debe:
Ser persistente.
Sobrevivir a la conclusin del proceso que la utiliza
Ser posible de almacenar una cantidad muy grande
Ser posible que varios procesos tengan acceso concurrente a ella

10.1.2 Tipos de archivo


El tamao del SO, si el sistema define n tipos diferentes de archivos, entonces debe contener el
cdigo para apoyar a esos n tipos de archivos.
En el caso que el SO no impone ni apoya a ningn tipo de archivo (estrategia de UNIX entre otros),
considerar cada archivo como una secuencia de bytes (de 8 bits) que no interpreta.
Cada programa de aplicacin est obligado a incluir su propio cdigo para poder interpretar un
archivo segn su estructura correcta.

10.1.3 Almacenamiento de los archivos


Registro fsico
Es en donde se lleva a cabo la E/S en disco. El sector, la pista y el cilindro son candidatos para
definir la unidad de asignacin, si sta es muy grande (como un cilindro) significa que a todos los
archivos an uno de 1 byte se le asigna un cilindro completo; por otro lado, si es muy pequea
significa que cada archivo constar de muchos bloques y la lectura ser lenta.
Registro lgico
El tamao del registro lgico esta determinado por la aplicacin.
Relacin entre registro fsico y lgico
El tamao del registro fsico difcilmente coincida con el del tamao del registro lgico. La solucin
es empaquetar los registros lgicos en bloque fsicos, puede ser realizado por el programa de
aplicacin o por el SO en ambos casos, el archivo se puede considerar como una secuencia de
bloques y todas las funciones de E/S operarn con bloques.
El tamao del registro lgico, el tamao del registro fsico y la tcnica de empaquetamiento
determinan cuntos registros lgicos hay en cada bloque fsico.
Fragmentacin interna

110

Al asignar el espacio en disco en bloques, se puede desperdiciar una porcin del ltimo bloque de
cada archivo que representa la fragmentacin interna. A mayor tamao del bloque mayor ser la
fragmentacin interna.

10.2 Independencia de dispositivos


Todos los SO aspiran a la independencia de dispositivos, es decir, hacer que el acceso sea el
mismo sin importar dnde est el archivo (o dispositivo)
Los usuarios pueden apoyarse en un conjunto nico y uniforme de servicios del sistema para la
manipulacin de archivos aplicables tanto a la gestin de archivos como a la gestin de
dispositivos de E/S.

10.3 Sistema de archivos


Es uno de los aspectos ms visible de un SO.
Es responsable de la administracin del almacenamiento y de administrar los dispositivos
de almacenamiento masivo.
Oculta a los usuarios todos los aspectos especficos de dispositivos y les proporciona una
abstraccin de un espacio simple y uniforme de archivos con nombre.
Brinda una interfase favorable al usuario.
Suministra una visin lgica de los datos y de las funciones que sern ejecutadas.

10.3.1 La organizacin del sistema de archivos


El SO debe:
Ofrecer una perspectiva lgica uniforme del almacenamiento de la informacin.
Abstraer las propiedades fsicas de sus dispositivos de almacenamiento para definir una
unidad lgica de almacenamiento: el archivo.
Establecer una correspondencia entre los archivos y los dispositivos fsicos.
La administracin de archivos: Provisin de mecanismos para almacenar, referenciar,
compartir y asegurar archivos.
La administracin del almacenamiento auxiliar: Asignacin de espacio a los archivos en los
dispositivos de almacenamiento secundario.
La organizacin de las estructuras de directorios: Busqueda, creacin y eliminacin de
archivos, listado del directorio, copias de seguridad.
Las operaciones sobre los archivos: Para evitar estas bsquedas constantes, muchos
sistemas abren el archivo cuando se usa por primera vez y el SO mantiene una pequea
tabla con informacin de todos los archivos abiertos. Cuando el archivo deja de usarse, se
cierra y se elimina de la tabla de archivos abiertos.
Los mtodos de acceso: Puesto que varios usuarios pueden tener acceso a los archivos, es
deseable controlar a quin se le otorga el acceso y de qu manera.
La semntica de consistencia: Caracterizacin del sistema que especifica la semntica de
varios usuarios que acceden simultneamente a un archivo compartido.
La integridad de archivos: Proteger la informacin almacenada de daos fsicos
(confiabilidad) y del acceso inadecuado (proteccin). La confiabilidad mediante copias de
los archivos. Debe soportar recuperacin y posiblemente restauracin de archivos por
cadas del sistema.

110

Los aspectos de implementacin: La jerarqua de los niveles, es: programas de aplicacin


sistema lgico de archivos mdulo de organizacin de archivos sistema bsico de
archivos control de E/S dispositivos.

El sistema de archivos est formado por dos partes:


1. El conjunto de archivos cada uno de los cuales contiene informacin relacionada
Un archivo puede estructurarse como:
(a) Secuencia de bytes: el SO no ayuda pero tampoco estorba.
(b) Secuencia de registros de tamao fijo: Se leen o graban registros arbitrarios pero no se
pueden insertar o eliminar registros en mitad de un archivo.
(c) Arbol de bloques de disco: Cada cavidad contiene n registros con clave ubicada en
una posicin fija del registro. Nuevos registros pueden insertarse en cualquier parte del
rbol.
2. La estructura de directorios que proporciona informacin sobre todos los archivos en el
sistema.
Una forma de organizar un sistema de archivos es la siguiente:
Se utiliza una raz para indicar en qu parte del disco comienza el directorio raz.
El directorio raz apunta a los directorios usuarios
Un directorio usuario contiene una entrada para cada archivo del usuario
Cada entrada de archivo apunta al lugar del disco donde est el archivo referenciado
Existe tres niveles de abstraccin
almacenamiento en disco:

de

dispositivo

de

direccionamiento

de

1. Direccionamiento lgico relativo a archivo


El sistema de almacenamiento se contempla como una coleccin de archivos con nombres. Los
elementos contenidos en almacenamiento secundario se direccionan por medio de una
direccin con dos componentes (nombrearchivo, desplazamiento).
2. Direccionamiento lgico relativo a volumen
Abstraccin del disco como un arreglo lineal de sectores. Las partes independientes de
dispositivos del sistema de archivos utilizan esta forma de direccionamiento (sector,
desplazamiento).
3. Direccionamiento fsico relativo a unidad
Este nivel utiliza las direcciones fsicas de tres componentes de la forma (cilindro, cabeza,
sector), ste nivel de direccionamiento es producido por las rutinas de dispositivos que las
traduce a seales reales de control de la unidad.

10.4 La estructura de directorios


Almacenamiento de los atributos del archivo:
Una posibilidad es almacenarlos en forma directa dentro del dato del directorio
Otra posibilidad es almacenarlos en el nodo-i en vez de utilizar la entrada del directorio
Los archivos generalmente se organizan en directorios para facilitar su uso.

110

Un directorio nico puede ser suficiente en un sistema pero de tratarse de un sistema


multiusuario, es ms difcil organizar y controlar todos los archivos.
La estructura de directorios ofrece un mecanismo para organizar los archivos en un sistema.
La ventaja que ofrece es que el usuario slo tiene que preocuparse por el directorio lgico y la
estructura de archivos.
Muchos sistemas tienen en realidad dos estructuras de directorios distintas:
El directorio del dispositivo
Los directorios de archivos.

10.4.1 El directorio del dispositivo


El directorio del dispositivo se encuentra almacenado en cada dispositivo fsico.
La totalidad de las entradas en el directorio del dispositivo describen la totalidad de los archivos
que se encuentran en el mismo.
Cada entrada en el directorio del dispositivo describe las propiedades fsicas del archivo contenido:

10.4.2 Los directorios de archivos


Son una organizacin lgica de los archivos contenidos en todos los dispositivos.
Cada entrada en los directorios de archivos describe las propiedades lgicas del archivo y apunta
a la entrada en el directorio del dispositivo (ubicacin).
Aunque la informacin de cada entrada vara de un SO a otro, se pueden enunciar las siguientes:
Directorio de archivos
Nombre simblico del archivo.
Tipo de archivo.
Ubicacin.
Tamao actual del archivo.
Posicin actual.
Proteccin / Propietario (proteccin de acceso).
Recuento de uso.
Hora, fecha e identificacin de proceso.
Tamao del directorio de archivos
En un sistema con gran cantidad de archivos el tamao del directorio de archivos puede ser de
varios miles de bytes, por lo que es probable que se tenga que almacenar en su dispositivo y
traerse por partes a memoria segn se necesite.

10.5 El directorio del sistema


Se puede considerar el directorio del sistema como una tabla de smbolos que traduce los
nombres de archivo a sus entradas en el directorio.
Siempre se quiere tener capacidad para:
Insertar entradas,
Eliminar entradas,
Buscar una entrada por su nombre,
Mostrar todas las entradas del directorio.
Con un rbol de directorios, se puede tener tantos directorios como se necesiten.

110

10.6 Las estructuras de datos


Una lista lineal de entradas del directorio
Requiere una bsqueda secuencial.
Ejecucin lenta:
Para crear un nuevo archivo: Primero se busca en el directorio para asegurar que no haya
un archivo con el mismo nombre, luego se aade una nueva entrada al final del directorio.
Para eliminar un archivo: Primero se busca en el directorio hasta encontrar su nombre y
luego liberamos el espacio que se le haba asignado.
Para reutilizar la entrada del directorio (existen varias alternativas):
o

Se puede marcar la entrada como no utilizada (con un nombre especial, como


espacios en blanco)

Se puede marcar la entrada con un bit de usada/no-usada

Se puede aadir la entrada a una lista de entradas libres para el directorio,

Se puede copiar la ltima entrada en la localidad liberada y reducir el tamao del


directorio.

Una lista ligada (o encadenamiento de bloques)


Disminuye el tiempo necesario para eliminar un archivo comparada con una lista lineal pues evita
la bsqueda secuencial para encontrar un archivo.
Una lista ordenada
Permite una bsqueda binaria que reduce el tiempo promedio de bsqueda. La desventaja que
presenta es que la programacin del algoritmo de bsqueda es compleja y adems, siempre hay
que mantener la lista ordenada complicando la creacin y eliminacin de los archivos.
Un rbol binario enlazado.
Permite evitar el problema del mantenimiento de la lista ordenada que presenta la tabla ordenada.
Una tabla de dispersin
Mejora el tiempo de bsqueda y la insercin y eliminacin de archivos es bastante directas.
La desventaja que presenta es que hay que tomar medidas para evitar las colisiones.
El tamao de la tabla generalmente es fijo por lo tanto existe otra desventaja que es la
dependencia de la funcin de dispersin respecto al tamao de la tabla.

110

11. Proteccin y Seguridad


11.1 Proteccin
La proteccin se refiere a un mecanismo para controlar el acceso de los programas, procesos o
usuarios a los recursos definidos por un sistema de computacin.

11.1.1 Objetivos de la proteccin


Aumentar la confiabilidad de cualquier sistema complejo que usa recursos compartidos.
Evitar que un usuario mal intencionado viole una restriccin de accesos.
Asegurar que cada componente activo de un programa en un sistema use los recursos slo
en forma congruente con las polticas expresas para el uso de tales recursos.
La deteccin temprana de los errores de interfaz a menudo puede evitar la contaminacin
de un subsistema sano por un subsistema que no est funcionando correctamente.
Un sistema orientado hacia la proteccin proporciona mecanismos para distinguir entre los
usos autorizados y los no autorizados.
Ofrecer un mecanismo para hacer cumplir las polticas que gobiernan el uso de los
recursos.
Un sistema de proteccin debe tener la suficiente flexibilidad para hacer cumplir diversas
polticas que puedan establecerse en l.

11.1.2 Principios de la proteccin


Principio del mnimo privilegio: dicta que a los programas, a los usuarios, incluso a los sistemas se
les concedan nicamente los suficientes privilegios para llevar a cabo sus tareas.
Implementar sus caractersticas, programas, llamadas al sistema y estructuras de datos de modo
que el fallo o el compromiso de un componente provoquen un dao mnimo y no permitan realizar
ms que un dao mnimo.
Proporcionar mecanismos para activar los privilegios cuando sean necesarios y desactivarlos
cuando dejan de serlo. Tambin resulta ventajosa la creacin de pistas de auditora para todos los
accesos a funciones privilegiadas. La pista de auditora permite al programador, al administrador
del sistema o a los miembros de las fuerzas del orden revisar todas las actividades realizadas en el
sistema que estn relacionadas con los mecanismos de proteccin y de seguridad.
Implica crear una cuenta separada para cada usuario, con slo los privilegios que ese usuario
necesite.
El principio de mnimo privilegio puede ayudar a obtener un entorno informtico ms seguro.
Desafortunadamente, con frecuencia no lo hace.

11.1.3 Dominio de proteccin


Un sistema de computacin es una coleccin de procesos y objetos. Con objetos nos referimos
tanto a objetos de hardware como de software. Cada objeto tiene un nombre nico que lo
distingue de todos los dems objetos, y slo se puede acceder a ellos empleando operaciones bien
definidas y significativas. En esencia, los objetos son tipos de datos abstractos.
Queda claro que a un proceso slo debe permitrsele acceder a los recursos para los cuales tiene
autorizacin de acceso. Adems, en un instante dado, el proceso slo deber poder acceder a los
recursos que necesite para llevar a cabo su tarea. Este requisito, conocido como el principio de
necesidad de conocer, es til para limitar la cantidad de dao que un proceso que falla podra
causar en el sistema.

110

11.1.3.1 Estructura de dominios


Un proceso opera dentro de un dominio de proteccin, que especifica los recursos a los que el
proceso puede acceder. Cada dominio define un conjunto de objetos y los tipos de operaciones
que se pueden invocar para cada objeto. La capacidad para ejecutar una operacin con un objeto
es un derecho de acceso.
Un dominio es una coleccin de derechos de acceso, cada uno de los cuales es un par ordenado
constituido por <nombre-de-objeto, conjunto-de-derechos>.
Los dominios no necesitan ser disjuntos; pueden compartir derechos de acceso.
La asociacin entre un proceso y un dominio podra ser esttica (si el conjunto de recursos de que
dispone un proceso no cambia durante toda la existencia del proceso) o dinmica.
Asociacin entre dominios y procesos es fija, necesitaremos un mecanismo para cambiar el
contexto de un dominio. Un proceso podra ejecutarse en dos fases distintas. Si un dominio
es esttico, deberemos definir el dominio de modo que incluya acceso tanto de lectura
como de escritura. Este esquema proporciona ms derechos que los que se necesitan en
cada una de las dos fases. Esto viola el principio de necesidad de conocer. Debemos
permitir la modificacin del contenido de un dominio.
Si la asociacin es dinmica, se cuenta con un mecanismo para que un proceso pueda
cambiar de un dominio a otro. Tambin podramos querer permitir que se modifique el
contenido de un dominio.
Hay varias formas de establecer dominios:
Cada usuario podra ser un dominio: el conjunto de objetos al que se puede acceder
depende de la identidad del usuario.
Cada proceso podra ser un dominio. el conjunto de objetos al que se puede acceder
depende de la identidad del proceso.
Cada procedimiento podra ser un dominio: el conjunto de objetos al que se puede acceder
corresponde a las variables locales definidas dentro del procedimiento.

11.1.3.2 Ejemplos
Consideremos el modelo estndar de modo dual si el proceso se ejecuta en modo usuario slo
puede invocar instrucciones no privilegiadas, as que slo puede ejecutarse dentro de su espacio
de memoria predefinido. Estos dos modos protegen al sistema operativo. En un Sistema Operativo
multiprogramado, no basta con dos dominios de proteccin, ya que los usuarios tambin quieren
que se les proteja de otros usuarios. por tanto, se requiere un esquema ms complicado.

11.1.4 Matriz de acceso


Las filas de la matriz de acceso representan dominios, y las columnas, objetos. Cada entrada de la
matriz consiste en un conjunto de derechos de acceso. La entrada acceso(i j j) define el conjunto
de operaciones que un proceso que se ejecuta en el dominio Di puede invocar con el objeto Oj.
El mecanismo consiste en implementar la matriz de acceso y asegurar que se cumplan realmente
las propiedades semnticas que bosquejemos. En trminos ms especficos, debemos asegurar
que un proceso que se ejecuta en el dominio Di pueda acceder slo a los objetos especificados en
la fila i, y slo como lo especifican las entradas de la matriz de acceso.
Las decisiones de poltica relativas a la proteccin se refieren a qu derechos deben incluirse en la
(i,j)-sima entrada y corresponden al Sistema Operativo.

110

Los usuarios normalmente deciden el contenido de las entradas de la matriz de acceso. Cuando un
usuario crea un objeto nuevo Oj, se aade la columna Oj a la matriz de acceso con las entradas
iniciales apropiadas, a gusto del creador. El usuario podra decidir colocar algunos derechos en
algunas entradas de la columna j y otros derechos en otras entradas, segn sus necesidades.
La matriz de acceso proporciona un mecanismo apropiado para definir e implementar un control
estricto de la asociacin tanto esttica como dinmica entre procesos y dominios. Podemos
controlar la conmutacin de dominios incluyendo dominios entre los objetos de la matriz de
acceso.
Los procesos debern poder cambiar de un dominio a otro. Se permite la conmutacin del dominio
Di al dominio Dj si y slo si el derecho de acceso conmutar pertenece acceso(i,j): Matriz de
acceso con dominios como objetos.
La capacidad para copiar un derecho de acceso de un dominio (fila) de la matriz de acceso a otro
se denota con un asterisco (*) aadido al derecho de acceso. El derecho de copiar permite copiar
el derecho de acceso slo dentro de la columna (esto es, el objeto) para la cual se define el
derecho.
Este esquema tiene dos variantes:
1. Se copia un derecho de acceso(i,j) a acceso(k,j); luego, se elimina de acceso(i,j); esta
accin es una transferencia de un derecho, ms que una copia.
2. La propagacin del derecho de copiar podra estar limitada, es decir, cuando el derecho R*
se copia de acceso(i,j) a acceso(k,j), slo se crea el derecho R (no R*). Un proceso que se
ejecute en el dominio Dk no podr copiar el derecho R.
Mecanismos para modificar entradas de una columna:
El derecho de copiar: permite a un proceso copiar algunos derechos de una entrada de una
columna a otra entrada de la misma columna.
El derecho de dueo: mecanismo para aadir nuevos derechos y quitar algunos derechos. Si
acceso(i,j) incluye el derecho de dueo, un proceso que se ejecuta en el dominio Di puede agregar
y quitar cualquier derecho en cualquier entrada de la columna j.
Mecanismo para modificar las entradas de una fila.
El derecho control slo aplica a los objetos dominio. Si acceso(i,j) incluye el derecho control, un
proceso que se ejecuta en el dominio Di puede quitar cualquier derecho de acceso de la fila j.
El problema de garantizar que ninguna informacin que inicialmente est contenida en
un objeto pueda migrar fuera de su entorno de ejecucin se denomina problema de
confinacin.

11.1.5 Implementacin de la matriz de acceso


11.1.5.1 Tabla global
Es una tabla global que consiste en un conjunto de tripletas ordenadas <dominio, objeto,
conjunto-de-derechos>. Cada vez que una operacin M se ejecuta con un objeto Oj dentro del
dominio Di, se busca en la tabla global una tripleta <Di, Oj, Rk> donde M pertenece a Rk. Si se
encuentra tal tripleta, se permite que la operacin contine; si no, se genera una condicin de
excepcin (error).
Desventajas: La tabla suele ser grande y por tanto no puede mantenerse en la memoria principal,
por lo que requiere E/S adicional. Es comn usar tcnicas de memoria virtual para manejar esta
tabla.

110

11.1.5.2 Lista de acceso para objetos


Cada columna de la matriz de acceso se puede implementar como una lista de acceso para un
objeto. Las entradas vacas pueden desecharse. La lista resultante para cada objeto consiste en
pares ordenados <dominio, conjunto-de-derechos>, que definen todos los dominios con un
conjunto no vaco de derechos de acceso para ese objeto.
Si se intenta una operacin M con un objeto Oj en el dominio Di, examinamos la lista de acceso del
objeto Oj en busca de una entrada <Di, Rk> con M perteneciendo a Rk. Si M est en ese conjunto,
permitimos el acceso; si no, negamos el acceso y ocurre una condicin de excepcin.
Las listas de acceso corresponden directamente a las necesidades de los usuarios. Dado que la
informacin de derechos de acceso para un dominio dado no est localizada, es difcil determinar
el conjunto de derechos de acceso para cada dominio. Cada acceso al objeto debe verificarse, lo
que requiere una bsqueda en la lista de acceso.

11.1.5.3 Lista de capacidades para dominios


Podemos asociar cada fila con su dominio. Una lista de capacidades para un dominio es una lista
de objetos junto con las operaciones que se permiten con esos objetos. Es comn representar un
objeto con su nombre o su direccin fsica, llamada capacidad. Para ejecutar la operacin M con el
objeto Oj, el proceso ejecuta la operacin M especificando la capacidad (puntero) del objeto Oj
como parmetro. La simple posesin de la capacidad implica que se permite el acceso.
La lista de capacidades es en s un objeto protegido que el Sistema Operativo mantiene y al cual
el usuario slo puede acceder indirectamente. La proteccin basada en capacidades depende del
hecho de que nunca se permite a las capacidades migrar a cualquier espacio de direcciones al que
un proceso de usuario tiene acceso directo.
Las capacidades suelen distinguirse de otros datos en una de dos formas:
Cada objeto tiene una etiqueta para denotar su tipo. Las etiquetas en s no deben ser
directamente accesibles para los programas de aplicacin. Para distinguir entre las
capacidades y otros objetos se usan varios bits. Esta extensin permite al hardware
etiquetar todos los objetos con su tipo.
Como alternativa, el espacio de direcciones asociado a un programa se puede dividir en
dos partes. Una parte es accesible para el programa y contiene sus datos e instrucciones
normales. La otra parte, que contiene la lista de capacidades, slo es accesible para el
Sistema Operativo. Un espacio de memoria segmentado es til para soportar este enfoque.
Las listas de capacidades son tiles para localizar informacin de un proceso en particular. El
sistema de proteccin slo tiene que verificar que la capacidad sea vlida. Por otro lado, la
revocacin de capacidades podra ser ineficiente.

11.1.5.4 Un mecanismo de cerradura y llave


El esquema cerradura-llave es un trmino medio entre las listas de acceso y las listas de
capacidades. Cada objeto tiene una lista de patrones de bits nicos, llamados cerraduras. As
mismo, cada dominio tiene una lista de patrones de bits nicos, llamados llaves. Un proceso que
se ejecuta en un dominio puede acceder a un objeto slo si ese dominio tiene una llave que
coincide con una de las cerraduras del objeto.
No se permite a los usuarios examinar ni modificar la lista de llaves (o de cerraduras)
directamente.
El mecanismo de cerradura y llave: puede ser eficaz y flexible, dependiendo de la longitud de las
llaves. stas pueden pasarse libremente de un dominio a otro. Adems, los privilegios de acceso
se pueden revocar efectivamente con la sencilla tcnica de cambiar algunas de las llaves
asociadas al objeto.

110

11.1.5.5 Comparacin
La mayor parte de los sistemas usan una combinacin de listas de acceso y capacidades. Cuando
un proceso intenta acceder a un objeto por primera vez, se examina la lista de acceso. Si se niega
el acceso, ocurre una condicin de excepcin; si no, se crea una capacidad y se conecta al objeto.
Las referencias subsecuentes usan la capacidad para demostrar rpidamente que se autoriz el
acceso. Despus del ltimo acceso la capacidad se destruye.

11.1.6 Control de acceso


Cuando un proceso abre un archivo, se examina una estructura de directorio para encontrar el
archivo, se verifica el permiso de acceso y se asignan buffers. Toda esta informacin se asienta en
una nueva entrada de una tabla de archivos asociada al proceso. Todas las operaciones con el
archivo se efectan especificando el ndice de la tabla de archivos.
La entrada correspondiente de la tabla apunta al archivo y a sus buffers. Cuando el archivo se
cierra, la entrada de la tabla de archivos se borra.
A cada archivo y directorio se le asignan un propietario, un grupo o posiblemente una lista de
usuarios y para cada una de estas entidades se asigna una informacin de control de acceso.

11.1.7 Revocacin de derechos de acceso


En un sistema de proteccin dinmico, a veces puede ser necesario revocar derechos de acceso a
objetos compartidos por diferentes usuarios.
La revocacin puede ser:
Inmediata o diferida
Selectiva o general.
Parcial o total
Temporal o permanente
Con un esquema de lista de acceso, la revocacin es fcil. Se busca en la lista de acceso el o los
derechos por revocar y se eliminan de la lista. La revocacin es inmediata, y puede ser general o
selectiva, total o parcial y permanente o temporal.
Las capacidades presentan un problema de revocacin mucho ms difcil.
Readquisicin. Peridicamente, se eliminan capacidades de cada dominio.
Retropunteros. Se mantiene una lista de punteros con cada objeto, los cuales apuntan a
todas las capacidades asociadas a ese objeto. Se pueden seguir estos punteros y modificar
las capacidades segn sea necesario.
Indireccin. Cada capacidad apunta a una entrada nica de una tabla global, que a su vez
apunta al objeto. Implementamos la revocacin buscando en la tabla global la entrada
deseada y eliminndola.
Claves. Una clave es un patrn de bits nico que se puede asociar a cada capacidad. Esta
clave se define cuando se crea la capacidad, y el proceso que posee esa capacidad no
puede modificarla ni inspeccionarla. Se puede definir o reemplazar una clave maestra
asociada a cada objeto usando la operacin establecer-cave (set-key).
La revocacin sustituye la clave maestra por un nuevo valor con la operacin establecerclave; esto anula la validez de todas las capacidades previas para este objeto.

110

Este esquema no permite la revocacin selectiva.


Agrupar todas las claves en una tabla de claves global. Una capacidad slo es vlida si su
clave coincide con alguna clave de la tabla global. Implementamos la revocacin
eliminando la clave coincidente de la tabla.

11.1.9 Proteccin basada en el lenguaje


Los sistemas de proteccin ahora se ocupan no slo de la identidad de un recurso al cual se
intenta acceder, sino tambin de la naturaleza funcional de ese acceso.
Las polticas para el uso de recursos tambin podran variar, dependiendo de la aplicacin, y
podran cambiar con el tiempo.

11.1.9.1 Imposicin de reglas basadas en compilador


Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una
declaracin acerca del recurso. Este tipo de declaracin se puede integrar en un lenguaje
mediante una extensin de su mecanismo de tipificacin. Debera darse directamente durante la
redaccin del programa, y en el lenguaje en el que el programa mismo se expresa.
Este enfoque tiene varias ventajas importantes.
1. Las necesidades de proteccin se declaran de forma sencilla.
2. Las necesidades de proteccin pueden expresarse independientemente de los recursos que
ofrezca un Sistema Operativo en particular.
3. El diseador de un subsistema no tiene que proporcionar los mecanismos para hacer
cumplir la proteccin.
4. Una notacin declarativa es natural porque los privilegios de acceso estn ntimamente
relacionados con el concepto lingstico de tipo de datos.
Un programa podra imponer restricciones arbitrarias sobre la forma en que un recurso podra
usarse durante la ejecucin de un segmento de cdigo especfico por cualquier proceso. La forma
ms fcil de
implementar tales restricciones es usando capacidades de software. Una
implementacin por lenguaje podra ofrecer procedimientos protegidos estndar para interpretar
las capacidades de software que pondran en prctica las polticas de proteccin que podran
especificarse en el lenguaje.
Qu ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un ncleo, en
comparacin con el cumplimiento forzado en gran medida por un compilador?
Seguridad: La obligacin del cumplimiento por un ncleo ofrece un mayor grado de seguridad del
sistema de proteccin mismo, que el que ofrece la generacin de cdigo de verificacin de
proteccin por un compilador. En un esquema apoyado por compilador, la seguridad depende de
lo correcto que sea el traductor, de algn mecanismo subyacente de gestin de almacenamiento
que proteja los segmentos desde los cuales se ejecuta el cdigo compilado y, en ltima instancia,
de la seguridad de los archivos desde los que se carga un programa.
La proteccin apoyada por hardware tambin es relativamente inmune a las violaciones de
proteccin que podran ocurrir a causa de un fallo del hardware o del software de sistema.
Flexibilidad: Hay lmites a la flexibilidad de un ncleo de proteccin para implementar una poltica
definida por el usuario, aunque podra proporcionar recursos suficientes para que el sistema haga
cumplir sus propias polticas.
Eficiencia: Se logra una eficiencia mxima cuando hardware (o microcdigo) apoya directamente
el cumplimiento de la proteccin. En la medida en que se requiera soporte de software, el

110

cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento


del acceso esttico fuera de lnea en el momento de la compilacin.
Uso de capacidades de software: incorpora la idea de que ciertos componentes de programa
podran tener el privilegio de crear o examinar dichas capacidades de software. Un programa
creador de capacidades podra ejecutar una operacin primitiva que sellara una estructura de
datos, haciendo su contenido inaccesible a cualquier componente de programa que no posea los
privilegios de sellar o de quitar sellos.
La razn para introducir tales capacidades de software es incorporar un mecanismo de proteccin
en el lenguaje de programacin. El nico problema que tiene el concepto propuesto es que el uso
de las operaciones de sellar y quitar sello adopta un enfoque de procedimientos para la
especificacin de la proteccin.
El desarrollo de varias construcciones de lenguaje que permiten al programador declarar diversas
restricciones sobre el uso de un recurso controlado especfico. Estas construcciones proporcionan
mecanismos para tres funciones:
1. Distribuir capacidades de manera segura y eficiente entre procesos clientes.
2. Especificar el tipo de operaciones que un proceso dado podra invocar con un recurso
asignado
3. Especificar el orden en que un proceso dado puede invocar las diversas operaciones de un
recurso.
11.1.9.2 Proteccin en Java
La mquina virtual de Java (JVM) tiene muchos mecanismos de proteccin integrados. Java tiene
soporte para cargar dinmicamente clases que no sean de confianza a travs de una red y para
ejecutar clases que desconfan mutuamente unas de otras dentro de una misma JVM.
El que una solicitud de apertura de un archivo deba ser permitida depender, generalmente, de la
clase que haya efectuado 1a-solicitud. El sistema operativo carece de este conocimiento.
Por tanto, dichas decisiones de proteccin se gestionan dentro de la JVM. Cuando la JVM carga una
clase, la asigna a un dominio de proteccin que proporciona los permisos correspondientes a esa
clase.

11.2 Seguridad
La seguridad que es una medida de la confianza que tenemos en que se preservar la integridad
de un sistema y de sus datos. La seguridad es un tema mucho ms amplio que la proteccin y lo
abarcaremos en otro captulo.
La seguridad no slo requiere un sistema de proteccin apropiado, sino tambin considerar el
entorno externo en el que el sistema opera.

11.2.1 El problema de la seguridad


Decimos que un sistema es seguro si sus recursos se utilizan de la forma prevista y si se accede a
ellos tal como se pretenda, en todas las circunstancias.
Las violaciones de seguridad o la mala utilizacin de un sistema pueden clasificarse en dos
categoras: intencionadas (maliciosas) o accidentales.
Utilizamos los trminos intruso y cracker para designar a las personas que tratan de romper los
sistemas de seguridad. Asimismo, una amenaza es la posibilidad de que exista una violacin de
seguridad, como por ejemplo el descubrimiento de una vulnerabilidad, mientras que un ataque es
un intento de romper la seguridad.

110

Ruptura de la confidencialidad: implica la lectura no autorizada de determinados datos (o


el robo de informacin).
Ruptura de la integridad: implica la modificacin no autorizada de los datos.
Ruptura de la disponibilidad: implica la destruccin no autorizada de datos.
Robo de servicio: implica el uso no autorizado de recursos.
Denegacin de servicio: implica impedir el uso legtimo del sistema.
Los atacantes utilizan diversos mtodos para romper la seguridad de los sistemas:
Mascarada: un participante en una comunicacin pretende ser otra persona (u otro
host).Los atacantes rompen la autenticacin, es decir, la correccin de la identificacin;
Reproducir un intercambio de datos previamente capturado: los ataques de reproduccin
consisten en la repeticin maliciosa o fraudulenta de una transmisin de datos vlida.
Ataque por interposicin: un atacante se introduce dentro del flujo de datos de una
comunicacin, hacindose pasar por el emisor a ojos del receptor y viceversa.
Para proteger un sistema, debemos adoptar las necesarias medidas de seguridad en cuatro
niveles distintos.
1. Fsico: El nodo o nodos que contengan los sistemas informticos. Hay que dotar de
seguridad tanto a las habitaciones donde las mquinas residan como a los terminales o
estaciones de trabajo que tengan acceso a dichas mquinas.
2. Humano. La autorizacin de los usuarios debe llevarse a cabo con cuidado.
Tipos de ataque basado en las tcnicas de ingeniera social:

Phishing: con este tipo de ataque, un correo electrnico o pgina web de aspecto
autentico llevan a engao a un usuario para que introduzca informacin
confidencial.

Anlisis de desperdicios: un trmino general para describir el intento de recopilar


informacin para poder obtener un acceso no autorizado a la computadora.

3. Sistema operativo: El sistema debe auto-protegerse frente a los posibles fallos de


seguridad accidentales o premeditados. Un proceso que est fuera de control podra llegar
a constituir un ataque accidental de denegacin de servicio.
4. Red: Son muchos los datos, en los modernos sistemas informticos que viajan a travs de
lneas arrendadas privadas, de lneas compartidas como Internet, de conexiones
inalmbricas o de lneas de acceso telefnico. La interceptacin de estos datos podra ser
tan daina como el acceso a una computadora, y la interrupcin de la comunicacin podra
constituir un ataque remoto de denegacin de servicio.
Si queremos poder garantizar la seguridad del sistema operativo, es necesario
garantizar la seguridad en los primeros dos niveles.
Sin la capacidad de autorizar a los usuarios y procesos, de controlar su acceso y de registrar sus
actividades, sera imposible que un sistema operativo implementara medidas de seguridad o se
ejecutara de forma segura

11.2.2 Amenazas relacionadas con los programas


Los procesos son, junto con el kernel, el nico medio de realizar un trabajo til en una
computadora. Por tanto, un objetivo comn de los piratas informticos consiste en escribir un
programa que cree una brecha de seguridad o que haga que un proceso normal cambie su
comportamiento y cree esa brecha de seguridad.

110

11.2.2.1 Caballo de Troya


Muchos sistemas cuentan con mecanismos que permiten a un usuario ejecutar programas escritos
por otros usuarios. Si tales programas se ejecutan en un dominio que proporciona los derechos de
acceso del usuario ejecutante, podran abusar de esos derechos.
Un segmento de cdigo que abusa de su entorno se denomina caballo de Troya. El problema del
caballo de Troya se agrava si los caminos de bsqueda son largos.
Una variacin del caballo de Troya sera un programa que emula un programa de ingreso al
sistema (login). Un usuario confiado comienza a ingresar en el sistema desde una terminal y se da
cuenta de que al parecer tecle mal su contrasea. El usuario lo intenta de nuevo y tiene xito.
Este tipo de ataque puede bloquearse si el Sistema operativo imprime un mensaje de utilizacin al
trmino de una sesin interactiva o si se usa una secuencia de teclas no atrapable.

11.2.2.2 Puerta trasera (Trap Door)


El diseador de u programa o sistema podra dejar un agujero en el software que slo l puede
usar. Por ejemplo en bancos mediante la inclusin de errores de redondeo en su cdigo, haciendo
que de vez en cuando medio centavo se abone a sus cuentas.
Podra incluirse una puerta secreta ingeniosa en un compilador. El compilador podra generar
cdigo objeto estndar y tambin una puerta secreta, independientemente del cdigo fuente que
se est compilando. Tal actividad es particularmente insidiosa, ya que un examen del cdigo
fuente del programa no revela problema alguno. Slo el cdigo fuente del compilador contendra
la informacin.

11.2.2.3 Bomba lgica


Considere un programa capaz de iniciar un incidente de seguridad slo cuando se dan
determinadas circunstancias. Sera difcil de detectar porque, en condiciones normales de
operacin, no existira ningn agujero de seguridad. Sin embargo, cuando se satisficiera un
conjunto predefinido de parmetros, se creara el agujero de seguridad. Este escenario se conoce
con el nombre de bomba lgica. Un programador, por ejemplo, podra escribir cdigo para
detectar si todava contina contratado por la empresa; en caso de que dicha comprobacin
fallara, podra crearse un demonio para permitir el acceso remoto.

11.2.2.4 Desbordamiento de pila y de bfer


Lo que el ataque hace es aprovechar un error de un programa. El atacante enva ms datos de los
que el programa est esperando y determina la vulnerabilidad y escribe un programa para hacer
lo siguiente:
1. Desbordar un campo de entrada, un argumento de lnea de comandos o un bfer de
entrada hasta escribir en la zona correspondiente a la pila.
2. Sobreescribir la direccin actual de retorno de la pila, sustituyndola por la direccin de los
cdigos de ataque cargados en el paso 3.

3. Escribir un fragmento simple de cdigo en el siguiente espacio de la pila, que incluye los
comandos que el atacante quiera ejecutar, como por ejemplo arrancar un programa shell.

11.2.2.5 Virus

110

Los virus son auto-replicantes y estn diseados para "infectar" otros programas. Un virus es el
fragmento de cdigo integrado dentro de un programa legtimo.
Los virus constituyen un problema especialmente grave para los usuarios de mquina de tipo PC.
Los virus suelen propagarse a travs de correo electrnico. Otra forma comn de transmisin de
virus utiliza los archivos Microsoft Office.
Cmo funcionan los virus?
Una vez que un virus alcance una mquina objetivo, un programa conocido como lanzador de
virus inserta el virus en el sistema. El lanzador de virus es usualmente un caballo de Troya, que se
ejecuta por otras razones pero cuya principal actividad consiste en instalar el virus. Una vez
instalado, el virus puede hacer una de varias cosas. Existen literalmente miles de virus.
Categoras:
Archivo / Paracito: infecta un sistema insertndose a un archivo y modificando el inicio
del programa para que la ejecucin salte al cdigo del virus. Despus de ejecutarse, el
virus devuelve el control al programa para que no pueda detectarse que el virus se ha
ejecutado.
Arranque / de Memoria: infecta el sector de arranque del sistema, ejecutndose cada
vez que el sistema se arranca y antes de que se cargue el sistema operativo.
Macro: estn escritos en un lenguaje de alto nivel. Estos virus se activan cuando se inicia
un programa capaz de ejecutar la macro.
Cdigo fuente: busca cdigo fuente y lo modifica para incluir el virus y ayudar a su
distribucin.
Polimorfico: cambia cada vez que se instala, para evitar su deteccin por parte del
software antivirus. Los cambios no afectan a la funcionalidad del virus, sino que slo
modifican la signatura del virus.
Cifrado: incluye cdigo de descripcin junto con el virus cifrado, de nuevo para evitar la
deteccin. El virus se descifra primero y luego se ejecuta.
Encubierto: trata de evitar la deteccin modificando partes del sistema que podran ser
usadas para detectarlo.
Tnel: trata de evitar la deteccin por los programas antivirus instalndose asimismo en la
cadena de rutinas de tratamiento de interrupciones.
Multiparte: son capaces de infectar mltiples partes de un sistema.
Acorazado: resultan difciles de desentraar y de comprender por parte de los
investigadores que desarrollan programas antivirus. Tambin pueden estar comprimidos
para evitar la deteccin.
Generalmente, los virus son el tipo de ataque de seguridad ms daino;

11.2.3 Amenazas del sistema y de la red


Las amenazas del sistema y de la red crean una situacin en la que se utilizan inapropiadamente
los recursos del sistema operativo y los archivos del usuario.
Las mascaradas y los ataques por reproduccin tambin resultan comunes en las redes que
interconectan los sistemas. De hecho, estos ataques son ms efectivos y ms difciles de
contrarrestar cuando estn implicados mltiples sistemas.

11.2.3.1 Gusanos

110

Un gusano es un proceso que usa el mecanismo de engendrar para dar al traste con el desempeo
del sistema. El gusano engendra copias de s mismo, ocupando recursos del sistema y tal vez
impidiendo a todos los dems procesos usar el sistema. En las redes de computadores los gusanos
son especialmente potentes, ya que pueden reproducirse entre los sistemas y paralizar toda la
red.
Un estudiante solt un programa gusano en uno o ms anfitriones conectados a Internet. El
gusano rpidamente se extendi a grandes distancias; unas cuantas horas despus de su
liberacin, el gusano haba consumido recursos de sistema hasta el punto de hacer caer las
mquinas infectadas.
El gusano consista en dos programas, un programa garfio (tambin llamado autoarranque o
vector) y el programa principal. El garfio, llamado l1.c, consista en 99 lneas de cdigo en C que
se compilaba y ejecutaba en cada mquina a la que obtena acceso. Una vez establecido en el
sistema atacado, el garfio se conectaba con la mquina en la que se haba originado y cargaba
una copia del gusano principal el sistema enganchado.
Una vez instalado, el gusano principal realizaba intentos sistemticos por descubrir contraseas
de usuarios. A continuacin, el gusano buscaba archivos de datos rsh en esas cuentas recin
violadas. Cualesquiera entradas de rsh halladas se intentaban y, como se describi antes, el
gusano poda entonces obtener acceso a cuentas de usuarios en sistema remotos.

11.2.3.2 Escaneo de puertos


El escaneo de puertos no es un ataque, sino ms bien un mtodo para que los piratas informticos
detecten las vulnerabilidades del sistema que puedan ser atacadas. El escaneo de puertos se
realiza normalmente de forma automatizada, lo que implica utilizar una herramienta que trate de
1 crear una conexin TCP/IP a un puerto o rango de puertos especficos.

11.2.3.3 Denegacin de servicio


La mayora de los ataques de denegacin de servicio afectan a sistemas en los que el atacante no
ha penetrado. Los ataques de denegacin de servicio se realizan generalmente a travs de la red.
Se los puede clasificar en dos categoras:
1. El primer caso es el de los ataques que consumen tantos recursos de la mquina atacada
que prcticamente no puede realizarse con ella ningn trabajo til.
2. El segundo caso de ataque implica hacer caer la red o la instalacin; ha habido numerosos
ataques de denegacin de servicio de este tipo que se han realizado contra algunos sitios
web muy conocidos. Este tipo de ataque es el resultado de un abuso de algunas de las
funciones fundamentales de TCP/IP.
Estos ataques suelen detenerse en el nivel de red, hasta que pueden actualizarse los sistemas
operativos con el fin de
reducir su vulnerabilidad.
Generalmente, es imposible prevenir los ataques de denegacin de servicio. Los ataques utilizan
los mismos mecanismos que la operacin normal. Todava ms difciles de prevenir y de solucionar
son los ataques distribuidos de denegacin de servicio (DDOS, distributed denial-of- service
attacks). Estos ataques se inician desde mltiples sitios a la vez, dirigidos hacia un objetivo
comn, normalmente por parte de programas zombis.

11.2.4 La criptografa como herramienta de seguridad


En una computadora aislada, el sistema operativo puede determinar de manera fiable quines son
el emisor y el receptor de todas las comunicaciones interprocesos, ya que el sistema operativo
controla todos los canales de comunicaciones de la computadora. En una red de computadoras, la
situacin es bastante distinta. Una computadora conectada a la red recibe bits desde el exterior, y

110

no tiene ninguna forma inmediata y fiable de determinar qu mquina o aplicacin ha enviado


esos bits.
Los paquetes de red llegan con una direccin de origen, como por ejemplo una direccin IP. Y
cuando una computadora enva un mensaje, indica- quin es el receptor pretendido del mismo
especificando una direccin de destino. Sin embargo, para aquellas aplicaciones, en las que la
seguridad tenga importancia, correramos el riesgo de meternos en problemas si asumiramos
que la direccin de origen o de destino de un paquete permiten determinar con fiabilidad quin ha
enviado o recibido dicho paquete.

11.2.4.1 Cifrado
El cifrado es un medio de restringir los posibles receptores de un mensaje. Un algoritmo de cifrado
permite al emisor de un mensaje garantizar que slo pueda leer el mensaje una computadora que
posea una cierta clave.
El intercambio de claves puede tener lugar directamente entre las dos partes o a travs de una
tercera parte de confianza.
Un algoritmo de cifrado consta de los siguientes componentes:
Un conjunto K de claves.
Un conjunto M de mensajes.
Un conjunto C de mensajes de texto cifrado
Una funcin E: K (M Q. Es decir, para cada k e K, E(k) es una funcin para generar
mensajes de texto cifrado a partir de los mensajes de texto en claro. Tanto E como E(k)
para cualquier k deben ser funciones computables de manera eficiente.
Una funcin D: K (C - M). Es decir, para cada k e K, D(k) es una funcin para generar
mensajes de texto en claro a partir de los mensajes de texto cifrado. Tanto D como D(k)
para cualquier k deben ser funciones eficientemente computables.
Un algoritmo de cifrado debe proporcionar esta propiedad esencial: dado un mensaje
de texto cifrado c e C, una computadora puede calcular m tal que E(k)(m) = c slo si
posee D(k). As, una computadora que posea D(k) puede descifrar los mensajes de
texto cifrado para obtener los mensajes de texto en claro que se usaron para
producirlos, pero una computadora que no posea D(k) no puede descifrar esos
mensajes cifrados.
11.2.4.1.1 Cifrado simtrico
En un algoritmo de cifrado simtrico, se utiliza la misma clave para cifrar y para descifrar, es
decir, E(k) puede deducirse a, partir de D(k) y viceversa. Por tanto, es necesario proteger el
secreta de. E(k) con el mismo grado que el de D(k).

11.2.4.1.2 Cifrado asimtrico


Las claves de cifrado y descifrado son distintas. Se utiliza para cifrar pequeas cantidades de
datos y tambin para proporcionar autenticacin, confidencialidad y mecanismos de distribucin
de claves.
El algoritmo RSA de cifrado es un algoritmo de cifrado de bloque de clave pblica y es el
algoritmo asimtrico ms ampliamente uti lizado. Sin embargo, los algoritmos asimtricos basados
en curvas elpticas estn ganando cada vez ms terreno, porque la longitud de clave de dichos
algoritmos puede ser ms corta para un grado determinado de fortaleza criptogrfica.

110

Tenemos una clave publica, una privada y un algoritmos de cifrado. El uso de un mecanismo de
cifrado asimtrico comienza con la publicacin de la clave pblica del destino. Para la
comunicacin bidireccional, el origen debe tambin publicar su clave pblica. Esa "publicacin"
puede ser tan simple como entregar una copia electrnica de la clave, o puede tratarse de un
mecanismo ms complejo. La clave privada (o "clave secreta'') debe ser guardada celosamente,
ya que cualquiera que disponga que esa clave podr descifrar cualquier mensaje creado a partir
de la correspondiente clave pblica.
Para una computadora, resulta mucho ms rpido codificar y decodificar un texto
cifrado empleando los algoritmos simtricos usuales que utilizando algoritmos
asimtricos.
11.2.4.1.3 Autenticacin
El proceso de restringir el conjunto de potenciales emisores de un mensaje se denomina
autenticacin. La autenticacin es, por tanto, complementaria al cifrado. De hecho, algunas veces
sus funciones se solapan. La autenticacin tambin resulta til para demostrar que un mensaje no
ha sido modificado.
Un algoritmo de autenticacin consta de los siguientes componentes:
Un conjunto K de claves. ^
Un conjunto M de mensajes.
Un conjunto A de autenticadores.
Una funcin S : K - (M > A). Es decir, para cada k e K, S(k) es una funcin para generar
autenticadores a partir de los mensajes. Tanto S como S(k) para cualquier k deben ser
funciones computacionalmente eficientes.
Una funcin V : K > (M x A {true, f alse}). Es decir, para cada ke K, V(k) es una funcin
para verificar autenticadores de los mensajes. Tanto V como V(k) para cualquier k deben
ser funciones eficientemente computables.
La propiedad crtica que un algoritmo de autenticacin debe poseer es esta: para un mensaje m,
una computadora puede generar un autenticador a e A tal que V(k)(m, a) = true slo si posee
S(k). As, una computadora que posea S(k) podr generar autenticadores para los mensajes de
modo que cualquier otra computadora que posea V(k) pueda verificarlo. Sin embargo, una
computadora que no tenga S(k) no podr generar autenticadores para los mensajes que puedan
verificarse utilizando V(k).
11.2.4.1.4 Distribucin de claves
Estas son las razones por las que se han hecho esfuerzos para crear algoritmos de clave
asimtrica. No slo las claves se pueden intercambiar en pblico, sino que un determinado usuario
slo necesita una clave privada.
Lamentablemente, incluso la distribucin de claves pblicas requiere que se tenga cierto cuidado.

11.2.4.2 Implementacin de los mecanismos criptogrficos


Usualmente, los protocolos de red se organizan en niveles, actuando cada nivel como un cliente
del nivel inferior. Es decir, cuando un protocolo genera un mensaje para enviarlo a su
correspondiente protocolo en otra mquina, pasa su mensaje al protocolo inferior de la pila de
protocolos de red para que ste lo enve a su correspondiente protocolo en dicha mquina.

110

La criptografa puede incluirse en casi cualquier nivel del modelo ISO.


En qu lugar de la pila de protocolos es mejor incluir la proteccin criptogrfica? En general, no
hay una respuesta definitiva. Por un lado, cuando se incluyen las protecciones en la parte inferior
de la pila, hay un nmero mayor de protocolos que pueden beneficiarse de ellas

11.2.5 Autenticacin de usuario


Si un sistema no puede autenticar a un usuario, entonces autenticar un mensaje procedente de
dicho usuario no sirve de nada. Normalmente, cada usuario se identifica a s mismo.
Generalmente, la autenticacin de usuario se basa en una o ms de tres cuestiones: la posesin
de algo (una clave o tarjeta) por parte del usuario, el conocimiento de algo (un identificador de
usuario y una contrasea) por parte del usuario y/o un atributo del usuario (huella digital, patrn
retinal o firma).

11.2.5.1 Contraseas
La estrategia ms comn para validar la identidad de un usuario es el empleo de contraseas.
Cuando el usuario se identifica con un identificador de usuario o nombre de cuenta, se le pide la
contrasea. Si la contrasea que el usuario proporciona coincide con la que est almacenada en el
sistema, ste supone que el usuario est autorizado.
Las contraseas se pueden considerar como un caso especial de las llaves o las capacidades.

11.2.5.2 Vulnerabilidades de las contraseas


Los problemas con las contraseas tienen que ver con la dificultad para mantener secreta una
contrasea
Hay dos formas comunes de adivinar una contrasea. Una es que el intruso (sea humano o un
programa) conozca al usuario o tenga informacin acerca de l. Con demasiada frecuencia, la
gente usa informacin obvia (digamos, los nombres de sus mascotas o de sus cnyuges) como
contraseas. La otra forma es usar fuerza bruta, probando todas las posibles combinaciones de
letras, nmeros y signos de puntuacin hasta hallar la contrasea.
El fracaso de la seguridad por contrasea a causa de exposicin puede ser resultado de vigilancia
visual o electrnica. Un intruso puede mirar por encima del hombro de un usuario cuando ste
est ingresando en el sistema, y averiguar la contrasea fcilmente si observa el teclado. O bien,
cualquier persona con acceso a la red en la que un computador reside podra agregar un monitor
de red imperceptible que le permita observar todos los datos que se transfieren por la red
(husmear), incluidos los identificadores de usuario y contraseas.
11.2.5.3 Contraseas cifradas
Algunos Sistemas Operativos (como el UNIX) usa cifrado para no tener que mantener en secreto
su lista de contraseas. Cada usuario tiene una contrasea. El sistema contiene una funcin que
es extremadamente difcil (o imposible, desearan los diseadores) de invertir, pero fcil de
calcular. Es decir, dado un valor x, es fcil calcular el valor de la funcin f(x). Pero dado un valor de
la funcin f(x), es imposible calcular x. Esta funcin se usa para codificar todas las contraseas.
Slo se almacenan las contraseas codificadas. Cuando un usuario presenta una contrasea, se
codifica y compara con la contrasea codificada almacenada.
El defecto de este mtodo es que el sistema ya no tiene control sobre las contraseas.

11.2.5.4 Contraseas de un solo uso

110

Para evitar los problemas del husmeo de contraseas y las miradas por encima del hombro, un
sistema podra usar un juego de contraseas apareadas. Cuando se inicia una sesin, el sistema
selecciona al azar y presenta una parte de un par de contraseas; el usuario deber proporcionar
la otra parte. En este sistema, se presenta un reto al usuario y ste debe responder con la
respuesta correcta a ese reto.

11.2.5.5 Biomtrica
Los lectores palmares o de manos se usan habitualmente para dotar de seguridad a los accesos
fsicos, como por ejemplo, el acceso a un centro de datos. Estos lectores establecen la
correspondencia entre los parmetros almacenados y los que se obtienen mediante los lectores de
manos. Los parmetros pueden incluir un mapa de temperaturas, as como la longitud del dedo, la
anchura del mismo y los patrones de las lneas.
Los lectores de huellas digitales son muy precisos y su relacin coste-efectividad es buena, por lo
que en el futuro sern de uso comn. Estos dispositivos leen los patrones de las lneas del dedo y
los convierten en una secuencia de nmeros. Varios usuarios pueden tener almacenados sus
perfiles y el escner puede establecer la diferencia entre ellos.

110

12 - Comparativa de Sistemas Operativos


A nivel administrativo se evalan:
Esquema de Licenciamiento y Precio
Estabilidad y Desempeo
Facilidad de uso
Soporte

A nivel tcnico se evalan:


Compatibilidad con otras plataformas
Portabilidad
Requerimientos Hardware
Arquitectura
Sistemas de archivos
Gestin de procesos
Gestin de memoria

110

Comparacin a nivel Administrativo:


GNU Linux
Caracterstica
s

SO libre desarrollado por miles de


personas a travs de internet.
Una distribucin de GNU/Linux es
una
distribucin
de
software
basada en el ncleo Linux.
Paquetes
de
software
para
satisfacer necesidades de grupos
especficos de usuarios.
Bibliotecas y herramientas de GNU
y sistema de ventanas de X
Window System.
Procesadores de texto, hojas de
clculo,
reproductores
multimedia
Existen distribuciones soportadas
comercialmente.

Windows XP
XP proviene de eXPeriencia.
Dispone de varias versiones para
distintos entornos informticos.
Primer SO de Windows orientado al
consumidor que se construye con
un ncleo y arquitectura de
Windows NT en versiones de 32 y
64 bits.
Mejoras
en
rendimiento.

estabilidad

Interfaz grafica de usuario.


Capacidades
Software.

de

Gestin

de

Utiliza la activacin del producto


para reducir la piratera del
software.
Vulnerable respecto a la seguridad.

Estabilidad: hace referencia a las capacidades de la maquina de soportar la carga sin tener
alteraciones.
Desempeo: se refiere a la relacin trabajo/tiempo.

GNU Linux
Estabilidad y
Desempeo:

SO bastante confiable tanto en


rendimiento como en estabilidad.
Es
posible
personalizarlo
de
mltiples maneras por ejemplo la
interfaz.
Altamente estable.

Windows XP
Primeras versiones con deficiencias
en cuanto a la estabilidad que se
han logrado mejorar.
Para asegurar la estabilidad es
necesario llevar a cabo tareas de
mantenimiento.
Hasta cierta medida se puede
optimizar el sistema segn el fin
para el que se usa.

Licenciamiento y precio: Hace referencia al cuerdo que se firma entre las dos partes: productor
y usuario. Se encuentra muy ligado al precio.

GNU Linux
Licenciamient
o y precio:

Liberado y protegido por la Licencia


Pblica General.

Windows XP
Varias
alternativas
licenciamiento.

de

126

Libertades bsicas:
1. Libertad 0: libertad de ejecutar el
programa
para
cualquier
propsito.
2. Libertad 1: libertad de estudiar
como trabaja el programa, y
cambiarlo para que haga lo que
usted quiera.
3. Libertad 2: libertad de distribuir
copias.
4. Libertad 3: libertad de distribuir
copias
de
sus
versiones
modificadas.

Distintas versiones
diferentes.

con

precios

Prohben la copia, distribucin e


instalacin de los mismos sin que
medie un contrato de licencia.

Disponible en internet sin ningn


costo adicional.

GNU Linux
Facilidad de
uso

Windows XP

Interfaz primaria: lnea de comandos


Gran flexibilidad que puede llegar a
ser intimidante.
Puede llegar a tener
graficas muy amigables.
Tiene como motor
sistema: X Window.

interfaces

Interfaz primaria:
grafica).

GUI

(interfaz

Es complicado realizar las acciones


GUI en lnea de comandos.
Interfaz sencilla para trabajar.

grafico

el

Entorno grafico con 4 capas:

Interfaz visualmente atractiva.


Facilidad y rapidez a la hora de
encontrar lo que se necesita.

1. Ncleo acompaado por una capa


de libreras y utilidades del SO.
2. Servidor X: permite el uso de
Interfaz grafica.
3. Windows manager: permite hacer
las operaciones que normalmente
hacemos con ventanas.
4. Entornos
de
escritorio:
caractersticas que los hacen ms
convenientes
que
los
manejadores de ventanas.
Facilidad de uso muy relativa pero
garantizada.

126

Soporte: ayuda que la compaa o persona pueda prestar en caso de fallos o incluso ayuda para
otro tipo de problema.

GNU Linux
Soporte

Windows XP

Soporte opcional: no hay personal


certificado
por
la
empresa
desarrolladora para llevar a cabo
esta tarea.
Hay empresas que realizan este
trabajo
que
podran
tener
a
personas que participaron en el
desarrollo.
Documentacin en internet
solucionar problemas.

para

Algunas distribuciones comerciales


pueden incluir servicio tcnico.

Hay empresas contratadas o


certificadas por el fabricante que
realizan servicio tcnico.
Hay empresas independientes que
brindan soporte.
Est la posibilidad
telefnico.

de

soporte

A menos de un contacto directo


con Microsoft las empresas no
tienen acceso al cdigo fuente por
lo que el soporte es limitado.

Comparacin a nivel Tcnico:


Compatibilidad con otras plataformas: se deben tener en cuenta:
Soporte a sistemas de archivos diferentes al nativo.
Ejecucin de aplicaciones compiladas en otras plataformas.
Compartir recursos en red con otras plataformas.
Portabilidad: caracterstica que posee un software de ejecutarse en diferentes plataformas, el
cdigo fuente es capaz de reutilizarse en vez de crearse un nuevo cdigo cuando se cambia de
plataforma.
El prerrequisito para la portabilidad es la abstraccin generalizada entra la aplicacin lgica y las
interfaces del sistema.

GNU Linux
Portabilidad

Ncleo original fue recodificado para


facilitar la portabilidad.
Primera rescritura: para Motorola
68K con un mnimo esfuerzo.
Se crearon carpetas especficas de
arquitectura en las fuentes del
ncleo donde se almacena el cdigo
con los detalles particulares de cada
procesador soportado, mientras el
cdigo comn se comparte entre
todas las arquitecturas.

Windows XP
La Portabilidad viene dad por la
Capa de abstraccin del hardware
(HAL).
HAL: capa de software que
esconde las diferencias del hard
de los niveles superiores del SO
para garantizar la portabilidad.
Todos
los
componentes
de
Windows acceden al hard a travs
del HAL.
Hay mltiples HAL disponibles
para diferentes plataformas.

126

El HAL se escoge al momento de


instalar el SO.

Requerimientos Hardware: caractersticas de debe tener el hardware de un computadora para


poder soportar y\o ejecutar el SO o aplicacin especifica.
Los requerimientos pueden ser:
Requerimientos mnimos del hardware.
Requerimientos recomendados de hardware.

GNU Linux
Requerimient
os

Varan segn la distribucin y la


versin utilizada.

de

Debian GNU/Linux 3.1:


o Equipo/proc: (m) Pentium 100
Mhz
o Memoria: 64 MB
o Disco duro: 1 GB
Damn Samll Linux 3.0:
o Equipo/procesador: 486 DX.
o Memoria: 16 MB
o Disco duro: 50 MB (puede ser
cd,)
Kubuntu GNU/Linux 10.10:
o Equipo/procesador: 700 Mhz
x86
o Memoria: 384 MB
o Disco duro: 8 GM
Open WRT (para routers
inalmbricos):
o Equipo/procesador:
ARM/Broadcom/..
o Memoria: 16 MB
o Disco duro: 4 MB (Flash)

hardware

Windows XP
Procesador:
Se necesita233 MHz o mas.
Se recomienda: 300 MHz.
Memoria:
Se recomienda RAM de 128 MB o
ms.
Mnimo: RAM de 64 MB.
Disco duro:
Necesario: 1,5 GB disponibles.

Arquitectura: Se deber tener en cuenta cmo se realizarn las llamadas al sistema, cmo se
gestionar la memoria, cmo se realizar la abstraccin del hardware, entre otras caractersticas.
Uno de los puntos fundamentales en el diseo de esta arquitectura de servicios, es el tipo de
ncleo que se va a utilizar en el sistema operativo.
Ncleo Monoltico
Un ncleo monoltico es un tipo de ncleo o kernel de un sistema operativo, como los que utilizan
Unix, Linux y FreeBSD. Estos sistemas tienen un ncleo grande y complejo, que engloba todos los
servicios del sistema. Est programado de forma no modular, y tiene un rendimiento mayor que
un microncleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la
recompilacin del ncleo y el reinicio del sistema para aplicar los nuevos cambios.
Un sistema operativo con ncleo monoltico concentra todas las funcionalidades posibles dentro
de un gran programa. El mismo puede tener un tamao considerable, y deber ser recompilado
por completo al aadir una nueva funcionalidad.

126

Microncleo
Microncleo es un tipo de ncleo de un sistema operativo que provee un conjunto de primitivas o
llamadas al sistema mnimas, para implementar servicios bsicos como espacios de direcciones,
comunicacin entre procesos y planificacin bsica.
Las principales ventajas de su utilizacin son la reduccin de la complejidad, la descentralizacin
de los fallos y la facilitacin para crear y depurar controladores de dispositivos.
Sus principales dificultades son la complejidad en la sincronizacin de todos los mdulos que
componen el microncleo y su acceso a la memoria y la Integracin con las aplicaciones.
Ncleo Hbrido
Los ncleos hbridos fundamentalmente son microncleos que tienen algo de cdigo no esencial,
en espacio de ncleo para que ste se ejecute ms rpido de lo que lo hara si estuviera en
espacio de usuario. Es un microncleo NO modificado.
El ncleo hbrido implica que el ncleo en cuestin usa conceptos de arquitectura o mecanismos
tanto del diseo monoltico como del microncleo, especficamente el paso de mensajes y la
migracin de cdigo no esencial hacia el espacio de usuario, pero manteniendo cierto cdigo no
esencial en el propio ncleo por razones de rendimiento.

GNU Linux
Arquitectura

Arquitectura del
subsistemas:

SO

con

Windows XP
cuatro

Arquitectura altamente modular.


Arquitectura basada en dos capas:

Aplicaciones de usuario.

Servicios del SO.

Ncleo Linux.

Controladores del Hardware.

Modo usuario.

Modo ncleo.

Ncleo de tipo Hibrido.

Cada
subsistema
puede
comunicarse con los subsistemas de
las capas adyacentes.
Dependencia entre subsistemas de
arriba hacia abajo.

Ncleo
compuesto
modulos.

por

cinco

Planificador de procesos SCHED.

Administrador de memoria (MM).

Sistemas de archivos virtuales


(VFS).

Interfaz de red (NET).

estos

Executive: interfaz entre el


ncleo y los subsisteas del
modo usuario.

Microncleo:
proporc
sincronizacin
multiprocesador, hilos y envio
y
planificacin
de
interrupciones,
gestin
de
interrupciones y envio de
excepciones.

Controladores
en
modo
ncleo: para permitirle a los
programas
de
usuario
interactuar con los dispositivos
del hardware.

Capa
de
abstraccin
de
hardware (HAL): diseado para
ocultar las diferencias de
hardware
y
por
tanto
proporciona una plataforma

Soporta multitarea: cada proceso


usuario puede actuar como si fuera
el nico proceso en el ordenador,
con uso exclusivo de la memoria
principal y otro recursos del hard.
Ncleo
compuesto
subsistemas:

de

126

Comunicacin
(IPC).

entre

procesos

Ncleo de tipo monoltico con la


posibilidad de agregar y eliminar
secciones de cdigo mediante uso
de mdulos.

consistente en
aplicaciones
ejecutarse.

la

cual las
pueden

Cada pieza de cdigo que puede ser


aadida al ncleo en tiempo de
ejecucin se denomina modulo.

GNU Linux
Sistemas de
archivos

Existe un sistema de archivos que


carga
y
contiene
todos
los
directorios,
redes,
programas,
particiones, dispositivos, etc. que el
sistema sabe reconocer, o por lo
menos, identificar.
Tiene como base al carcter (/); ese
mismo carcter sirve tambin para
demarcar los directorios.
A los discos se les asigna un
directorio de la jerarqua del
directorio raz (/).
Los directorios pueden clasificarse
en:
o

Estticos.

Dinmicos

Compartidos

Restringidos

Por ser el sistema operativo de


cdigo
abierto,
posee
implementaciones para mltiples
sistemas, nombrando algunos a
continuacin

Windows XP
El directorio raz se identifica con
la letra de la unidad seguida de
":\".
Las carpetas contenedoras de
archivos (o subdirectorios) se
simbolizan con un nombre y luego
"\".
Los
archivos
se
denominan
mediante un nombre y luego un
punto y la extensin.
Hay al menos un directorio raz por
cada unidad fsica.
Podemos
encontrar
sistemas de archivos.

varios

Los sistemas FAT son sencillos ya


que lo nico que hacen es guardar
en un sector de arranque una
tabla que le indica al sistema
operativo
donde
estn
los
archivos.

Gestin de procesos
GNU/Linux
126

Para ser compatible con otros sistemas UNIX, Linux debe utilizar un modelo de proceso similar a
los de las otras versiones de UNIX. Sin embargo, Linux opera de manera diferente a UNIX en
algunos aspectos clave.
El principio bsico de la gestin de procesos UNIX consiste en separar dos operaciones: la creacin
de un proceso y la ejecucin de un nuevo programa. Un nuevo proceso se crea con la llamada al
sistema fork() y un nuevo programa se ejecuta despus de una llamada a exec().
Este modelo presenta la ventaja de su gran simplicidad.
En Linux, podemos descomponer este contexto en una serie de secciones especficas. Las
propiedades de los procesos pueden clasificarse en tres grupos: identidad del proceso, entorno y
contexto.
Identidad de un proceso
La identidad del proceso est compuesta principalmente de los siguientes elementos:
ID de proceso (PID).
Credenciales.
Personalidad.
Entorno de un proceso
El entorno de un proceso se hereda de su proceso padre y est compuesto por dos vectores: el
vector de argumentos y el vector de entorno.
Contexto de un proceso
El contexto de un proceso es el estado del programa en ejecucin en un momento determinado,
as que est variando constantemente. El contexto de un proceso incluye las siguientes partes:
Contexto de planificacin
Contabilidad de recursos.
Tabla de archivos.
Contexto del sistema de archivos.
Tabla de rutina de tratamiento de seales.
Contexto de memoria virtual.
Procesos y hebras
Linux no distingue entre procesos e hilos. De hecho, Linux utiliza generalmente el trmino tarea
para referirse a un flujo de control dentro de un programa. Cuando se invoca clone(), se le pasa un
conjunto de indicadores para determinar el grado de comparticin que debe haber entre las tareas
padre e hija.
La falta de distincin entre procesos y hebras es posible porque Linux no almacena el contexto
completo de un proceso dentro de la estructura principal de datos del proceso; en lugar de ello,
almacena el contexto dentro de subcontextos independientes. La estructura de datos del proceso
simplemente contiene punteros a estas otras estructuras, por lo que cualquier nmero de
procesos puede compartir fcilmente un subcontexto apuntando al mismo subcontexto segn sea
necesario.
Planificacin
Linux tiene dos algoritmos separados de planificacin de procesos. Uno de ellos es un algoritmo de
tiempo compartido para la planificacin apropiativa y equitativa entre mltiples procesos; el otro

126

est diseado para tareas de tiempo real, en la que las prioridades absolutas son ms importantes
que la equidad.
El planificador de Linux es un algoritmo apropiativo basado en prioridades, con dos rangos de
prioridad separados: un rango de tiempo real, que va de 0 hasta 99, y un rango de valores nice,
que va de 100 a 140. Estos dos rangos se ponen en correspondencia con un esquema de
prioridades global en el que los valores numricamente inferiores indican las prioridades ms
altas.
Linux asigna a las tareas de mayor prioridad unos quantums de tiempo ms largos, y viceversa.
Cuando una tarea ha agotado su cuanto de tiempo, se la considera caducada y no es elegible de
nuevo para ejecucin hasta que todas las restantes tareas hayan agotado tambin su quantum de
tiempo. El kernel mantiene una lista de todas las tareas ejecutables en una estructura de datos
denominada cola de ejecucin (runqueue).
La planificacin en tiempo real de Linux es todava ms simple. Linux implementa las dos clases
de planificacin de tiempo real requeridas por POSIX.1b: la planificacin FCFS (first-come, firstserved) y la planificacin por turnos (RoundRobin).
Apropiatividad
La forma en que el kernel planifica sus propias operaciones es fundamentalmente distinta de la
forma en que planifica los procesos. Una solicitud para ejecucin en modo kernel puede producirse
de dos formas. Un programa en ejecucin puede solicitar un servicio del sistema operativo, bien
explcitamente mediante una llamada al sistema, o bien implcitamente.
El problema que se le plantea al kernel es que todas estas tareas pueden tratar de acceder a las
mismas estructuras internas de datos.
Antes de la versin 2.6, Linux era un kernel no apropiativo, lo que quiere decir que un proceso que
se estuviera ejecutando en modo kernel no poda ser desalojado, ni siquiera si pasaba a estar
disponible para ejecucin otro proceso de mayor prioridad. Con la versin 2.6, el kernel de Linux
se ha hecho completamente apropiativo, de modo que ahora una tarea puede ser desalojada
cuando se est ejecutando en el kernel.

MS Windows XP
La gestin de procesos en MS Windows XP se produce a distintos niveles, a nivel de microncleo y
a nivel de executive.
Microncleo
La mayor parte del microncleo nunca es descargada de memoria por el mecanismo de
paginacin y su ejecucin nunca puede ser desalojada. Sus principales responsabilidades son la
planificacin de hebras, la implementacin de primitivas de sincronizacin, la gestin de
temporizadores, las interrupciones software (llamadas a procedimientos asncronas y diferidas) y
el despacho de excepciones.
Windows XP utiliza procesos y hebras para estructurar el cdigo ejecutable. Los procesos tienen un
espacio de direcciones de memoria virtual y una serie de informaciones que se utilizan para
inicializar cada hebra. Cada proceso tiene una o ms hebras, cada una de las cuales es una unidad
ejecutable que el kernel se encarga de despachar.
Los seis posibles estados de las hebras son: preparada, lista, en ejecucin, en espera, en
transicin y terminada.
Las prioridades se dividen en dos clases: clase variable y clase de tiempo real.
Cuando se agota el cuanto de tiempo de una hebra, la interrupcin del reloj efecta una llamada a
procedimiento diferida (DPC, deferred procedure call) al procesador en la que se sealiza el final
del cuanto, con el fin de volver a planificar el procesador. Si la hebra desalojada pertenece a la
clase de prioridad variable, su prioridad se reduce. La prioridad no puede nunca reducirse por

126

debajo de la prioridad base. Cuando una hebra de prioridad variable finaliza una operacin de
espera, el despachador aumenta su prioridad.
Executive
Proporciona un conjunto de servicios utilizado por todos los subsistemas de entorno. Para
gestionar las entidades de modo kernel, Windows XP utiliza un conjunto genrico de interfaces que
son manipuladas por los programas en modo usuario. Windows XP denomina a estas entidades
objetos, y el componente del programa ejecutivo que los manipula es el gestor de objetos. Cada
proceso tiene una tabla de objetos que contiene entradas utilizadas para controlar los objetos
usados por el proceso.
El gestor de objetos mantiene el espacio interno de nombres de Windows XP. El gestor de objetos
proporciona interfaces para definir tanto tipos de objetos como instancias de objetos, traduciendo
los nombres a objetos, manteniendo el espacio de nombres abstracto y encargndose de gestionar
la creacin y eliminacin de objetos.
Los nombres pueden ser permanentes o temporales. Un nombre permanente representa una
entidad y un nombre temporal slo existe mientras un proceso posea un descriptor de dicho
objeto.
El administrador de procesos que se encuentra incluido en el Executive, provee servicios para
crear, eliminar y usar procesos, hebras y tareas. No tiene conocimiento sobre relaciones de
parentesco padre/hijo sobre los procesos o jerarquas de procesos.
Cada proceso contiene uno o ms hilos o hebras. Los procesos en s mismos pueden ser agrupados
en unidades ms grandes denominadas objetos tarea. El uso de objetos tarea permite la aplicacin
de lmites en el uso de CPU, tamao del entorno de trabajo y afinidad de procesador en mltiples
procesos en una misma entidad.
El gestor de procesos tambin implementa la entrega y puesta en cola de llamadas a
procedimiento asncronas (APC, asynchronous procedure call) a las hebras. Las APC son utilizadas
por el sistema para iniciar la ejecucin de las hebras, para completar la E/S, para terminar las
hebras procesos y para asociar depuradores.
El soporte de depuracin en el gestor de procesos incluye la capacidad de suspender y reanudar
hebras y de crear hebras que comiencen en modo suspendido.

126

S-ar putea să vă placă și