Sie sind auf Seite 1von 24

ESTRUCTURA Y FUNCIONAMIENTO DE

COMPUTADORAS II

UNIDAD 4: SISTEMAS OPERATIVOS.


CONCEPTOS GENERALES.

Licenciatura en Sistemas de Informacin


Licenciatura en Ciencias de la Computacin

Departamento de Informtica

Facultad de Ciencias Exactas, Fsicas y Naturales

Universidad Nacional de San Juan


Estructura y Funcionamiento de Computadoras II

Esquema de contenidos
Definicin de sistema operativo
Conceptos bsicos Objetivos del sistema operativo
Funciones del sistema operativo

Los comienzos
El primer SO: Sistema Batch Serial Simple
La disparidad de velocidades entre el procesador
Evolucin de los sistemas de explotacin central y los dispositivos perifricos
Sistemas Operativos de multiprogramacin
Sistemas Operativos de tiempo compartido
Sistemas Operativos de tiempo real
Sistemas Operativos embebidos
Sistemas Operativos de mquina virtual
Sistemas Operativos de multiprocesamiento

Estructura del sistema

El arranque del sistema

4.1. CONCEPTOS BSICOS

4.1.1. Definicin de sistema operativo


Un sistema operativo es un conjunto de programas de control que controlan la ejecucin de
aplicaciones y programas y que acta como interfaz entre las aplicaciones y el hardware de la
computadora. Para ello una parte, denominada ncleo (o kernel) del Sistema Operativo, es cargada en
memoria al comenzar la operacin de la mquina y reside all en forma permanente hasta el apagado. El
ncleo contiene las funciones bsicas del SO. El resto de las funciones se encuentran almacenadas en un
medio de memoria auxiliar, de donde son extradas para su ejecucin cuando se las necesita.
Es el SO quien se comunica con el hardware. Todas las funciones del hardware estn a disposicin del
usuario, a travs de pedidos al SO.
El SO es un componente principal de prcticamente la totalidad de los sistemas de computacin. Salvo
en casos muy especiales, es muy difcil, si no imposible, usar una computadora sin alguna clase de
Sistema Operativo y usar un sistema deficiente podra tener un efecto desastroso en la capacidad de
procesamiento de una mquina, pues anulara la eficacia de un costoso y veloz hardware.
Los Sistemas Operativos adquieren da a da mayor importancia dentro del conjunto de los programas
que integran y hacen producir a los sistemas de computacin, es decir el Software de Base o Sistema de
Programacin. Son el centro nervioso que dirige y coordina el uso de una mquina y el medio idneo
que permite obtener de ella una mayor eficiencia y flexibilidad al cumplir las mltiples funciones para
las que estn diseados. As, posibilitan en las computadoras modernas la realizacin de varias tareas a
la vez (multiprogramacin), atender a mltiples usuarios desde terminales conectadas al computador
(tiempo compartido), comunicarse con otros sistemas (redes de computadoras / sistemas distribuidos),
etc.

4.1.2. Objetivos del sistema operativo


Se puede considerar que un sistema operativo tiene los siguientes tres objetivos:
Facilidad de uso. Un SO facilita el uso de la computadora. Esto es equivalente a colocar frente al
usuario una mquina virtual cuyas caractersticas sean distintas y ms fciles de manejar que la
mquina real subyacente.
Operacin eficiente del equipo. Un SO se debe construir de tal forma que administre los recursos
(procesador/es, memoria, perifricos y archivos) de una manera eficiente.

Sistemas Operativos. Conceptos generales. 2


Estructura y Funcionamiento de Computadoras II

Capacidad para evolucionar. Un SO se debe construir de tal forma que se puedan desarrollar,
probar e introducir nuevas funciones en el sistema sin interferir con su servicio.

Facilidad de uso Interfaz usuario-computadora


El hardware y software utilizados para proporcionar aplicaciones a los usuarios se pueden ver de forma
jerrquica o en capas, tal como se muestra en la figura el usuario de dichas aplicaciones, es decir, el
usuario final, normalmente no se preocupa por los detalles del hardware de la computadora. Por tanto,
el usuario final ve un sistema de computacin en trminos de un conjunto de aplicaciones. Una
aplicacin se puede expresar en un lenguaje de programacin y normalmente se desarrolla por un
programador de aplicaciones. Si un programador tuviera que desarrollar una aplicacin como un
conjunto de instrucciones en cdigo maquina que se encargaran de controlar completamente el
hardware de la computadora, se enfrentara a una labor extremadamente compleja. Para facilitar esta
tarea, se proporciona un conjunto de programas de sistema. Algunos de estos programas se conocen
como utilidades. Estos programas utilizan frecuentemente funciones que asisten al programador en las
fases de creacin de programas, gestin de archivos y control de dispositivos de E/S. Un programador
har uso de estas utilidades cuando desarrolle una aplicacin, y las aplicaciones, invocaran a las
utilidades durante su ejecucin para llevar a cabo ciertas funciones. El programa de sistema ms
importante es el sistema operativo. El sistema operativo oculta los detalles del hardware al programador
y le proporciona una interfaz apropiada para utilizar el sistema. Acta como mediador, haciendo ms
fcil al programador y a la aplicacin el acceso y uso de dichas utilidades y servicios.

Operacin eficiente del equipo


La segunda razn histrica de los sistemas operativos y quizs la primera en orden de importancia para
las empresas que encararon la ciclpea tarea de desarrollarlos, es la operacin eficiente del equipo, que
permite al usuario aprovechar la costosa inversin realizada. Un sistema operativo debe ofrecer un
balance adecuado entre estos dos objetivos. El objetivo es brindar los servicios de administracin de la
manera ms eficiente posible, con la mayor facilidad de uso.

Capacidad para evolucionar


Un SO importante debe evolucionar en el tiempo por las siguientes razones:
Actualizaciones de hardware y/o nuevos tipos de hardware.
Nuevos servicios. En respuesta a la demanda del usuario o en respuesta a las necesidades de los
gestores de sistema, el sistema operativo debe permitir la incorporacin de nuevos servicios.
Resolucin de fallos. Cualquier sistema operativo tiene fallos. Estos fallos se descubren con el
transcurso del tiempo y se resuelven. Por supuesto, esto implica la introduccin de nuevos
fallos.
Usuario final

Programador

Diseador del SO
Programas de aplicacin

Utilidades

Sistema Operativo

Hardware de la computadora

4.1.3. Funciones del sistema operativo


Un sistema operativo proporciona un entorno para la ejecucin de programas. El SO ofrece ciertos
servicios para los programas y para los usuarios de estos. Los servicios especficos que se ofrecen
varan de un sistema operativo a otro, pero podemos identificar varias clases comunes, a saber:

Sistemas Operativos. Conceptos generales. 3


Estructura y Funcionamiento de Computadoras II

Ejecucin de programas. Este servicio es bsico para la operacin de la computadora, ya que la


funcin fundamental de un sistema operativo es la de brindar un ambiente de ejecucin de
programas. El sistema debe ser capaz de almacenar, cargar, ejecutar e interrumpir programas de
usuarios.

Operaciones de E/S. Un programa en ejecucin puede requerir una operacin de E/S sobre algn
dispositivo. Ya que un programa de usuario no puede ejecutar directamente operaciones de E/S, el
sistema operativo debe ofrecer alguna forma de llevarlas a cabo.

Manipulacin del sistema de archivos. El sistema de archivos es de especial inters. Es obvio que
los programas necesitan leer y escribir archivos, as como crearlos y eliminarlos basndose en su
nombre.

Comunicaciones. Se presentan varias circunstancias en las que un proceso necesita intercambiar


informacin con otro, y esto puede ocurrir principalmente en dos formas. La primera tiene lugar
entre procesos que se ejecutan en el mismo computador; la segunda entre procesos que se ejecutan
en sistemas de computacin diferentes unidos por una red. La comunicacin puede efectuarse a
travs de memoria compartida o por la tcnica menos usual de paso de mensajes, en el cual el
sistema operativo mueve paquetes de informacin entre procesos.

Deteccin de errores. El sistema operativo debe estar constantemente pendiente de posibles errores,
los cuales pueden darse en el hardware de la memoria y la CPU (como un error de memoria o un
corte de energa), en dispositivos de E/S (como un error de paridad en la cinta, un atascamiento de
tarjetas en el lector de tarjetas o falta de papel en la impresora) o en un programa de usuario (como
un desbordamiento aritmtico, un intento de acceder a una posicin ilegal de la memoria,
demasiado tiempo de uso de la CPU). Para cada tipo de error, el SO debe emprender la accin
adecuada, para asegurar un funcionamiento correcto y consistente.

Asignacin de recursos. Cuando varios usuarios o trabajos se ejecutan al mismo tiempo, se debe
asignar recursos a cada uno de ellos. El sistema operativo administra varios tipos de recursos.
Algunos (como los ciclos de la CPU, memoria principal y almacenamiento de archivos) pueden
tener un cdigo de asignacin especial, mientras otros (como los dispositivos de E/S) pueden poseer
un cdigo de solicitud y liberacin ms general.

