You are on page 1of 11

Sistemas Operativos

Ing. J orge Orellana A.


1
Tema I
Introduccin a los Sistemas Operativos


1.1 SISTEMA OPERATIVO
Un sistema operativo es un programa que acta como intermediario entre el usuario de un computador y el
hardware del mismo. El propsito de un sistema operativo es crear un entorno en el que el usuario pueda
ejecutar programas de forma cmoda y eficiente.

A pesar de que todos nosotros usamos sistemas operativos casi a diario, es difcil definir qu es un sistema
operativo. En parte, esto se debe a que los sistemas operativos realizan dos funciones diferentes
(complementarias):
Proveer una mquina virtual o extendida (interfaz), es decir, un ambiente en el cual el usuario pueda
ejecutar programas de manera conveniente, protegindolo de los detalles y complejidades del hardware.
Administrar eficientemente (optimizar) los recursos del computador (componentes tanto fsicos como
lgicos: el procesador, memoria, discos, ratones o archivos) para soportar los requerimientos.

1.1.1 El sistema operativo como mquina virtual
Un computador se compone de uno o ms procesadores o CPUs, memoria principal o RAM, memoria
secundaria (discos), tarjetas de expansin (tarjetas de red, mdems y otros), monitor, teclado, mouse y otros
dispositivos. Escribir programas que hagan uso correcto de todos estos componentes no es una tarea trivial.
Peor an si hablamos de uso ptimo. Si cada programador tuviera que preocuparse de, por ejemplo, como
funciona el disco duro del computador, teniendo adems siempre presentes todas las posibles cosas que
podran fallar, entonces a la fecha se habra escrito una cantidad bastante reducida de programas.
Es mucho ms fcil decir escriba adis al final del archivo datos, que
1. Poner en determinados registros del controlador de disco la direccin que se quiere escribir, el
nmero de bytes que se desea escribir, la posicin de memoria donde est la informacin a escribir,
el sentido de la operacin (lectura o escritura), adems de otros parmetros;
2. Decir al controlador que efectu la operacin.
3. Esperar. Decidir qu hacer si el controlador se demora ms de lo esperado (cunto es lo
esperado?).
4. Interpretar el resultado de la operacin (una serie de bits).
5. Reintentar si algo anduvo mal.
6. etc.
Adems, habra que reescribir el programa si se instala un disco diferente o se desea ejecutar el programa en
otra mquina. Hace muchos aos que qued claro que era necesario encontrar algn medio para aislar a los
programadores de las complejidades del hardware. Esa es precisamente una de las tareas del sistema
operativo, que puede verse como una capa de software que maneja todas las partes del sistema, y hace de
intermediario entre el hardware y los programas del usuario. El sistema operativo presenta, de esta manera,
una interfaz o mquina virtual que es ms fcil de entender y de programar que la mquina pura. Adems,
para una misma familia de mquinas, aunque tengan componentes diferentes (por ejemplo, monitores de
distinta resolucin o discos duros de diversos fabricantes), la mquina virtual puede ser idntica: el
programador ve exactamente la misma interfaz.

1.1.2 El sistema operativo como administrador de recursos
La otra tarea de un sistema operativo consiste en administrar los recursos de un computador cuando hay dos o
ms programas que se ejecutan simultneamente y requieren usar el mismo recurso (como tiempo de CPU,
memoria o impresora).
Adems, en un sistema multiusuario, suele ser necesario o conveniente compartir, adems de dispositivos
fsicos, informacin. Al mismo tiempo, debe tenerse en cuenta consideraciones de seguridad: por ejemplo, la
informacin confidencial slo debe ser accesada por usuarios autorizados, un usuario cualquiera no debiera
ser capaz de sobrescribir reas crticas del sistema, etc. (En este caso, un usuario puede ser una persona, un
programa, u otro computador).

Sistemas Operativos
Ing. J orge Orellana A.
2
En resumen, el sistema operativo debe llevar la cuenta acerca de quin est usando qu recursos; otorgar
recursos a quienes los solicitan (siempre que el solicitante tenga derechos adecuados sobre el recurso); y
arbitrar en caso de solicitudes conflictivas.

1.2 EVOLUCIN DE LOS SISTEMAS OPERATIVOS
Los sistemas operativos y la arquitectura de computadores han evolucionado de manera interrelacionada: para
facilitar el uso de los computadores, se desarrollaron los sistemas operativos. Al construir y usar los sistemas
operativos, se hace obvio que ciertos cambios en la arquitectura los simplificara. Por eso, es conveniente
echar una mirada a la historia.


