You are on page 1of 24

INSTITUTO SUPERIOR TECNOLGICO

NORBERT WIENER

Manual del Alumno


ASIGNATURA: Sistemas
Operativos y Redes I
PROGRAMA: S3C
Lima-Per

Manual del Alumno


Semana 1
Conceptos de Sistemas Operativos
Concepto de Sistema Operativo
Objetivos:
Comprender el concepto del sistema operativo con diversos puntos de vista
Conocer los conceptos de Procesos y Multiprogramacin

Una computadora es una mquina de origen electrnico con una o ms unidades de proceso y equipos
perifricos controlados por programas almacenados en su memoria,que pueden realizar gran variedad de
trabajos.

Un Sistema Operativo es el soporte lgico que controla el funcionamiento del equipo fsico

Punto de vista del Usuario


Un Sistema Operativo es un conjunto de programas y funciones que ocultan los detalles del
hardware,offreciendo al usuario una via sencilla y flexible de acceso al mismo.

Visin de la mquina
USUARIO

Programador

Programas de Aplicacin

Traductores

Diseador de Siostemas
Operativos

Sistema Operativo

Hardware

Diseador de traductores

Manual del Alumno


Punto de Vista GESTOR DE RECURSOS

Un Sistema Operativo es el administrador de recursos ofrecidos por el hardware para alcanzar un


eficaz rendimiento de los mismos.
Recursos
El Procesador
La Memoria
La entrada/salida
La informacin
Definicin de Trminos

Sistema. Conjunto de programas ,mquinas y cosas que, ordenadamente relacionados entre


s,contribuyen a lograr un determinado objetivo.
Operativo.Personas ,mquinas y cosas que trabajan conjuntamente y consiguen el objetivo deseado

Esquema de la Maquina Virtual

Usuario

Aplicacin

Sistema Operativo

HARDWARE
S

Sistema operativo
Conjunto de programas que ordenadamente relacionados entre s,contribuyen a que la computadora
lleve a cabo correctamente su trabajo

Manual del Alumno


Programas

Del Sistema
Son los que manejan el hardware,controlan los procesos ms cmodo el entorno de trabajo
De Aplicacin
Son los que resuelven un problema concreto de los usuarios ,diseados y codificasdos por analistas
y programadores en conjunto con los usuarios
BUFFERING
Tecnico de almacenamiento de informacin en una memoria intermedia o tampn,tambin
denominada Buffer,con el objetivo de optimizar el tiempo en los procesos del procesador y la
memoria ram
Existe otras tcnicas de Acceso directo a la memoria(DMA),para evitar la intervencin del
procesador en este tipo de operaciones de carga
SPOOLING
Las tecnicas de SPOOL(Simultaneous Peripheral Operation On-line)permiten que la salidad de un
programa se escriba en un buffer y posteriormente sea llevado a un disco magntico con espera de
poder ser enviado a una impresora o cualquier otro perifrico de salidad que en este momento pueda
estar ocupado.De esta forma el procesdor puede estar ejecutando un trabajo mientras se
imprime,por ejemplo,los resultados de otro proceso anterior que ya hubiere acabado.

Multiprogramacin
La multiprogramacin es un modo de trabajo en el que se pueden ejecutar varios programas
simultneamente con el fin de aprovechar al mximo los recursos de la computadora
Multiprogramacin
Dispositivos de E/ S

Drivers E/S

Sistema
Operativo

Planificador

Limites
Procesador

Sistema de Multiprogramacin

Manual del Alumno

Semana 2
Tipos de Sistemas Operativos

Objetivos:
Comprender la estructura de sistemas operativos
Conocer los conceptos de Procesos y Multiprogramacin

TIPOS DE SISTEMAS OPERATIVOS


En esta seccin se describirn las caractersticas que clasifican a los sistemas operativos, bsicamente se
cubrirn tres clasificaciones: sistemas operativos por su estructura (visin interna), sistemas operativos por los
servicios que ofrecen y, finalmente, sistemas operativos por la forma en que ofrecen sus servicios (visin
externa).
2.1 Sistemas Operativos por su Estructura
Segn [Alcal92], se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los
cuales son:
Requisitos de usuario: Sistema fcil de usar y de aprender, seguro, rpido y adecuado al uso al que se le quiere
destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de operacin,
restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
A continuacin se describen las distintas estructuras que presentan los actuales sistemas operativos para
satisfacer las necesidades que de ellos se quieren obtener.
2.1.1 Estructura monoltica.
Es la estructura de los primeros sistemas operativos constitudos fundamentalmente por un solo programa
compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra
(Ver Fig. 2). Las caractersticas fundamentales de este tipo de estructura son:
Construccin del programa final a base de mdulos compilados separadamente que se unen a travs del
ligador.

Manual del Alumno


Buena definicin de parmetros de enlace entre las distintas rutinas existentes, que puede provocar mucho
acoplamiento.
Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la
computadora, como memoria, disco, etc.
Generalmente estn hechos a medida, por lo que son eficientes y rpidos en su ejecucin y gestin, pero por
lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones.

2.1.2 Estructura jerrquica.


A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo
necesaria una mayor organizacin del software, del sistema operativo, donde una parte del sistema contena
subpartes y esto organizado en forma de niveles.
Se dividi el sistema operativo en pequeas partes, de tal forma que cada una de ellas estuviera perfectamente
definida y con un claro interface con el resto de elementos.
Se constituy una estructura jerrquica o de niveles en los sistemas operativos, el primero de los cuales fue
denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utiliz con fines didcticos (Ver
Fig. 3). Se puede pensar tambin en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa
categora. [Feld93].

En la estructura anterior se basan prcticamente la mayora de los sistemas operativos actuales. Otra forma de
ver este tipo de sistema es la denominada de anillos concntricos o "rings" (Ver Fig. 4).

Manual del Alumno

En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden
entrar las llamadas de las capas inferiores. De esta forma, las zonas ms internas del sistema operativo o
ncleo del sistema estarn ms protegidas de accesos indeseados desde las capas ms externas. Las capas ms
internas sern, por tanto, ms privilegiadas que las externas.
2.1.3 Mquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una mquina
que parece idntica a la mquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen
estar unidos en el resto de sistemas: la multiprogramacin y la mquina extendida. El objetivo de los sistemas
operativos de mquina virtual es el de integrar distintos sistemas operativos dando la sensacin de ser varias
mquinas diferentes.
El ncleo de estos sistemas operativos se denomina monitor virtual y tiene como misin llevar a cabo la
multiprogramacin, presentando a los niveles superiores tantas mquinas virtuales como se soliciten. Estas
mquinas virtuales no son mquinas extendidas, sino una rplica de la mquina real, de manera que en cada
una de ellas se pueda ejecutar un sistema operativo diferente, que ser el que ofrezca la mquina extendida al
usuario (Ver Fig. 5).

Manual del Alumno

2.1.4 Cliente-servidor ( Microkernel)