Contabilidad. Para llevar un control de cules usuarios utilizan cuntos recursos del computador y
de qu tipo. Estas anotaciones pueden tener fines contables (para facturar a los usuarios) o
simplemente para recopilar estadsticas de uso, las cuales pueden ser una valiosa herramienta para
los administradores que desean reconfigurar el sistema a fin de mejorar los servicios.

Proteccin. Posiblemente los dueos de la informacin almacenada en un sistema de computacin


multiusuario deseen controlar su uso. Cuando varios trabajos independientes se ejecutan al mismo
tiempo, no debera ser posible que un trabajo interfiriera con los dems, ni con el sistema operativo.
La proteccin implica revisar la validez de todos los parmetros que se pasan en las llamadas al
sistema y asegurar que todo el acceso a los recursos del sistema est controlado. Tambin es
importante la seguridad del sistema respecto a personas ajenas. Esta seguridad comienza con las
contraseas que los usuarios deben especificar para tener acceso a los recursos, y se extiende para
defender a los dispositivos de E/S externos, incluyendo a los mdems y adaptadores de red, de
intentos de acceso no permitidos, y para registrar todas estas conexiones a fin de detectar
intromisiones. Para que un sistema est protegido y seguro, hay que establecer precauciones en
todas partes. Debe recordarse que una cadena es tan fuerte como su ms dbil eslabn.

Sistemas Operativos. Conceptos generales. 4


Estructura y Funcionamiento de Computadoras II

4.2. EVOLUCIN DE LOS SISTEMAS DE EXPLOTACIN

4.2.1. Los comienzos


Inicialmente, slo hubo hardware. Las primeras computadoras eran mquinas muy grandes, que se
programaban desde una consola, utilizando llaves que permitan alterar los contenidos de la memoria y
registros de CPU. El programador era el operador del equipo e intervena directamente en la ejecucin
de cada programa.
La programacin se efectuaba en lenguaje de mquina, debiendo el programador codificar sus
instrucciones en binario o, en algunos casos, en octal o hexadecimal.
Como la memoria era muy pequea, las posibilidades de programacin tambin lo eran y muchas de las
aplicaciones consideradas hoy tradicionales, no eran ms que fantasiosas expresiones de deseos.
Los programas se cargaban a llave, esto es, por medio de switches (llaves de 2 posiciones, una para el
cero y otra para el uno) del tablero o consola de comando de la computadora, o bien desde una cinta de
papel perforado, que contena una versin ejecutable del programa.
La cinta de papel perforado, de cinco u ocho canales de perforacin, era el medio de almacenamiento
externo de programas y datos.
En caso de que el programa se encontrara perforado en cinta de papel, se deba cargar un primer
programa a llave: el programa encargado de la lectura de la cinta de papel. Si el programa lea datos
de la cinta, estos seguan a las instrucciones del programa.
Luego se cargaba, a travs de los switches, la direccin de comienzo del programa en el registro
Contador de Programa (PC) y se daba comienzo a la ejecucin.
La determinacin de errores en el programa era muy rudimentaria, debindose recurrir para ello, a la
observacin de luces en el tablero de comando. Cuando se descubran errores, el programador/operador
poda parar la ejecucin, examinar el contenido de posiciones de memoria y registros de la CPU y
corregir el programa directamente desde la consola, para evitar cargarlo nuevamente en su totalidad.
La salida producida por el programa se imprima o se perforaba en cintas o tarjetas.
El equipo, pese a sus limitaciones (una calculadora de bolsillo tiene ms capacidad de memoria y
velocidad que aquellos mastodontes de miles de vlvulas de vaco) era sumamente costoso, superando
su precio el milln de dlares, por lo que la hora de uso era gravosa.
Debido a las caractersticas particulares del ambiente donde se trabajaba, el uso del equipo se estableca
mediante la inscripcin de los usuarios en una planilla de turnos horarios. Eso haca que el conflicto de
intereses fuera enorme y que el equipo se desaprovechara, puesto que un programador poda reservar
una hora de mquina y descubrir, en los cinco primeros minutos un error de concepto que le impidiera
continuar con su tarea, sin que necesariamente otro accediera al equipo, ahora inactivo.
Por otra parte, podra suceder que un programa se demorara en su ejecucin por encima de las
previsiones del programador, pero que la persona que ocupara el turno siguiente no tuviera
contemplaciones, obligando a desalojar la mquina en el instante establecido, perdindose as valioso
tiempo de procesamiento, ya que ello normalmente obligaba, cuando nuevamente fuera el turno del
primero, a reiniciar la ejecucin del programa.

4.2.1.1. La subrutina
La idea de software bsico, es decir, de programas de servicio de uso compartido por todos, es una
nocin muy temprana en el desarrollo de la computacin. Prcticamente desde los albores de la misma,
cuando en la Universidad de Cambridge se experimentaba con la EDSAC, la subrutina ocup un rol
central en el diseo de su arquitectura. La invencin de la subrutina gener una corriente hacia la
construccin de programas de biblioteca, proveedores de funciones comunes, las cuales podan copiarse
en un nuevo programa sin tener que escribirse dos veces.
En particular, se pudo comenzar a compartir las rutinas para gobernar los dispositivos perifricos. Cada
dispositivo de E/S tiene sus caractersticas propias, requiriendo una programacin cuidadosa. Para cada
dispositivo se escribe una rutina especial, llamada manejador del dispositivo (device driver). Este
programa conoce como deben usarse los buffers, banderas (flags), registros, bits de control y estado,
para un dispositivo particular. Cada tipo distinto de dispositivo tiene su propio manejador.
Esto permiti que en lugar de escribir el cdigo necesario cada vez, se tomara directamente el
manejador correspondiente de la biblioteca.

Sistemas Operativos. Conceptos generales. 5


Estructura y Funcionamiento de Computadoras II

Asimismo, se desarrollan y pasan a formar parte de estas bibliotecas de funciones comunes, otros
programas como ensambladores, vinculadores y cargadores que, al igual que las subrutinas de E/S,
facilitan la programacin.
En el terreno del hardware aparecen nuevos dispositivos, tales como lectoras de tarjetas, impresoras de
lnea y cintas magnticas.

4.2.1.2. Los ensambladores


El surgimiento del lenguaje ensamblador constituye una notable mejora de las facilidades de
programacin, ya que permite codificar los programas de un modo ms simple, puesto que exime al
programador de tener que manejarse con cdigos binarios, para pasar a emplear nemnicos en la
escritura de las instrucciones.
Asimismo, lo libera de la pesada tarea de llevar la cuenta de las direcciones de instrucciones y datos, al
permitir referirse a ellas mediante el empleo de smbolos (etiquetas).
Los ensambladores traducen el programa fuente a cdigo absoluto y los vinculadores /cargadores lo
transforman en un programa ejecutable y lo cargan en memoria para
su ejecucin.
El desarrollo de ensambladores, as como de compiladores de nuevos
lenguajes de programacin (Fortran, Cobol), a la vez que facilitan la
programacin, dificultan la tarea de operacin.
Para ejecutar un programa FORTRAN, por ejemplo, haba que
desarrollar la siguiente secuencia de pasos:
1. Montar la cinta magntica o cargar las tarjetas perforadas que
contenan el compilador Fortran.
2. Cargar el compilador Fortran en memoria.
3. Compilar el programa. El compilador Fortran produca una salida
en lenguaje ensamblador.
4. Montar la cinta que contiene el Programa ensamblador (traductor).
5. Ensamblar el programa.
6. Linkeditar la salida del programa objeto obtenido del paso anterior,
para incluir rutinas de biblioteca y subrutinas.
7. Cargar el programa ejecutable en memoria y ejecutarlo.

Terminada una tarea, haba que descargar los perifricos y preparar la


siguiente, repitiendo nuevamente todos o la mayora de los pasos
anteriores.

4.2.1.3. Tiempo de preparacin vs. Tiempo de ejecucin


Tal secuencia de pasos implicaba que la ejecucin de un trabajo insumiera una gran cantidad de tiempo
de preparacin (setup time). Si se cometa un error en algn paso, deba recomenzarse, teniendo que
cargar nuevamente cintas o tarjetas.
Este mtodo es aceptable solamente si el tiempo de preparacin no es significativo con respecto al
tiempo de procesamiento. Las primeras computadoras eran tan lentas que generalmente este era el caso,
pero a medida que, como consecuencia del avance tecnolgico, fueron desarrollndose modelos ms
veloces, esta modalidad de trabajo se vuelve ineficiente, por el alto porcentaje de tiempo que el sistema
permanece ocioso (mientras el operador realiza las operaciones de carga y descarga de perifricos o
trabaja en la consola). En ese entonces, un computador era muy caro, con un tiempo de vida esperado
corto. Por lo tanto, el tiempo de computacin era muy valioso y los propietarios queran aprovecharlo al
mximo.
Se instrument una solucin doble: la primera fue ocupar operadores profesionales, de tal forma que el
programador no operara ms la computadora y eliminar as el tiempo desperdiciado por las reservas.
El nuevo especialista reciba los programas con indicaciones sobre su ejecucin y que medidas tomar en
caso de mal funcionamiento y entregaba los resultados en un medio semejante (otra cinta de papel, que
deba luego ser impresa por una teletipo, o un listado producido por la propia computadora).
Los operadores no corrigen los programas. Ante una situacin de error, lo que hacen es obtener un
vuelco (a impresora o cinta de papel) del contenido de la memoria y registros (dump), para que el