1.2.1 La primera generacin (1945-1955): tubos de vaco y tableros
El primer computador digital fue diseado por el matemtico ingls Charles Babbage hace cerca de siglo y
medio. Era un computador totalmente mecnico, que Babbage nunca pudo construir, principalmente debido a
que la tecnologa de la poca no era capaz de producir las piezas con la precisin requerida.
Despus de eso, poco se hizo hasta la segunda guerra, alrededor de 1940 se construyeron las primeras
mquinas calculadoras usando tubos de vaco. Estas mquinas de varias toneladas de peso eran diseadas,
construidas, programadas y operadas por el mismo grupo de personas. No haba ni lenguajes de
programacin, ni compiladores; mucho menos sistema operativo. Cada programa se escriba en lenguaje de
mquina, usando tableros con enchufes e interruptores y tena que manejar todo el sistema (lo que era factible
gracias a que el programador era el mismo que dise y construy la mquina). Con el tiempo se introdujeron
las tarjetas perforadas, para reemplazar al tablero, pero el sistema era esencialmente el mismo.

1.2.2 La segunda generacin (1955-1965): transistores y procesamiento por lotes
La introduccin de los transistores permiti aumentar sustancialmente la confiabilidad de los computadores,
lo que a su vez hizo factible construir mquinas comerciales. Por primera vez hubo una separacin entre
diseadores, constructores, y programadores.
La aparicin de los primeros compiladores (FORTRAN) facilit la programacin, a costa de hacer mucho
ms compleja la operacin de los computadores. Por ejemplo, para probar un programa en FORTRAN recin
escrito, el programador deba esperar su turno, y:
1. Cargar el compilador de FORTRAN, tpicamente desde una cinta magntica.
2. Poner el grupo de tarjetas perforadas correspondientes al programa FORTRAN y correr el
compilador.
3. El compilador genera cdigo en assembler, as que hay que cargar ahora el ensamblador para
traducirlo a lenguaje de mquina. Este paso requiere poner otra cinta con el ensamblador. Ejecutar el
ensamblador, para generar el programa ejecutable.
4. Ejecutar el programa.
Si hay errores en cualquiera de estos pasos, el programador deba corregir el programa y comenzar todo de
nuevo. Obviamente, mientras el programador pona cintas y tarjetas, y mientras se devanaba los sesos para
descubrir por qu el programa no funciona, la CPU de millones de dlares de costo se mantena
Sistemas Operativos
Ing. J orge Orellana A.
3
completamente ociosa. Se idearon mecanismos para mantener a la CPU siempre ocupada. El primero fue
separar el rol de programador del rol de operador. Un operador profesional demoraba menos en montar y
desmontar cintas, y poda acumular lotes de trabajos con requerimientos similares: por ejemplo, si se acumula
la compilacin de varios programas FORTRAN, entonces el compilador de FORTRAN se carga una sola vez
para todos los trabajos.
An as, en la transicin de un trabajo a otro la CPU se mantena desocupada. Aparecieron entonces los
monitores residentes, que fueron los precursores de los sistemas operativos. Un monitor residente es un
pequeo programa que est siempre en la memoria del computador, desde que ste se enciende. Cuando un
programa termina, se devuelve el control al monitor residente, quien inmediatamente selecciona otro
programa para ejecutar. Ahora los programadores, en vez de decirle al operador qu programa cargar, deban
informrselo al monitor (mediante tarjetas de control especiales):
Esto se conoce como procesamiento por lotes: el programador deja su grupo de tarjetas, y despus vuelve a
retirar la salida que se emite por la impresora (y que puede ser nada ms que la notificacin de que el
programa tena un error de sintaxis).