El tipo ms reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la
mayora de las computadoras, ya sean grandes o pequeas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propsito general y cumple con las mismas
actividades que los sistemas operativos convencionales.
El ncleo tiene como misin establecer la comunicacin entre los clientes y los servidores. Los procesos
pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicacin normal es un cliente que
llama al servidor correspondiente para acceder a un archivo o realizar una operacin de entrada/salida sobre
un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este
paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el ncleo
provee solamente funciones muy bsicas de memoria, entrada/salida, archivos y procesos, dejando a los
servidores proveer la mayora que el usuario final o programador puede usar. Estos servidores deben tener
mecanismos de seguridad y proteccin que, a su vez, sern filtrados por el ncleo que controla el hardware.
Actualmente se est trabajando en una versin de UNIX que contempla en su diseo este paradigma.
2.2 Sistemas Operativos por Servicios
Esta clasificacin es la ms comnmente usada y conocida desde el punto de vista del usuario final. Esta
clasificacin se comprende fcilmente con el cuadro sinptico que a continuacin se muestra en la Fig. 6.

Manual del Alumno

2.2.1 Monousuarios
Los sistemas operativos monousuarios son aqullos que soportan a un usuario a la vez, sin importar el nmero
de procesadores que tenga la computadora o el nmero de procesos o tareas que el usuario pueda ejecutar en
un mismo instante de tiempo. Las computadoras personales tpicamente se han clasificado en este rengln.
2.2.2 Multiusuarios
Los sistemas operativos multiusuarios son capaces de dar servicio a ms de un usuario a la vez, ya sea por
medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de
comunicaciones. No importa el nmero de procesadores en la mquina ni el nmero de procesos que cada
usuario puede ejecutar simultneamente.
2.2.3 Monotareas
Los sistemas monotarea son aquellos que slo permiten una tarea a la vez por usuario. Puede darse el caso de
un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de
ellos puede estar haciendo solo una tarea a la vez.

10

Manual del Alumno


2.2.4 Multitareas
Un sistema operativo multitarea es aqul que le permite al usuario estar realizando varias labores al mismo
tiempo. Por ejemplo, puede estar editando el cdigo fuente de un programa durante su depuracin mientras
compila otro programa, a la vez que est recibiendo correo electrnico en un proceso en background. Es
comn encontrar en ellos interfaces grficas orientadas al uso de mens y el ratn, lo cual permite un rpido
intercambio entre las tareas para el usuario, mejorando su productividad.
2.2.5 Uniproceso
Un sistema operativo uniproceso es aqul que es capaz de manejar solamente un procesador de la
computadora, de manera que si la computadora tuviese ms de uno le sera intil. El ejemplo ms tpico de
este tipo de sistemas es el DOS y MacOS.
2.2.6 Multiproceso
Un sistema operativo multiproceso se refiere al nmero de procesadores del sistema, que es ms de uno y ste
es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos
formas: simtrica o asimtricamente. Cuando se trabaja de manera asimtrica, el sistema operativo selecciona
a uno de los procesadores el cual jugar el papel de procesador maestro y servir como pivote para distribuir
la carga a los dems procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simtrica,
los procesos o partes de ellos (threads) son enviados indistintamente a cualesquira de los procesadores
disponibles, teniendo, tericamente, una mejor distribucin y equilibrio en la carga de trabajo bajo este
esquema.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede consistir de un
rea de memoria, un conjunto de registros con valores especficos, la pila y otros valores de contexto. Us
aspecto importante a considerar en estos sistemas es la forma de crear aplicaciones para aprovechar los varios
procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman
ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de cdigo paralelizable,
los cuales son ejecutados al mismo tiempo en procesadores diferentes. Por otro lado, el programador puede
modificar sus algoritmos y aprovechar por s mismo esta facilidad, pero esta ltima opcin las ms de las
veces es costosa en horas hombre y muy tediosa, obligando al programador a ocupar tanto o ms tiempo a la
paralelizacin que a elaborar el algoritmo inicial.
2.3. Sistemas Operativos por la Forma de Ofrecer sus Servicios
Esta clasificacin tambin se refiere a una visin externa, que en este caso se refiere a la del usuario, el cmo
accesa los servicios. Bajo esta clasificacin se pueden detectar dos tipos principales: sistemas operativos de
red y sistemas operativos distribudos.
2.3.1 Sistemas Operativos de Red
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar con sistemas
operativos en otras computadoras por medio de un medio de transmisin con el objeto de intercambiar
informacin, transferir archivos, ejecutar comandos remotos y un sin fin de otras actividades. El punto crucial
de estos sistemas es que el usuario debe saber la sintaxis de un cinjunto de comandos o llamadas al sistema
para ejecutar estas operaciones, adems de la ubicacin de los recursos que desee accesar. Por ejemplo, si un
usuario en la computadora hidalgo necesita el archivo matriz.pas que se localiza en el directorio
/software/codigo en la computadora morelos bajo el sistema operativo UNIX, dicho usuario podra copiarlo a
travs de la red con los comandos siguientes: hidalgo% hidalgo% rcp morelos:/software/codigo/matriz.pas .
hidalgo% En este caso, el comando rcp que significa "remote copy" trae el archivo indicado de la
computadora morelos y lo coloca en el directorio donde se ejecut el mencionado comando. Lo importante es
hacer ver que el usuario puede accesar y compartir muchos recursos.

11

Manual del Alumno


