Вы находитесь на странице: 1из 19

1.

Introduccin a los Sistemas Operativos


1.1 Concepto de Sistema Operativo. Objetivos.
Definicin: Un sistema operativo es el software que hace de interfaz tanto entre los usuarios y la
mquina, como entre esta ltima y los programas. Dicho de otra forma, es el software que proporciona un
entorno que permite a los usuarios ejecutar programas.
Los objetivos fundamentales de un SO son:
1. Hacer que la mquina sea fcil de utilizar, tanto por los usuarios finales de sta, como por los
desarrolladores y administradores del sistema.
2. Hacer que el funcionamiento de la mquina sea lo ms eficiente posible.
Bajo ambos objetivos subyace el propsito de reducir los costes de explotacin del sistema.
En la Ilustracin 1-1 se muestra la organizacin tpica de un sistema informtico. En sta, la capa
inferior est compuesta por el hardware del sistema (CPU, dispositivos de E/S y memoria, as como otros
dispositivos o coprocesadores auxiliares), siendo la interfaz que proporciona a la capa superior de muy bajo
nivel: la interfaz de programacin es exclusivamente en cdigo mquina, y los dispositivos se manejan
directamente a travs de sus registros de control, lo cual, evidentemente, resulta extremadamente complejo.
Sobre esta interfaz de tan bajo nivel, el desarrollo de un programa sera extremadamente costoso, pues
operaciones tan simples como leer un carcter de un archivo conllevara una gran complejidad. Y una vez
desarrollado el programa, cargarlo y ejecutarlo sera tambin muy complejo y costoso.
Programas del Sistema

Programas de Desarrollo

Aplicaciones

Programas de ayuda
Programas de rdenes
Intrprete de
Comando / rdenes

IDE
Enlazador
Depurador
Compilador
Sistema Operativo

Contabilidad, Navegador
Correo
Facturacin
Videojuegos

Hardware
Ilustracin 1-1: Estructura tpica de un sistema informtico

Con la complejidad de esta interfaz hardware se enfrenta el sistema operativo. ste proporciona a las
capas superiores una interfaz con un mayor grado de abstraccin, en la que los programadores no necesitan
tener en cuenta las particularidades del hardware a la hora de construir sus programas, pues quedan ocultas
tras la interfaz del SO. Se simplifica la tarea de construccin de programas y adems dichos programas se
hacen independientes de las particularidades del hardware y tareas del usuario final como organizar la
informacin o ejecutar los programas se simplifican enormemente.
Sobre el sistema operativo, se pueden ejecutar tres tipos de programas:

1) Programas del Sistema: Necesarios para utilizar el SO, por lo que suelen distribuir juntos y proceden del
mismo fabricante. Al ser externos al SO, se pueden sustituir por otros con formas de utilizacin
diferentes. En este grupo de programas encontramos por ejemplo los intrpretes de comandos y los
programas de rdenes, como son ls, cp, o mv en el caso de los sistemas UNIX, o format o xcopy en el caso
de los sistemas de Microsoft, o los programas de ayuda o documentacin en lnea.
2) Programas de desarrollo: Sirven para construir otros programas. A este grupo pertenecen los
compiladores, depuradores, montadores de enlace, gestores de bibliotecas o los entornos de desarrollo
integrados. Si la mquina no se va a utilizar para desarrollar, no son necesarios, por lo que no todos los
SO los incluyen como parte de s mismos.
3)

Programas de aplicacin: Tambin conocidos simplemente como aplicaciones, son los programas que
realizan el trabajo til, verdadero objetivo final del sistema informtico. Deben estar construidos de
forma que no se requieran conocimientos altos en informtica para manejarlos.

Se pueden entender las funciones del SO desde dos puntos de vistas complementarios:
1

1.1.1

El SO como Mquina Ampliada

El SO presenta a las capas superiores una interfaz de programacin de ms alto nivel que la
proporcionada por el hardware desnudo. Esto equivaldra a considerar la mquina sobre la que se coloca el
sistema operativo como una mquina ampliada, ms fcil de utilizar que la real, que utiliza criterios
homogneos, es decir, que problemas similares se resuelven de formas similares.
Ejemplo: una solicitud del tipo escribir estos 20 caracteres en este archivo, se resuelve slo tres
parmetros: archivo, direccin de los caracteres y n de caracteres. No es necesario que el programado tenga
en cuenta el tipo de dispositivo sobre el que se encuentra el archivo, que determine la ubicacin fsica del
bloque o bloques en los que debe escribir los datos, que programe la transferencia de los datos atendiendo al
tipo de dispositivo, que compruebe si la transmisin se ha efectuado correctamente, etc.
Objetivo: que los programas no necesiten conocer sobre qu mquina se estn ejecutando. Esto es
posible puesto que el SO ofrece la misma interfaz incluso entre mquinas muy distintas.
1.1.2

El SO como Gestor de Recursos

Este otro enfoque complementario con el anterior, considera al SO como un administrador al que los
programas de usuario solicitan recursos o piden que realice para ellos determinadas actividades. El SO analiza
cada peticin, decidiendo si los programas tienen derecho a efectuarlas, y decide cundo atender cada
peticin en funcin de las condiciones de trabajo para obtener el mejor rendimiento posible.
El sistema debe por tanto gestionar los recursos de forma eficiente, tratando de aprovechar el equipo
lo mejor posible. Para ello, el SO asigna coordinadamente los recursos a los procesos, de manera que se
reduzcan los desperdicios al mnimo. Nota: Para operaciones muy simples, el tiempo invertido en gestionarlas
es muy superior al que se invierte en realizarlas.
1.2 Evolucin Histrica
1.2.1 Primera generacin: 1945-1954
1.2.1.1 Innovaciones tecnolgicas
Las mquinas de clculo construidas con anterioridad a esta fecha se basaban en componentes
electromecnicos. No fue hasta la aparicin de la lmpara termoinica, funcionalmente comparable a un
transistor, cuando se construyeron las primeras mquinas de clculo electrnicas.
Otras innovaciones fueron el tambor magntico (similar funcionalmente al disco magntico, pero
fsicamente en forma de cilindro, estando la informacin almacenada en el lateral del mismo). Los dispositivos
de entrada/salida ms habituales eran las tarjetas perforadas y las cintas de papel perforado.
1.2.1.2

Algunas mquinas relevantes

1) ENIAC (Electronic Numerical Integrator and Calculador): Fue la primera mquina de clculo construida solo
con dispositivos electrnicos, aunque su organizacin no era Von-Neumann (no tena programa
almacenado), pues la programacin se llevaba a cabo desde un panel de interconexin, cambiando manualmente conexiones fsicas. Su fin era calcular integrales.
2) EDSAC (Electronic Delay Storage Automatic Calculator): Fue la primera mquina con organizacin VonNeumann. Se desarroll un lenguaje de programacin en ensamblador para ella, as como una metodologa
de desarrollo basada en la construccin de biblioteca de rutinas. Es la primera mquina que no se funde.
3) Primeras mquinas comerciales: A partir de 1951 se construyeron las primeras mquinas de uso comercial:
Univac I y Mark I (1951), IBM 701 (1952), IBM 702 e IBM 650 (1953).
1.2.1.3 Explotacin
El altsimo coste de estas mquinas tena como consecuencia que cualquier organizacin adquiriese
una, deba emplearla para satisfacer las necesidades de clculo del mayor nmero posible de usuarios. Con este
fin, la explotacin del sistema se poda llevar a cabo de tres maneras:
1. Acceso Sin Restricciones: Cada usuario del sistema solicita turno para emplear la mquina. Se le
asignan un nmero de horas y el usuario llega con sus programas escritos en papel, los pasa a tarjetas
2