1.2.3 La tercera generacin (1965-1980): circuitos integrados y multiprogramacin
El procesamiento por lotes evit que la CPU tenga que esperar tareas ejecutadas por lentos seres humanos.
Pero ahora el cuello de botella se traslad a los dispositivos mecnicos (impresoras, lectoras de tarjetas y de
cinta), intrnsecamente ms lentos que las CPUs electrnicas. Para resolver esto, aparece, dentro de la tercera
generacin de computadores, la multiprogramacin: varios trabajos se mantienen permanentemente en
memoria; cuando uno de ellos tiene que esperar que una operacin (como grabar un registro en cinta) se
complete, la CPU contina con la ejecucin de otro trabajo. Si se mantiene un nmero suficiente de trabajos
en la memoria, entonces la CPU puede estar siempre ocupada.
Pero el sistema sigue siendo esencialmente un sistema de procesamiento por lotes; los programadores no
interactan en lnea con el computador, los tiempos de respuesta desde que se deja un trabajo para ejecucin
hasta conocer el resultado son demasiado grandes. De ah nace el concepto de tiempo compartido que es una
variante de la multiprogramacin en la cual una CPU atiende simultneamente los requerimientos de varios
usuarios conectados en lnea a travs de terminales. Ya que los usuarios humanos demoran bastante entre la
emisin de un comando y otro, una sola CPU es capaz de atender, literalmente, a cientos de ellos
simultneamente (bueno, en realidad, uno despus de otro, pero los usuarios tienen la ilusin de la
simultaneidad). Por otra parte, cuando no hay ningn comando que ejecutar proveniente de un usuario
interactivo, la CPU puede cambiar a algn trabajo por lote.

1.2.4 La cuarta generacin (1980-Presente): computadores personales
Con el advenimiento de la integracin a gran escala, que permiti concentrar en un solo chip miles, y luego
millones de transistores, naci la era de la computacin personal. Los conceptos utilizados para fabricar los
sistemas operativos de la tercera generacin de computadores siguen siendo, en general, adecuados para la
cuarta generacin. Algunas diferencias destacables:
Dado los decrecientes costos de las CPUs, ya no es nada de grave que un procesador est desocupado.
La creciente capacidad de las CPUs permite el desarrollo de interfaces grficas; buena parte del cdigo de
los sistemas operativos de hoy es para manejar la interfaz con el usuario.
Sistemas Operativos
Ing. J orge Orellana A.
4
Los sistemas paralelos (un computador con varias CPUs), requieren sistemas operativos capaces de
asignar trabajos a los distintos procesadores.
Las redes de computadores y sistemas distribuidos abren nuevas posibilidades e imponen nuevas
obligaciones a los sistemas operativos.

1.3 COMPONENTES DEL SISTEMA

Un sistema operativo crea el entorno en el que se ejecutan los programas. Podemos crear un sistema tan
grande y complejo como un sistema operativo slo si lo dividimos en porciones ms pequeas. Cada una de
estas partes deber ser un componente bien delineado del sistema, con entradas, salidas y funciones
cuidadosamente definidas.
La interfaz entre el S. O. y los programas del usuario se define como el conjunto de instrucciones ampliadas
que proporciona el S. O. y son las llamadas al sistema:

1.3.1 Gestin de procesos
Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones. Podemos pensar en un proceso
como una porcin de un programa en ejecucin o todo el programa.
Un proceso necesita ciertos recursos, incluidos tiempo de CPU, memoria, archivos y dispositivos de E/S, para
llevar a cabo su tarea. Estos recursos se otorgan al proceso en el momento en que se crea, o bien se le asignan
durante su ejecucin. Un proceso es la unidad de trabajo de un sistema. El sistema consiste en una coleccin
de procesos, algunos de los cuales son procesos del sistema operativo (los que ejecutan cdigo del sistema),
siendo el resto procesos de usuario (los que ejecutan cdigo de algn usuario).

1.3.2 Gestin de la memoria principal
La memoria principal es crucial para el funcionamiento de un sistema de computacin moderno. La memoria
principal es una matriz grande de palabras o bytes, cuyo tamao va desde cientos de miles hasta cientos de
millones. Cada palabra o byte tiene su propia direccin. La memoria principal es un depsito de datos a los
que se puede acceder rpidamente y que son compartidos por la CPU y los dispositivos de E/S. El procesador
central lee instrucciones de la memoria principal durante el ciclo de obtencin de instrucciones, y lee y
escribe datos de la memoria principal durante el ciclo de obtencin de datos.

1.3.3 Gestin de archivos
Un archivo es una coleccin de informacin relacionada definida por su creador. Por lo regular, los archivos
representan programas (en forma tanto fuente como objeto) y datos.
Los archivos de datos pueden ser numricos, alfabticos o alfanumricos. Los archivos pueden ser de forma
libre, como los de texto, o tener un formato rgido. Un archivo consiste en una secuencia de bits, lneas o
registros, cuyos significados han sido definidos por su creador. El concepto de archivo es muy general.

1.3.4 Gestin del sistema de E/S
Uno de los objetivos de un sistema operativo es ocultar las peculiaridades de dispositivos de hardware
especficos de modo que el usuario no las perciba.