Sistemas Operativos. Conceptos generales. 6


Estructura y Funcionamiento de Computadoras II

programador determine el problema y continan con el trabajo siguiente. El esquema siguiente muestra
este procedimiento:

PROGRAMADOR OPERADOR

FIN
NORMAL

DUMP

La segunda solucin trat de reducir el tiempo de preparacin. Para evitar cargar reiteradamente
compiladores, vinculadores o cargadores, muy pronto esos programas se hicieron residentes, es decir,
podan correr una y otra vez sin que fuera necesario volver a leerlos de un perifrico (cinta o tarjetas)
para cargarlos cada vez en memoria.
Para aprovechar esta capacidad, el operador agrupaba en lotes (batch) los programas con requisitos
semejantes, evitando as cambios de entorno cada vez que se cargaba un programa.
Si el operador recibe varios trabajos Fortran y otros tantos Cobol, en lugar de ejecutarlos en orden de
llegada, procesa todos los Fortran y luego todos los Cobol, ganando el tiempo de carga de los
compiladores.
El resultado fue una notable reduccin en el tiempo de preparacin de cada tarea.

4.2.2. El primer sistema operativo: Sistema batch serial simple


No obstante los avances logrados con la implementacin del nuevo
modo de trabajo, persistan causas de demoras en la ejecucin por Monitor
intervencin manual del operador: ante cada detencin de un
programa, el operador debe observar la consola de luces para
determinar la causa (condicin de parada), si se trata de un error
obtener el dump y luego cargar el prximo trabajo. Durante todo
Programa de
este tiempo la CPU se mantiene sin uso. Usuario
La aparicin de medios magnticos de almacenamiento, junto con la
modalidad de procesamiento en lotes, sugiri la posibilidad de
escribir un programa que decidiera la carga automtica de
compiladores, programas de servicio y de aplicacin.
El programa encargado de automatizar la ejecucin secuencial de Fin
compiladores, vinculadores, cargadores y programas de aplicacin Trabajo
(reemplazando en esta tarea al operador), deba ser un habitante
permanente de la memoria, por lo que se lo denomin inicialmente Residente, nombre que lo identific
en los primeros aos de su existencia. Posteriormente fue recibiendo otras sucesivas denominaciones
como Monitor, Ejecutivo, Supervisor, Programa de Control Maestro, Kernel o Ncleo.
Inicialmente, el Monitor tiene el control del computador (se carga en memoria al comenzar las
operaciones). El mismo transfiere el control a un programa de usuario. Cuando este termina, el control
retorna al Monitor, que lo pasar al prximo programa y as sucesivamente.
Este desarrollo constituy la creacin del primer sistema operativo, de caractersticas rudimentarias,
cuya principal prestacin era, entonces, el encadenamiento de la secuencia de trabajos o
secuenciamiento automtico de trabajos, adoptando la denominacin de Sistema batch serial simple
(batch: modo de procesamiento en lotes; serial: se ejecuta un programa a continuacin del otro; simple:
un solo programa por vez)

Sistemas Operativos. Conceptos generales. 7


Estructura y Funcionamiento de Computadoras II

4.2.2.1. Lenguaje de control


Ahora, el autor del programa deba proveer al residente informacin acerca de las necesidades de
ejecucin del programa. Ello lo haca mediante comandos especiales, codificados en tarjetas perforadas,
que reciban el nombre de tarjetas de control, que el residente interpretaba. Estas tarjetas se
intercalaban con las tarjetas del programa y datos, en los lugares apropiados y constituan directivas que
indicaban, bsicamente, el programa que deba ejecutarse y los recursos necesarios para ello. El
conjunto de estas directivas o sentencias de control pasa a constituir el llamado Lenguaje de Control.
As, para indicar al residente que deba cargarse un compilador determinado, el programador antepona
a su programa la tarjeta correspondiente. El compilador era cargado por el residente y, bajo la
indicacin de los parmetros de la tarjeta de control, ejecutado. Al serlo, lea y traduca el programa del
usuario y entregaba una copia de su traduccin en algn medio. Este medio era utilizado por el siguiente
programa invocado por el residente atendiendo a las tarjetas de control y as hasta que el programa de
aplicacin llegaba a un punto de carga propio, era ubicado en memoria y ejecutado.
El lote necesario para procesar esta tarea es uno como el siguiente:

El conjunto as estructurado constituye una unidad que se presenta al sistema para su procesamiento y
recibe la denominacin de Trabajo o Job.
El monitor residente proporciona una secuenciacin automtica de trabajos siguiendo las indicaciones
de las tarjetas de control. Cuando una de ellas indica que debe ejecutarse un programa, el monitor lo
carga en memoria y le transfiere el control. Cuando el programa termina, devuelve el control al monitor,
el cual lee la siguiente tarjeta de control, carga el programa adecuado, etc. Este ciclo se repite hasta que
se interpretan todas las tarjetas de control del trabajo. Luego el monitor contina automticamente con
el siguiente trabajo. Para ello, el personal de operaciones deba asegurar que siempre hubiera un nuevo
trabajo (lote) esperando para ser procesado en la unidad de alimentacin de la lectora de tarjetas.
Esta mecnica plantea varios problemas, cuya resolucin pasa a constituir caractersticas permanentes
de los sistemas operativos a partir de entonces.

4.2.2.2. Modo dual de ejecucin