perforadas, los ensambla obteniendo un nuevo conjunto de tarjetas, carga el programa ensamblado en
memoria, lo ejecuta, corrige los errores que encuentre, volviendo a repetir desde el principio, y si todo
va bien, al final de su turno tendr un listado en papel con los resultados de su ejecucin. El problema
de esta forma de explotacin es que los usuarios del sistema son ingenieros, fsicos o matemticos con
ciertos conocimientos de programacin, pero patosos en el manejo de los dispositivos que componen la
mquina. Adems, parte del tiempo que el usuario tiene asignada la mquina se invierta en buscar
errores de programacin. Esto reduce significativamente el aprovechamiento de la mquina
2. Acceso Reservado al Operador: Una alternativa a la anterior forma de explotacin consiste en contratar
un usuario (operador) especializado no necesariamente en la programacin de la mquina, sino en su
manejo fsico, que realice las labores de perforado de tarjetas, ensamblado de programas, ejecucin,
obtencin de listados... los usuarios del sistema entregan a este sus programas, y pasado un tiempo se
pasan a recoger o bien el listado con los resultados de su programa o de sus errores.
3. Procesamiento Discontinuo: Esta forma de explotacin consiste simplemente en que el operador
organiza su trabajo por tandas para mejorar el rendimiento del sistema: en lugar de procesar trabajo
por trabajo, ensamblando primero y ejecutando despus cada uno de ellos, en primer lugar carga el
ensamblador y ensambla todos los programas, y a continuacin, los ejecuta uno tras otro. De esta
forma, se ahorra tener que cargar una y otra vez el ensamblador y los programas auxiliares de este,
mejorando sensiblemente el aprovechamiento de la mquina.
1.2.2 Segunda generacin: 1954-1963
1.2.2.1 Innovaciones tecnolgicas
La innovacin tecnolgica de esta generacin fue el transistor. Los primeros transistores eran
componentes discretos (no encapsulados en chips, lo cual ocurrir en la prxima generacin) capaces de
sustituir a las lmparas termoinicas, pero con un tamao varias decenas de veces inferior y un consumo elctrico tambin varios rdenes de magnitud inferior, siendo adems sensiblemente ms rpidos y baratos.
Adems, se construyeron tambin las primeras memorias de ferrita, que reducan drsticamente el
espacio necesario para almacenar un bit, as como las unidades de cinta magntica, con un rendimiento y
fiabilidad muy superior a sus equivalentes de papel perforado.
1.2.2.2 Algunas mquinas relevantes
1) TRADIC (Transistorized Digital Computer, Bell Laboratories): El primer equipo totalmente transistorizado.
2) IBM 7094: Una de las mquinas ms potentes de la poca. Dispona de una memoria de 32K palabras de 36
bits. Era capaz de alcanzar 0,35 MIPS en operaciones de coma flotante.
3) PDP-1 (Digital): Uno de los primeros minicomputadores. Dispona de 4K palabras de 16 bits, si bien su
precio era el 5% de un IBM 7094 mientras que para algunas aplicaciones era tan rpido como ste.
1.2.2.3 Explotacin
La forma en la que se lleva a cabo la explotacin de los equipos es una evolucin natural del
procesamiento discontinuo (descrito en Explotacin 1.2.1.3) y aparece el acceso interactivo.
1)

Ejecucin continua de trabajos: Se reserva una parte de la memoria para mantener en ella un programa
de control, que automatiza el trnsito de un programa al siguiente, y unos subprogramas de lectura y
escritura, que llevan a cabo estas operaciones, y que enlazan con el anterior cuando detectan algn
fallo1. As surge el concepto de trabajo, como una sucesin de operaciones que forman una unidad a
efectos de ejecucin y contabilidad de recursos del sistema. Resumen: se automatiza el trabajo realizado
por el operador que se describe en epgrafe 1.2.1.3.

2)

Procesamiento por lotes: Las mquinas construidas a lo largo de la anterior generacin (anticuadas ya)
resultaron demasiado caras como para deshacerse de ellas. Estas mquinas encontraron utilidad como
equipos auxiliares en la ejecucin continua de trabajos descrita anteriormente. En la Ilustracin 1-2 se

1
Los programas informaban al programa de control sobre la ocurrencia o no de errores mediante un cdigo de terminacin
numrico. Esta es una prctica que se mantiene an hoy en da.

muestra una configuracin tpica, basado un IBM 7094, usando como equipo auxiliar un IBM 1401. Esta
mquina se usaba en primer lugar para pasar los programas de tarjetas perforadas a cinta magntica,
formando as un lote de trabajo que se pasaba a la mquina principal, el IBM 7094. Esta mquina lee los
trabajos de la cinta y los ejecuta uno tras otro, guardando los resultados en una cinta de salida, que
posteriormente se llevaba de vuelta al IBM 1401 y se impriman en papel.

Ilustracin 1-2: Procesamiento por lotes usando equipos auxiliares

3)

Acceso interactivo: El principal inconveniente de los sistemas por lotes es que un programador tena que
esperar durante horas, desde que entregaba un trabajo hasta que recoga los resultados, que
perfectamente podran consistir en un cdigo de error. Para eliminar esta espera, a finales de esta
generacin se construyeron los primeros sistemas interactivos. Estos sistemas estn dotados de un
terminal en el que el usuario puede teclear una orden y esperar un resultado, corrigiendo de inmediato
cualquier error cometido. No ser hasta la prxima generacin cuando este tipo de sistema se implante
definitivamente.
1.2.2.4 Necesidades a satisfacer por parte del SO

Aparece por primera vez el trmino Sistema Operativo para hacer referencia al software que facilita el
uso de la mquina. Se constituye un grupo de usuarios SHARE que en 1955 aporta ideas y sugerencia para un
SO comn, denominado SOS (SHARE Operating System).
Las funciones llevadas cabo por estos elementales SO se concentran en la automatizacin de la
ejecucin continuada o por lotes de trabajos. El SO proporciona la infraestructura necesaria para la ejecucin
de un trabajo tras otro, garantizando que la mquina est en un estado inicial determinado al principio de cada
trabajo, con independencia de lo que haya hecho el trabajo anterior. El elemento central del SO se denomina
supervisor o tambin monitor de encadenamiento.
1.2.3 Tercera generacin: 1963-1971
1.2.3.1 Innovaciones tecnolgicas
El punto de inflexin tecnolgico fueron los circuitos integrados. A partir de ahora se pueden integrar
decenas (SSI: Small Scale Integration) o centenares (MSI, Medium Scale Integration) de transistores en un
circuito integrado, lo que reduce enormemente tanto el tamao de los circuitos, su coste y su consumo,
aumentando la velocidad de proceso.
Al aumentar mucho la velocidad de los procesadores, empez a resultar prohibitivo que estos
esperen a los dispositivos, lo que tuvo como consecuencia la necesidad de la multiprogramacin desde el
punto de vista software, y la aparicin de coprocesadores para gestionar el control de los diversos
subsistemas. Por ejemplo, tcnicas como el uso de interrupciones para el control de los dispositivos
aparecieron en esta generacin.
Surgen los discos magnticos, que relegaron a las cintas magnticas a un segundo plano. Por su parte,
las memorias de ferrita se vieron tambin desplazadas por las memorias en circuito integrado, mucho ms
rpidas y de mayor capacidad, aunque de tamao y consumo mucho ms reducido.
1.2.3.2 Algunas mquinas relevantes
Aparecen las primeras familias de ordenadores. Hasta ahora, cada mquina se construa con una
configuracin bsica y un reducido (o inexistente) nmero de opciones, construyndose cada dispositivo de
forma especfica para cada modelo de mquina. En 1960, IBM lanza la serie IBM 360, que se constituy la
primera familia de ordenadores y productos que cubra tanto el mercado de gestin como cientfico. Esta
familia dispona de una gama de modelos y perifricos compatibles, compartiendo el mismo lenguaje mquina
y el mismo sistema operativo, OS/360. Como lenguaje de programacin de alto nivel, compartan tambin el
lenguaje PL1 (Programming Language 1) y como lenguaje de control de trabajos, tambin compartan el
lenguaje JCL (Job Control Language).
4

Como principal problema, hay que citar su complejidad desde el punto de vista software. El SO OS/360
estaba escrito a base de millones de lneas de cdigo, conteniendo gran cantidad de errores, lo que obligaba a
producir continuas revisiones que subsanaban determinados errores, e introducan otros.
1.2.3.3 Explotacin
La caracterstica ms importante en esta etapa es que los procesadores comienzan a ser muchos
rdenes de magnitud ms rpidos que los dispositivos. Esto hace que mantener en espera al procesador
durante las operaciones de entrada/salida sea prohibitivo, teniendo en cuenta el an elevadsimo precio de los
equipos. Para evitar que el procesador tenga que esperar a los dispositivos, aparece el concepto de
multiprogramacin, consistente en tener varios procesos en ejecucin, de forma que cuando un proceso
efecta una operacin que no se pueda satisfacer inmediatamente, otro proceso puede hacer uso de la CPU
mientras dicha operacin se lleva a cabo.
Las formas de explotacin que nos encontramos en esta generacin son:

a) Procesamiento por lotes con multiprogramacin: Es la evolucin natural del procesamiento por lotes
descrito en el apartado 1.2.2.3. La diferencia es que ahora se tienen varios procesos cargados simultneamente en memoria, eliminndose las mquinas auxiliares empleadas en la anterior
generacin mediante el uso de la tcnica conocida como SPOOL (Simultaneous Peripheral Operation On
Line). Esta tcnica consiste en que los trabajos se entregan al sistema en tarjetas o en cinta magntica,
siendo ledos por un proceso auxiliar que los pasa a disco. Una vez en disco, se ejecutan, produciendo su
salida en un archivo en disco, que es a continuacin volcado a impresora por otro proceso auxiliar. Nota:
el trabajo realizado por los equipos auxiliares en la anterior generacin es ahora realizado por procesos.
b) Sistemas interactivos en tiempo compartido: Aunque el acceso interactivo tuvo su origen a finales de la
anterior generacin, la aparicin de la multiprogramacin hace posible que una sola mquina pueda
proporcionar acceso interactivo a mltiples usuarios (mediante mltiples terminales conectados a ella)
de forma simultnea. Es posible mediante las tcnicas de tiempo compartido, que reparten el tiempo de
CPU entre los procesos de los distintos usuarios cuando estos procesos no efecten operaciones
bloqueantes.
Sobre este ltimo punto, cabe destacar la creacin del SO MULTICS (MULtiplexedInformation and
Computing Service). La idea era distribuir servicio de computacin a toda una ciudad, de la misma forma que se
distribuye la energa elctrica, usando como soporte una mquina con dos procesadores y 256K palabras de 36
bits (algo ms de 1Mb). MULTICS no consigui sus objetivos, aunque se ha llegado a usar en distintas
organizaciones (especialmente universidades). Es importante destacar que uno de los cientficos, Ken
Thompson, rescribi una versin monousuario de MULTICS a la que llam UNICS (de UNIplexed).
Posteriormente, Dennis Ritchie lo rescribi en el lenguaje C que acababa de desarrollar: nace UNIX.
1.2.3.4 Necesidades a satisfacer por parte del SO
La aparicin de la multiprogramacin introduce un nmero considerable de complejidades en el SO:
1) El tiempo de CPU ha de repartirse, de acuerdo con determinados criterios, entre todos los procesos en
ejecucin. Aparece as el concepto de planificacin. Este reparto puede ser especialmente delicado en
los sistemas interactivos, pues todos los usuarios deberan tener la percepcin de recibir un trato justo
por parte del sistema.
2) Desde el momento en que varios procesos se encuentran simultneamente en ejecucin, es necesario
que el SO establezca mecanismos de proteccin entre estos, para evitar que un proceso errneo o
malintencionado pueda afectar la correcta ejecucin de otros procesos o del propio SO. Estos
mecanismos afectan tanto al espacio de memoria como al espacio en disco y otros recursos del sistema.
3) La gestin de recursos se complica tambin, pues el sistema ha de controlar qu recursos tiene asignado
cada proceso, y si dicha asignacin es en exclusividad o compartida con otros procesos. Aparece tambin
el riesgo de interbloqueos.
4) Los dispositivos deben ser capaces de operar requiriendo la mnima atencin posible por parte de la CPU.
Esto se solucionar mediante el uso de circuitera especializada en la gestin de entrada/salida, circuitera
que debe ser controlada por el SO.
5) El hecho de que un sistema disponga de mltiples terminales, complica el modelo de entrada/salida,
pues los procesos interactivos deben poder ejecutarse independientemente del terminal con el que
operan.
5

1.2.4 Cuarta generacin: 1971-1984


1.2.4.1 Innovaciones tecnolgicas
Se considera que esta generacin arranca con la aparicin de los primeros circuitos integrados con
tecnologa LSI (Large Scale Integration, conteniendo miles de transistores) y posteriormente VLSI (Very Large
Scale Integration, conteniendo cientos de miles de transistores). Por primera vez el procesador suele ocupar un
nico circuito integrado. Las memorias de ferrita quedan definitivamente remplazadas por las memorias en
circuito integrado. Tambin se hace habitual el uso de redes locales. En 1984 nace Internet.
1.2.4.2 Algunas mquinas relevantes
La industria informtica est plenamente consolidada, y se construye gran cantidad de ordenadores,
llegando estos a convertirse incluso en artculos de consumo a principios de los ochenta, gracias a su
espectacular abaratamiento. En lneas generales, cabe destacar:
1) El concepto de familia de ordenadores est plenamente consolidado. La mayora de los ordenadores
construidos se integran en alguna familia.
2) Los miniordenadores alcanzan e incluso superan prestaciones a los ordenadores corporativos de la
etapa anterior.
3) Aparecen los procesadores en cadena, o procesadores pipeline, capaces de comenzar la ejecucin de
una instruccin antes de terminar las anteriores.
4) Hacen tambin su aparicin los procesadores vectoriales, capaces de trabajar con vectores numricos
de la misma forma que los procesadores normales (escalares) trabajan con nmeros.
5) Si bien ya se haban construido con anterioridad ordenadores con varios procesadores, se hace
frecuente que los supercomputadores dispongan de varios procesadores.
6) Aparece el ordenador personal, o microordenador, cuyo propsito es dar servicio a una sola persona.
Aparecen incluso los primeros ordenadores domsticos, a principios de los ochenta.
1.2.4.3 Explotacin
En general se mantienen los mtodos de explotacin de la anterior generacin expuestos en el epgrafe
1.2.3.3, si bien en la mayora de los casos en los sistemas no interactivos todo el proceso de SPOOL se hace
sobre disco, desapareciendo las tarjetas perforadas y relegando las cintas magnticas a un segundo plano,
especialmente como dispositivos de copia de seguridad o de almacenamiento masivo. Con respecto a los
sistemas interactivos, aparecen las primeras interfaces grficas de usuario (GUI) a finales de esta etapa.
Con respecto a los microordenadores, estos son siempre interactivos y monoprogramados en la
mayora de los casos, pues su propsito es dar servicio a un nico usuario.
1.2.4.4 Necesidades a satisfacer por parte del SO
Sobre las necesidades planteadas en la etapa anterior (epgrafe 1.2.3.4) se aaden las siguientes:
1) Proporcionar soporte de red, proporcionando acceso a dispositivos remotos, como impresoras,
sistemas de archivos, etc.
2) En el caso de los multiprocesadores, los mtodos de planificacin han de darle soporte adecuado.
3) En el caso de los ordenadores personales, la facilidad de uso se convierte en un factor crtico, pues la
mayora de sus usuarios no son ni de lejos son especialistas en informtica.
1.2.5

Quinta generacin: 1984 en adelante


1.2.5.1 Innovaciones tecnolgicas

Se podra considerar como caracterstica ms representativa la construccin de mquinas con un


elevado nmero de procesadores, llegndose a construir mquinas con cientos de procesadores.
Por su parte, se consolida el uso de Internet, llegando un elevado porcentaje de la poblacin a tener
acceso a la red, convirtindose esta en un bien de consumo y en un espacio comercial de primer orden.

1.2.5.2 Algunas mquinas relevantes


La principal caracterstica de esta etapa es la gran reduccin de precios y gran aumento de las prestaciones:
1) Los ordenadores personales alcanzan en prestaciones a los mainframes de hace algunos aos,
mientras que sus reducidos precios los convierten en un bien de consumo domstico.
2) El segmento de los supercomputadores se ve dominado por los grandes multiprocesadores. Por
ejemplo, el Cray XT4 es un sistema escalable (permite aadir tantos procesadores como necesite para a
sus necesidades), pudiendo gestionar ms de 30.000 procesadores. Por ejemplo, con la configuracin
mxima de 30.508 procesadores AMD, proporciona segn el fabricante unas prestaciones mximas de
318 TFLOPS2 (la versin Cray XT3, dos aos antes, declaraba 147 TFLOPS), pudiendo manejar hasta 239
TBytes de memoria.
1.2.5.3 Explotacin
Se siguen manteniendo lo expuesto en el epgrafe 1.2.4.3 de la anterior generacin, si bien los sistemas
interactivos hacen uso casi siempre de interfaz grfica de usuario, que tiende a convertirse en la forma de
uso interactiva por excelencia.
Gracias a la conectividad mundial proporcionada por Internet, los sistemas distribuidos toman tambin
una especial relevancia. Se lleva a cabo un gran esfuerzo de investigacin por desarrollar sistemas que hagan
transparente el acceso a recursos distribuidos tanto hardware como software. Por su parte, los ordenadores
personales se vuelven multiprogramados.
1.2.5.4 Necesidades a satisfacer por parte del sistema operativo
A lo expuesto en el epgrafe 1.2.4.4 de la anterior etapa, habra que aadir:
1) En el campo de los multiprocesadores, la gestin y planificacin de estos ha de contemplar la
posibilidad de escalabilidad, as como la tolerancia a fallos (capacidad del sistema para seguir
funcionando en caso de que alguno de los procesadores se avere).
2) En el campo de los sistemas distribuidos, el principal objetivo es hacer transparente al usuario el hecho
de que el sistema con el que trabaja no es un sistema nico sino que es un sistema distribuido a travs
de una red de comunicaciones.
3) En el campo de los ordenadores personales, la facilidad de uso y la amigabilidad de la interfaz se
convierte definitivamente en norma sagrada. Los sistemas operativos modernos son capaces de
autoconfigurarse en respuestas a cambios en el hardware. En algunos casos, se permite incluso la
conexin de perifricos en caliente (sin necesidad de desconectar la mquina).
1.3 Tipos de Sistemas Operativos
Realizar una clasificacin de los distintos tipos de SO no es fcil, pues esta clasificacin se puede realizar
atendiendo a diversos criterios. En nuestra opinin, la clasificacin propuesta en [Tanembaum03] refleja
satisfactoriamente la realidad actual. Segn este texto, los SO se pueden clasificar en 7 categoras (no
excluyentes entre s), si bien hemos considerado aadir la octava para acomodar un nuevo tipo de sistema
recientemente aparecido: SO de mainframe, de Servidor, Multiprocesador, de Ordenador Personal, en
Tiempo Real, Integrados, de Tarjeta Inteligente y SO Web (WebOS).
1.3.1