1.3.5 Gestin de almacenamiento secundario
El propsito principal de un sistema de computacin es ejecutar programas. Estos programas, junto con los
datos a los que acceden, deben estar alojados en la memoria principal (almacenamiento primario) durante la
ejecucin. Dado que la memoria principal es demasiado pequea para dar cabida a todos los datos y
programas, y que pierde su informacin cuando deja de recibir corriente elctrica, el sistema de computacin
debe contar con algn almacenamiento secundario para respaldar la memoria principal. La mayor parte de los
sistemas de computacin modernos utiliza discos como principal medio de almacenamiento. El sistema
operativo se encarga de las siguientes actividades relacionadas con la gestin de discos: Administracin del
espacio libre, Asignacin del almacenamiento y Planificacin del disco

1.3.6 Sistema de proteccin
En los primeros computadores, el operador tena el control completo del sistema. Con el tiempo, se fueron
desarrollando los sistemas operativos, y parte del control se traspas a ellos. Adems, para mejorar la
utilizacin del sistema, se comenz primero a manejar varios programas en memoria en forma simultnea, y
Sistemas Operativos
Ing. J orge Orellana A.
5
luego a atender simultneamente a varios usuarios. Pero el remedio trajo su propia enfermedad, ya que un
programa poda por error o por mala intencin de su creador, modificar datos de otros programas, o peor an,
modificar el propio sistema operativo, lo que poda colgar todo el sistema.
En general, un programa puede alterar el normal funcionamiento del sistema de las siguientes formas:
Ejecutando una instruccin de E/S ilegal (por ejemplo, que borre todos los archivos del disco).
Sobrescribiendo reas de la memoria que pertenecen al sistema operativo.
No devolviendo el control de la CPU al sistema operativo.
Para evitar esto, es indispensable el apoyo del hardware, a travs de los siguientes mecanismos:

1.3.6.1 Operacin dual
Para asegurar una operacin adecuada, se debe proteger al sistema operativo y todos los programas del
malfuncionamiento de cualquier otro programa. Para eso, el hardware debe proveer al menos dos modos de
operacin.
Modo usuario.
Modo sistema (o privilegiado, protegido o supervisor).

El bit de modo indica el modo de operacin actual. Cuando se enciende el computador y se carga el sistema
operativo, se comienza en modo sistema. El sistema operativo siempre cambia a modo usuario antes de pasar
el control a un proceso de usuario. Cuando ocurre una interrupcin, el hardware siempre cambia a modo
sistema. De esta manera, el sistema operativo siempre ejecuta en modo sistema. Hay ciertas operaciones
crticas que slo pueden ser ejecutadas en modo sistema.

1.3.6.2 Proteccin de E/S
Para prevenir que un usuario ejecute instrucciones de E/S que puedan provocar dao, la solucin es simple:
las instrucciones de E/S slo pueden ejecutarse en modo sistema. As los usuarios no pueden ejecutar E/S
directamente, sino que deben hacerlo a travs del sistema.
Para que este mecanismo de proteccin sea completo, hay que asegurarse que los programas de usuario no
puedan obtener acceso a la CPU en modo sistema. Por ejemplo, un programa de usuario podra poner una
direccin que apunte a una rutina propia en el vector de interrupciones. As, cuando se produzca la
interrupcin, el hardware cambiara a modo sistema, y pasara el control a la rutina del usuario. O, tambin, el
programa de usuario podra reescribir el servidor de la interrupcin.

1.3.6.3 Proteccin de memoria
No slo hay que proteger el vector de interrupciones y las rutinas servidoras, sino que, en general, queremos
proteger las reas de memoria utilizadas por el sistema operativo y por otros programas. Una forma es usando
dos registros: base y lmite, que establecen el rango de direcciones de memoria que el programa puede
accesar legalmente.
Para que esto funcione, hay que comparar cada direccin accesada por un programa en modo usuario con
estos dos registros. Si la direccin est fuera del rango, se genera una interrupcin que es atendida por el
sistema operativo, quien aborta el programa (usualmente con un mensaje "segmentation fault"). Esta
comparacin puede parecer cara, pero teniendo presente que se hace en hardware, no lo es tanto. Obviamente,
el programa usuario no debe poder modificar estos registros: las instrucciones que los modifican son
instrucciones protegidas.

1.3.6.4 Proteccin de CPU
Lo nico que falta, es asegurarse que el sistema operativo mantenga el control del buque, o sea, hay que
prevenir, por ejemplo, que un programa entre en un ciclo infinito y nunca devuelva el control al sistema
operativo. Esto se logra con un timer (reloj).