2.3.2 Sistemas Operativos Distribudos
Los sistemas operativos distribudos abarcan los servicios de los de red, logrando integrar recursos
( impresoras, unidades de respaldo, memoria, procesos, unidades centrales de proceso ) en una sola mquina
virtual que el usuario accesa en forma transparente. Es decir, ahora el usuario ya no necesita saber la
ubicacin de los recursos, sino que los conoce por nombre y simplementa los usa como si todos ellos fuesen
locales a su lugar de trabajo habitual. Todo lo anterior es el marco terico de lo que se deseara tener como
sistema operativo distribudo, pero en la realidad no se ha conseguido crear uno del todo, por la complejidad
que suponen: distribur los procesos en las varias unidades de procesamiento, reintegrar sub-resultados,
resolver problemas de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribudos y
consolidar la proteccin y seguridad entre los diferentes componentes del sistema y los usuarios. [Tan92]. Los
avances tecnolgicos en las redes de rea local y la creacin de microprocesadores de 32 y 64 bits lograron
que computadoras mas o menos baratas tuvieran el suficiente poder en forma autnoma para desafiar en cierto
grado a los mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de
partir procesos muy pesados en clculo en unidades ms pequeas y distribuirlas en los varios
microprocesadores para luego reunir los sub-resultados, creando as una mquina virtual en la red que exceda
en poder a un mainframe. El sistema integrador de los microprocesadores que hacer ver a las varias memorias,
procesadores, y todos los dems recursos como una sola entidad en forma transparente se le llama sistema
operativo distribudo. Las razones para crear o adoptar sistemas distribudos se dan por dos razones
principales: por necesidad ( debido a que los problemas a resolver son inherentemente distribudos ) o porque
se desea tener ms confiabilidad y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el
control de los cajeros automticos en diferentes estados de la repblica. Ah no es posible ni eficiente
mantener un control centralizado, es ms, no existe capacidad de cmputo y de entrada/salida para dar
servicio a los millones de operaciones por minuto. En el segundo caso, supngase que se tienen en una gran
empresa varios grupos de trabajo, cada uno necesita almacenar grandes cantidades de informacin en disco
duro con una alta confiabilidad y disponibilidad. La solucin puede ser que para cada grupo de trabajo se
asigne una particin de disco duro en servidores diferentes, de manera que si uno de los servidores falla, no se
deje dar el servicio a todos, sino slo a unos cuantos y, ms an, se podra tener un sistema con discos en
espejo ( mirror ) a travs de la red,de manera que si un servidor se cae, el servidor en espejo contina
trabajando y el usuario ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma
transparente.
2.3.2.1 Ventajas de los Sistemas Distribudos
En general, los sistemas distribudos (no solamente los sistemas operativos) exhiben algunas ventajas sobre
los sistemas centralizados que se describen enseguida.
Economa: El cociente precio/desempeo de la suma del poder de los procesadores separados contra
el poder de uno solo centralizado es mejor cuando estn distribudos.
Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy superior.
Confiabilidad: Si una sola mquina falla, el sistema total sigue funcionando.
Crecimiento: El poder total del sistema puede irse incrementando al aadir pequeos sistemas, lo
cual es mucho ms difcil en un sistema centralizado y caro.
Distribucin: Algunas aplicaciones requieren de por s una distribucin fsica.
Por otro lado, los sistemas distribudos tambin exhiben algunas ventajas sobre sistemas aislados. Estas
ventajas son:
Compartir datos: Un sistema distribudo permite compartir datos ms fcilmente que los sistemas
aislados, que tendrian que duplicarlos en cada nodo para lograrlo.
Compartir dispositivos: Un sistema distribudo permite accesar dispositivos desde cualquier nodo en
forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribudo logra un
efecto sinergtico.
Comunicaciones: La comunicacin persona a persona es factible en los sistemas distribudos, en los
sistemas aislados no. _ Flexibilidad: La distribucin de las cargas de trabajo es factible en el sistema
distribudos, se puede incrementar el poder de cmputo.

12

Manual del Alumno


2.3.2.2 Desventajas de los Sistemas Distribudos
As como los sistemas distribudos exhiben grandes ventajas, tambin se pueden identificar algunas
desventajas, algunas de ellas tan serias que han frenado la produccin comercial de sistemas operativos en la
actualidad. El problema ms importante en la creacin de sistemas distribudos es el software: los problemas
de comparticin de datos y recursos es tan complejo que los mecanismos de solucin generan mucha
sobrecarga al sistema hacindolo ineficiente. El checar, por ejemplo, quines tienen acceso a algunos recursos
y quines no, el aplicar los mecanismos de proteccin y registro de permisos consume demasiados recursos.
En general, las soluciones presentes para estos problemas estn an en paales.
Otros problemas de los sistemas operativos distribudos surgen debido a la concurrencia y al paralelismo.
Tradicionalmente las aplicaiones son creadas para computadoras que ejecutan secuencialmente, de manera
que el identificar secciones de cdigo `paralelizable' es un trabajo ardo, pero necesario para dividir un
proceso grande en sub-procesos y enviarlos a diferentes unidades de procesamiento para lograr la
distribucin. Con la concurrencia se deben implantar mecanismos para evitar las condiciones de competencia,
las postergaciones indefinidas, el ocupar un recurso y estar esperando otro, las condiciones de espera
circulares y , finalmente, los "abrazos mortales" (deadlocks). Estos problemas de por s se presentan en los
sistemas operativos multiusuarios o multitareas, y su tratamiento en los sistemas distribudos es an ms
complejo, y por lo tanto, necesitar de algoritmos ms complejos con la inherente sobrecarga esperada.
Por otro lado, en el tema de sistemas distribudos existen varios conceptos importantes referentes al hadware
que no se ven en este trabajo: multicomputadoras, multiprocesadores, sistemas acoplados dbil y fuertemente,
etc. En [Tan92] pginas 366 - 376 puede encontrarse material relacionado a estos conceptos.

13

Manual del Alumno


SEMANA III
ADMINISTRACION DE LA MEMORIA

En esta seccin se describirn las tcnicas ms usuales en el manejo de memoria, revisando los conceptos
relevantes. Se abarcarn los esquemas de manejo simple de memoria real, la multiprogramacin en memoria
real con sus variantes, el concepto de `overlays', la multiprogramacin con intercambio y los esquemas de
manejo de memoria virtual.
3.1. Panorama general
Un vistazo al material que se va a cubrir en esta seccin se muestra en la figura 4.1. Es una grfica en donde
se especifican, en trminos generales, los conceptos ms importantes en cuanto a las tcnicas empleadas en el
manejo de memoria.

3.2. Manejo de memoria en sistemas monousuario sin intercambio