SO de Mainframe

Estas mquinas se caracterizan por su capacidad de E/S, sin resultar raro sistemas con 1000 discos y
miles de gigabytes. Los mainframes tambin estn renaciendo un poco como servidores Web avanzados,
servidores para sitios de comercio electrnico a gran escala y servidores para transacciones de negocio a
negocio. Los SO para mainframe estn claramente orientados al procesamiento de varios trabajos a la vez, casi
todos los cuales necesitan cantidades enormes de E/S.
Los servicios que ofrecen suelen ser de tres tipos:

1 TFLOP= 1 billn de operaciones en coma flotante por segundo.

1) Por lotes: Un sistema por lotes procesa trabajos rutinarios sin que haya un usuario interactivo presente. Por
ejemplo, el procesamiento de reclamaciones en una compaa de seguros o los informes de ventas de una
cadena de tiendas por lo regular se hacen por lotes.
2) Procesamiento de transacciones: Los sistemas procesadores de transacciones manejan numerosas
solicitudes pequeas, como procesamiento de cheques en un banco o reservaciones de pasajes areos. Cada
unidad de trabajo es pequea, pero el sistema debe manejar cientos o miles de ellas por segundo.
3) Tiempo compartido: Los sistemas de tiempo compartido permiten a mltiples usuarios remotos ejecutar
trabajos en la computadora de forma simultnea, como las consultas de una base de datos grande.
Estas funciones estn ntimamente relacionadas, por lo que muchos SO para mainframe las realizan
todas. Un ejemplo de SO para mainframe son z/OS y OS/390 de IBM.
1.3.2

SO de Servidor

Se ejecutan en servidores (computadoras personales muy grandes, estaciones de trabajo o incluso


mainframes) y dan servicio a mltiples usuarios a travs de una red, permitindoles compartir recursos de
hardware y software. Los servidores pueden prestar servicios de impresin, de archivo o de Web. Los
proveedores de Internet operan muchas mquinas servidoras para atender a sus clientes, y los sitios Web
emplean servidores para almacenar las pginas Web y manejar las solicitudes que llegan. Entre los SO de
servidor tpicos estn UNIX y Windows 2000 y 2003 Server y Advanced Server. Linux tambin est ganando
terreno en los servidores.
1.3.3 SO Multiprocesador
Una forma cada vez ms comn de obtener potencia de computacin a gran escala es dotar de varias
CPUs a los sistemas. Se necesitan SO especiales, pero con frecuencia stos son variaciones de los sistemas
operativos de servidor, con funciones especiales para comunicacin y conectividad.
1.3.4

SO de Computadora Personal

La siguiente categora es el SO de computadora personal. Su misin consiste en presentar una buena


interfaz a un solo usuario. Se les usa en forma amplia para procesamiento de texto, hojas de clculo y acceso a
Internet. Ejemplos comunes son las distintas versiones personales de Windows, el SO Macintosh y Linux.
1.3.5

SO de Tiempo Real

Otro tipo de SO es el sistema de tiempo real. Se caracteriza porque debe garantizar unos tiempos de
respuesta suficiente exactos ante estmulos externos. Por ejemplo, en los sistemas de control de procesos
industriales, computadoras de tiempo real tienen que capturar datos acerca del proceso de produccin y
utilizarlos para controlar las mquinas de la fbrica. Por ejemplo, si un automvil avanza en una lnea de
ensamble, deben efectuarse ciertas acciones en ciertos instantes. Si un robot soldador suelda demasiado pronto
o demasiado tarde, el automvil quedar arruinado. VxWorks y QNXNeutrino son SO de tiempo real muy
conocidos.
1.3.6 SO Integrados
Pasando a sistemas cada vez ms pequeos, llegamos a las computadoras de bolsillo (palm-top) y
sistemas integrados (tambin conocidos como empotrados).
Una computadora de bolsillo o Asistente Personal Digital (PDA: Personal Digital Assistant) es una
computadora pequea que cabe en el bolsillo de la camisa y realiza unas cuantas funciones como libreta de
direcciones electrnica y bloc de notas. En la actualidad, este dispositivo se integra habitualmente con el
telfono mvil, dando lugar a los llamados telfonos inteligentes. SO orientados a este tipo de dispositivos son
por ejemplo Windows Mobile, Android, Symbian OS y RIM (SO de Blackberry).
Los sistemas integrados operan en las computadoras que controlan dispositivos que por lo general no
se consideran computadoras, como televisores u hornos de microondas. Estos sistemas suelen tener algunas
caractersticas de los sistemas de tiempo real pero tambin tienen limitaciones de tamao, memoria y sobre
todo consumo de electricidad que los hacen especiales. Un ejemplo de este tipo de sistema es Windows CE
(Consumer Electronics), que sirvi de base para la construccin de Windows Mobile.

1.3.7

SO de Tarjeta Inteligente

Los SO ms pequeos se ejecutan en tarjetas inteligentes, que son dispositivos del tamao de una
tarjeta de crdito que contienen un chip de CPU. Sus limitaciones en cuanto a potencia de procesamiento y
memoria son muy severas. Algunos de ellos slo pueden desempear una funcin, digamos pagos electrnicos,
pero otros pueden realizar varias funciones en la misma tarjeta. Muchos de stos son sistemas patentados.
Algunas tarjetas inteligentes estn orientadas hacia Java. Esto implica que la ROM de la tarjeta
inteligente contiene un intrprete de la Mquina Virtual de Java. Los applets (pequeos programas) de Java se
descargan a la tarjeta y el intrprete de la misma los procesa. Algunas de estas tarjetas pueden manejar varios
applets al mismo tiempo, lo que da pie a multiprogramacin y a la necesidad de planificacin. La administracin
y proteccin de recursos tambin adquieren importancia cuando dos o ms applets estn presentes al mismo
tiempo. El SO (por lo regular muy elemental) de la tarjeta debe resolver estas cuestiones.
1.3.8

SO Web (Web OS)

Con el lanzamiento de Chrome OS por parte de Google en 2009, se materializ un nuevo tipo de SO del
que se vena hablando desde haca ms de una dcada: el SO Web. En esencia, un SO Web es un SO diseado
no para la ejecucin de aplicaciones sobre la propia mquina (ejecucin de procesos en local) sino para la
ejecucin de aplicaciones web mediante el uso de un navegador, el cual se constituye en la nica interfaz de
usuario del sistema. Tanto las aplicaciones que se ejecutan, como los datos que estas manejan, se encuentran
en la web, lo cual ha dado lugar al concepto de aplicaciones y datos en la nube.
En cuanto a las caractersticas, la ms destacable de un SO Web es la simplicidad:
a) La gestin de procesos resulta muy simplificada desde el momento en el que el usuario no puede ejecutar
aplicaciones locales. Los nicos procesos que ejecuta el sistema es el navegador y si acaso, algn proceso
interno del sistema.
b) La anterior simplicidad en cuanto a la gestin de procesos, implica una importante simplificacin de la
administracin de memoria.
c) La administracin de archivos tambin resulta muy simplificada desde el momento en que slo se
almacenan en local los datos de configuracin del propio sistema, estando los datos de usuario en la nube,
trasladndose a dicha nube problemas como el uso compartido, la proteccin y seguridad de los mismos.
d) La gestin de dispositivos tambin resulta simplificada dado que el objetivo de este tipo de sistema
operativo es proveer un medio de acceso a la web, no soportndose la mayora de los dispositivos y
perifricos de uso habitual en cualquier otro SO.
En el caso particular de Google Chrome, dicho sistema se basa en un ncleo de Linux simplificado, y est
orientado fundamentalmente al mercado de los NetBooks, a cuyas caractersticas se adapta particularmente
bien debido precisamente a su concepcin minimalista.

2. Fundamentos
2.1
Conceptos bsicos
2.2.1 Conceptos bsicos de arquitectura de ordenadores
La arquitectura bsica de un ordenador se compone de uno o ms procesadores, interconectados con
los circuitos de memoria y con los dispositivos de entrada y salida a travs de un bus, tal y como se muestra en
la Ilustracin 2-1.

Ilustracin 2-1: Arquitectura tpica de un ordenador.