1.3.7 Sistema de interpretacin de rdenes
Uno de los programas del sistema ms importantes de un sistema operativo es el intrprete de rdenes o de
comandos, que es la interfaz entre el usuario y el sistema operativo.
Algunos sistemas operativos incluyen el intrprete de rdenes en el ncleo; otros, como MS-DOS y Unix,
tratan el intrprete de rdenes como un programa especial que se est ejecutando cuando se inicia un trabajo,
o cuando un usuario ingresa en un sistema de tiempo compartido. La funcin del intrprete de lnea de
comandos o shell es muy sencilla: obtener la siguiente orden y ejecutarla.
Sistemas Operativos
Ing. J orge Orellana A.
6
1.4 ESTRUCTURA Y FUNCIONAMIENTO DE LA COMPUTADORA

La computadora es una mquina destinada a procesar datos. En una visin esquemtica este procesamiento
involucra dos flujos de informacin: el de datos y el de instrucciones. Se parte del flujo de datos que ha de ser
procesado. Este flujo de datos es tratado mediante un flujo de instrucciones de mquina, generado por la
ejecucin de un programa, y produce el flujo de datos resultado.



1.4.1 Interrupciones: la base de los sistemas operativos
Un computador se compone de una CPU (o ms de una) y una serie de controladores de dispositivos,
conectados a travs de un bus comn a la memoria. Cada controlador est a cargo de un tipo especfico de
dispositivo.

Cuando se enciende el computador, se ejecuta automticamente un pequeo programa, cuya nica tarea es
cargar el sistema operativo en la memoria, y entregarle el control (ejecutarlo). El sistema operativo hace las
inicializaciones del caso, y luego simplemente espera a que algn evento ocurra. La ocurrencia de un evento
es, por lo general, sealizada por una interrupcin de software o hardware. Los controladores de dispositivo
pueden gatillar una interrupcin en cualquier momento, enviando una seal a la CPU a travs del bus del
sistema. Las interrupciones de software son gatilladas por procesos, por la va de ejecutar una instruccin
especial que se conoce como llamada al sistema.



Ejemplos de eventos que gatillan interrupciones son la terminacin de una operacin de E/S, llamadas al
sistema, divisin por cero, alarmas del reloj. Para cada tipo de interrupcin, debe existir una rutina que la
atienda: el servidor de la interrupcin.

Cuando la CPU es interrumpida:
1. La CPU deja de hacer lo que estaba haciendo, que puede haber sido nada, (si simplemente estaba
esperando), o la ejecucin de un proceso.
2. Determina el tipo de interrupcin.
3. Ejecuta el servidor de interrupcin correspondiente.
4. Contina lo que fue interrumpido.
Sistemas Operativos
Ing. J orge Orellana A.
7
Dado que existe una cantidad limitada (y reducida) de tipos de interrupciones posibles, se usa una tabla con
las direcciones de los servidores de cada interrupcin, tpicamente en las primeras posiciones de la memoria.
Esta tabla se conoce como vector de interrupciones.
Cuando ocurre una interrupcin:
1. Se deshabilitan las interrupciones para que la CPU no sea interrumpida mientras atiende una
interrupcin (situacin que podra generar caos).
2. La CPU debe memorizar lo que estaba haciendo para continuarlo.
3. Se determina la direccin del servidor de la interrupcin, segn el vector de interrupciones.
4. Se transfiere el control a esa direccin.
5. La rutina que atiende la interrupcin debe finalizar con una instruccin IRET, que restablece el
estado que la CPU tena cuando fue interrumpida, usando los datos almacenados en el stack.

Esquemas ms sofisticados enmascaran (deshabilitan selectivamente) las interrupciones en vez de
deshabilitarlas totalmente, de manera que una interrupcin de alta prioridad SI pueda interrumpir a la CPU
cuando est atendiendo una de menor prioridad.
Todos los sistemas operativos modernos se basan en interrupciones (interrupt driven). Si no hay procesos que
ejecutar, ni dispositivos ni usuarios que atender, el sistema operativo no hace nada, se sienta a esperar que
algo pase. Cuando algo pasa, se sealiza una interrupcin, y el sistema operativo entra en actividad (o sea, los
servidores de interrupcin son parte del sistema operativo).

Ejemplo: multiprogramacin (timesharing)
1. El sistema operativo inicializa el timer o reloj en una porcin de tiempo, y lo echa a andar.
2. El sistema operativo entrega el control a un proceso.
3. El proceso ejecuta.
4. Concluido el tiempo prefijado, el timer provoca una interrupcin.
5. El manejador de interrupciones del timer (que es parte del sistema operativo), guarda la informacin
del proceso interrumpido necesaria para poder reanudarlo despus.
6. Se repite el ciclo, escogiendo ahora otro proceso.