Ahora podran presentarse dos situaciones en las que el residente debera saber que acciones tomar. A
continuacin se explican con su correspondiente solucin:
1. Cuando un programa tiene errores de compilacin y esta es, por lo tanto, abortada, el residente debe
poder saber hasta donde debe avanzar en la secuencia de tarjetas de entrada para poder ingresar el
programa siguiente, descartando las tarjetas restantes del anterior.
Lo mismo ocurre en caso de que el error se produzca durante la ejecucin, debiendo en ese caso
saltear todas las tarjetas de datos que resten procesar.
Esto oblig a identificar las tarjetas de control con caractersticas especiales, para diferenciarlas de las
del programa (instrucciones) y los datos. As, se las distingui con un caracter especial (*, $, //, etc.), en
una posicin (columna) determinada. Entonces, en un caso como el planteado, el monitor saba que
tena que avanzar hasta encontrar una tarjeta con esa identificacin.

2. Si el programa del usuario lee por s mismo las tarjetas de datos, podra darse el caso, debido a un
error de lgica, de que intentara leer datos ms all de las tarjetas de control siguientes al ltimo,

Sistemas Operativos. Conceptos generales. 8


Estructura y Funcionamiento de Computadoras II

haciendo imposible la ejecucin del programa subsiguiente (continuara leyendo sin control las tarjetas
correspondientes al siguiente programa o siguiente trabajo).
Ello obliga a establecer que la lectura de las tarjetas de control est reservada al nico programa al que
estn dirigidas: el residente. La rutina de control de dispositivo (device driver), ser capaz de distinguir
entre ellas y las restantes. Pero ello no es del todo suficiente, ya que el programador puede escribir,
eventualmente, su propia rutina de dispositivo y leer las tarjetas de control, volviendo el problema a su
comienzo.
La solucin fue establecer que las operaciones de E/S solamente podan ser ejecutadas por el monitor
residente.
Se transformaron, as, en instrucciones privilegiadas, es decir, ejecutables slo por un programa
privilegiado, en este caso el monitor.

El modo de hacer que un programa sea privilegiado es utilizar un bit de un registro en el procesador a
modo de seal o bandera, de manera que uno de los dos valores (1 o 0) indica que se est ejecutando un
programa privilegiado y el otro que se trata de un programa normal.
Esto conduce al concepto de estado del procesador, que ahora tiene dos modos:
Estado de Monitor (cuando el control del procesador pertenece al monitor residente) - Bit = 0.
Estado de Problema (cuando el procesador est bajo el control del programa del usuario) - Bit = 1.

Esta mecnica de trabajo tambin se conoce como modo dual de ejecucin o modo maestro / esclavo,
que puede representarse por el siguiente esquema:

Atiende pedido
MONITOR
2 (Estado de monitor:
operacin privilegiada)
Operacin de E/S

1 3
PROGRAMA DE
USUARIO
Lectura (pedido al Monitor) (Estado de problema:
operacin normal)

1. El programa de usuario solicita al monitor una operacin de E/S, en este caso una lectura.
2. El monitor atiende el pedido, realizando la operacin de E/S solicitada.
3. Una vez completada la operacin, devuelve el control al programa de usuario.

Ahora, el programador no tiene acceso a la instruccin de E/S, pero si a la funcin, a travs de un


pedido al residente.
Para ello debe existir un mecanismo que permita que el programa del usuario se comunique con el
monitor para dirigirle una solicitud y tambin uno que permita detectar si el programa del usuario, en
cambio, intenta ejecutar por si mismo instrucciones de E/S, que le estn prohibidas. En ambos casos,
tales mecanismos se conocen como interrupciones, concepto de importancia central en el estudio de los
sistemas operativos.
Una nocin completa sobre el mecanismo de la interrupcin se tratar ms adelante, por ahora baste con
aclarar que los programas pueden solicitar servicios al Monitor o Residente a travs de un cierto tipo de
interrupcin (Software interrupts), denominadas llamadas al monitor, extracdigos o instrucciones
extendidas. Asimismo, que ciertos eventos (como un intento de ejecutar instrucciones no permitidas)
pueden ser detectados por el hardware del sistema de computacin y comunicados al Sistema Operativo
por medio de interrupciones.
Las llamadas al monitor consisten en una instruccin especial que, al ser ejecutada por el programa de
aplicacin, causa la suspensin de su propia ejecucin y que el control sea pasado al monitor, que acto
seguido atiende el pedido del programa.
En sntesis: cuando un programa de aplicacin emite una sentencia de entrada o salida, ella se traducir
en una llamada al monitor, que ser quin, a travs de las rutinas de E/S, llevar a cabo la operacin.

Sistemas Operativos. Conceptos generales. 9


Estructura y Funcionamiento de Computadoras II

Es importante sealar que, como consecuencia de la interrupcin, se cambia el estado del procesador,
que se encontraba en estado de problema, pasando a estado de monitor o supervisor, para que ste
pueda ejecutar las instrucciones privilegiadas de E/S.
Por lo tanto, a esta altura del proceso de evolucin el monitor residente (Sistema operativo Batch Serial
Simple) tiene las funciones bsicas que se muestran en el siguiente esquema:

Interrupciones

Manejadores de dispositivos

Secuenciador de trabajos

Intrprete de tarjetas
de control

4.2.3. La disparidad de velocidades entre el procesador central y los


dispositivos perifricos
La evolucin desde el primer SO hasta los actuales SO modernos fue posible gracias a la
implementacin de algunas tcnicas cuyo objetivo era aumentar la productividad (throughput) del
sistema. A continuacin se explican las principales.

4.2.3.1. Buffering
Para que se entienda el problema de fondo, vase el simple proceso de leer un registro, ejecutar las
operaciones de procesamiento e imprimir los resultados como se ilustra en la figura siguiente.

Suponiendo que la entrada, el procesamiento y 1a salida requieren idnticas cantidades de tiempo, es


evidente que el registro se lee durante un intervalo de tiempo y luego el dispositivo de entrada se
mantiene ocioso durante los dos intervalos siguientes (procesamiento y salida). De hecho cada uno de
los tres componentes del sistema est ocioso dos terceras partes del tiempo mientras espera que el
tercero complete su operacin. Esto puede observarse tericamente, mientras que en la realidad el
procesador est ocioso ms del 90% del tiempo.
El buffering fue una de las primeras soluciones a la lentitud de los dispositivos de E/S. La idea es muy
simple: despus que se ley un dato, y la CPU est operando en el mismo, el dispositivo de entrada
comienza a leer el prximo dato inmediatamente. La CPU y el dispositivo estn ocupados
simultneamente. Un buffering similar se puede hacer para la salida de datos. Esto se alcanza al dotar
de almacenamientos intermedios a los dispositivos de entrada y de salida.
En el siguiente esquema se muestra cmo funciona el buffering:

Sistemas Operativos. Conceptos generales. 10


Estructura y Funcionamiento de Computadoras II

Mientras se procesa el contenido de una tarjeta, almacenado en el buffer de memoria en un instante


anterior, la lectora lee la siguiente tarjeta y almacena el contenido en el buffer del dispositivo (momento
1). Cuando los datos de la nueva tarjeta son requeridos, se los lee del buffer del dispositivo (momento 2)
y transfiere al buffer de memoria. La mejora en los tiempos consiste en que la transferencia electrnica
de buffer a buffer es insignificante con respecto a la lectura de una tarjeta, pudindose considerar, en
trminos comparativos, instantnea. Este mecanismo permite as realizar operaciones de procesamiento
al mismo tiempo que operaciones de entrada y salida, recibiendo la denominacin de procesamiento
superpuesto, representado en el grfico siguiente:

En este caso se observa, por ejemplo que durante el intervalo de tiempo 4, el registro 4 se est leyendo
al almacenamiento intermedio, gracias a la lectora de tarjetas, el registro 3 se est procesando y el 2 se
est imprimiendo, tomndose de almacenamiento intermedio a la impresora de lneas.
Nota: Se debe resaltar que se trata de ejemplos ideales y que representan mejoras ms notables que las
que realmente se encuentran en la prctica.
De manera anloga se proceda con las salidas: la CPU pona un registro (por ejemplo un rengln de
una impresora) en el buffer del dispositivo y mientras el dispositivo escriba dicha informacin, la CPU
iba preparando otro registro.

4.2.3.2. Entrada/Salida fuera de lnea


Otra solucin para el problema de la disparidad de velocidades entre el procesador y los perifricos fue
reemplazar las lectoras de tarjetas e impresoras, con unidades de cinta magntica.
En vez que la CPU leyera directamente de las tarjetas, las mismas primero se copiaban en una cinta
magntica. Cuando sta estaba suficientemente llena, se llevaba a la computadora. Cuando un programa
quera leer una tarjeta, lee la cinta. Similarmente, la salida se hace en una cinta para imprimirse
posteriormente. Las lectoras e impresoras operaban off-line (fuera de lnea), no en la computadora
principal.
La ventaja principal es que la CPU se libera de la espera de lectura de tarjetas, que son muy lentas, y la
misma se hace por medio de cintas, que son mucho ms rpidas. Adems no son necesarios cambios en

Sistemas Operativos. Conceptos generales. 11


Estructura y Funcionamiento de Computadoras II

los programas de aplicacin: los mismos llaman al driver de la lectora de tarjetas, que se reemplaza por
un driver de lectura de cinta magntica. De esta forma, los programas de aplicacin no deben ser
cambiados: solo el driver. Los programas usan dispositivos de E/S lgicos.

4.2.3.3. Canales de Entrada /Salida


El siguiente paso en la evolucin hacia los sistemas de Multiprogramacin fue conectar los perifricos
esta vez en lnea con la computadora central, a travs de dispositivos llamados canales, o procesadores
de E/S. Estos son subcomputadoras especializadas en la realizacin de operaciones de E/S, capaces de
controlar uno o varios dispositivos perifricos. Una vez puestos en marcha por el procesador central,
funcionaban independientemente de ste, cumplimentando la operacin de E/S.

Ahora los buffers, necesarios para lograr la superposicin de las operaciones, se definen en la memoria
central.
Como contrapartida de los beneficios logrados con la incorporacin de estas mejoras, surgi la
complicacin de una mayor dificultad en el manejo de la E/S: el programador deba luchar con los
buffers, el desbloqueo y rebloqueo de registros y la sincronizacin del canal autnomo.
Esto condujo al desarrollo de nuevas funciones de software para atender toda esta problemtica, que se
sumaron a las ya provistas por el residente, constituyndose paquetes de subrutinas, agrupados bajo la
denominacin de IOCS (Input Output Control System-Sistema de Control de E/S).

Ahora bien, para controlar las operaciones de entrada/salida y lograr el procesamiento superpuesto es
necesario proporcionar dos zonas separadas para el dispositivo de entrada y el de salida. Esto queda
demostrado, si se recuerda que el canal est leyendo un registro nuevo al almacenamiento, al mismo
tiempo que la CPU procesa el anterior El uso de zonas de almacenamiento intermedio alternas se ilustra
en la figura, en donde el registro 3 se lee al almacenamiento intermedio de entrada 1, en tanto que se
procesa el registro 2 tomado del almacenamiento intermedio de la entrada, colocndose los resultados
en el almacenamiento intermedio de salida 1, al tiempo que se escribe el registro de salida 1, tomado del

Sistemas Operativos. Conceptos generales. 12


Estructura y Funcionamiento de Computadoras II

almacenamiento intermedio de salida 2. Al completar este ciclo, la CPU comienza a procesar el registro
3 tomado del almacenamiento intermedio de la entrada 1 al almacenamiento intermedio de entrada 2 y
la salida del registro 2 se obtiene del almacenamiento intermedio de salida 1.

La superposicin de las entradas y salidas con las operaciones de procesamiento contribuy en parte a
una mejora global del rendimiento, pero en programas con frecuentes invocaciones a dispositivos
perifricos el efecto es insuficiente (la CPU, en estos casos, siempre termina primero y debe esperar al
perifrico). Teniendo en cuenta esto, una visin ms ajustada a la realidad del esquema correspondiente
al procesamiento superpuesto se muestra en el grfico siguiente:

Las barras grises representan los tiempos de CPU ociosa: el procesamiento no puede continuar hasta
que se complete la entrada de los datos (registro) necesarios.

4.2.3.4. Spooling
Esta es la mejor solucin para todos los problemas mencionados anteriormente.
La aparicin del disco magntico, con capacidad de almacenamiento interesante y acceso directo, el
mtodo de derivar entrada y salida lenta hacia procesadores ms baratos, se adapt a la nueva
tecnologa.
As, se comenz a reemplazar los sistemas de E/S off-line por el empleo de discos.
El nuevo mtodo incluy la produccin de programas que intercambiaban datos entre perifricos lentos

Sistemas Operativos. Conceptos generales. 13


Estructura y Funcionamiento de Computadoras II

y el disco, llamados SPOOLers.


Un estudio pormenorizado de este mtodo se har al estudiar el componente de administracin de E/S,
ms adelante.
El spooler lee tarjetas de la lectora de tarjetas y las almacena en un rea de disco. La ubicacin de la
imagen de las tarjetas en el disco se registra en una tabla del sistema operativo.
Por las caractersticas fsicas de las operaciones de lectura y escritura en el disco (el mecanismo de
lecto/grabacin puede acceder a distintas reas del medio de almacenamiento a travs de sus
movimientos mecnicos caractersticos, combinados con el movimiento de rotacin del disco), es
posible cambiar del rea de tarjetas que se estn usando, para almacenar nuevas tarjetas (de otro trabajo)
en otra ubicacin del mismo disco.
Cada trabajo se registra en la tabla indicada. Cuando se ejecuta un trabajo, sus pedidos para la lectora de
tarjetas se satisfacen leyendo su imagen desde el disco.
Asimismo, los registros de salida (lneas de impresin, salidas perforadas en tarjetas), se graban en una
ubicacin del disco. Cuando el trabajo termina, el spooler imprime o perfora la salida completa, leyendo
las imgenes de renglones de impresin o de tarjetas a perforar almacenadas en el rea del disco donde
fueron grabadas por el programa.
Una caracterstica importante de los spoolers, es que utilizan, para llevar a cabo su tarea, los tiempos
libres del procesador, durante los cuales el programa de aplicacin no realiza ninguna tarea til, por
ejemplo, mientras espera por una operacin de E/S.
Por otra parte, provee una estructura de datos importante: una cola de trabajos (secuencia ordenada de
objetos que esperan servicio). Varios trabajos han sido ledos y esperan en el disco, listos para ser
ejecutados. Esta cola permite al Sistema Operativo elegir qu trabajo ejecutar luego, para aumentar la
utilizacin de la CPU. Si los trabajos se alimentan al computador directamente desde tarjetas o incluso
desde una cinta magntica, no es posible ejecutar trabajos en distinto orden al de llegada, es decir en
forma secuencial. En cambio, al tener los trabajos en un dispositivo de acceso directo, surge la
posibilidad de hacer una Planificacin de Trabajos.
Esto llev directamente a la multiprogramacin.

4.2.4. Sistemas Operativos de Multiprogramacin


Con el concepto del programa supervisor que reside permanentemente en el almacenamiento, se
introdujo la modalidad de contar con dos programas en el almacenamiento al mismo tiempo: el
supervisor, para el control general del sistema, y el del problema, para ejecutar las funciones del
procesamiento de datos. En la multiprogramacin, este concepto se lleva un paso ms all, colocando
uno o ms programas de problemas (programas de usuario) en el almacenamiento y ejecutndolos de un
modo simultneo, aunque en realidad si bien es factible tener simultneamente dos o ms programas
dentro del almacenamiento, en un sistema con un solo procesador (por ese entonces, la mayora) la
computadora es capaz de ejecutar slo una instruccin a la vez. Por ende, en cualquier momento dado
slo uno de los programas controla a la computadora y ejecuta las instrucciones. Dicho de otra manera
es imposible tener una ejecucin simultnea de dos programas con una misma CPU.
La idea de la programacin mltiple es ejecutar un programa designado como de menor prioridad
durante los periodos ociosos de la CPU que se presentan en la ejecucin de un programa de mayor

Sistemas Operativos. Conceptos generales. 14


Estructura y Funcionamiento de Computadoras II

prioridad. En un esquema ideal, el programa de mayor prioridad es del tipo Entrada/Salida-intensivo o


encauzado a la E/S, esto es un programa con una elevada tasa de operaciones de E/S en comparacin
con las operaciones internas o de procesamiento, procesan grandes archivos de datos (E) y producen
tambin voluminosos archivos de salida y salidas impresas (planillas, facturas, rdenes de compra,
recibos, etc.), siendo las operaciones de clculo relativamente irrelevantes.
En cambio, el programa de segunda prioridad ser del tipo CPU-intensivo o encauzado al
procesamiento que, por el contrario, realiza relativamente pocas operaciones de E/S y mucho
procesamiento interno de datos.
As, el SO levanta uno de los trabajos de la cola de trabajos y comienza a ejecutarlo. En el momento en
que tenga que esperar por algo (montar una cinta, escribir algo en el teclado, terminar una operacin de
E/S), la CPU se entrega a otro trabajo, y as sucesivamente. En un sistema monoprogramado, la CPU
hubiera estado desocupada, a pesar de que hay trabajo que hacer.
Las tareas o trabajos que estn listas para iniciarse se alinean en el almacenamiento auxiliar, esperando
a cargarlas en el almacenamiento principal y ejecutarlas (cola).
Una computadora grande puede tener varios programas simultneamente en el almacenamiento.
Conforme cada uno de ellos se va completando se toma el siguiente de la cola y se transfiere al
almacenamiento. Cuando a un programa se le asigna una prioridad elevada, se le pone al frente de la
cola. Si la prioridad es lo suficientemente alta, algunos sistemas operativos pueden incluso quitar
temporalmente los programas de menor prioridad del almacenamiento para hacerle espacio a los otros.
Al completar el trabajo de alta prioridad, los otros programas se regresan su lugar y se le da el control
del procesador al trabajo de mayor prioridad.
Aunque estas funciones parecen tener una eficiencia extraordinaria, cuentan tambin con sus problemas
inherentes En efecto, el proceso de manipular los programas determinando la prioridad, asignndoles
intervalos de tiempo, resguardando su contexto, cargando el contexto del nuevo trabajo, etc., requiere
tambin, a veces, una cantidad importante tiempo de CPU, que es la misma cantidad que el sistema est
tratando de optimizar. Este tiempo no productivo se denomina comnmente sobrecarga (overhead) y se
debe minimizar para tener un aprovechamiento pleno del SO.

4.2.4.1. Requerimientos de hardware.


Para la implementacin de este SO el hardware y el software deben soportar caractersticas tales como
la proteccin del almacenamiento, la interrupcin de programas y la preservacin del estado de los
programas, los cuales son aspectos bsicos en el estudio de los SO.

Proteccin del almacenamiento


Es evidente la necesidad de evitar que el programa que ocupa una parte del almacenamiento cambie la
informacin o las instrucciones de un programa perteneciente a otra parte del almacenamiento. Por
ejemplo, en la figura se evitara a toda costa
que el programa 1 destruyera por Supervisor
inadvertencia algo del programa 2 que es Programa 1 limitado al
independiente, o bien del supervisor. En un Programa 1 direccionamiento en esta parte del
sistema de multiprogramacin, esto se evita almacenamiento
mediante la capacidad de proteccin del Programa 2 limitado al
almacenamiento, que es un sistema Programa 2
direccionamiento en esta parte del
combinado de hardware y software que almacenamiento
evita que un programa tenga acceso ms
all de los lmites de sus propias zonas de
almacenamiento asignadas.

Capacidad de Interrupcin
La caracterstica de interrupcin de programas es una combinacin de hardware y software mediante la
cual se puede interrumpir la ejecucin de un programa en ciertas condiciones y devolver el control al
supervisor. A su vez, el supervisor est en posicin de controlar la transferencia, pasndola a otro
programa del almacenamiento.

Preservacin del estado del programa o preservacin del contexto


No obstante, para lograr lo explicado en el prrafo anterior sin destruir los diferentes contenidos de

Sistemas Operativos. Conceptos generales. 15


Estructura y Funcionamiento de Computadoras II

registros del primer programa, toda esta informacin se debe conservar y luego rescatar, cuando el
control se devuelva finalmente al primer programa. Esta actividad recibe el nombre de preservacin del
estado del programa.

4.2.5. Sistemas Operativos de Tiempo Compartido


El tiempo compartido se refiere a asignar los recursos de la computadora a varios programas que
ocupan el almacenamiento en una forma dependiente del tiempo. El concepto principal de un sistema de
tiempo compartido es proporcionar a una gran cantidad de usuarios el acceso directo a la computadora
para resolver problemas. As pues, el usuario tiene la capacidad de conversar directamente con la
computadora para resol ver un problema: de ah el trmino de computacin coloquial o interactiva. En
la multiprogramacin, la principal consideracin es maximizar el uso de la computadora, pero en el
tiempo compartido es, en cierto sentido, maximizar la eficiencia de cada usuario de computadora y
mantenerlo ocupado. En la figura se muestra una representacin muy simplificada de un sistema de
tiempo compartido.

Cada usuario posee su propia terminal de comunicaciones, parte del almacenamiento y almacenamiento
auxiliar. En contraste con la programacin mltiple, donde los programas se ejecutan sobre una base
prioritaria, en el tiempo compartido el tiempo de CPU se divide entre los usuarios basndose en tiempos
predeterminados A cada programa se le asigna su rebanada (time slice) de tiempo de CPU (que se
mide comnmente. en fracciones de segundo), basndose en algunas premisas de horario
predeterminadas, principiando con el primer programa y avanzando hasta el ltimo Al completar el
ciclo, se inicia una vez ms, de modo que un usuario individual difcilmente se da cuenta de que otra
persona est utilizando tambin la computadora.
El tiempo compartido se emplea ms a menudo para desarrollar y probar programas. Los sistemas que
son completamente interactivos inspeccionan cada proposicin de un nuevo programa conforme entra a
la computadora a travs de una terminal. Los errores en el uso del lenguaje que se detectan se
identifican inmediatamente y se le sealan al operador para que se tomen las medidas correctivas
apropiadas. Una vez que se termina la entrada del programa, ste se corre y verifica para asegurar su
validez. Cuando se detectan errores en el momento de la corrida, se corrigen y se hace otra prueba. El
beneficio ms grande de este tipo de sistema es que los errores se encuentran y corrigen y el trabajo
contina inmediatamente. Esto contrasta con un sistema por lotes en el que los errores se corrigen pero
el trabajo se somete a otra corrida. La demora entre la entrega del trabajo y la obtencin de los
resultados en un sistema por lotes puede ser slo una cuestin de minutos, pero con frecuencia se mide
en horas. No es nada extrao que se necesite una noche completa para realizar toda la vuelta.
Evidentemente este lapso de tiempo no contribuye favorablemente a la eficiencia pensante del
programador La programacin interactiva y la capacidad de depuracin de los lenguajes adaptados a
este entorno demostraron ser tan eficientes para mejorar la eficacia del programador que se
desarrollaron versiones interactivas de todos los lenguajes ms usados de la poca (Fortran, Cobol).

Sistemas Operativos. Conceptos generales. 16


Estructura y Funcionamiento de Computadoras II

Multiprogramacin vs Tiempo Compartido.


La multiprogramacin provee un entorno batch mltiple, es decir, que contrariamente lo que ocurre en
el sistema batch serial, los programas no se ejecutan uno tras otro, segn su orden en el lote, sino que
varios de ellos comparten el uso del sistema. Sin embargo, conserva la caracterstica de batch, debido al
modo en que se produce la ejecucin de los programas. La caracterstica principal de un sistema batch
es la falta de interaccin entre el usuario y el trabajo mientras se esta ejecutando. El trabajo se prepara y
se enva al sistema y un tiempo ms tarde aparece la salida. El tiempo entre el comienzo del trabajo y su
terminacin, llamado tiempo de turnaround, puede ser el resultado del tiempo de ejecucin o bien de
ste ms las demoras antes que el sistema operativo comience a procesar el trabajo.
Como los usuarios no pueden interactuar con sus trabajos mientras estn ejecutando, deben colocar
sentencias de control para manejar todos los resultados posibles. En un trabajo multietapa, un resultado
puede depender de resultados anteriores. Puede ser difcil definir que hacer en todos los casos. Otra
desventaja es que los programas deben corregirse en forma esttica. El programador no puede corregir
su programa a medida que se ejecuta.
Un sistema interactivo provee comunicacin on-line entre el usuario y el sistema. El usuario da
instrucciones al sistema operativo o a un programa directamente y recibe una respuesta inmediatamente,
por medio de una terminal. Cuando el sistema operativo termina la ejecucin de un comando, pide la
prxima sentencia de control, no de la cola de jobs sino del teclado. El usuario ejecuta un comando,
espera la respuesta y decide cual ser el prximo comando, basado en el resultado anterior.
Los sistemas batch son apropiados para ejecutar trabajos grandes, que no tienen interaccin. Los
trabajos interactivos tienden a estar compuestos por varias acciones cortas, donde los resultados de un
comando pueden ser impredecibles. Como el usuario se queda esperando el resultado, el tiempo de
respuesta tiene que ser muy corto.
En general, en el campo de la multiprogramacin, una vez iniciado un programa, ste contina hasta su
terminacin, o hasta que es suspendido en espera de una transferencia perifrica (o, en algunos sistemas,
hasta que es detenido y reemplazado por un programa de mayor prioridad).
Por el contrario, en un sistema de tiempo compartido el control debe ser transferido de un programa a
otro despus de cierto tiempo, con la finalidad de mantener atendidos a otros usuarios.

MULTIPROGRAMACIN TIEMPO COMPARTIDO

Maximizar el uso de la Maximizar la eficiencia del


Objetivo principal
computadora usuario

Adjudicacin del procesador Prioridades Porciones de tiempo

Unidad de trabajo Trabajos distintos (jobs) Sesin de terminal

Ingreso del trabajo/requerimiento Cola de jobs Teclado

Depuracin de errores Esttico Dinmico

Interaccin usuario/programa Nula Mxima

Ejecucin de programas en
Adecuado para Desarrollo y prueba de programas
produccin

4.2.6. Sistemas Operativos de Tiempo Real


Un sistema operativo de tiempo real (RTOS-Real Time Operating System) es un sistema informtico
que no slo requiere que los resultados calculados sean correctos, sino que tambin esos resultados se
produzcan dentro de un perodo de tiempo especificado, es decir, que el tiempo de respuesta es una
variable crtica.
Por lo tanto, la caracterstica central de un sistema de este tipo es poder brindar respuestas basadas en el
requisito tiempo.
De uso en computadoras cuya funcin es el control de dispositivos en una aplicacin dedicada (sistemas

Sistemas Operativos. Conceptos generales. 17


Estructura y Funcionamiento de Computadoras II

mdicos, sistemas industriales, experimentos cientficos), electrodomsticos (microondas, lavavajillas),


dispositivos de comunicaciones (celulares), autos (ignicin, transmisin, direccin asistida, frenos
antibloqueo (ABS), control de la traccin, reproductor de MP3, etc.), etc.
Estos sistemas cuentan con sensores apropiados que ingresan datos a la computadora, que los analiza y
procesa.
El sistema puede ser de tipo abierto o cerrado. En el primer caso, ante una situacin que requiera una
accin correctiva, el sistema acciona una seal de alerta. En el segundo, activa por s mismo la accin.
Son casos que tienen restricciones de tiempo bien definidas y si el procesamiento no tiene lugar dentro
de ellas, fallar.

Caractersticas del sistema


Entre las caractersticas de los SO de tiempo real se puede citar:
Tienen un nico propsito.
Son de pequeo tamao.
Son de bajo coste y se producen en masa.
Tienen requisitos de temporizacin especficos.

A diferencia de una computadora tipo PC, que se pueden utilizar para muchas cosas (SO
multipropsito), un sistema de tiempo real sirve normalmente a un nico propsito. Esta limitacin
conduce a tener sistemas enfocados a una tarea y, por lo tanto, ms pequeos en tamao. A modo de
ejemplo, piense que Windows XP tiene ms de 40 millones de lneas de cdigo fuente, mientras que un
SO de tiempo real a menudo est constituido por miles de lneas de cdigo fuente.
Otra diferencia radica en que la mayora de las computadoras vienen provistas con procesadores
multincleos de 32 o 64 bits, mientras que los sistemas de tiempo real operan sobre un procesador de 8
o 16 bits.
Ahora piense que estos sistemas se implementan en pequeos electrodomsticos y dispositivos de
consumo en los que el costo es fundamental. Para reducir costos muchos fabricantes descartan una
estructura tpica de computacin con una jerarqua de buses, produciendo un sistema en un solo chip
(SOC, system on chip). En este tipo de sistemas la CPU, la memoria principal (incluyendo la cach) y
puertos de interconexin estn contenidos en un nico circuito integrado (en este tema existe una
superposicin con Sistemas Embebidos que se ver ms adelante).

4.2.7. Sistemas Operativos Embebidos


Un sistema operativo embebido, incrustado o empotrado es un sistema de computacin diseado para
realizar una o algunas pocas funciones dedicadas frecuentemente en un sistema de computacin en
tiempo real. Los sistemas embebidos se utilizan para usos muy diferentes a los usos generales a los que
se suelen someter a las computadoras personales. En este sistema la mayora de los componentes de
hardware se encuentran incluidos en una nica placa (la tarjeta de vdeo, audio, mdem, etc.).
En cuanto al software, se tendrn requisitos especficos segn la aplicacin. En general, para el diseo
de un SO embebido no se dispone de recursos ilimitados sino que la cantidad de memoria ser escasa, la
capacidad de clculo y dispositivos externos ser limitada, etc. El empleo de un SO determinado o el no
empleo de ste, depender del sistema a desarrollar y es una de las principales decisiones que habr que
tomar en la fase de diseo del equipo. As, en el caso de decidirse por el empleo de microcontroladores
y DSP, por lo general no se usar sistema operativo mientras que si se emplea algn micro del tipo
ARM, PowerPC, Intel X86, etc. s lo llevar.
Dos de las diferencias principales son el precio y el consumo. Puesto que los sistemas embebidos se
pueden fabricar por decenas de millares o por millones de unidades, una de las principales
preocupaciones es reducir los costes. Los sistemas embebidos suelen usar un procesador relativamente
pequeo y una memoria pequea para reducir los costes. Se enfrentan, sobre todo, al problema de que
un fallo en un elemento implica la necesidad de reparar la placa ntegra.
Una de las ventajas de los sistemas embebidos es su flexibilidad. Ya que a la hora de realizar alguna
modificacin resulta mucho ms sencillo modificar unas lneas de cdigo al software del SO.
Como ya se dijo, los sistemas embebidos se enfrentan normalmente a problemas de tiempo real. Debe
quedar claro que si bien hay una gran rea comn entre estos dos tipos de SO, la diferencia para poder
clasificar un sistema en uno u otro lado est dado por la necesidad de brindar una respuesta basada en el
tiempo.

Sistemas Operativos. Conceptos generales. 18


Estructura y Funcionamiento de Computadoras II

Algunos ejemplos de aplicacin de estos sistemas son: mquinas de revelado automtico de fotos,
cajeros automticos, decodificadores y set-top boxes para la recepcin de televisin, puntos de
informacin al ciudadano (en oficinas de turismo, grandes almacenes, bibliotecas, etc. existen equipos
con una pantalla tctil), puntos de servicio o venta (POS, Point Of Service - las cajas donde se paga la
compra en un supermercado son cada vez ms completas, integrando teclados numricos, lectores de
cdigos de barras mediante lser, lectores de tarjetas bancarias de banda magntica o chip, pantalla
alfanumrica de cristal lquido, etc. - el sistema embebido en este caso requiere numerosos conectores
de entrada y salida y unas caractersticas robustas para la operacin continuada), etc.

4.2.8. Sistemas Operativos de Mquina Virtual


La virtualizacin se refiere a la abstraccin de los recursos de una computadora, llamada Hypervisor o
VMM (Virtual Machine Monitor) que crea una capa de abstraccin entre el hardware de la mquina
fsica (host) y el SO de la mquina virtual (virtual machine, guest). Esto permite crear una versin
virtual de un dispositivo o recurso, como un servidor, un dispositivo de almacenamiento, una red o
incluso otro SO, donde se divide el recurso en uno o ms entornos de ejecucin.
Esta capa de software (VMM) gestiona los recursos principales de una computadora y as podr repartir
dinmicamente dichos recursos entre todas las mquinas virtuales definidas en la computadora central.
De modo que permite tener varias computadoras virtuales ejecutndose sobre la misma computadora
fsica.
Tal trmino es antiguo; se viene usando desde 1960, y ha sido aplicado a diferentes aspectos y mbitos
de la informtica, desde sistemas computacionales completos, hasta capacidades o componentes
individuales. Lo ms importante en este tema de virtualizacin es la de ocultar detalles tcnicos a travs
del encapsulamiento.
La virtualizacin se encarga de crear una interfaz externa que esconde una implementacin subyacente
mediante la combinacin de recursos en localizaciones fsicas diferentes, o por medio de la
simplificacin del sistema de control. Un avanzado desarrollo de nuevas plataformas y tecnologas de
virtualizacin han hecho que se vuelva a prestar atencin a este importante concepto. De modo similar
al uso de trminos como abstraccin y orientacin a objetos, virtualizacin es usado en muchos
contextos diferentes.
Este concepto que es realmente interesante y que se lleva desarrollando desde hace muchos aos, parece
que finalmente est encontrando sus caminos productivos y de desarrollo para profesionales.
Actualmente tanto Intel como AMD han introducido prestaciones a sus procesadores x86 para permitir
la virtualizacin de hardware.

Virtualizacin a nivel de sistema operativo


Esta tcnica consiste en dividir una computadora en varios compartimentos independientes de manera
que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama
entornos virtuales. Desde el punto de vista del usuario, el sistema en su conjunto acta como si
realmente existiesen varios servidores ejecutndose en varias mquinas distintas. Dos ejemplos son las
zonas de Solaris (Solaris Zones) y la tcnica de Micro Partioning de AIX (SO UNIX de IBM).
Algunas de las ventajas de la virtualizacin:
Varios SO distintos pueden coexistir sobre la misma computadora, en slido aislamiento el uno
del otro, por ejemplo para probar un SO nuevo sin necesidad de instalarlo directamente.
Varias mquinas virtuales (cada una con su propio SO llamado SO invitado o guest),
pueden ser utilizadas para consolidar servidores. Esto permite que servicios que normalmente
se tengan que ejecutar en computadoras distintas para evitar interferencias, se puedan ejecutar
en la misma mquina de manera completamente aislada y compartiendo los recursos de una
nica computadora. La consolidacin de servidores contribuye a reducir el costo total de las
instalaciones necesarias para mantener los servicios, dado que permiten ahorrar en hardware.

No obstante, uno de los inconvenientes de las mquinas virtuales es que agregan gran complejidad al
sistema en tiempo de ejecucin. Esto tiene como efecto la ralentizacin del sistema, es decir, el
programa no alcanzar la misma velocidad de ejecucin que si se instalase directamente en el SO
anfitrin (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la
flexibilidad que ofrecen compensa esta prdida de eficiencia.
La emulacin o virtualizacin completa (full virtualization) del hardware se puede implementar usando

Sistemas Operativos. Conceptos generales. 19


Estructura y Funcionamiento de Computadoras II

un hypervisor de Tipo 1 o de Tipo 2:


el tipo 1 se ejecuta directamente sobre el hardware.
el tipo 2 se ejecuta sobre otro SO.

Tipo 1 Tipo2

4.2.9. Sistemas Operativos de Multiprocesamiento


Desde el punto de vista hardware, consiste en configurar un sistema de computacin con varios
procesadores.
El trmino se refiere tanto a una arquitectura de hardware que incluye mltiples procesadores, como a
los SO que reflejan esta arquitectura.
No es un enfoque nuevo pero s posee grandes perspectivas en funcin del desarrollo de los
microprocesadores. Se podran concebir sistemas construidos por cientos o miles de microprocesadores.
En los primeros sistemas con procesadores mltiples, los procesadores adicionales eran unidades
especializadas, por ejemplo, canales de E/S.
Las metas de los sistemas de multiprocesamiento generalmente son la confiabilidad y la disponibilidad
muy altas, como as tambin el incremento del poder de computacin.
El diseo modular proporciona una flexibilidad importante y facilita la expansin de la capacidad.
Un Sistema Operativo de multiprocesamiento incluye todas las capacidades funcionales de los sistemas
de multiprogramacin y adems:
Equilibrio de cargas de Entrada/Salida.
Equilibrio de carga del procesador.
Reconfiguracin.

La mayora de los sistemas de multiprocesamiento tienen como meta principal el incremento de la


capacidad de ejecucin. Un aspecto fundamental en este sentido es la posibilidad de maximizar la
explotacin del paralelismo o programacin concurrente (se ver en Administracin del Procesador).
Otra caracterstica importante de los sistemas de multiprocesador es, como se dijo, la confiabilidad. Si
un procesador falla, los restantes continan operando, lo cual no es automtico y requiere de un diseo
cuidadoso. Un procesador que falla habr de informarlo a los dems de alguna manera, para que se
hagan cargo de su trabajo. Los procesadores en funcionamiento deben poder detectar el fallo de un
procesador determinado. El SO debe percibir que ha fallado un procesador determinado y ya no podr
asignarlo y tambin debe ajustar sus estrategias de asignacin de recursos para evitar la sobrecarga del
sistema que est degradado.

4.2.9.1. Grados de acoplamiento


Hay tres modelos diferentes para los sistemas multiprocesadores:

Procesadores de funcionalidad especializada. Este es el caso del procesador de E/S, donde hay
un procesador de propsito general maestro y procesadores especializados que son controlados
por el procesador maestro y que le proporcionan servicios, por ejemplo: canales de E/S o de
dispositivos.

Dbilmente acoplado, ligeramente acoplado, multiprocesador distribuido, o cluster. Consiste


en una coleccin de sistemas relativamente autnomos; cada procesador tiene su propia

Sistemas Operativos. Conceptos generales. 20


Estructura y Funcionamiento de Computadoras II

memoria principal y canales de E/S. En este caso la conexin de dos o ms sistemas


independientes es por medio de un enlace de comunicacin.

Almacenamiento Almacenamiento

Procesador Procesador

E/S E/S
Enlace de
Comunicaciones

Cada sistema tiene su propio SO y almacenamiento. Los sistemas pueden funcionar


independientemente y se comunican cuando sea necesario. Los sistemas separados pueden
acceder a los archivos de los otros e intercambiar tareas a procesadores menos cargados. En la
bibliografa puede encontrarse este tema bajo los nombres de procesamiento distribuido,
cliente/servidor y cluster. Estos conceptos se vern en otra asignatura, sin embargo
esquemticamente:

Procesamiento fuertemente acoplado o rgidamente acoplado. Utiliza un solo almacenamiento


compartido por varios procesadores. Emplea un solo Sistema Operativo que controla todos los
procesadores y el hardware del sistema. La administracin de los sistemas multiprocesadores
de este tipo se ver en Administracin del Procesador. Esquemticamente:

Procesador Almacenamiento Procesador

E/S E/S

4.2.9.2. Organizacin
Existen varias organizaciones bsicas de los Sistemas Operativos para multiprocesadores. La ms
importante es la de multiprocesamiento simtrico (SMP), que se muestra esquemticamente en la figura
siguiente:

E/S

Procesador

E/S Procesador Almacenamiento Procesador E/S

Procesador

E/S

Sistemas Operativos. Conceptos generales. 21


Estructura y Funcionamiento de Computadoras II

El trmino simtrico alude a que todos los procesadores son equivalentes en cuanto a su capacidad y
funcionalidad.
Un multiprocesador simtrico contiene mltiples procesadores, cada uno de los cuales puede realizar las
mismas funciones ya que poseen capacidades funcionales completas: comparten la misma memoria y
las facilidades de E/S, ya que los dispositivos de Entrada / Salida pueden ser conectados a cada uno de
los procesadores. Las ventajas potenciales son la mejora en la performance por el procesamiento en
paralelo, la posibilidad del crecimiento incremental del sistema, y la posibilidad de que el sistema
contine funcionando aunque uno de los procesadores falle.
El multiprocesamiento simtrico permite a un SO correr sobre cualquier procesador o sobre varios
simultneamente, balanceando la carga del sistema.
Si el sistema est constituido por procesadores con funcionalidades distintas, se habla de
multiprocesamiento asimtrico (ASMP).
El multiprocesamiento asimtrico selecciona el mismo procesador para ejecutar cdigo del SO,
mientras los otros procesadores corren slo trabajos del usuario.

4.3. ESTRUCTURA DEL SISTEMA

A medida que se han aadido ms caractersticas a los SO y el hardware subyacente se ha vuelto ms


potente y verstil, han crecido el tamao y la complejidad de los sistemas operativos. CTSS, que fue
puesto en marcha en el MIT en 1963, estaba compuesto aproximadamente por 32.000 palabras de
almacenamiento de 36 bits. OS/360, presentado por IBM un ao despus, tena ms de un milln de
instrucciones de mquina. En 1975, el sistema Multics, desarrollado por MIT y los laboratorios Bell,
haba superado los 20 millones de instrucciones. Es cierto que ms recientemente, se han introducido
algunos sistemas operativos ms sencillos para sistemas ms pequeos, pero estos se hacen
inevitablemente ms complejos a medida que el hardware subyacente y los requisitos de usuario se
incrementan. Por tanto, el sistema UNIX de hoy es muchsimo ms complejo que el sistema casi de
juguete puesto en marcha por unos pocos programadores de gran talento a comienzo de los aos 70, y el
sencillo sistema MS-DOS supuso el comienzo de los ricos y complejos sistemas OS/2 y Windows. Por
ejemplo, Windows NT 4.0 contiene 16 millones de lneas de cdigo y Windows 2000 duplica este
nmero.
El tamao de un SO con un conjunto completo de caractersticas, y la dificultad del problema que
afronta dicho sistema, ha llevado a esta disciplina a cuatro desafortunados, aunque demasiado comunes,
problemas. En primer lugar, los sistemas operativos se entregan tarde de forma crnica. Esto implica la
creacin de nuevos sistemas operativos y frecuentes actualizaciones a viejos sistemas. En segundo
lugar, los sistemas tienen fallos latentes que deben ser planteados y resueltos. En tercer lugar, el
rendimiento no es frecuentemente el esperado. En ltimo lugar, se ha comprobado que es imposible
construir un sistema operativo complejo que no sea vulnerable a una gran cantidad de ataques de
seguridad, incluyendo virus, gusanos y accesos no autorizados.
Para gestionar la complejidad de los SO y eliminar estos problemas, se ha puesto mucho nfasis en la
estructura software del SO a lo largo de los aos. Ciertos puntos parecen obvios. El software debe ser
modular. Esto ayudar a organizar el proceso de desarrollo de software y limitar el esfuerzo de
diagnosticar y corregir errores. Los mdulos deben tener interfaces bien definidas, y estas interfaces
deben ser tan sencillas como sea posible. De nuevo, esto facilita la programacin. Tambin facilita la
evolucin del sistema.
Para SO grandes, que ejecutan desde millones a decenas de millones de lneas de cdigo, no es
suficiente la programacin modular. De hecho, ha habido un incremento en el uso de los conceptos de
capas jerrquicas y abstraccin de informacin. Se puede ver el sistema como una serie de niveles. Cada
nivel realiza un subconjunto relacionado de funciones requeridas por el sistema operativo. Dicho nivel
confa en los niveles inmediatamente inferiores para realizar funciones ms primitivas y ocultar detalles
de esas funciones. Cada nivel proporciona servicios a la capa inmediatamente superior. Idealmente,
estos niveles deben definirse de tal forma que los cambios en un nivel no requieran cambios en otros
niveles. Por tanto, de esta forma se ha descompuesto un problema en un nmero de subproblemas ms
manejables.
La forma en que estos principios se aplican vara enormemente entre los sistemas operativos
contemporneos. Sin embargo, es til en este punto, para el propsito de mostrar los SO, presentar un

Sistemas Operativos. Conceptos generales. 22


Estructura y Funcionamiento de Computadoras II

modelo de SO jerrquico compuesto por los siguientes niveles:

7 Usuarios
6 Shell o Intrprete de comandos
5 Planificador de Trabajos
4 Administracin de Archivos
3 Administracin de Perifricos
2 Administracin de Memoria
1 Ncleo o Kernel
0 Hardware

La capa 0 y la 7, en rigor, no constituyen estratos del Sistema Operativo, pero se los consigna como las
capas extremas del sistema de procesamiento, la mquina fsica y su usuario. Entre ellos corre el
Sistema Operativo.
En la capa 1, ncleo o kernel, se implementan procesos, su comunicacin y sincronizacin y la
administracin del procesador. El ncleo administra gran cantidad de procesos, algunos independientes
y otros mutuamente dependientes, por ejemplo un proceso de clculo que debe esperar que se complete
una operacin de entrada. Todos estos procesos exigirn los recursos del sistema.
La funcin clave del ncleo es la de administrar el procesador. De los varios procesos en ejecucin, slo
uno de ellos puede tener, en un instante dado, el control del procesador. Para realizar esta tarea, debe
mantenerse una lista de los procesos en curso, seguir el rastro de aquellos que estn libres para proceder
y repartir el (los) procesador(es) entre ellos de acuerdo con una estrategia elegida.
Los procesos pueden crear otros procesos por medio de un pedido al sistema operativo (caso de un
programa que requiere una operacin de E/S para poder continuar) y todos ellos pueden enviar seales,
por va del ncleo, a otros procesos, para obtener sincronizacin donde fuera necesario.
La administracin de la memoria, perifricos y archivos (capas 2, 3 y 4) sern vistos en profundidad en
unidades posteriores.
El planificador de trabajos o planificador de Alto Nivel (capa 5) organiza la secuencia de trabajos y
administra los recursos en forma global.
Finalmente, el shell o intrprete de comandos (aunque se lo llama tambin: intrprete de rdenes,
intrprete de lnea de rdenes, terminal, consola) acta como interfaz de usuario para comunicar al
usuario con el SO mediante una ventana que espera rdenes escritas por el usuario en el teclado y la
respuesta del SO se muestra al usuario en la misma ventana.

4.4. EL ARRANQUE DEL SISTEMA

El procedimiento de inicializacin de una computadora mediante la carga del kernel se conoce como
arranque del sistema. En la mayora de los sistemas informticos, una pequea parte del cdigo,
conocida como programa de arranque o cargador de arranque, se encarga de localizar el kernel, lo
carga en la memoria principal e inicia su ejecucin.
Cuando una CPU recibe un suceso de reinicializacin (por ejemplo cuando se reinicia o se enciende), el
registro de instrucciones se carga con una posicin de memoria predefinida y la ejecucin se inicia de
all. En dicha posicin se encuentra el programa inicial de arranque. Este programa se encuentra en
memoria ROM, dado que la RAM se encuentra en estado desconocido cuando se produce el arranque
del sistema.
El programa de arranque puede realizar diversas tareas. Normalmente, una de ellas consiste en ejecutar
una serie de diagnsticos para determinar el estado de la mquina. Si se pasan las pruebas de
diagnstico satisfactoriamente, el programa puede continuar con la secuencia de arranque.
En los SO de gran envergadura, incluyendo los de propsito general como Windows, Linux y Mac OS
X, el cargador de arranque se almacena en firmware y el SO en disco. En este caso, el programa de
arranque que ejecuta los diagnsticos tiene un pequeo fragmento de cdigo que puede leer un solo
bloque que se encuentra en una posicin fija (por ejemplo, el bloque 0) del disco, cargarlo en memoria y
ejecutar el cdigo que hay en dicho bloque de arranque. El programa almacenado en el bloque de
arranque debe ser capaz de cargar el SO en memoria e iniciar su ejecucin. Aunque, normalmente, se

Sistemas Operativos. Conceptos generales. 23


Estructura y Funcionamiento de Computadoras II

trata de un cdigo simple (que cabe en un solo bloque de disco) y que nicamente conoce la direccin
del disco del resto del programa de arranque.
Finalmente, se llama disco de arranque o disco de sistema a aquel disco que tiene una particin de
arranque.

Sistemas Operativos. Conceptos generales. 24

Das könnte Ihnen auch gefallen