El bus es un conjunto de lneas digitales por el que se transfiere, en grupos de 8, 16, 32 o incluso 64
bits la informacin. Esta informacin fluye entre CPU y memoria, o entre CPU y los dispositivos. En el caso ms
que probable de que el sistema disponga de un dispositivo de acceso directo a memoria (DMA) la informacin
tambin puede fluir directamente de los dispositivos a memoria y viceversa.
En un bus encontramos tres tipos de lneas: lneas de direcciones, lneas de datos, y lneas de control.
Cuando por ejemplo, la CPU necesita escribir un dato en memoria, coloca en las lneas de direccin la direccin
en la que desea escribir el dato. A continuacin, coloca el dato en las lneas de datos, y mediante las lneas de
control, indica que desea realizar una escritura, que dicha escritura es en memoria, y cundo debe comenzar y
terminar dicha transferencia.
En la mayora de los sistemas, por cuestiones de eficiencia, no existe un nico bus, sino que hay buses
especializados en la conexin de dispositivos. En el captulo dedicado a la gestin de la lectura/escritura
encontrar ms detalles sobre esto.
La memoria puede ser de dos tipos: memoria de lectura y escritura (o memoria RAM, Random Access
Memory), o memoria de slo escritura (o memoria ROM, Read Only Memory), en cuyo caso, su contenido,
que no se pierde al retirar la alimentacin a la mquina, no se puede modificar. A la informacin se accede
mediante la direccin que ocupa en la memoria. La cantidad de memoria que es capaz de direccionar un
sistema se calcula elevando 2 al nmero de lneas de direcciones existente en el bus (lo cual, normalmente,
viene impuesto por el procesador). Muy frecuentemente, en el sistema no se instala toda la memoria que este
es capaz de direccionar; en el tema dedicado a la memoria virtual encontrar ms detalles sobre esto.
Los dispositivos se conectan al bus (si bien pueden usar un bus especfico para ellos) y la CPU puede
acceder a ellos o bien mediante instrucciones especficas de acceso a dispositivos (lo que se llama acceso a
dispositivos mapeados en bus de entrada/salida, mecanismo habitual por ejemplo de los procesadores Intel) o
bien accediendo a ellos como si fueran posiciones de memoria (lo que se llama acceso a dispositivos mapeados
en memoria, habitual en los procesadores Motorola).
2.1.1.1 La CPU. Modos de ejecucin
La CPU contiene un conjunto de registros de un nmero determinado de bits, normalmente 32, y
ejecuta instrucciones muy simples que suelen consistir en mover y hacer operaciones aritmticas o lgicas
entre los datos almacenados en sus registros y la memoria. El conjunto de valores de los registros de la CPU
constituye el estado de la CPU en un momento dado. De estos registros, hay dos de especial importancia, que
son el que contiene la direccin de la prxima instruccin a ejecutar (llamado frecuentemente IP, de Instruction
Pointer, o PC, de Program Counter) y el llamado registro de estado (frecuentemente llamado CCR, de Condition
Code Register), que contiene una serie de bits que indican entre otras cosas si la ltima operacin aritmtica
produjo resultado positivo, negativo, cero, adems de informacin relativa al estado actual del procesador.
Para facilitar la construccin de SO robustos, la mayora de los procesadores modernos tienen al
menos dos modos de ejecucin, a los que llamaremos genricamente modo supervisor y modo usuario.
La CPU arranca siempre en modo supervisor, y mientras se encuentra en este modo, puede ejecutar
cualquier instruccin de su conjunto de instrucciones, y acceder a cualquier direccin de memoria o de
10

entrada/salida sin ningn tipo de restricciones. Es por ello que cuando se ejecuta cdigo del SO la CPU suele
estar en este modo.
Por el contrario, cuando la CPU est en modo usuario, hay determinadas instrucciones que no se
pueden ejecutar, y posiblemente tampoco se pueda acceder a determinadas direcciones de memoria ni a
ningn dispositivo de entrada/salida (se dice que los recursos a los que no se tiene acceso son recursos
privilegiados). Para construir un sistema seguro, se debe garantizar que siempre que se ejecuta cdigo ajeno al
SO la CPU se debe encontrar en modo usuario, garantizndose as que es slo el SO quien puede acceder a los
recursos privilegiados, como por ejemplo, los dispositivos de entrada/salida. De esta forma, se obliga al usuario
a acceder a dichos recursos a travs del sistema operativo. Si mientras est la CPU en modo usuario intenta
ejecutar una instruccin no permitida en este modo, se considera que se ha producido un fallo de proteccin,
lo que provoca una excepcin. El concepto de excepcin se detalla en el apartado Interrupciones y excepciones.
La mayora de los procesadores tienen varios modos intermedios entre los dos modos expuestos.
Algunos procesadores, como los procesadores Pentium, permiten incluso configurar en qu modo se deben
ejecutar determinadas operaciones. Para la construccin de un SO seguro es suficiente con los dos modos
expuestos.
2.1.1.2 Interrupciones y excepciones
Una interrupcin es una alteracin en el flujo de ejecucin de instrucciones del procesador, que
puede venir desencadenada por tres causas:
1)

Una interrupcin hardware: todos los procesadores tienen varias lneas hardware de interrupcin
(entradas de interrupcin), que se suelen emplear para facilitar el control de los dispositivos de
entrada/salida. Cuando un dispositivo requiere atencin por parte del procesador, activa una seal en
dicha entrada cambiando su estado de 0 a 1 o viceversa (dependiendo del tipo de CPU, o de cmo este
configurada la entrada de interrupcin), lo cual provoca una interrupcin.

2)

Una excepcin: se denomina as al resultado de un intento fallido de ejecucin de una instruccin. Por
ejemplo, el intento de ejecucin en modo usuario de una instruccin no permitida en dicho modo, o un
intento de acceso a una direccin de memoria no vlida.

3)

Ejecucin de una instruccin de peticin de interrupcin: todos los procesadores tienen en su conjunto de
instrucciones una instruccin para forzar por programa una interrupcin. Nombres tpicos para estas instrucciones son INT, TRAP... normalmente, la instruccin tiene como parmetro el nmero identificador de
la interrupcin que se quiere forzar.
Sea cual sea el origen de la interrupcin, el tratamiento que se le da es el mismo:
a) Normalmente, la CPU pasa a modo supervisor, y se almacena en la pila el estado de la CPU, o al menos
los registros ms importantes de la misma.
b) Determina la direccin en la que se debe encontrar la rutina de servicio de interrupcin (tambin
conocida como SSI, Subrutina de Servicio de Interrupcin). Para determinar esta direccin, los
procesadores suelen asociar un nmero a cada interrupcin, que en el caso de las interrupciones
ocasionadas por programa, coincide con el parmetro de la instruccin de peticin de interrupcin).
La forma ms frecuente de usar este dato es utilizndolo para indexar una tabla de rutinas de
interrupcin, tabla que contiene en su entrada i-sima la direccin en que se encuentra la SSI de la
interrupcin i.
c) Una vez determinada la direccin de la SSI, se salta a dicha direccin, es decir, se ejecuta la rutina de
interrupcin. Dicha rutina termina siempre con una instruccin especial, que se suele llamar RTI
(retorno de interrupcin) o RTE (retorno de excepcin), que tiene como efecto los siguientes pasos:
d) Se recupera de la pila el estado previo de la CPU, volviendo esta al modo de ejecucin (supervisor o
usuario) en que se encontrase previamente.

En el caso de las interrupciones hardware, estas permiten la ejecucin de una subrutina para llevar a
cabo una actividad en cualquier momento que sea necesario, siendo ello transparente para la actividad que en
dicho momento estuviese llevando a cabo la CPU.

11

2.1.1.3 Arranque del sistema


Rovayo lo expuso en su punto 2.1.1.3 pero no se corresponde con los apuntes completos ya que no se daba
otros aos, Sabis donde encontrarlo?
El arranque del sistema, tambin conocido como boot, es la secuencia de acciones por las que el sistema, tras
ser conectado o reiniciado, llega a estar operativo. El proceso de arranque consta de las siguientes etapas:
1. Cuando un procesador comienza a recibir energa, o cuando se activa su entrada de RESET, comienza una
secuencia de inicializacin interna. El ltimo paso de dicha secuencia de inicializacin consiste en comenzar
a ejecutar instrucciones a partir de una direccin de memoria determinada. La forma en que se determina
dicha direccin depende de cada procesador.
2. Lo que ocurre a partir de dicho momento, depende de dnde se encuentra el sistema operativo:

En los sistemas ms simples, el SO se encuentra en memoria no voltil (ROM, PROM, EPROM, EEPROM,
FLASH, etctera). En dicho caso, el cdigo que se est ejecutando ya pertenece al propio sistema
operativo, por lo que comienza directamente la fase de inicializacin del SO.
Lo ms habitual es que el SO resida en algn soporte externo a la memoria (disco, servidor de red), y
por tanto deba ser cargado en memoria. En este caso, lo que se comienza a ejecutar es un cargador
hardware3 del que la mquina dispone en memoria no voltil, que realiza las siguientes acciones:
o Realiza una inicializacin mnima de los dispositivos del sistema: determina sus caractersticas
(cantidad de memoria, dispositivos conectados), comprueba que el sistema funciona, y determina
de qu dispositivo se debe a cargar el sistema operativo, y
o lee de dicho dispositivo (frecuentemente, un disco) un programa cargador, perteneciente ya al
sistema operativo, que es cargado en memoria y al cual se le transfiere el control del sistema.
Muy frecuentemente, este cargador forma parte de un conjunto de rutinas almacenadas en
memoria no voltil llamadas BIOS (Basic Input-Output System). Estas rutinas facilitan un manejo
mnimo de los dispositivos de la mquina.
3. El cargador del SO (que en el caso de residir ste en disco suele tener un tamao fijo y ocupar una zona
predeterminada del disco) tiene por misin cargar en memoria el sistema operativo y transferir el control
a ste una vez realizada la carga. La forma en que se carga el sistema operativo depende de cada caso.
4. Una vez cargado el SO, comienza la fase de inicializacin del mismo. Esta fase puede constar de los
siguientes pasos:

Se crean las estructuras de datos propias del sistema operativo: tabla de PCBs, mapas de bits para la
gestin de la memoria, etctera.
Comprobacin del sistema. Se completan las pruebas realizadas por el cargador hardware (por
ejemplo, deteccin de dispositivosplugnplay) y opcionalmente, si procede, se comprueba que los
sistemas de archivos estn en un estado coherente. Esta ltima operacin, dado que suele ser
costosa en tiempo, se lleva a cabo slo en caso de que hayan indicios que apunten a lo contrario.
Se carga en memoria cualquier componente del sistema operativo (por ejemplo, gestor de
dispositivos) que falte por cargar y se crean los procesos del sistema necesarios.
Se crea uno o ms procesos de inicio o proceso de login. De estos procesos se crea uno por consola o
terminal, y permiten iniciar sesin a los usuarios. Cuando un usuario inicia sesin, el proceso de login
lanza un intrprete de comandos para el usuario, intrprete que puede ser tanto grfico como
textual. En algunos sistemas, se crea directamente el intrprete de comandos, si no es necesario
verificar la identidad del usuario.
2.1.2

Procesos

Un proceso se puede definir simplemente como un programa en ejecucin. A la vista de esta


definicin, podemos definir un SO multiprogramado como un sistema que permite la ejecucin simultnea de
ms de un proceso. Los SO multiprogramados hacen uso de mecanismos de proteccin para dotar a cada
proceso de su propio espacio de memoria, aislando as a cada proceso de los dems e impidiendo por tanto que
un proceso pueda interferir en la correcta ejecucin de otros procesos o incluso del propio SO.
3

Llamado as para distinguirlo del cargador del sistema operativo, que se describe a continuacin

12

A la vista de la definicin que hemos hecho del trmino proceso, hemos de hacer notar que:
1) Si se ejecuta simultneamente dos o ms veces un mismo programa, cada ejecucin constituye un
proceso distinto. Esto es el caso que se da cuando varios usuarios conectados por ejemplo a una misma
mquina UNIX, hacen uso del editor del sistema para modificar sus archivos de texto. El programa es el
todos los casos el mismo, pero cada usuario ejecuta su propio proceso.
2) Un proceso puede mediante una llamada al sistema especfica solicitar que se sustituya el cdigo del
programa que est ejecutando por otro programa. Sera por ejemplo el caso de que tras editar un
programa, el editor transfiriese el control al compilador para compilarlo. En este caso, a pesar de que el
programa que se ejecuta cambia, el proceso sigue siendo el mismo.
Algunas cosas a tener en cuenta tambin en los sistemas multiprogramados son las siguientes:
1) Los sistemas proporcionan siempre mecanismos mediante los cuales un proceso puede crear un nuevo
proceso, normalmente, una copia de s mismo. En dicho caso, el sistema suele considerar una relacin
paterno-filial entre el proceso creado y su creador (se dice que el proceso creador es el proceso padre
del proceso creado), concedindose determinados privilegios del proceso padre sobre el proceso hijo.
2) Dado que los sistemas garantizan aislamiento entre los procesos, tambin proporcionan siempre
mecanismos de comunicacin y sincronizacin entre estos.
3) El sistema siempre proporciona algn mecanismo de identificacin de procesos. Si bien en algunos
sistemas, como es el caso de RTE, identifican los procesos mediante literales alfanumricos, lo ms
comn es que la identificacin de procesos se lleve a cabo mediante valores numricos enteros. A un
identificador de proceso se le suele llamar PID (Process Identificator).
2.1.3

Llamadas al sistema

Una llamada al sistema es una peticin que hace un proceso al SO para obtener cualquier tipo de
servicio. La interfaz que el SO presenta a los programas viene dada por el conjunto de todas las llamadas al
sistema de las que dispone. A esta interfaz es a lo que se llama API (Application Programming Interface). A
continuacin, se describe este concepto, as como los mtodos mediante los cuales se pueden implementar las
llamadas al sistema.
2.1.3.1 Concepto de API
Como se acaba de describir, el API de un SO es la interfaz de programacin que este presenta a los
programas, y viene dada por el conjunto de todas sus llamadas al sistema. Dado que normalmente los procesos
de usuario no tendrn acceso directo a los recursos de la mquina, toda la interaccin con esta se realizar
siempre a travs de llamadas al sistema. Por tanto, los programas se hacen independientes de la mquina,
aunque dependientes del API del SO para el que se han construido.
Es por esto ltimo por lo que se han desarrollado algunas APIs estandarizadas, de forma que los
programas que escribamos haciendo uso de dichas APIs sern compatibles con todos los SO que las
implementen. El mejor ejemplo de ello es POSIX (Portable Operating System Interface, la X final va de regalo),
un estndar propuesto por ISO que ha sido adoptado en la mayora de los sistemas UNIX. Otros SO, como es el
caso de los sistemas de Microsoft, tienen sus propios APIs que gozan de gran popularidad. Este es el caso de
WIN32, el API de los sistemas Windows, y gracias al cual, las dos familias de productos Windows (las derivadas
de Windows 95 y las derivadas de Windows NT) son compatibles entre s a pesar de ser SO completamente
diferentes. No obstante, tanto Windows 2000 como Windows XP implementan tambin la interfaz POSIX.
2.1.3.2 Mtodos de Implementacin
1. Mediante llamadas a rutinas
La implementacin mediante rutinas ms simple sera aquella en la que por cada llamada al sistema
hay una rutina a la que los procesos pueden llamar (mediante una instruccin CALL). No obstante, esto tendra
una importante complejidad para los procesos, pues deberan conocer la direccin en la que se encuentra
cada una de estas rutinas, pues, hemos de tener en cuenta que estas rutinas son externas a los procesos, pues
pertenecen al SO. Solucin: un punto de entrada nico al SO, es decir, hay una nica rutina a la cual se invoca
para solicitar cualquier llamada al sistema; la forma en la que se seleccionan las distintas llamadas al sistema es
mediante un parmetro que identifica una llamada en cuestin.
13

