Beruflich Dokumente
Kultur Dokumente
COMPUTADORAS II
Departamento de Informtica
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
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.
Programador
Diseador del SO
Programas de aplicacin
Utilidades
Sistema Operativo
Hardware de la computadora
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.
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.
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.
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.
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.
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.
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,
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.
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.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.
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.
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.
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
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
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.
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.
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).
Ejecucin de programas en
Adecuado para Desarrollo y prueba de programas
produccin
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).
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.
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
Tipo 1 Tipo2
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.
Almacenamiento Almacenamiento
Procesador Procesador
E/S E/S
Enlace de
Comunicaciones
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
Procesador
E/S
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.
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.
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
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.