Ejemplo: manejo de dispositivos de E/S
Para comenzar una operacin de E/S, el sistema operativo escribe los registros del caso en el controlador del
dispositivo. A su vez, el controlador determina qu hacer mirando el contenido de esos registros. Por ejemplo,
si se trata de una solicitud de lectura, inicia la transferencia de datos desde el dispositivo hacia la memoria.
Cuando finaliza la transferencia, el controlador le avisa a la CPU a travs de una interrupcin. Esto permite
que la CPU, en vez de esperar que la transferencia termine (lo que sera E/S sincrnico), entre tanto puede
realizar otra tarea (E/S asincrnico). Una secuencia tpica:
1. El proceso que est ejecutando en la CPU solicita una operacin de E/S, mediante una llamada al
sistema.
2. El sistema operativo suspende el proceso, ponindolo en la cola de procesos suspendidos, y
comienza la operacin de E/S.
3. El sistema operativo escoge otro proceso para que siga ejecutando en la CPU, mientras la operacin
de E/S se completa.
4. Cuando la operacin de E/S se completa, el control vuelve al sistema operativo gracias a que el
controlador del dispositivo provoc una interrupcin.
5. El sistema operativo, determina, segn la interrupcin y sus tablas internas, que el proceso que haba
sido suspendido ahora puede reanudarse, as que lo pone en la cola de procesos listos para ejecutar.
6. El sistema operativo reanuda ese, o tal vez otro proceso de la cola de procesos listos.

1.4.2 Llamadas al sistema
Son la interfaz entre el sistema operativo y un programa en ejecucin. Pueden ser instrucciones en lenguaje
ensamblador (MSDOS) o pueden hacerse desde lenguajes de alto nivel como C (Unix, Linux, Windows). El
control pasa al vector de interrupciones para que una rutina la atienda. El bit de modo se pone en modo
monitor. El monitor analiza la instruccin que provoc la interrupcin. As se ejecuta la solicitud y vuelve el
control a la instruccin siguiente a la llamada al sistema. Los parmetros asociados a las llamadas pueden
pasarse de varias maneras: por registros, bloques o tablas en memoria o pilas. Hay varias categoras de
llamadas al sistema:
Sistemas Operativos
Ing. J orge Orellana A.
8
Control de procesos: finalizar, abortar, cargar, ejecutar, crear, terminar, establecer y obtener atributos
del proceso, esperar un tiempo, sealar y esperar evento, asignar y liberar memoria.
Manipulacin de archivos: crear, eliminar, abrir, cerrar, leer, escribir, reposicionar, obtener y
establecer atributos de archivo.
Manipulacin de dispositivos: solicitar, liberar, leer, escribir, reposicionar, obtener y establecer
atributos de dispositivo.
Mantenimiento de informacin: obtener fecha y hora, datos del sistema, atributos.
Comunicaciones: crear, eliminar conexin de comunicacin, enviar y recibir mensajes, transferir
informacin de estado, etc.

1.5 ESTRUCTURA DE LOS SISTEMAS OPERATIVOS (ESTUDIO DE CASOS)

1.5.1 Estructura simple - Sistemas monolticos.
Una forma de organizar un sistema operativo, es con una estructura simple (o sin estructura). El sistema
operativo se escribe como una coleccin de procedimientos, cada uno de los cuales llama a los otros cuando
lo requiere. Lo nico que est bien definido es la interfaz de estos procedimientos, en trminos de parmetros
y resultados.
Para generar el sistema operativo (el binario), se compilan todos los procedimientos y se enlazan en un solo
archivo (el kernel), que es el que se carga en la memoria cuando se enciende la mquina.

El kernel es grande y cumple todas las funciones del sistema operativo. Es el caso de MS-DOS y de las
primeras versiones de Unix.

Incluso en los sistemas monolticos es posible tener al menos un poco de estructura. Los servicios (llamadas
al sistema) proporcionados por el sistema operativo se solicitan colocando los parmetros en lugares bien
definidos, como en registros o en la pila, y ejecutando despus una instruccin de trampa especial conocida
como llamada al kernel o llamada al supervisor.