Inconvenientes:
1) Es necesario hacer una llamada a una rutina externa al programa que es necesario conocer a priori la
direccin en que se encuentra dicha rutina, o l procedimiento por el cual se determina. Las soluciones
ms frecuentes a este problema son:
a) La rutina se encuentra en una direccin fija conocida de antemano. Esto hace a los programas dependientes de esta direccin. Futuras versiones del SO no pueden cambiar esta direccin o perdern
la compatibilidad.
b) La rutina se encuentra en una direccin cualquiera, y en algn lugar conocido de antemano existe
una variable que contiene la direccin de la rutina. Esto da libertad para cambiar en futuras
versiones la direccin de la rutina (manteniendo la direccin de la variable que contiene la direccin
de la rutina).
c) Los programas que escriben los usuarios pueden hacer referencia a esta rutina mediante un
nombre simblico reservado (en ensamblador la llamada se hara mediante CALL SYS, donde SYS
representa la direccin del punto de entrada) y sera el montador de enlace del sistema el que
sustituira dicho nombre simblico por la direccin actual del punto de entrada. En caso de cambio
de la direccin, todos los programas deberan ser recompilados.
2) En un SO robusto los procesos de usuario se ejecutarn con la CPU en modo usuario, y esta pasar a
modo supervisor slo cuando ejecute cdigo del sistema La instruccin CALL no efecta dicho cambio de
modo, esto quiere decir que el cambio de modo y la llanada en s se deben efectuar por separado. Esto
es algo que los procesadores no suelen permitir, pues constituira un serio problema de seguridad,
pues podra dar lugar a que un proceso de usuario consiga poner la CPU en modo supervisor
manteniendo el control de la misma.
2. Mediante Interrupciones Software
Una interrupcin software se trata por la CPU pasando a modo supervisor, y determinando segn algn
mecanismo (especfico de la propia CPU) la direccin en la que se encuentra la rutina de servicio de
interrupcin que se ha de ejecutar, ejecutando dicha rutina en modo supervisor a continuacin, y recuperando
el modo de ejecucin previo tras la ejecucin de dicha rutina. El diseador del sistema operativo puede
construir el punto de entrada al sistema como una rutina de interrupcin y colocarla libremente en cualquier
lugar de la memoria, siempre que establezca los mecanismos adecuados para que cuando se solicite una
llamada al sistema la CPU determine la direccin de la rutina como rutina de servicio. Para determinar qu
servicio del sistema es el que se invoca, se suele pasar un identificador de servicio como parmetro en uno de
los registros de la CPU.
Ntese la implementacin de las llamadas al sistema mediante interrupciones software tiene las
siguientes ventajas sobre el uso de rutinas:
1) El diseador del SO tiene total libertad a la hora de ubicar en memoria la rutina que sirve como punto
de entrada al sistema operativo. Dado que el mecanismo por el que dicha direccin se determina a
partir de la interrupcin software son dependientes del procesador, los programas de usuario no
dependen de ellos, con lo que es fcil asegurar la compatibilidad entre distintas versiones del SO.
2) La conmutacin a modo supervisor por parte de la CPU se hace de forma implcita. Dado que un
proceso de usuario, con la CPU en modo usuario, normalmente no podr alterar las estructuras del
sistema en la que se almacenan las direcciones de las rutinas de interrupcin, un proceso de usuario
no puede poner la CPU en modo supervisor manteniendo el control de sta.
3) Se posibilitan las llamadas implcitas al sistema. Supongamos que un proceso de usuario intentase
ejecutar una instruccin no permitida en este modo, por ejemplo, una instruccin INP para acceder a
un dispositivo de entrada/salida. Esto provocara una excepcin que se tratara de forma anloga a
una interrupcin software. La rutina de interrupcin que tratase esta excepcin podra determinar
qu pretenda hacer el proceso que ha causado esta excepcin y si dicho proceso tendra derecho a
hacerlo; en caso de que as fuese, podra simular la ejecucin de la instruccin prohibida y retornar el
control al proceso, con lo que este tendra la percepcin de haber ejecutado la instruccin prohibida.
Ntese que esto ha funcionado de forma equivalente a que el proceso hubiese solicitado
explcitamente al sistema la ejecucin de la actividad.
14

3. Mediante Interrupciones Software


Algunos fabricantes de procesadores, como Intel han incluido en su conjunto de instrucciones una
pareja de instrucciones especficamente diseadas para la implementacin de llamadas al sistema. En Intel,
stas seran SYSCALL y SYSRET, cuya funcin es respectivamente la realizacin de una llamada y retorno de una
llamada al SO. La informacin sobre la ubicacin del punto de entrada al SO se encuentra en un registro
llamado STAR (SYSCALL/SYSRET Target Address Register), el cual slo puede ser modificado en modo
supervisor, o lo que es lo mismo, por el propio SO. El uso de estas instrucciones reduce a una cuarta parte el
nmero de ciclos de reloj necesarios para procesar tanto la llamada al sistema como el retorno de la misma
haciendo uso de interrupciones.
2.1.4

Usuarios

Definicin: Personas autorizada a utilizar el sistema. Los sistemas multiprogramados mantienen una
asociacin entre cada proceso y el usuario al cual pertenece dicho proceso, recibiendo los permisos para
acceder a los distintos recursos del sistema en funcin del propietario. La forma en la que se suele identificar a
los usuarios es mediante identificadores numricos llamados UID: User Identificator. Se permite definir
grupos a los que se pueden adscribir los usuarios. Los grupos se suelen identificar mediante un identificador
numrico de grupo llamado GID: Group Identificator, si bien suelen tener siempre asociado un nombre de
grupo para facilitar su comprensin por parte de los usuarios. Los permisos que reciben los procesos
dependern de la pareja [UID, GID], es decir, de quin es su usuario y a qu grupo pertenece. Normalmente,
cada UID como cada GID son nicos en el sistema.
2.1.5

Archivos

Definicin: Conjunto de Informacin. Los sistemas permiten organizar la informacin en archivos para
su tratamiento. Por ello, los SO cuentan con numerosas llamadas en su API para el tratamiento de archivos.
Los archivos residen en dispositivos de almacenamiento como discos magnticos, discos pticos,
unidades de cintas, o unidades de memoria externa. Para facilitar la organizacin, se suele establecer una
organizacin jerrquica basada en directorios y subdirectorios, para lo cual las API de los sistemas
proporcionan tambin llamadas para manipulacin del sistema de archivos.
La forma en que se identifica el dispositivo en el que reside un archivo vara mucho dependiendo del
SO. En los sistemas de M$ los dispositivos reciben nombres del tipo A:, B:, C:, etc, para las unidades de disco
(los de dispositivos son PRN para la impresora por defecto, LPT1: para el conectado al puerto paralelo 1, CON1:
para el conectado al puerto serie 1.). En UNIX asocian a cada dispositivo un archivo especial dentro de un
directorio del sistema de archivos (directorio /dev) y ocultan los dispositivos sobre los que residen los archivos
mediante un rbol de directorio nico, permitiendo montar el sistema de archivos que contiene un dispositivo
dado sobre un directorio vaco del sistema de archivos.
En la imagen de la vemos como UNIX monta el soporte dentro de la Raz del sistema (en este caso, dentro de
mnt). Nota: Los recursos no estn duplicados, es decir, en a) aparecen dos races, en b) solo habra una, no
dos.

En los sistemas multiusuario el SO


proporciona mecanismos de proteccin del
sistema de archivos, basndose en
establecer permisos de acceso a los
archivos en funcin de la identidad del
propietario de cada archivo y del grupo al
que pertenece, y de la identidad y grupo al
que pertenece el propietario del proceso
que desea acceder al archivo.

15

2.1.6

Intrpretes de rdenes/comandos/shell

Es simplemente un programa interactivo que lee comandos del usuario, y los ejecuta efectuando si es
necesario para ello las llamadas al sistema oportunas. Este es normalmente el primer proceso que se lanza
cuando un usuario inicia sesin.
Algunos SO, como UNIX, permiten que el usuario establezca el intrprete de rdenes que prefiera o
puede usar un intrprete construido por l mismo. En otros SO el intrprete de rdenes viene integrado como
parte del sistema y el usuario puede cambiarlo (MS-DOS). Algunas funciones que la mayora de los intrpretes
de comando soportan son:

Ejecucin de un programa, redireccionando su entrada o su salida desde o hacia un archivo:


sort <arch-entrada >arch-salida. El comando sort recibe el contenido del fichero arch-entrada y el resultado
de ejecutarse es volcado en el fichero arch salida. Si ponemos > borramos el fichero destino y escribimos en l, si
ponemos >>, lo abrimos si existe y escribimos al final.

Ejecucin en paralelo de varios procesos


unidos por una tubera (redireccin de la
salida del primero hacia la entrada del
segundo): A | B . | significa tubera.

Ejecucin de archivos conteniendo varios comandos, que en muchos casos llegan a constituir
verdaderos programas (conocidos como scripts). Permite uso de sentencias if-else, bucles, etc.
2.1.7

Interfaces grficas de Usuario

Una interfaz grfica es simplemente un intrprete de rdenes en modo grfico, en lugar de textual. Es
decir, el usuario, en lugar de teclear un comando de la forma: copy \documentos\f1.doc \usuarios
Las interfaces grficas ofrecen un API que permite la construccin de programas haciendo uso de sus
recursos. De esta manera, las aplicaciones que se ejecutan desde la misma tienen un aspecto coherente con la
interfaz grfica del propio sistema.

16

Tema 3 Arquitectura de los Sistemas Operativos


2.2
Modelos de diseo
2.2.1 Modelo monoltico
Un SO con organizacin monoltica se caracteriza porque todo el SO se encuentra en un nico espacio de
memoria (podramos decir que constituye un nico ejecutable). Esto tiene como consecuencia que:
a) Cualquier rutina del SO puede invocar a cualquier otra rutina, simplemente haciendo una llamada
directa (mediante un CALL).
b) Cualquier rutina del SO puede manipular directamente cualquier estructura de datos de cualquier
mdulo del sistema.
Esto conlleva dos importantes ventajas:
Eficiencia en tiempo, pues si un componente del sistema operativo necesita servicio de cualquier otro
componente, puede hacer una invocacin directa mediante llamada a subrutina, o si necesita cualquier
informacin puede acceder a ella directamente, y
Eficiencia en ocupacin de memoria, pues al ser accesibles todas las rutinas y todas las estructuras de
datos desde cualquier mdulo del sistema operativo, no es necesario replicar cdigo ni datos, cosa que
s puede ocurrir en otros modelos.
Es por ello por lo que este modelo de diseo tiende a producir sistemas compactos y rpidos. No obstante,
estos sistemas presentan tambin los siguientes inconvenientes:
Complejidad y dificultad de mantenimiento, pues normalmente existen muchas interdependencias
entre los distintos mdulos del sistema, y
Dificultad de depuracin, ya que un error en un mdulo del sistema, puede ocasionar un fallo en
cualquier otro mdulo (efectos colaterales). Este sera el caso, por ejemplo, en que debido a un error en
el gestor de disco, un puntero que apunta a donde menos debera hacerlo modifica accidentalmente
datos que pertenecen al administrador de memoria, y es este ltimo quien manifiesta el fallo.
2.2.1.1 Estructura de un sistema operativo monoltico
En la Ilustracin se muestra la estructura de un SO con organizacin monoltica. Esta consta de:
Mdulo despachador (dispatcher): Es el punto de entrada al SO. Dicho punto de entrada es una rutina a la
que transfiere el control cada vez que: Un proceso hace una llamada al sistema o Un proceso de usuario
ejecuta una instruccin prohibida, o se produce cualquier otro fallo de proteccin.