Este esquema es an muy frecuente en Mxico y se usa principalmente en sistemas monousuario y monotarea,
como son las computadoras personales con DOS. Bajo este esquema, la memoria real es tomada para
almacenar el programa que se est ejecutando en un momento dado, con la visible desventaja de que si se est
limitado a la cantidad de RAM disponible nicamente. La organizacin fsica bajo este esquema es muy
simple: El sistema operativo se ubica en las localidades superiores o inferiores de la memoria, seguido por
algunos manejadores de dispositivos ( `drivers' ). Esto deja un espacio contiguo de memoria disponible que es
tomado por los programas del usuario, dejando generalmente la ubicacin de la pila (` stack' ) al ltimo, con
el objetivo de que sta pueda crecer hasta el mximo posible. Estas diferentes opciones se pueden ver en la
figura 4.2. Como es obvio, bajo estos esquemas no se requieren algoritmos sofisticados para asignar la
memoria a los diferentes procesos, ya que stos son ejecutados secuencialmente conforme van terminando.

14

Manual del Alumno

3.3. Multiprogramacin en memoria real


En los 60's, las empresas e instituciones que haban invertido grandes sumas en la compra de equipo de
cmputo se dieron cuenta rpidamente que los sistemas en lote invertan una gran cantidad de tiempo en
operaciones de entrada y salida, donde la intervencin de la unidad central de procesamiento era
prcticamente nula, y se comenzaron a preguntar cmo hacer que se mantuviera ms tiempo ocupada. Fue as
como naci el concepto de multiprogramacin, el cual consiste en la idea de poner en la memoria fsica ms
de un proceso al mismo tiempo, de manera que si el que se est ejecutando en este momento entraba en un
periodo de entrada/salida, se podia tomar otro proceso para que usara la unidad central de procesamiento. De
esta forma, la memoria fisica se divida en secciones de tamao suficiente para contener a varios programas.
De esta manera, si un sistema gastaba en promedio 60% de su tiempo en entrada/salida por proceso, se poda
aprovechar ms el CPU. Anterior a esto, el CPU se mantena ese mismo porcentaje ocioso; con la nueva
tcnica, el tiempo promedio ocioso disminuye de la siguiente forma. Llmese al tiempo promedio que el CPU
est ocupado `grado de multiprogramacin'. Si el sistema tuviese un solo proceso siempre, y ste gastara 60%
en entrada/salida, el grado de multiprogramacin sera 1 - 60% = 40% = 0.4. Con dos procesos, para que el
CPU est ocioso se necesita que ambos procesos necesiten estar haciendo entrada/salida, es decir, suponiendo
que son independientes, la probabilidad de que ambos estn en entrada/salida es el producto de sus
probabilidades, es decir, 0.6x0.6 = 0.36. Ahora, el grado de multiprogramacin es 1 - (probabilidad de que
ambos procesos estn haciendo entrada/salida) = 1 - 0.36 = 0.64.
Como se ve, el sistema mejora su uso de CPU en un 24% al aumentar de uno a dos procesos. Para tres
procesos el grado de multiprogramacin es 1 - (0.6) 3 = 0.784, es decir, el sistema est ocupado el 78.4% del
tiempo. La frmula del grado de multiprogramacin, aunque es muy idealista, pudo servir de gua para
planear un posible crecimiento con la compra de memoria real, es decir, para obtener el punto en que la
adicin de procesos a RAM ya no incrementa el uso de CPU.
Dentro del esquema de multiprogramacin en memoria real surgieron dos problemas interesantes: la
proteccin y la relocalizacin.
3.3.1. El problema de la relocalizacin
Este problema no es exclusivo de la multiprogramacin en memoria real, sino que se present aqu pero se
sigue presentando en los esquemas de memoria virtual tambin. Este problema consiste en que los programas
que necesitan cargarse a memoria real ya estn compilados y ligados, de manera que internamente contienen
una serie de referencias a direcciones de instrucciones, rutinas y procedimientos que ya no son vlidas en el
espacio de direcciones de memoria real de la seccin en la que se carga el programa. Esto es, cuando se
compil el programa se definieron o resolvieron las direcciones de memoria de acuerdo a la seccin de ese
momento, pero si el programa se carga en otro dia en una seccin diferente, las direcciones reales ya no
coinciden. En este caso, el manejador de memoria puede solucionar el problema de dos maneras: de manera
`esttica' o de manera `dinmica'. La solucin `esttica' consiste en que todas las direcciones del programa se
vuelvan a recalcular al momento en que el programa se carga a memoria, esto es, prcticamente se vuelve a

15

Manual del Alumno


recompilar el programa. La solucin `dinmica' consiste en tener un registro que guarde la direccin base de
la seccin que va a contener al programa. Cada vez que el programa haga una referencia a una direccin de
memoria, se le suma el registro base para encontrar la direccin real. Por ejemplo, suponga que el programa
es cargado en una seccin que comienza en la direccin 100. El programa har referencias a las direcciones
50,52,54. Pero el contenido de esas direcciones no es el deseado, sino las direcciones 150, 152 y 154, ya que
ah comienza el programa. La suma de 100 + 50, ...,etctera se hacen al tiempo de ejecucin. La primera
solucin vale ms la pena que la segunda si el programa contiene ciclos y es largo, ya que consumir menos
tiempo en la resolucin inicial que la segunda solucin en las resoluciones en lnea.
3.3.2. El problema de la proteccin
Este problema se refiere a que, una vez que un programa ha sido caragado a memoria en algn segmento en
particular, nada le impide al programador que intente direccionar ( por error o deliberadamente ) localidades
de memoria menores que el lmite inferior de su programa o superiores a la direccin mayor; es decir, quiere
referenciar localidades fuera de su espacio de direcciones. Obviamente, este es un problema de proteccin, ya
que no es legal leer o escribir en reas de otros programas.
La solucin a este problema tambin puede ser el uso de un registro base y un registro lmite. El registro base
contiene la direccin del comienzo de la seccin que contiene al programa, mientras que el lmite contiene la
direccin donde termina. Cada vez que el programa hace una referencia a memoria se checa si cae en el rango
de los registros y si no es as se enva un mensaje de error y se aborta el programa.
3.3.3. Particiones fijas o particiones variables
En el esquema de la multiprogramacin en memroia real se manejan dos alternativas para asignarle a cada
programa su particin correspondiente: particiones de tamao fijo o particiones de tamao variable. La
alternativa ms simple son las particiones fijas. Dichas particiones se crean cuando se enciende el equipo y
permanecern con los tamaos iniciales hasta que el equipo se apague. Es una alternativa muy vieja, quien
haca la divisin de particiones era el operador analizando los tamaos estimados de los trabajos de todo el
da. Por ejemplo, si el sistema tena 512 kilobytes de RAM, podia asignar 64 k para el sistema operativo, una
particin ms de 64 k, otra de 128k y una mayor de 256 k. Esto era muy simple, pero inflexible, ya que si
surgan trabajos urgentes, por ejemplo, de 400k, tenan que esperar a otro da o reparticionar, inicializando el
equipo desde cero. La otra alternativa, que surgi despus y como necesidad de mejorar la alternativa anterior,
era crear particiones contiguas de tamao variable. Para esto, el sistema tena que mantener ya una estructura
de datos suficiente para saber en dnde haban huecos disponibles de RAM y de dnde a dnde haban
particiones ocupadas por programas en ejecucin. As, cuando un programa requera ser cargado a RAM, el
sistema analizaba los huecos para saber si haba alguno de tamao suficiente para el programa que queria
entrar, si era as, le asignaba el espacio. Si no, intentaba relocalizar los programas existentes con el propsito
de hacer contiguo todo el espacio ocupado, as como todo el espacio libre y as obtener un hueco de tamao
suficiente. Si an as el programa no caba, entonces lo bloqueaba y tomaba otro. El proceso con el cual se
juntan los huecos o los espacios ocupados se le llama `compactacin'. El lector se habr dado cuenta ya de
que surgen varios problemas con los esquemas de particiones fijas y particiones variables: En base a qu
criterio se elige el mejor tamao de particin para un programa ? Por ejemplo, si el sistema tiene dos huecos,
uno de 18k y otro de 24 k para un proceso que desea 20 k, Cual se le asigna ? Existen varios algoritmos para
darle respuesta a la pregunta anterior, los cuales se ennumeran y describen enseguida.
Primer Ajuste: Se asigna el primer hueco que sea mayor al tamao deseado.
Mejor Ajuste: Se asigna el hueco cuyo tamao exceda en la menor cantidad al tamao deseado.
Requiere de una bsqueda exhaustiva.
Peor Ajuste: Se asigna el hueco cuyo tamao exceda en la mayor cantidad al tamao deseado.
Requiere tambin de una bsqueda exhaustiva.
El Siguiente Ajuste: Es igual que el `primer ajuste' con la diferencia que se deja un apuntador al lugar
en donde se asign el ltimo hueco para realizar la siguiente bsqueda a partir de l.
Ajuste Rpido: Se mantienen listas ligadas separadas de acuerdo a los tamaos de los huecos, para
as buscarle a los procesos un hueco ms rpido en la cola correspondiente.

16

Manual del Alumno


Otro problema que se vislumbra desde aqu es que, una vez asignado un hueco, por ejemplo, con "el peor
ajuste", puede ser que el proceso requiriera 12 kilobytes y que el hueco asignado fuera de 64 kilobytes, por lo
cual el proceso va a desperdiciar una gran cantidad de memoria dentro de su particin, lo cual se le llama
`fragmentacin interna'.
Por otro lado, conforme el sistema va avanzando en el da, finalizando procesos y comenzando otros, la
memoria se va configurando como una secuencia contigua de huecos y de lugares asignados, provocando que
existan huecos, por ejemplo, de 12 k, 28k y 30 k, que sumados dan 70k, pero que si en ese momento llega un
proceso pidindolos, no se le pueden asignar ya que no son localidades contiguas de memoria ( a menos que
se realice la compactacin ). Al hecho de que aparezcan huecos no contiguos de memoria se le llama
`fragmentacin externa'.
De cualquier manera, la multiprogramacin fue un avance significativo para el mejor aprovechamiento de la
unidad central de procesamiento y de la memoria misma, as como dio pie para que surgieran los problemas
de asignacin de memoria, proteccin y relocalizacin, entre otros.
3.3.4. Los overlays
Una vez que surgi la multiprogramacin, los usuarios comenzaron a explorar la forma de ejecutar grandes
cantidades de cdigo en reas de memoria muy pequeas, auxiliados por algunas llamadas al sistema
operativo. Es as como nacen los `overlays'.
Esta tcnica consiste en que el programador divide lgicamente un programa muy grande en secciones que
puedan almacenarse el las particiones de RAM. Al final de cada seccin del programa ( o en otros lugares
necesarios ) el programador insertaba una o varias llamadas al sistema con el fin de descargar la seccin
presente de RAM y cargar otra, que en ese momento resida en disco duro u otro medio de almacenamiento
secundario. Aunque esta tcnica era eficaz ( porque resolva el problema ) no era eficiente ( ya que no lo
resolva de la mejor manera ). Esta solucin requera que el programador tuviera un conocimiento muy
profundo del equipo de cmputo y de las llamadas al sistema operativo. Otra desventaja era la portabilidad de
un sistema a otro: las llamadas cambiaban, los tamaos de particiones tambin. Resumiendo, con esta tcnica
se podan ejecutar programas ms grandes que las particiones de RAM, donde la divisin del cdigo corra a
cuenta del programador y el control a cuenta del sistema operativo.
3.4. Multiprogramacin en memoria virtual
La necesidad cada vez ms imperiosa de ejecutar programas grandes y el crecimiento en poder de las
unidades centrales de procesamiento empujaron a los diseadores de los sistemas operativos a implantar un
mecanismo para ejecutar automticamente programas ms grandes que la memoria real disponible, esto es, de
ofrecer `memoria virtual'.
La memoria virtual se llama as porque el programador ve una cantidad de memoria mucho mayor que la real,
y en realidad se trata de la suma de la memoria de almacenamiento primario y una cantidad determinada de
almacenamiento secundario. El sistema operativo, en su mdulo de manejo de memoria, se encarga de
intercambiar programas enteros, segmentos o pginas entre la memoria real y el medio de almacenamiento
secundario. Si lo que se intercambia son procesos enteros, se habla entonces de multiprogramacin en
memoria real, pero si lo que se intercambian son segmentos o pginas, se puede hablar de multiprogramacin
con memoria virtual.
La memoria virtual se apoya en varias tcnicas interesantes para lograr su objetivo. Una de las teorias ms
fuertes es la del `conjunto de trabajo', la cual se refiere a que un programa o proceso no est usando todo su
espacio de direcciones en todo momento, sino que existen un conjunto de localidades activas que conforman
el `conjunto de trabajo'. Si se logra que las pginas o segmentos que contienen al conjunto de trabajo estn
siempre en RAM, entonces el programa se desempear muy bien.
Otro factor importante es si los programas exhiben un fenmeno llamado `localidad', lo cual quiere decir que
algunos programas tienden a usar mucho las instrucciones que estn cercanas a la localidad de la instruccin
que se est ejecutando actualmente.
3.4.1 Paginacin pura

17

Manual del Alumno


La paginacin pura en el majejo de memoria consiste en que el sistema operativo divide dinmicamente los
programas en unidades de tamao fijo ( generalmente mltiplos de 1 kilobyte ) los cuales va a manipular de
RAM a disco y viceversa. Al proceso de intercambiar pginas, segmentos o programas completos entre RAM
y disco se le conoce como `intercambio' o `swapping'. En la paginacin, se debe cuidar el tamo de las
pginas, ya que si stas son muy pequeas el control por parte del sistema operativo para saber cules estn en
RAM y cuales en disco, sus direcciones reales, etc; crece y provoca mucha `sobrecarga' (overhead). Por otro
lado, si las pginas son muy grandes, el overhead disminuye pero entonces puede ocurrir que se desperdicie
memoria en procesos pequeos. Debe haber un equilibrio.
Uno de los aspectos ms importantes de la paginacin, asi como de cualquier esquema de memoria virtual, es
la forma de traducir una direccin virtual a direccin real. Para explicarlo, obsrvese la figura 4.3.

Como se observa, una direccin virtual `v' = ( b,d) est formada por un nmero de pgina virtual `b' y un
desplazamiento `d'. Por ejemplo, si el sistema ofrece un espacio de direcciones virtuales de 64 kilobytes, con
pginas de 4 kilobytes y la RAM slo es de 32 kilobytes, entonces tenemos 16 pginas virtuales y 8 reales. La
tabla de direcciones virtuales contiene 16 entradas, una por cada pgina virtual. En cada entrada, o registro de
la tabla de direcciones virtuales se almacenan varios datos: si la pgina est en disco o en memoria, quin es
el dueo de la pgina, si la pgina ha sido modificada o es de lectura nada mas, etc. Pero el dato que nos
interesa ahora es el nmero de pgina real que le corresponde a la pgina virtual. Obviamente, de las 16
virtuales, slo ocho tendrn un valor de control que dice que la pgina est cargada en RAM, as como la
direccin real de la pgina, denotada en la figura 4.3 como b' . Por ejemplo, supngase que para la pgina
virtual nmero 14 la tabla dice que, efectivamente est cargada y es la pgina real 2 ( direccin de memoria
8192 ). Una vez encontrada la pgina real, se le suma el desplazamiento, que es la direccin que deseamos
dentro de la pgina buscada ( b' + d ).
La tabla de direcciones virtuales a veces est ubicada en la misma meoria RAM, por lo cual se necesita saber
en qu direccin comienza, en este caso, existe un registro con la direccin base denotada por la letra `a' en la
figura 4.3.
Cuando se est buscando una pgina cualquiera y sta no est cargada, surge lo que se llama un `fallo de
pgina' (page fault ). Esto es caro para el manejador de memoria, ya que tiene que realizar una serie de pasos
extra para poder resolver la direccin deseada y darle su contenido a quien lo pide. Primero, se detecta que la
pgina no est presente y entonces se busca en la tabla la direccin de esta pgina en disco. Una vez
localizada en disco se intenta cargar en alguna pgina libre de RAM. Si no hay pginas libres se tiene que
escoger alguna para enviarla hacia el disco. Una vez escogida y enviada a disco, se marca su valor de control
en la tabla de direcciones virtuales para indicar que ya no est en RAM, mientras que la pgina deseada se
carga en RAM y se marca su valor para indicar que ahora ya est en RAM. Todo este procedimiento es caro,
ya que se sabe que los accesos a disco duro son del orden de decenas de veces ms lentos que en RAM. En el
ejemplo anterior se mencion que cuando se necesita descargar una pgina de RAM hacia disco se debe de
hacer una eleccin. Para realizar esta eleccin existen varios algoritmos, los cuales se describen enseguida. _

18

Manual del Alumno


La primera en entrar, primera en salir: Se escoge la pgina que haya entrado primero y est cargada en RAM.
Se necesita que en los valores de control se guarde un dato de tiempo. No es eficiente porque no aprovecha
ninguna caracterstica de ningn sistema. Es justa e imparcial. _ La no usada recientemente: Se escoge la
pgina que no haya sido usada (referenciada) en el ciclo anterior. Pretende aprovechar el hecho de la localidad
en el conjunto de trabajo.
La usada menos recientemente: Es parecida a la anterior, pero escoge la pgina que se us hace ms
tiempo, pretendiendo que como ya tiene mucho sin usarse es muy probable que siga sin usarse en los
prximos ciclos. Necesita de una bsqueda exhaustiva.
La no usada frecuentemente: Este algoritmo toma en cuenta no tanto el tiempo, sino el nmero de
referencias. En este caso cualquier pgina que se use muy poco, menos veces que alguna otra.
La menos frecuentemente usada: Es parecida a la anterior, pero aqu se busca en forma exhaustiva
aquella pgina que se ha usado menos que todas las dems.
En forma aleatoria: Elige cualquier pgina sin aprovechar nada. Es justa e imparcial, pero ineficiente.
Otro dato interesante de la paginacin es que ya no se requiere que los programas estn ubicados en zonas de
memoria adyacente, ya que las pginas pueden estar ubicadas en cualquier lugar de la memoria RAM.
4.4.2 Segmentacin pura
La segmentacin se aprovecha del hecho de que los programas se dividen en partes lgicas, como son las
partes de datos, de cdigo y de pila (stack). La segmentacin asigna particiones de memoria a cada segmento
de un programa y busca como objetivos el hacer fcil el compartir segmentos ( por ejemplo libreras
compartidas ) y el intercambio entre memoria y los medios de almacenamiento secundario.
Por ejemplo, en la versin de UNIX SunOS 3.5, no existan libreras compartidas para algunas herramientas,
por ejemplo, para los editores de texto orientados al ratn y mens. Cada vez que un usuario invocaba a un
editor, se tena que reservar 1 megabyte de memoria. Como los editores son una herramienta muy solicitada y
frecuentemente usada, se dividi en segmentos para le versin 4.x ( que a su vez se dividen en pginas ), pero
lo importante es que la mayor parte del editor es comn para todos los usuarios, de manera que la primera vez
que cualquier usuario lo invocaba, se reservaba un megabyte de memoria como antes, pero para el segundo,
tercero y resto de usuarios, cada editor extra slo consuma 20 kilobytes de memoria. El ahorro es
impresionante. Obsrvese que en la segmentacin pura las particiones de memoria son de tamao variable, en
contraste con pginas de tamao fijo en la paginacin pura. Tambin se puede decir que la segmentacin pura
tiene una granularidad menor que la paginacin por el taman de segmentos versus tamao de pginas.
Nuevamente, para comprender mejor la segmentacin, se debe dar un repaso a la forma en que las direcciones
virtuales son traducidas a direcciones reales, y para ellos se usa la figura 4.4. Prcticamente la traduccin es
igual que la llevada a cabo en la paginacin pura, tomando en consideraci que el tamao de los bloques a
controlar por la tabla de traduccin son variables, por lo cual, cada entrada en dicha tabla debe contener la
longitud de cada segmento a controlar. Otra vez se cuenta con un registro base que contiene la direccin del
comienzo de la tabla de segmentos. La direccin virtual se compone de un nmero de segmento (s) y un
desplazamiento ( d ) para ubicar un byte (o palabra ) dentro de dicho segmento. Es importante que el
desplazamiento no sea mayor que el tamao del segmento, lo cual se controla simplemente checando que ese
valor sea mayor que la direccin del inicio del segmento y menor que el inicio sumado al tamao.
Una ves dada una direccin virtual v=( s,d ), se realiza la operacin b + s para hallar el registro (o entrada de
la tabla de segmentos ) que contiene la direccin de inicio del segmento en la memoria real, denotado por s'.
Ya conociendo la direccin de inicio en memoria real s' slo resta encontrar el byte o palabra deseada, lo cual
se hace sumndole a s' el valor del desplazamiento, de modo que la direccin real r = s' + d.

19

Manual del Alumno

Cada entrada en la tabla de segmentos tiene un formato similar al mostrado en la figura 4.5. Se tienen campos
que indican la longitud, los permisos, la presencia o ausencia y direccin de inicio en memoria real del
segmento.

Segn amplios experimentos [Deitel93] sugieren que un tamao de pginas de 1024 bytes generalmente
ofrece un desempeo muy aceptable. Intuitivamente parecera que el tener pginas del mayor tamao posible
hara que el desempeo fuera ptimo pero no es as, a menos que la pgina fuera del tamao del proceso total.
No es as con tamaos grandes de pgina menores que el proceso, ya que cuando se trae a memoria principal
una pgina por motivo de un solo byte o palabra, se estn trayendo muchsimos ms bytes de los deseados. La
dependencia entre el nmero de fallas respecto al tamao de las pginas se muestra en la figura 4.6.

Un hecho notable en los sistemas que manejan paginacin es que cuando el proceso comienza a ejecutarse
ocurren un gran nmero de fallos de pgina, porque es cuando est referenciando muchas direcciones nuevas

20

Manual del Alumno


por vez primera, despus el sistema se estabiliza, conforme el nmero de marcos asignados se acerca al
tamao del conjunto de trabajo.

El la figura 4.7 se muestra la relacin entre el tiempo promedio entre fallas de pgina y el nmero de marcos
de pgina asignados a un proceso. All se ve que el tiempo entre fallas decrece conforme se le asignan ms
pginas al proceso. La grfica se curva en un punto, el cual corresponde a que el proceso tiene un nmero de
pginas asignado igual al que necesita para almacenar su conjunto de trabajo. Despus de eso, el asignarle a
un proceso ms pginas que las de su conjunto de trabajo ya no conviene, ya que el tiempo promedio entre
fallas permanece sin mucha mejora. Un aspecto curioso de aumentar el nmero de pginas a un proceso
cuando el algoritmo de seleccin de pginas candidatas a irse a disco es la primera en entrar primera en salir
es la llamada `anomala FIFO' a `anomala de Belady'. Belady encontr ejemplos en los que un sistema con un
nmero de pginas igual a tres tena menos fallas de pginas que un sistema con cuatro pginas. El ejemplo
descrito en [Tanxx] es injusto. Si se mira con cuidado, obviamente si se compara un sistema con 10 pginas
contra otro de 5, ya de inicio el primer sistema tendr 5 fallos de pgina ms que el de 5, porque se necesitan
diez fallos para cargarlo. A esto debera llamrsele `anomala de Belady con correccin.
4.4.3 Sistemas combinados
La paginacin y la segmentacin puras son mtodos de manejo de memoria bastante efectivos, aunque la
mayora de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la
paginacin y la segmentacin. La idea de combinar estos esquemas se debe a que de esta forma se aprovechan
los conceptos de la divisin lgica de los programas (segmentos) con la granularidad de las pginas. De esta
forma, un proceso estar repartido en la memoria real en pequeas unidades (pginas) cuya liga son los
segmentos. Tambin es factible as el compartir segmentos a medida que las partes necesitadas de los mismos
se van referenciando (pginas). Para comprender este esquema, nuevamente se ver cmo se traduce una
direccin virtual en una localidad de memoria real. Para la paginacin y segmentacon puras se puede decir
que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la direccin real. Para
el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'. En la figura 4.8
[ Deitel93] se muestran las partes relevantes para lograr la traduccin de direcciones. El sistema debe contar
con una tabla de procesos (TP). Por cada rengln de esa tabla se tiene un nmero de proceso y una direccin a
una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna
referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de
segmentos de proceso (TSP) se tienen los nmeros de los segmentos que componen a ese proceso. Por cada
segmento se tiene una direccin a una tabla de pginas. Cada tabla de pginas tiene las direcciones de las
pginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede estar formado por las pginas
reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las pginas `f','g','j','w' y `z'.
Para traducir una direccin virtual v=(s,p,d) donde `s' es el segmento, `p' es la pgina y `d' el desplazamiento
en la pgina se hace lo siguiente. Primero se ubica de qu proceso es el segmento y se localiza la tabla de
segmentos de ese proceso en la TP. Con `s' como ndice se encuentra un rengln ( registro) en la tabla de
segmentos de ese proceso y en ese rengln est la direccin de la tabla de pginas que componen al segmento.
Una vez en la tabla de pginas se usa el valor `p' como ndice para encontrar la direccin de la pgina en

21

Manual del Alumno


memoria real. Una vez en esa direccin de memoria real se encuentra el byte (o palabra) requerido por medio
del valor de `d'.

Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de pgina y por fallo de segmento. Cuando
se hace referencia a una direccin y el segmento que la contiene no est en RAM ( aunque sea parcialmente ),
se provoca un fallo por falta de segmento [Deitel93] y lo que se hace es traerlo del medio de almacenamiento
secundario y crearle una tabla de pginas. Una vez cargado el segmento se necesita localizar la pgina
correspondiente, pero sta no existe en RAM, por lo cual se provoca un fallo de pgina y se carga de disco y
finalmente se puede ya traer la direccin deseada por medio del desplazamiento de la direccin virtual.
La eficiencia de la traduccin de direcciones tanto en paginacin pura, segmentacin pura y esquemas
combinados se mejora usando memorias asociativas para las tablas de pginas y segmentos, as como
memorias cache para guardar los mapeos ms solicitados.
Otro aspecto importante es la estrategia para cargar pginas ( o segmentos ) a la memoria RAM. Se usan ms
comunmente dos estrategias: cargado de pginas por demanda y cargado de pginas anticipada. La estrategia
de caragdo por demanda consiste en que las pginas solamente son llevadas a RAM si fueron solicitadas, es
decir, si se hizo referencia a una direccin que cae dentro de ellas. La carga anticipada consiste en tratar de
adivinar qu pginas sern solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se
pidan ya no ocurran fallos de pgina. Ese `adivinar' puede ser que se aproveche el fenmeno de localidad y
que las pginas que se cargan por anticipado sean aquellas que contienen direcciones contiguas a la direccin
que se acaba de referenciar. De hecho, el sistema operativo VMS usa un esquema combinado para cargar
pginas: cuando se hace referencia a una direccin cuya pgina no est en RAM, se provoca un fallo de
pgina y se carga esa pgina junto con algunas pginas adyacentes. En este caso la pgina solicitada se carg
por demanda y las adyacentes se cargaron por anticipacin.

22

Manual del Alumno


SEMANA IV
PRINCIPIOS EN EL MANEJO DE ENTRADA - SALIDA

El cdigo destinado a manejar la entrada y salida de los diferentes perifricos en un sistema operativo es de
una extensin considerable y sumamente complejo. Resuelve la necesidades de sincronizar, atrapar
interrupciones y ofrecer llamadas al sistema para los programadores. En esta seccin se repasarn los
principios ms importantes a tomar en cuenta en este mdulo del sistema operativo.
6.1 Dispositivos de Entrada - Salida
Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos orientados a bloques y
dispositivos orientados a caracteres. Los dispositivos orientados a bloques tienen la propiedad de que se
pueden direccionar, esto es, el programador puede escribir o leer cualquier bloque del dispositivo realizando
primero una operacin de posicionamiento sobre el dispositivo. Los dispositivos ms comunes orientados a
bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades de cinta. Por otro lado,
los dispositivos orientados a caracteres son aquellos que trabajan con secuencias de byes sin importar su
longitud ni ningna agrupacin en especial. No son dispositivos direccionables. Ejemplos de estos
dispositivos son el teclado, la pantalla o display y las impresoras.
La clasificacin anterior no es perfecta, porque existen varios dispositivos que generan entrada o salida que no
pueden englobarse en esas categoras. Por ejemplo, un reloj que genera pulsos. Sin embargo, aunque existan
algunos perifricos que no se puedan categorizar, todos estn administrados por el sistema operativo por
medio de una parte electrnica - mecnica y una parte de software. [Tan92].
6.2 Controladores de Dispositivos ( Terminales y Discos Duros)
Los controladores de dispositivos (tambin llamados adaptadores de dispositivos) son la parte electrnica de
los perifricos, el cual puede tener la forma de una tarjeta o un circuito impreso integrado a la tarjeta maestra
de la computadora. Por ejemplo, existen controladores de discos que se venden por separado y que se insertan
en una ranura de la computadora, o existen fabricantes de computadoras que integran esa funcionalidad en la
misma tarjeta en que viene la unidad central de procesamiento (tarjeta maestra).
Los controladores de dispositivos generalmente trabajan con voltajes de 5 y 12 volts con el dispositivo
propiamente, y con la computadora a travs de interrupciones. Estas interrupciones viajan por el 'bus' de la
computadora y son recibidos por el CPU el cual a su vez pondr en ejecucin algn programa que sabr qu
hacer con esa seal. A ese programa se le llama 'manejador de disposito' (device driver). Algunas veces el
mismo controlador contiene un pequeo programa en una memoria de solo lectura o en memoria de acceso
aleatoria no voltil y re-escribible que interacta con el correspondiente manejador en la computadora. En la
figura 6.1 se muestra un esquema simple de dispositivos orientados a bloques y otros a caracteres.

Por ejemplo, la terminal (CRT) tiene un 'chip' que se encarga de enviar cadenas de bits por medio de un cable
serial que a su vez son recibidos por un controlador de puerto serial en la computadora. Este 'chip' tambin se
encarga de leer secuencias de bits que agrupa para su despiegue en la pantalla o para ejecutar algunas

23

Manual del Alumno


funciones de control. Lo importante en todos estos dispositivos es que se debe ejercer un mecanismo para
sincronizar el envo y llegada de datos de manera concurrente.
Para intercambiar datos o seales entre la computadora y los controladores, muchas veces se usan registros o
secciones predefinidas de la memoria de la computadora. A este esquema se le llama 'manejo de entrada salida mapeado por memoria' (memory mapped I/O). Por ejmplo, para una IBM PC se muestran los vectores
de interrupcin y las direcciones para la entrada -salida en la tabla 6.1.
Controlador
Direccin(Hex)
Vector de Interrupcin
Reloj
040 - 043
Teclado
060 - 063
Disco Duro
320 - 32F
Impresora
378 - 37F
Monitor Mono
380 - 3BF
Monitor Color
3D0 - 3DF
Disco Flexible
3F0 - 3F7
Tabla 6.1 Direcciones de Mapeo de Entrada - Salida

8
9
13
15
14

6.3 Acceso Directo a Memoria (DMA)


El acceso directo a memoria se invent con el propsito de liberar al CPU de la carga de atender a algunos
controladores de dispositivos. Para comprender su funcionamiento vale la pena revisar cmo trabaja un
controlador sin DMA. Cuando un proceso requiere algunos bloques de un dispositivo, se envia una seal al
controlador con la direccin del bloque deseado. El controlador lo recibe a travs del 'bus' y el proceso puede
estar esperando la respuesta (trabajo sncrono) o puede estar haciendo otra cosa (trabajo asncrono). El
controlador recibe la seal y lee la direccin del bus. Enva a su vez una o varias seales al dispositivo
mecnico (si es que lo hay) y espera los datos. Cuando los recibe los escribe en un buffer local y enva una
seal al CPU indicndole que los datos estn listos. El CPU recibe esta interrupcin y comienza a leer byte
por byte o palabra por palabra los datos del buffer del controlador (a travs del device driver) hasta terminar la
operacin.
Como se ve, el CPU gasta varios ciclos en leer los datos deseados. El DMA soluciona ese problema de la
manera siguiente. Cuando un proceso requiere uno o varios bloques de datos, el CPU enva al controlador la
peticin junto con el nmero de bytes deseados y la direccin de en dnde quiere que se almacenen de
regreso. El DMA actuar como un 'cpu secundario' [Stal92] en cuanto a que tiene el poder de tomar el control
del 'bus' e indicarle al verdadero CPU que espere. Cuando el controlador tiene listos los datos, el DMA
'escucha' si el 'bus' est libre aprovechando esos ciclos para ir leyendo los datos del buffer del controlador e ir
escribindolos en el rea de memoria que el CPU le indic. Cuando todos los datos fueron escritos, se le enva
una interrupcin al CPU para que use los datos. El ahorro con el DMA es que el CPU ya no es interrumpido
(aunque s puede ser retardado por el DMA) salvando as el 'cambio de contexto' y adems el DMA
aprovechar aquellos ciclos en que el 'bus' no fue usado por el CPU.
El hecho de que los controladores necesiten buffers internos se debe a que conforme ellos reciban datos de los
dispositivos que controlan, los deben poder almacenar temporalmente, ya que el CPU no est listo en todo
momento para leerlos.
6.4 Principios en el Software de Entrada - Salida
Los principios de software en la entrada - salida se resumen en cuatro puntos: el software debe ofrecer
manejadores de interrupciones, manejadores de dispositivos, software que sea independiente de los
dispositivos y software para usuarios.
6.4.1 Manejadores de interrupciones El primer objetivo referente a los manejadores de interrupciones
consiste en que el programador o el usuario no debe darse cuenta de los manejos de bajo nivel para los casos
en que el dispositivo est ocupado y se debe suspender el proceso o sincronizar algunas tareas. Desde el punto
de vista del proceso o usuario, el sistema simplemente se tard ms o menos en responder a su peticin.
6.4.2 Manejadores de disposisitivos El sistema debe proveer los manejadores de dispositivos necesarios para
los perifricos, as como ocultar las peculiaridades del manejo interno de cada uno de ellos, tales como el
formato de la informacin, los medios mecnicos, los niveles de voltaje y otros. Por ejemplo, si el sistema

24

Manual del Alumno


tiene varios tipos diferentes de discos duros, para el usuario o programador las diferencias tcnicas entre ellos
no le deben importar, y los manejadores le deben ofrecer el mismo conjunto de rutinas para leer y escribir
datos.
6.4.3 Software independiente del dispositivo Este es un nivel superior de independencia que el ofrecido por
los manejadores de dispositivos. Aqu el sistema operativo debe ser capaz, en lo ms posible, de ofrecer un
conjunto de utileras para accesar perifricos o programarlos de una manera consistente. Por ejemplo, que
para todos los dispositivos orientados a bloques se tenga una llamada para decidir si se desea usar 'buffers' o
no, o para posicionarse en ellos.
6.4.4 Software para usuarios La mayora de las rutinas de entrada - salida trabajan en modo privilegiado, o
son llamadas al sistema que se ligan a los programas del usuario formando parte de sus aplicaciones y que no
le dejan ninguna flexibilidad al usuario en cuanto a la apariencia de los datos. Existen otras libreras en donde
el usuario si tiene poder de decisin (por ejemplo la llamada a "printf" en el lenguaje "C"). Otra facilidad
ofrecida son las reas de trabajos encolados (spooling areas), tales como las de impresin y correo
electrnico.
6.5 Relojes
Los relojes son esenciales para el buen funcionamiento de cualquier sistema porque juegan un papel decisivo
en la sincronizacin de procesos, en la calendarizacin de trabajos por lote y para la asignacin de turnos de
ejecucin entre otras tareas relevantes. Generalmente se cuenta con dos relojes en el sistema: uno que lleva la
hora y fecha del sistema y que oscila entre 50 y 60 veces por segundo y el reloj que oscila entre 5 y 100
millones de veces por segundo y que se encarga de enviar interrupciones al CPU de manera peridica. El reloj
de mayor frecuencia sirve para controlar el tiempo de ejecucin de los procesos, para despertar los procesos
que estn 'durmiendo' y para lanzar o iniciar procesos que fueron calendarizados.
Para mantener la hora y fecha del sistema generalmente se usa un registro alimentado por una pila de alta
duracin que almacena estos datos y que se programan de fbrica por primera vez. As, aunque se suspenda la
energa la fecha permanece. Para lanzar procesos (chequeo de tiempo ocioso de un dispositivo, terminacin
del time slice de un proceso, etc), se almacena un valor en un registro (valor QUANTUM) el cual se
decrementa con cada ciclo del reloj, y cuando llega a cero se dispara un proceso que ejecutar las operaciones
necesarias (escoger un nuevo proceso en ejecucin, verificar el funcionamiento del motor del disco flexible,
hacer eco de un caracter del teclado, etc).