Esta instruccin conmuta la mquina del modo de usuario al modo de kernel y transfiere el control al sistema
operativo, lo cual se muestra como evento (1) en la figura. (La mayor parte de las CPU tienen dos modos:
modo de kernel, para el sistema operativo, en el que se permite todas las instrucciones; y modo de usuario,
para programas de usuario, en el que no se permiten instrucciones de E/S y de ciertos otros tipos.)
A continuacin, el sistema operativo examina los parmetros de la llamada para determinar cul llamada al
sistema se ejecutar; esto se muestra como (2) en la figura. Acto seguido, el sistema operativo consulta una
tabla que contiene en la ranura k un apuntador al procedimiento que lleva a cabo la llamada al sistema k. Esta
operacin, marcada con (3), identifica el procedimiento de servicio, mismo que entonces se invoca. Una vez
que se ha completado el trabajo y la llamada al sistema ha terminado, se devuelve el control al programa de
usuario (paso 4) a fin de que pueda continuar su ejecucin con la instruccin que sigue a la llamada al
sistema.
Esta organizacin sugiere una estructura bsica para el sistema operativo:
1. Un programa principal que invoca el procedimiento de servicio solicitado.
2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3. Un conjunto de procedimientos de utilera que ayudan a los procedimientos de servicio.
Sistemas Operativos
Ing. J orge Orellana A.
9

En este modelo, para cada llamada al sistema hay un procedimiento de servicio que se ocupa de ella. Los
procedimientos de utilera hacen cosas que varios procedimientos de servicio necesitan, como obtener datos
de los programas de usuario.



1.5.2 Sistemas Estructurados
1.5.2.1 Estructuracin en capas
Una generalizacin del modelo anterior es disear el sistema en capas. El primer exponente de esta categora
fue el sistema operativo THE (Technische Hogeschool Eindhoven , Holanda, 1968), un sistema de
procesamiento por lotes. En el caso de THE, la estructuracin en capas era ms que nada para modularizar el
diseo (igual se compilaba y enlazaba todo en un solo gran archivo). Cada capa encapsula datos y las
operaciones que manipulan esos datos. Una capa puede usar los servicios slo de capas inferiores.




La Capa 0 trabaja con la asignacin del procesador, alterna entre los procesos cuando ocurren las
interrupciones o expiran los cronmetros y proporciona la multiprogramacin bsica.
La Capa 1 administra la memoria, asegura que las pginas (porciones de memoria) requeridas de los procesos
lleguen a memoria cuando fueran necesarias.
La Capa 2 administra la comunicacin entre cada proceso y la consola del operador (Por sobre esta capa, cada
proceso tiene su propia consola de operador).
La Capa 3 controla los dispositivos de e / s y almacena en buffers los flujos de informacin entre ellos (Por
sobre la capa 3 cada proceso puede trabajar con dispositivos abstractos de E/S en vez de con dispositivos
reales).
La Capa 4 aloja los programas del usuario, los programas. del usuario no tienen que preocuparse por el
proceso, memoria, consola o control de e / s.
La Capa 5 localiza el proceso operador del sistema.

Como ventajas se pueden citar la modularizacin, ocultamiento de informacin, flexibilidad. Cada capa se
desarrolla y depura "sin mirar hacia arriba". Nuevas funciones pueden aadirse, y la implementacin de las
existentes puede modificarse, mientras no se cambie su interfaz.
Las desventajas son que requiere cuidadosa planificacin, para decidir qu cosa va en qu capa. Por ejemplo,
la capa que provee acceso al disco debe estar en una capa ms baja que la que administra memoria virtual,
pero encima del planificador de CPU, pues el driver probablemente se bloquea para esperar que una operacin
de E/S se complete. Sin embargo, en un sistema grande, el planificador podra llegar a necesitar manejar ms
informacin de los procesos que la que cabe en su memoria, requiriendo apoyarse en el disco. Otro potencial
problema es la eficiencia, pues algunos servicios pasan por varias capas antes de llevarse a cabo.
Sistemas Operativos
Ing. J orge Orellana A.
10
Una generalizacin mas avanzada del concepto de capas se presento con Multics (multiplexed information
and computing service) MIT, Bell Labs y General Electric.
Presenta una estructura en anillos concntricos, siendo los interiores los privilegiados. Un procedimiento de
un anillo exterior, para llamar a un procedimiento de un anillo interior, debe hacer el equivalente a una
llamada al sistema.
Otro ejemplo de sistema operativo diseado por capas es el OS/2, descendiente de MS-DOS.