Rutinas de servicio: son las que implementan cada uno de los servicios del SO.

Rutinas auxiliares: se encargan de tareas auxiliares y que pueden ser de utilidad para cualquier otra
rutina (de servicio o auxiliar) del SO: manipulacin de estructuras de datos, comprobaciones habituales,
etc.

La funcin del despachador es determinar


cmo se ha de tratar la causa que ha motivado su
ejecucin. El despachador se ejecuta en respuesta
o bien a una interrupcin software o bien a una
excepcin,
el
procesador
conmutar
automticamente a modo supervisor al comenzar a
ejecutar su cdigo, y volver al modo en que se
encontrase previamente al devolverse el control.
Este mdulo funciona de la siguiente manera:
1. Conmuta al modo privilegiado.
2. Recoge la peticin del proceso y sus
parmetros.
3. Comprueba que el nmero del servicio pedido es vlido.
4. Llama a la rutina correspondiente.

17

Para determinar la direccin de la rutina de servicio


que se ha de invocar, se consulta la tabla de rutinas de servicio
en la que la entrada i-sima contiene la direccin de la rutina
de servicio cuyo identificador de servicio es i. eleccionar e
invocar a la rutina de servicio es algo tan simple y eficiente
como: rutina= tabla_rutinas_servicio[ident_servicio];
Ejemplo de SO que emplean esta organizacin interna
son UNIX y la mayora de sus clones, como LINUX. SOLARIS es una excepcin, pues tiene organizacin
microncleo.
2.2.2

Modelo en estratos

Este modelo parte de la idea de que colocando una capa de software sobre el hardware mostramos a
las capas superiores de software una mquina ampliada con una interfaz de ms alto nivel. De esta forma, el SO
se puede construir apilando capas de software de manera que cada capa resuelve un problema concreto,
ofreciendo una interfaz a la capa inmediatamente superior en la que dicho problema queda resuelto.
En este sistema, el estrato inferior, o
estrato 0, contena todos los elementos del
cdigo
relacionados
con
la
multiprogramacin,
atendiendo
las
interrupciones del reloj, la contabilidad del
tiempo asignado, y la conmutacin de un
proceso a otro. Por consiguiente, esta capa
ofreca hacia los estratos superiores una
mquina multiprogramada.

Proceso operador del sistema

Procesos de los usuarios

Control de E/S

Comunicacin proceso-consola

Administracin de la memoria y del tambor

Asignacin del procesador y multiprogramacin


Estructura del Sistema THE (SO de organizacin militar)

El estrato 1 administraba la memoria, y gestionaba el intercambio de pginas entre la memoria y el


tambor magntico. Hacia arriba, los procesos no necesitaban conocer dnde estaban sus pginas, en la
memoria principal o en la auxiliar, que ya se cargaran cuando fuese necesario.
El estrato 2 se dedicaba a la comunicacin entre los procesos y la consola del operador. De este modo,
hacia los estratos superiores, se ofreca la apariencia de que cada proceso tena su propia consola.
El estrato 3 se concentraba en las operaciones de L/E, y mantena las reas de amortiguamiento
(buffers); hacia arriba, los procesos trabajan con dispositivos abstractos en vez de con perifricos reales, llenos
de particularidades.
En el estrato 4 se situaban los procesos de usuario, con todos los problemas anteriores resueltos;
finalmente, en el estrato 5 se situaba el proceso del operador del sistema.
Otro SO histrico que us una organizacin por estratos fue MULTICS, que estaba organizado en anillos
(capas, al fin y al cabo) de forma que cada anillo se corresponda con un modo de ejecucin del procesador,
siendo el anillo ms interior el que se corresponde con el mayor nivel de
privilegio, y el anillo exterior el que se corresponde con un menor nivel de
privilegio. De esta manera, los propios mecanismos de proteccin del
hardware garantizaban que desde cada anillo se poda acceder
directamente a rutinas y recursos de los anillos ms exteriores, pues
requeran menor nivel de privilegio, pero nunca a los recursos situados en
anillos ms interiores, ya que requeran un mayor nivel de privilegio. En caso
de que desde un anillo se intentase acceder a un recurso en un anillo ms
interior, esto provocaba una excepcin que era capturada por el ncleo del
sistema (anillo ms interno). El intento se analizaba y, en caso de considerarse permitido, se transfera el control al anillo al que se pretenda acceder,
realizndose de esta forma una llamada implcita.
Extra: El 80286 se utiliz una jerarqua de modelo de estratos de 4 niveles.
18

2.2.3

Modelo microncleo

Este modelo responde a la tendencia de los sistemas operativos modernos en hacer el ncleo del
sistema operativo tan pequeo como sea posible, ejecutando parte del propio sistema operativo como
procesos de usuario. Un sistema que siga este modelo de forma estricta, constara de un ncleo mnimo que se
encargara de solamente de:

Gestin de la multiprogramacin.
Comunicacin entre procesos.
Atencin de interrupciones.

De esta forma, proporciona la infraestructura mnima necesaria para que el resto de los componentes
del sistema (gestores de dispositivo, administracin de archivos, administracin de memoria, etc) se
implementen como procesos separados. Como estos procesos se ejecutan con total aislamiento entre s la
nica forma de interaccin entre estos es mediante los mecanismos de comunicacin entre procesos
establecidos por el ncleo del sistema. Ejemplo de funcionamiento:
1.
2.
3.
4.
5.
6.

El proceso cliente solicita datos de un archivo.


El administrador de archivos solicita un bloque de informacin al gestor de discos.
El gestor de discos realiza varias operaciones de lectura o escritura, de control, etc.
La unidad de discos activa interrupciones, y entrega informaciones y estados.
El gestor de discos entrega el bloque de informacin al administrador de archivos.
El administrador de archivos entrega al proceso cliente los datos solicitados.

Es por este mecanismo de


peticin/respuesta por lo que en
algunos libros se refieren a este
modelo
como
modelo
cliente/servidor.

Ventajas:
a) Facilidad de depuracin: Al dividir el sistema por parcelas de actuacin, cada una de ellas tiene menor
tamao. Adems, se garantiza el aislamiento de las distintas partes e informaciones.
b) Dado que los servidores actan como tareas independientes, se obtiene un SO ms resistente. Si cae un
servidor, los dems no tendran que resultar afectados necesariamente, por lo que al menos una parte
del SO continuara funcionando.
c) Flexibilidad: En muchos casos ser posible sustituir un mdulo servidor por una nueva versin corregida
o mejorada, sin tener que parar el equipo y arrancar de nuevo.
d) La fragmentacin permite separar los procedimientos de actuacin, dependientes del equipo (por
ejemplo, rdenes para leer o escribir un sector de disco determinado), de los criterios de gestin (por
ejemplo, el formato lgico del disco o el criterio para administrar el espacio).
e) El sistema se adapta con facilidad a los entornos distribuidos y a los sistemas de redes de
ordenadores.
Inconvenientes:
a) En un sistema monoltico, las rutinas de uso frecuente pueden estar una sola vez en la memoria, y
compartirlas todos los mdulos del SO que las necesiten. En sistemas microncleo, cada tarea separada
necesita su propia copia, en su espacio de direcciones, salvo que se establezca una biblioteca residente.
Resumen: Los sistemas microncleo pueden ocupar ms memoria que los monolticos.
b) En un sistema monoltico, cuando un proceso hace una llamada, sta se atiende de inmediato, con
mnimas transferencias de parmetros. En el sistema microncleo hay que copiar los parmetros de la
peticin desde el proceso cliente al proceso servidor, pasando a veces por una copia intermedia en el
propio ncleo. A veces es preciso que los procesos servidores comuniquen al ncleo los cambios de
estado de los clientes. Resmen: en el sistema microncleo hay ms trasvase de informacin que en el
monoltico, por lo que consumirn ms tiempo. En el caso de un suceso que se repite con una
frecuencia alta, como una interrupcin de reloj, la acumulacin de muchos pocos hacen un mucho, por
lo que se debe tener mucho cuidado al disear y programar estas relaciones.
19

Вам также может понравиться