1.5.2.2 Mquinas virtuales
Un sistema operativo de tiempo compartido cumple dos funciones: (1) multiprogramacin, y (2) proveer una
mquina extendida, con una interfaz ms conveniente para los programas de usuario que la mquina pura. En
la dcada del 70, a la IBM se le ocurri separar completamente estas funciones en el sistema operativo
VM/370. El ncleo del sistema, llamado monitor de la mquina virtual ejecuta directamente sobre el
hardware, y su nico objetivo es la multiprogramacin, ofreciendo mltiples mquinas virtuales a la capa
superior.

Pero estas mquinas virtuales no son mquinas extendidas (con archivos y otras abstracciones), como es lo
habitual, sino copias exactas de la mquina original. Cada mquina virtual puede ejecutar un sistema
operativo diferente, construido para operar en la mquina original. La CPU se comparte con planificacin de
CPU, la memoria con memoria virtual, y el disco se particiona.
No es simple de implementar. La mquina original tiene dos modos: monitor y usuario. El monitor de la
mquina virtual opera en modo monitor, y cada mquina virtual puede operar slo en modo usuario. En
consecuencia se debe proveer un modo usuario virtual y un modo monitor virtual. Las acciones que en la
mquina real causan el paso de modo usuario a modo monitor deben causar el paso de modo usuario virtual a
modo monitor virtual. Cmo? Cuando un proceso de usuario hace una llamada al sistema, el control se
transfiere al monitor de la mquina virtual, quien devuelve el control a la mquina virtual, simulando una
llamada al sistema. Si en esas condiciones (operando en modo monitor virtual, que en realidad no es ms que
modo usuario fsico), se intenta accesar el hardware (por ejemplo, una operacin de E/S), el control vuelve al
monitor de la mquina virtual, quien efecta, controladamente, la operacin).


Las ventajas son que facilita el desarrollo de sistemas operativos (cuando la mquina es cara y no se puede
entregar una a cada programador). Sin este esquema, es necesario bajar la mquina cada vez que quiere probar
una modificacin al sistema. Tambin permite resolver problemas de compatibilidad. Por ejemplo, si
queremos desarrollar un nuevo sistema operativo, pero queremos que los miles de programas DOS que
existen sigan corriendo, podemos usar esta solucin, asignando una mquina virtual a cada programa DOS
que se ejecute. Se puede ir ms lejos, y crear una mquina virtual distinta a la original. As es como Windows
para arquitectura Intel se puede ejecutar, por ejemplo en una Silicon Graphics. El problema es que, en este
caso, hay que interpretar cada instruccin (en lugar de ejecutarla directamente).

1.5.2.3 Modelo cliente - servidor:
Una tendencia en los S. O. modernos es la de explotar la idea de mover el cdigo a capas superiores y
mantener un ncleo mnimo, de manera similar al VM/370. Implantar la mayora de las funciones del S. O. en
los procesos del usuario.
Sistemas Operativos
Ing. J orge Orellana A.
11
Para solicitar un servicio (por ej.: lectura de un bloque de cierto archivo) segn el modelo cliente servidor,
el proceso del usuario (proceso cliente) enva la solicitud a un proceso servidor, realiza el trabajo y regresa la
respuesta.

El ncleo controla la comunicacin entre los clientes y los servidores.
Se fracciona el S. O. en partes, cada una controlando una faceta, servicio a archivos, a procesos, a terminales,
a memoria, etc., cada parte pequea y ms fcilmente controlable.
Los servidores se ejecutan como procesos en modo usuario, no tienen acceso directo al hardware y se aslan y
acotan ms fcilmente los problemas.
Se adapta para su uso en los sistemas distribuidos, si un cliente se comunica con un servidor mediante
mensajes, no necesita saber si el mensaje se atiende localmente o mediante un servidor remoto, situado en otra
mquina conectada.

Algunas funciones del S. O., ( por ej. el cargado de comandos en los registros fsicos del dispositivo de e/s),
presentan problemas especiales y distintas soluciones:
Ejecucin en modo ncleo, con acceso total al hardware y comunicacin con los dems procesos
mediante el mecanismo normal de mensajes.
Construccin de un mnimo de mecanismos dentro del ncleo manteniendo las decisiones de poltica
relativas a los usuarios dentro del espacio del usuario.

Minix [Tanenbaum, 1998], Mach [Accetta, 1986] y Amoeba [Mullender, 1990] son ejemplos de sistemas
operativos que siguen este modelo. Windows NT tambin sigue esta filosofa de diseo, aunque muchos de
los servidores (el gestor de procesos, gestor de E/S, gestor de memoria, etc.) se ejecutan en modo ncleo por
razones de eficiencia.

You might also like