Vous êtes sur la page 1sur 45

1.

Introduccin

1.1. Funciones del sistema operativo


Es habitual cuando hablamos de un elemento tan complejo como un sistema operativo que resulte
ms sencillo definirlo por lo que hace que por lo que es. Por ello, comenzaremos viendo el papel del
sistema operativo en el conjunto de un sistema informtico.

Un sistema informtico cualquiera puede ser dividido en cuatro componentes (vase la Figura 1.1):
el hardware, el sistema operativo, los programas de aplicacin y los usuarios.

El hardware la CPU, la memoria, los dispositivos de entrada salida, etc. proporcionan los
recursos computaciones del sistema.

Los programas de aplicacin procesadores de textos, hojas de clculo, compiladores,


navegadores de Internet. Definen las diferentes formas en las que los recursos de sistema son
utilizados para resolver los problemas informticos de los usuarios.

El sistema operativo controla y coordina el uso de hardware por parte de las diversas
aplicaciones para los diferentes usuarios del sistema. Un sistema operativo no hace trabajo
til. Simplemente proporciona un entorno adecuado para que otros programas puedan
hacerlo.

Con el fin de entender cules son las funciones de un sistema operativo; se puede explorar su papel
desde dos puntos de vista: el del sistema informtico y el del usuario.
Sistemas Operativos - 2014/2015 1. Introduccin

usuario usuario usuario usuario


...
1 2 3 n

editor juego compilador ... base


de datos

programas del sistema y aplicaciones

sistema operativo

hardware

Figura 1.1: Vista abstracta de los componentes de un sistema informtico.

1.1.1. Punto de vista del sistema informtico


Desde el punto de vista del sistema informtico, el sistema operativo es el programa ms
ntimamente relacionado con el hardware. En este contexto, el sistema operativo acta como:

1. Gestor de los recursos de sistema informtico.

2. Programa encargado del control de la ejecucin de los programas de usuario y del acceso a
los dispositivos de E/S.

Un sistema informtico tiene mltiples recursos tanto hardware como software tiempo de CPU,
espacio de memoria, espacio de almacenamiento de archivos, dispositivos de E/S, servicios de red,
etc.. El sistema operativo, como gestor de estos recursos, los asigna a los diferentes programas,
resolviendo los conflictos en las peticiones y haciendo que el sistema opere eficientemente y
resuelva los problemas de los usuarios.

Adems, como un programa encargado del control de la ejecucin de los programas de los usuarios,
el sistema operativo tiene la tarea de prevenir errores y el uso inadecuado del ordenador.

1.1.2. Punto de vista del usuario


Sin embargo, la funcin del sistema operativo desde el punto de vista del usuario vara de acuerdo
con la interfaz utilizada. Por ejemplo, los usuarios que se sientan frente a un sistema de escritorio

1-2
1.1. Funciones del sistema operativo Sistemas Operativos - 2014/2015

(vase el apartado 1.3.2) disponen de monitor, teclado, ratn y una unidad central. Estos sistemas se
disean buscando la mxima productividad en equipos donde un usuario monopoliza todos los
recursos; por lo que el sistema operativo se disea considerando fundamentalmente la facilidad de
uso, poniendo algo de atencin en el rendimiento y nada en el aprovechamiento de los recursos.

En otros casos un usuario se sienta frente a un terminal1 conectado a un mainframe (vase el


apartado 1.3.1), mientras muchos otros acceden al mismo sistema a travs de otros terminales. Por
tanto, todos los usuarios comparten los recursos del sistema informtico y pueden intercambiar
informacin. En esos casos el sistema operativo debe maximizar el aprovechamiento de los recursos
con el objetivo de garantizar que toda la CPU, memoria y E/S sean empleadas de forma eficiente, y
que ningn usuario utiliza ms que lo que le corresponde.

Otro ejemplo son los sistemas de mano (vase el apartado 1.3.5), por ejemplo tablets y telfonos
mviles. A causa de las limitaciones de la interfaz, en el diseo del sistema operativo debe primar la
usabilidad2, aunque el rendimiento por tiempo de vida de la batera tambin es importante.

1.2. Definicin de sistema operativo


No existe una definicin universal de lo que es un sistema operativo. Hay quin considera que es lo
que el fabricante nos vende cuando decimos que queremos comprar un sistema operativo. Esta
definicin no parece muy precisa puesto que las caractersticas incluidas pueden variar
enormemente de un sistema a otro. Por ejemplo, algunos sistemas apenas alcanzan el megabyte de
espacio, careciendo incluso de las aplicaciones ms bsicas, como puede ser un editor, mientras que
otros ocupan gigabytes de espacio y estn completamente basados en sistemas grficos de ventanas.

Una definicin mucho ms comn es que el sistema operativo es aquel programa que se ejecuta
continuamente en el ordenador lo que denominamos comnmente kernel o ncleo siendo todo lo
dems programas del sistema y aplicaciones. Sin embargo, es indudable que en algunos casos sta
definicin no incluye como parte del sistema operativo algunas caractersticas que intuitivamente
solemos considerar dentro del mismo. Por ejemplo, si aplicamos esta definicin a los sistemas
operativos de estructura microkernel (vase el apartado 2.3.3), no podramos decir que servicios
como la comunicacin en red, la gestin del sistema de archivos y la gestin de la memoria (vanse

1 Los terminales son sistemas informticos utilizados para la conexin de los usuarios a un mainframe. Slo suelen
disponer de los recursos necesarios para realizar esa tarea.
2 La usabilidad es la medida de la facilidad de uso de un producto o servicio, tpicamente una aplicacin software o un
aparato. Ms informacin en http://es.wikipedia.org/wiki/Usabilidad.

1-3
Sistemas Operativos - 2014/2015 1. Introduccin

el apartado 2.1.2) son proporcionados por el sistema operativo. Aunque pueda parecer lo contrario,
la cuestin de que incluye y que no incluye un sistema operativo no carece de importancia, como se
demostr durante el caso del Departamento de Justicia de los Estados Unidos contra Microsoft por
la excesiva inclusin de funcionalidades en sus sistemas operativos3.

Parece evidente que un sistema operativo se define mejor por lo que hace es decir, sus
funciones que por lo que es. Sin embargo, sta primera manera de definirlo tambin tiene sus
dificultades. Por ejemplo, el principal objetivo de los sistemas operativos de escritorio es la
facilidad de uso, mientras que en los mainframe el objetivo fundamental es la eficiencia en el
aprovechamiento de los recursos. Puesto que ambos objetivos pueden ser en ocasiones
contradictorios, resulta obvio que lo que tiene que hacer un sistema operativo para alcanzar esos
objetivos puede ser diferente en cada caso, lo que dificulta el obtener una definicin nica.

De lo que no hay duda es de que los sistemas operativos existen porque es ms fcil hacer un
sistema informtico usable con ellos que sin ellos. El objetivo fundamental de las computadoras es
ejecutar programas para resolver fcilmente los problemas de los usuario, por lo que con ese
objetivo se construye el hardware de los ordenadores. Puesto que el hardware por si slo resulta
difcil de utilizar, es necesario desarrollar programas de aplicacin para que sean utilizados por los
usuarios. Sin embargo, estas aplicaciones necesitan realizar operaciones comunes, como controlar
los dispositivos de E/S o reservar porciones de la memoria. Esas funciones comunes de control y
asignacin de recursos, que se corresponden con las funciones del sistema operativo desde el punto
de vista del sistema informtico vistas en el tema 1.1.1, son la labor del sistema operativo.

1.3. Tipos de sistemas operativos

1.3.1. Mainframe
Los ordenadores centrales o mainframes fueron los primeros computadores utilizados en muchas
aplicaciones comerciales y cientficas. Se caracterizan no tanto por la potencia de su CPU 4 como
por: su gran capacidad de memoria, su gran capacidad de almacenamiento secundario, la gran

3 Ms informacin sobre el caso en http://goo.gl/u1tf.


4 Generalmente se considera que las mayor diferencia entre los superordenadores y los mainframes est en que los
primeros se centran en resolver problemas limitados por la velocidad de clculo lo cual requiere miles de CPU de
alto rendimiento mientras que lo segundos se centran en problemas limitados por la E/S y la fiabilidad slo
necesitan entre una y varias docenas de CPU. Ms informacin en http://es.wikipedia.org/wiki/Ordenador_central.

1-4
1.3. Tipos de sistemas operativos Sistemas Operativos - 2014/2015

sistema operativo

rea de los
programas de usuario

Figura 1.2: Disposicin de la memoria en un sistema de procesamiento por lotes.

cantidad de dispositivos de E/S y la rapidez de estos, as como por su alta fiabilidad. Estas mquinas
pueden funcionar durante aos sin problemas ni interrupciones y las reparaciones se realizan sin
detener su funcionamiento.

a) Sistemas de procesamiento por lotes


Los sistemas de procesamiento por lotes o sistemas en batch fueron los primeros ordenadores
(vase el apartado 1.4.2). Eran enormes mquinas operadas desde una consola y conectados a
lectores de tarjetas perforadas5, dispositivos de cinta e impresoras. El trabajo, normalmente en
tarjetas perforadas, era preparado por el programador y entregado al operador. Para acelerar la
ejecucin el operador deba agrupar los programas con requerimientos similares en lotes y
mandarlos a ejecutar segn iba quedando disponible el ordenador. Finalmente, el resultado de cada
programa deba ser devuelto al programador correspondiente.

El sistema operativo permaneca siempre residente en memoria (vase la Figura 1.2).

La nica tarea del sistema operativo era transferir automticamente el control de un trabajo
al siguiente.

El mayor inconveniente de ste tipo de sistemas era que la CPU permaneca mucho tiempo
desocupada porque era y es varios ordenes de magnitud ms rpida que la E/S. Los programas
necesitan realizar operaciones de E/S para obtener los datos requeridos para sus clculos por
ejemplo guardados en tarjetas perforadas por lo que se pierde mucho tiempo esperando a que
estn disponibles dichos datos.

5 Mas informacin sobre la forma de trabajo con tarjetas perforadas en http://goo.gl/S9FTOk.

1-5
Sistemas Operativos - 2014/2015 1. Introduccin

b) Sistemas multiprogramados
Con la aparicin de la tecnologa de los discos magnticos se pudo mantener todos los trabajos en el
disco y no en tarjetas perforadas sobre la mesa del operador. Esto permiti que el sistema operativo
pudiera encargarse de escoger el orden de ejecucin de los trabajos.

3. En disco se almacena una cola con todos los trabajos que deben ser ejecutados.

4. El sistema operativo mantiene varios trabajos en memoria del conjunto de trabajos en la cola
en disco (vase la Figura 1.3).

5. El sistema operativo ejecuta en la CPU unos de los trabajos en memoria.

6. Si el trabajo en la CPU requiere E/S, en lugar de mantener a la CPU ocupada intilmente, el


sistema operativo escoge otro trabajo de entre los que estn en memoria y lo ejecuta en la
CPU. El nuevo programa en la CPU no es interrumpido cuando el anterior termina de
utilizar la E/S, sino que ste ltimo debe esperar en la memoria una nueva oportunidad para
ser escogido.

7. Cuando un programa en la CPU termina, un hueco queda libre en la memoria. Por lo tanto es
necesario que el sistema operativo escoja un trabajo de la cola en disco y lo cargue en la
memoria.

8. El proceso se repite mientras hayan trabajos que ejecutar.

Para seguir un esquema como el anterior es necesario que el sistema operativo realice tres tareas
esenciales:

La planificacin de trabajos. Su responsabilidad es elegir cual es el siguiente trabajo que


debe ser cargado para mantener llena la memoria.

La planificacin de la CPU. Se encarga de elegir el siguiente trabajo que debe ser ejecutado
en la CPU de entre los disponibles en la memoria (vase el apartado 3.4).

La gestin de la memoria. Es necesaria puesto que la memoria tiene que ser repartida entre
los trabajos que deben ser alojados en la misma (vase el apartado 2.1.2).

Un ejemplo de este tipo de sistemas operativos es el IBM OS/360 que fue liberado en 1966 para
utilizarlo en los mainframes IBM System/360 (vase el apartado 1.4.3).

1-6
1.3. Tipos de sistemas operativos Sistemas Operativos - 2014/2015

c) Sistemas de tiempo compartido


La mayor parte de los sistemas actuales son sistemas de tiempo compartido. Los sistemas
anteriores ofrecan un uso eficiente de la CPU pero no eran capaces de proporcionar interaccin con
el usuario. El usuario se limitaba a entregar los trabajos al operador y a esperar a que ste le
devolviera los resultados.

Los sistemas de tiempo compartido se caracterizan por tener:

Un sistema de interaccin directa entre el usuario y el sistema. Por ejemplo, un terminal.

Un sistema multiprogramado dnde la conmutacin es tan frecuente que el usuario puede


interactuar con cada programa mientras se ejecuta.

Utilizando esta estrategia un sistema de tiempo compartido puede disponer de varios terminales de
forma que mltiples usuarios puedan utilizar la mquina simultneamente 6. Los usuarios comparten
la CPU y los otros recursos del sistema, sin embargo, la sensacin para cada uno es la de que el
sistema completo est dedicado a l en exclusiva. Realmente el sistema conmuta de un usuario a
otro o para ser exactos de un programa a otro, pudiendo ser de usuarios distintos pero debido a la
lentitud de la E/S interactiva7 los usuarios no perciben demora alguna.

Los sistemas de tiempo compartido significaron un salto importante en complejidad por diversas
razones:

Varios trabajos deben estar en memoria al mismo tiempo el sistema operativo requiere
mecanismos de gestin de la memoria y proteccin (vase el apartado 2.1.2).

Para tener un tiempo de respuesta razonable los trabajos en memoria deben poder ser
guardados o recuperados desde el disco que sirve como almacenamiento de respaldo el
sistema operativo puede utilizar tcnicas de memoria virtual (vase el apartado 4.5.1) para
poder ejecutar trabajos que no estn completamente cargados en memoria.

La CPU debe ser compartida entre los trabajos el sistema operativo requiere mecanismos
de planificacin de la CPU (vase el apartado 3.4).

La ejecucin de los trabajos debe ser ordenada el sistema operativo debe proporcionar

6 A los sistemas que tienen esta funcionalidad se los denomina sistemas multiusuario.
7 La E/S interactiva incluye la salida de datos por pantalla y la entrada de datos utilizando dispositivos como el
teclado, el ratn, etc. La velocidad de este tipo de E/S viene limitada por las capacidades humanas, por lo que hay
que tener en cuenta que lo que para los humanos es rpido para una CPU resulta sumamente lento.

1-7
Sistemas Operativos - 2014/2015 1. Introduccin

mecanismos de sincronizacin (vase el apartado 3.3.3) y comunicacin (vase el apartado


3.2).

El sistema debe disponer de un sistema de archivos (vase el tema 5), que a su vez debe
residir en un conjunto de discos el sistema operativo requiere mecanismos de gestin de
discos.

Las primeras versiones de UNIX liberado por primera vez en 1970 el sistema operativo VMS
desarrollado en 1978 para los VAX de Digital Equipment Corportation y el IBM OS/400
introducido en 1988 utilizado en los minicomputadores AS/400, son algunos ejemplos de
sistemas operativos de tiempo compartido (vase el apartado 1.4.4).

1.3.2. Sistemas de escritorio


Los sistemas de escritorio aparecieron en los primeros aos de la dcada de 1970 y carecan de las
caractersticas necesarias para ser multiusuario y multitarea. A diferencia de los sistemas de
entonces, los sistemas operativos de escritorio actuales si tienen esas caractersticas pero se siguen
diseando con un objetivo diferente al de los mainframe. Como ya hemos comentado, mientras que
en los sistemas de tiempo compartido y los multiprogramados se persigue maximizar la utilizacin
eficiente de los recursos, en los sistemas de escritorio se debe maximizar la respuesta al usuario 8 y
la facilidad de uso.

Pese a estas diferencias los sistemas operativos de escritorio se han beneficiado del desarrollo de
los sistemas operativos para mainframes. Por ejemplo, en un sistema diseado para ser utilizado
por un nico usuario no tiene sentido implementar un sistema de archivos con permisos. Por eso los
primeros sistemas operativos de escritorio carecan de esta caracterstica, que ya exista en los
mainframe de la poca. Sin embargo, hoy en da los sistemas de escritorio son multiusuario e
incluyen sistemas de archivos con permisos como medida de proteccin de los datos de los
usuarios.

Los ejemplos de este tipo de sistemas operativos van desde CP/M lanzado en 1977 hasta los
actuales GNU/Linux, Microsoft Windows 7 y Apple Mac OS X, pasando por MS-DOS, IBM OS/2
y las diversas versiones de Microsoft Windows (vase el apartado 1.4.5).

8 El tiempo de respuesta al usuario se puede considerar como el intervalo de tiempo entre un comando de un usuario
por ejemplo un click y la respuesta del sistema a dicho comando. En ocasiones este tiempo se minimiza a costa de
un uso menos eficiente de los recursos del sistema por lo que no es un objetivo deseable para disear un mainframe.
Mas informacin en el tema 3.4.3.

1-8
1.3. Tipos de sistemas operativos Sistemas Operativos - 2014/2015

1.3.3. Sistemas distribuidos


En la actualidad es comn el uso de redes por ejemplo Internet o la red de rea local de una
oficina para interconectar ordenadores individuales; cada uno equipado con su procesador, su
memoria, sus dispositivos de almacenamiento, su fuente de alimentacin, etc. En las redes de
ordenadores los procesadores de dichos ordenadores se comunican con otros procesadores a travs
de lneas de comunicacin, como redes Ethernet o lneas telefnicas. Estos sistemas son
comnmente denominados sistemas distribuidos.

a) Tipos de sistemas informticos distribuidos


Sin entrar en detalles los sistemas distribuidos pueden ser clasificados en dos grandes tipos:

En los sistemas cliente-servidor existen ordenadores que actan como servidores encargados
de satisfacer las peticiones generadas por otros ordenadores que actan como clientes. Este
tipo de sistemas ha ido sustituyendo a los terminales conectados a mainframes debido a que
los sistemas de escritorio son cada vez ms potentes y ms baratos. Concretamente, los
terminales han sido sustituidos por los sistemas de escritorio que, al disponer de ms recursos,
son capaces de realizar muchas de las funcionalidades que anteriormente eran manejadas
directamente por los mainframes. Al mismo tiempo estos mainframes se han reemplazado por
servidores, no muy diferentes a los sistemas de escritorios, pero preparados para atender las
peticiones de sus clientes. Ejemplos de este este tipo de sistemas son los servidores de base de
datos, que responden a las consultas SQL de los clientes, o los servidores de archivos, que
proporcionan una interfaz de sistema de archivos con la que los clientes pueden crear, leer,
escribir y borrar archivos en el servidor.

En los sistemas de redes entre iguales o P2P (peer-to-peer) clientes y servidores no se


distinguen los unos de los otros. Todos los nodos del sistema son iguales y cada uno puede
actuar como cliente y/o servidor dependiendo de cuando piden o proporcionan un servicio. La
ventaja fundamental de este tipo de sistemas es que en los sistemas cliente-servidor el servidor
es el cuello de botella9, pero en los sistemas de redes entre iguales la carga se distribuye entre
los diversos nodos de la red. Ejemplos de este tipo de sistemas son las redes eDonkey y
BitTorrent.

9 Un servidor puede ser el cuello de botella no solo por su potencia sino tambin por el ancho de banda de su
conexin a la red. La potencia del servidor es lo de menos cuando se intenta distribuir en Internet archivos de gran
tamao por ejemplo imgenes de CD o DVD pues el problema es que varias descarga simultaneas pueden
consumir todo el ancho de banda del servidor durante largos periodos de tiempo.

1-9
Sistemas Operativos - 2014/2015 1. Introduccin

b) Sistemas operativos para sistemas distribuidos


Desde el punto de vista de los sistemas operativos para sistemas distribuidos es necesario hacer la
siguiente distincin:

Los sistemas operativos de red ofrecen a las aplicaciones que corren sobre ellos servicios de
acceso a redes de ordenadores. Por ejemplo, implementan algn mecanismo que permita a
diferentes procesos en diferentes ordenadores intercambiar mensajes. Adems suelen
incorporar la opcin de proporcionar algunos servicios de red, como la comparticin de
archivos y dispositivos. Los ordenadores con sistemas operativos de red son autnomos,
aunque conocen la existencia de la red y estn en disposicin de comunicarse con otros
ordenadores de la misma. Este tipo de sistemas operativos son los ms utilizados en los tipos
de sistemas distribuidos comentados anteriormente.

Los sistemas operativos distribuidos crean en el usuario la ilusin de estar en un slo


ordenador, aunque en realidad el sistema operativo controla todos los ordenadores de la red
dando al usuario acceso transparente a los recursos en todos los equipos de la misma. Con este
tipo de sistemas operativos el usuario no sabe en que ordenador se ejecutan sus procesos, ni
donde se almacenan sus archivos, ni que equipo tiene conectado los distintos perifricos a los
que tiene acceso. Un ejemplo de sistema operativo distribuido es Amoeba10.

1.3.4. Sistemas de tiempo real


Se utilizan cuando tenemos requerimientos rgidos de tiempo en la ejecucin de las tareas o en el
procesamiento de flujos de datos. Por lo tanto, se usa frecuentemente en dispositivos de control
dedicados a una tarea especfica; dnde se deben tomar datos de uno o varios sensores, para
posteriormente analizar dichos datos y accionar algn mecanismo de control dentro de unos
mrgenes rgidos de tiempo. Los sistemas de tiempo real se suelen utilizar en: algunos sistemas de
control industrial, domtica, armamento, la inyeccin electrnica de combustible en los
automviles, el procesamiento de imgenes mdicas, etc..

Los sistema de tiempo real estn muy relacionados con los sistemas empotrados. Estos sistemas
estn tanto en el motor de los automviles y los robots que los fabrican, como en reproductores de

10 Amoeba es un sistema operativo de investigacin distribuido de estructura microkernel (vase el apartado 2.3.3)
escrito por Andrew S. Tanenbaum en Vrije Universiteit. Ms informacin en http://www.cs.vu.nl/pub/amoeba/.

1-10
1.3. Tipos de sistemas operativos Sistemas Operativos - 2014/2015

DVD, microondas, etc. Los sistemas empotrado realizan tareas muy especficas, sus sistemas
operativos tienen caractersticas muy limitadas y no suelen tener interfaz de usuario.

Los sistemas de tiempo real pueden ser clasificados en sistemas de tiempo real estricto y sistemas
de tiempo real flexible:

Los sistemas de tiempo real estricto o hard real-time garantizan que las tareas sern
realizadas dentro de unos mrgenes estrictos de tiempo. Para ello todos los imprevistos que
puedan ocasionar retardos en el funcionamiento del sistema operativo deben estar
perfectamente limitados en tiempo. Por lo tanto, la memoria virtual y otras facilidades que
abstraen del funcionamiento real del hardware no estn presentes en este tipo de sistemas
porque introducen impredecibilidad. Los sistemas de tiempo real estricto no son compatibles
con los sistemas de tiempo compartido.

Los sistemas de tiempo real flexible o soft real-time son tiles cuando hay tareas que tienen
mayor importancia que el resto por lo que deben ser realizadas con mayor prioridad y esta
prioridad debe ser conservada hasta que terminan. El tiempo real flexible no sirve cuando se
tienen tareas con limitaciones precisas de tiempo porque no hay manera de garantizar que
dichas restricciones se van a cumplir. Sin embargo si es til para tareas relacionadas con la
multimedia, la realidad virtual, etc. Este tipo de tiempo real est disponible en la mayor parte
de los sistemas operativos de propsito general pues es compatible con la memoria virtual y
otras facilidades propias de los sistemas de tiempo compartido.

1.3.5. Sistemas de mano


Los sistemas de mano incluyen a los tablets, lectores de libros electrnicos y telfonos mviles. Los
desarrolladores de sistemas de mano y aplicaciones para estos sistemas deben enfrentarse a diversos
desafos. Muchos de ellos vienen originados por el tamao limitado de los dispositivos y la
alimentacin mediante el uso de bateras. Debido a esas limitaciones muchos sistemas de mano
tienen poca cantidad de memoria, procesadores lentos y pantallas pequeas.

1.4. Historia de los sistemas operativos


La historia de los sistemas operativos se puede dividir en 5 grandes etapas o generaciones.

1-11
Sistemas Operativos - 2014/2015 1. Introduccin

1.4.1. 1 Generacin (1945-55)

a) Caractersticas
Sin sistema operativo.

Slo hardware, sin lenguajes de programacin.

b) Ejemplos
Mainframe IBM 701 y 704.

1.4.2. 2 Generacin (1955-64)

a) Caractersticas
Sistemas operativos de procesamiento por lotes.

Sistema operativo bsico. Se utilizan lenguajes de programacin.

b) Ejemplos
El primer sistema operativo fue desarrollado por General Motors Research Laboratory en 1956
para su mainframe IBM 701 (vase la Figura 1.4) con el fin de automatizar la carga de los
trabajos.

1.4.3. 3 Generacin (1965-1968)

a) Caractersticas
Sistemas operativos multiprogramados.

Ms lenguajes de programacin y multiprogramacin.

b) Ejemplos
IBM OS/360. Desarrollado por IBM para su mainframe System/360.

1-12
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015

Figura 1.4: Instalacin de un mainframe IBM 702.

Fue el primero en hacer los dispositivos de almacenamiento de acceso aleatorio un


requisito para poder operar.

Anunciado en 1964, fue liberado en 1966 con un ao de retraso. Los motivos


fundamentales fueron ciertos problemas de organizacin interna de la compaa y la
falta de experiencia en proyectos de tal envergadura, pues las previsiones iniciales eran
de 1 milln de lneas de cdigo y miles de componentes de software. La experiencia
negativa del desarrollo del IBM OS/360 condujo al nacimiento de la ingeniera del
software.

1.4.4. 4 Generacin
Esta generacin abarca desde mediados de los aos 60 hasta finales de la dcada de los 70.

a) Caractersticas
Sistemas operativos de tiempo compartido.

Aparecen los programas interactivos y las mquinas virtuales.

1-13
Sistemas Operativos - 2014/2015 1. Introduccin

Figura 1.5: Mainframe GE-6180 con sistema operativo MULTICS (MIT ca. 1976)

b) Ejemplos
MULTICS. Fue anunciado en 1964 como el primer sistema operativo de propsito general
fruto de la colaboracin entre el MIT, General Electrics y Bell Labs (vase la Figura 1.5).

Primer sistema operativo en proporcionar un sistema de archivos jerrquico, un


intrprete de comandos implementado como programa de usuario, listas de control de
acceso individuales para cada archivo, enlazado dinmico, etc.

1-14
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015

Elimin la separacin entre el espacio de direcciones de los procesos y los archivos. En


un sistema moderno eso sera como si cada archivo estuviera mapeado en memoria
(vase el apartado 4.5.6).

VM/CMS. Es un sistema de IBM utilizado en los mainframe System/360, System/370,


System/390 y zSeries.

El desarrollo comenz en 1965 y la primera versin estuvo disponible a primeros de


1966.

VM es una mquina virtual que proporciona a cada usuario la sensacin de tener su


propio mainframe personal.

CMS es un sistema monousuario diseado para operar fundamentalmente encima de


VM.

Figura 1.6: Miniordenador DEC PDP-7.

1-15
Sistemas Operativos - 2014/2015 1. Introduccin

UNIX. Desarrollado originalmente por Bell Labs en 1970 para los sistemas PDP-11/20.

La autora del mismo se le atribuye a un grupo de programadores, liderados por Ken


Thompson, que decidieron rehacer el trabajo de MULTICS pero a menor escala despus
de que Bell Labs abandonara el proyecto en 1969. Inicialmente se llam UNICS y fue
desarrollado para los sistemas PDP-7 (vase la Figura 1.6).

La primer versin, como muchos otros sistemas operativos anteriores, estaba


implementada en ensamblador. Dennis Ritchie y Brian Kernighan disearon un nuevo
lenguaje llamado C especialmente pensado para que UNIX fuera escrito con l. Eso
permiti que UNIX pudiera ser modificado fcilmente para funcionar en otros
ordenadores. Adems el cdigo era ms conciso y compacto, lo que se tradujo en el
aumento de la velocidad de desarrollo de UNIX.

AT&T, la compaa matriz de Bell Labs, no poda competir en la industria de los


ordenadores por lo que puso el cdigo fuente de UNIX a disposicin de universidades,
compaas privadas y del gobierno de los Estados Unidos.

Una de las ms importantes versiones de UNIX fue desarrollada por la Universidad de


California en Berkeley. Esta versin implementaba el estndar de comunicaciones
TCP/IP, el cual permiti convertir la cerrada ARPANET en la abierta Internet.

En la actualidad se puede considerar que hay dos grandes familias de UNIX. Por un lado
AT&T UNIX System V, del que derivan sistemas tales como SCO OpenServer,
Oracle/Sun Microsystems Solaris Operating Environment y SCO UnixWare. Y por el
otro, BSD11 del que derivan FreeBSD, NetBSD, OpenBSD, Darwin y DragonFly BSD,
entre muchos otros.

VMS. Es un sistema operativo diseado originalmente por Digital Equipment Corporation


ahora propiedad de HP en 1978 para operar en sistemas VAX. Posteriormente fue portado a
sistemas DEC Alpha e Intel Itanium.

IBM OS/400. Es un sistema utilizado en la familia IBM AS/400 ahora llamada iSeries.

OS/400 y AS/400 fueron introducidos en el mercado en 1988.

La familia IBM AS/400 es una familia de minicomputadores. Este termino en desuso

11 La siglas BSD provienen de Berkeley Software Distribution.

1-16
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015

hace referencia a mquinas multiusuario de rango medio, entre los mainframes y los
sistemas de escritorio.

1.4.5. 5 Generacin (aos 1980, 1990 y 2000):


Esta generacin abarca desde la dcada de los 80 hasta la actualidad.

a) Caractersticas
Sistemas operativos de escritorio y ordenadores personales (PC)12.

Monousuario, multitarea, sistemas distribuidos, sistemas paralelos, sistemas de tiempo real,


etc.

b) Ejemplos
CP/M. Sistema operativo estndar para la primera generacin de microcomputadores13.

Creado por Digital Research, Inc., fundada por Gary Kildall, para ser el sistema
operativo de los microordenadores basados en Intel 8080/85 y Zilog Z80.

La combinacin del CP/M junto al bus S-100 en el MITS Altair 8800 14 fue el primer
estndar industrial.

MS-DOS. Sistema operativo estndar para la segunda generacin de microcomputadores.

Fue el primer sistema operativo del IBM PC lanzado en 1981 y durante mucho tiempo
fue ampliamente utilizado en la plataforma PC compatible. No era ni multitarea ni
multiusuario.

MS-DOS fue creado por Seattle Computer Products con el nombre de 86-DOS, pero era
comnmente conocido como QDOS (Quick and Dirty Operating System). Microsoft
adquiri el sistema y lo vendi a IBM con el nombre de MS-DOS.

Tanto IBM como Microsoft lanzaron versiones de DOS, aunque originalmente IBM

12 Se puede observar una muestra de la interfaz grfica de usuario de algunos estos sistemas en http://goo.gl/0fFLN
13 Una microcomputadora es un ordenador que tiene un microprocesador. La primera generacin de
microcomputadoras tambin fue conocida como computadoras domsticas.
14 El MITS Altair 8800 fue un microcomputador diseado en 1975 basado en el procesador Intel 8080A. Hoy en da es
considerado el primer ordenador personal de la historia. Su bus de sistema, el S-100, se convirti en un estndar de
facto y su primer lenguaje de programacin fue el producto que ayud a fundar Microsoft, el Altair BASIC.

1-17
Sistemas Operativos - 2014/2015 1. Introduccin

solamente validaba y empaquetaba el software de Microsoft. Microsoft liberaba sus


versiones bajo el nombre de MS-DOS, mientras IBM las liberaba bajo el nombre de
PC-DOS.

OS/2. Sistema operativo creado por Microsoft e IBM y posteriormente desarrollado por IBM
en exclusiva. Se cre como el sistema operativo predilecto para la segunda generacin de
ordenadores personales de IBM, equipados con procesador Intel 80286.

OS/2 fue pensado como un sucesor con operacin en modo dual (vase el apartado
2.2.1) de MS-DOS y Microsoft Windows 2.0.

OS/2 1.0 fue anunciado en abril y liberado en diciembre de 1987 como un sistema
operativo en modo texto. La interfaz grfica de usuario prometida denominada
Presentation Manager se introdujo en la versin 1.1 en noviembre de 1988.

La colaboracin entre IBM y Microsoft termin en 1990 entre la liberacin de Windows


3.0 y la de OS/2 1.3. El aumento de popularidad de Windows llevo a Microsoft a dejar
de centrarse en el desarrollo de OS/2, lo que llev a IBM a preocuparse por los
continuos retrasos en el desarrollo de OS/2 2.0. Inicialmente ambas compaas
acordaron que IBM tomara el mantenimiento de OS/2 1.0 y el desarrollo de OS/2 2.0,
mientras Microsoft continuara desarrollando OS/2 3.0, que entonces era conocido como
NT OS/2. Sin embargo, finalmente Microsoft decidi renombrar NT OS/2 como
Windows NT, dejando el futuro desarrollo de OS/2 en manos de IBM.

OS/2 Warp 3, liberado en 1994, fue un sistema completo de 32-bit.

OS/2 Warp 4, fue liberado en 1996. Poco despus de su lanzamiento IBM anunci que
OS/2 desaparecera.

Windows 3.x. La familia Windows 3.x de Microsoft Windows fue desarrollada desde 1990
hasta 1994. La 3.0 fue la primera versin de xito de Windows, permitiendo a Microsoft
competir con el Macintosh de Apple Computer y el Commodore Amiga.

En 1983 Microsoft anuncia el desarrollo de Windows, una interfaz grfica de usuario


para su propio sistema MS-DOS, que estaba disponible para los IBM PC y compatibles
desde 1981.

Windows 3.x requera una instalacin previa de MS-DOS y era iniciado como un
programa ms, que poda ser terminado en cualquier momento devolviendo al usuario a

1-18
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015

la linea de comandos del MS-DOS. Este sistema operativo le proporcionaba a Windows


controladores de dispositivo para ciertas tareas, como el acceso al CD-ROM o a la
interfaz de red. Sin embargo, Windows necesitaba de aplicaciones especificas,
almacenadas en un formato ejecutable mucho ms complejo que el de los programas de
MS-DOS. Adems, debido a que MS-DOS no aislaba a las aplicaciones del hardware y
no se protega as mismo de los errores en dichas aplicaciones, Windows dispona de
mltiples controladores de dispositivo propios, as como su propio sistema de gestin de
la memoria. Es decir, que Windows realmente no se ejecutaba sobre MS-DOS sino que
haca uso de l. Por ello puede ser considerado un sistema operativo.

Windows 95, 98, Me. Sistemas operativos hbridos grficos de 16-bit/32-bit sucesores de
Windows 3.x.

Windows 95, liberado en 1995, fue el primer Windows unido a una versin de MS-DOS
especfica; aunque este hecho se intentaba mantener oculto. Entre las caractersticas de
Windows 95 se pueden destacar: mejoras significativas en la interfaz de usuario,
nombres de archivo de hasta 256 caracteres con conservacin de maysculas y
minsculas y multitarea expropiativa (vase el apartado 3.4.1) para las aplicaciones de
32-bit.

Windows 98 fue liberado el 25 de junio de 1998.

Windows Me, liberado el 14 de septiembre de 2000, fue la ltima versin de la familia


de sistemas operativos hbridos de 16-bit/32-bit que sucedi a Windows 3.1.

Windows NT. Sistema operativo de 32-bit antecesor del actual Windows 7.

Su desarrollo empez en 1988 con el nombre de OS/2 3.0. Cuando Windows 3.0 fue
liberado en mayo de 1990 tuvo tanto xito que Microsoft decidi cambiar la API 15 del
an en desarrollo NT OS/2 como era conocido en la poca pasando de ser una versin
extendida de la API de OS/2 a una versin extendida de la API de Windows. Esta
decisin caus tensin entre Microsoft e IBM y provoc que finalmente la colaboracin
terminara.

Microsoft contrat a un grupo de desarrolladores de Digital Equipment Corporation para

15 Una interfaz de programacin de aplicaciones o API (del ingls application programming interface) es el conjunto
de funciones, procedimientos o mtodos que ofrece el sistema operativo para ser utilizado por las aplicaciones.

1-19
Sistemas Operativos - 2014/2015 1. Introduccin

crear Windows NT, por lo que muchos de sus elementos reflejan la experiencia anterior
de DEC en VMS.

Las API soportadas por Windows NT por ejemplo Win32, POSIX y OS/2 2.1 son
implementadas como subsistemas encima de un API nativo pblicamente no
documentado. Esta estructura en subsistemas fue lo que permiti la adopcin tarda de la
API de Windows, tal y como hemos comentado anteriormente.

Windows NT 3.1 la primera versin de Windows NT, liberada el 13 de julio de 1993


era un sistema operativo microkernel (vase el apartado 2.3.3) multiplataforma que
corra sobre procesadores Intel IA-32, DEC Alpha, MIPS R4000 y PowerPC.

Windows NT 4.0 fue la ltima versin en soportar plataformas distintas a Intel IA-32.
Aunque el desarrollo de Windows 2000 para Alpha continu hasta 1999, cuando
Compaq dej de soportar Windows NT en esa arquitectura. Adems Windows NT 4.0
integr en el ncleo ms funciones por ejemplo parte del subsistema grfico para
obtener mayor rendimiento.

Windows 2000, XP, Vista, 7. Sistemas operativos sucesores de Windows NT.

Windows 2000 o Windows NT 5.0, liberado el 17 de febrero de 2000 fue el primer


sistema operativo de la familia NT al que se le eliminaron las siglas del nombre por
motivos de marketing. El objetivo era favorecer la unificacin de las dos familias de
sistemas operativos Windows Windows 9x y Windows NT alrededor de la tecnologa
NT.

Windows XP o Windows NT 5.1 complet el proceso de unificacin de las dos


familias de sistemas operativos Windows, forzando la extincin de la familia Windows
9x al sustituirla con una versin de Windows XP, denominada Windows XP Home
Edition, especfica para la informtica domstica.

GNU/Linux. Se trata del ms famoso ejemplo de software libre y de desarrollo de fuente


abierta.

El proyecto GNU se inici en 1983 con el fin de desarrollar un sistema operativo estilo
UNIX, incluyendo herramientas de desarrollo de software y aplicaciones de usuario,
hecho enteramente de software libre.

El ncleo Linux fue inicialmente escrito como hobby por el estudiante universitario fins

1-20
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015

Linus Torvalds mientras estudiaba en la Universidad de Helsinki. Torvalds originalmente


usaba Minix, un sistema operativo simplificado escrito por Andrew Tanenbaum para
ensear diseo de sistemas operativos. Sin embargo, el hecho de que Tanenbaum no
diera soporte a las mejoras de su sistema operativo introducidas por otros
desarrolladores, llev a Torvalds a escribir un sustituto de Minix.

En 1991, cuando se liber la primera versin del ncleo Linux, el proyecto GNU haba
desarrollado todos los componentes necesarios del sistema excepto el ncleo. Torvalds y
otros desarrolladores rpidamente adaptaron Linux para que funcionara con los
componentes de GNU, creando un sistema operativo completamente funcional.

El ncleo fue licenciado bajo la GNU General Public License (GPL) pero no es parte del
proyecto GNU. El proyecto GNU tiene su propio kernel denominado Hurd, pero sigue
en desarrollo.

Mach. Es un ncleo de sistema operativo desarrollado en la Universidad Carnegie-Mellon


(CMU). El proyecto en CMU se desarroll desde 1985 hasta 1994.

Mach explora el concepto que denominamos como microkernel (vase el apartado


2.3.3).

En algn momento se pens que Mach podra dominar el universo de los sistema
operativos debido a las ventajas de los sistemas microkernel. El mayor esfuerzo para
conseguirlo hasta la fecha es GNU/Hurd pero lleva ms de una dcada de retraso. Sin
embargo, otros sistemas operativos microkernel han tenido ms xito, como es el caso de
QNX.

Apple Computers seleccion OpenStep como base para el sucesor de su clsico Mac OS.
OpenStep es realmente una versin actualizada de NeXTSTEP, que era un sistema
basado en un ncleo Mach 2.5 con porciones del sistema BSD de la Universidad de
Berkeley. Por lo tanto, la mezcla de Mach con BSD16 de OpenStep es la base del sistema
operativo Mac OS X de Apple.

16 A la base del sistema operativo Mac OS X se la denomina Darwin. Concretamente se trata de un sistema FreeBSD
portado para correr sobre el ncleo Mach.

1-21
1956 1976 1991 2001
1952 Linux
Primer sistema operativo. CP/M GNU Hurd El ncleo libre Windows XP
Mainframe General Motors Research S.O. de la 1 generacin Ncleo del ms utilizado con Su versin Home
IBM 701 Laboratory. Para IBM 701. de micro ordenadores. proyecto GNU. el proyecto GNU. extingui la
familia de
Windows 9x.
1964 1966 1988
1945 1995
Multics IBM OS/360 OS/2
Primer sistema de Nace la ingeniera del Sistema de 16bits Windows 95
propsito general. software. pensado como Familia de sistemas
sucesor de MS-DOS operativos hbridos
1970 1978
de 16/32bits.
1955 1964 1985
Digital VMS 1994
UNIX
Para VAX. Mach
Ncleo microkernel OS/2 3.0
de la CMU. Sistemas operativo
de IBM de 32bits.
1965 1983
1993
UNIX System V Proyecto GNU
1 Generacin Proyecto de Windows NT 3.1
UNIX BSD software libre. Llamado NT OS/2
Sin sistema operativos
ni lenguajes de programacin 2 Generacin hasta que IBM
Sistemas operativos de 1981 abandon el
1968 proyecto al Microsoft
procesamiento por lotes
4 Generacin MS-DOS sustituir la API OS/2
Uso de lenguajes por la API Win32.
de programacin
S.O. del IBM PC.
Sistemas operativos de
tiempo compartido
Hay programas interactivos
y mquinas virtuales 1980

3 Generacin 5 Generacin
Sistemas operativos Sistemas de escritorio
multiprogramados
Monousuario y multiusuario, multitarea, sistemas distribuidos,
Ms lenguajes de programacin, sistemas en cluster, sistemas de tiempo real, etc.
multiprogramacin
2. Estructura de los sistemas operativos

2.1. Organizacin de los sistemas operativos


El estudio de la organizacin interna de los sistemas operativos requiere del anlisis de tres aspectos
diferentes:

1. Los componentes del sistema operativo y sus interconexiones (vase el apartado 2.1.2).

2. Los servicios que el sistema operativo proporciona a travs del funcionamiento coordinado de
dichos componentes (vase la Figura 2.1).

3. La interfaz de programacin que el sistema operativo ofrece a usuarios y programadores como


forma de acceso a dichos servicios.

El estudio de los componentes del sistema operativo lo dejaremos para ms adelante, tras ver la
forma usual en la que los programas acceden a los servicios del sistema operativo y, por tanto, en la
que se comunican indirectamente con dichos componentes. Respecto a los servicios que el sistema
operativo proporciona, no entraremos en ello puesto que cada uno ofrece servicios diferentes,
aunque siempre es posible identificar unos pocos tipos comunes a todos.

2.1.1. Interfaz de programacin de aplicaciones


Un sistema operativo proporciona un entorno controlado para la ejecucin de programas. Dicho
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

aplicaciones

interfaz de programacin de aplicaciones

servicio de servicio de
servicio de servicio de
operaciones con manipulacin de
ejecucin de programas operaciones de E/S
la memoria archivos

gestor del
gestor del sistema
gestor de procesos gestor de memoria gestor de E/S almacenamiento
de archivos
secundario

hardware

Figura 2.1: Diagrama general de organizacin de los sistemas operativos.

entorno debe proporcionar ciertos servicios que pueden ser accedidos por los programas a travs de
una interfaz de programacin de aplicaciones o API (Application Programming Interface).
Algunas de las APIs disponibles para los desarrolladores de aplicaciones son la API Win32 en
sistemas Microsoft Windows y la API POSIX para sistemas compatibles POSIX 17 como es el
caso de los diferentes UNIX, Linux y Mac OS X.

Concretamente, junto a cada interprete o compilador de un lenguaje de programacin suele ir una


librera estndar que ofrece clases y/o funciones con las que los programas pueden acceder a los
servicios del sistema operativo y realizar las tareas ms comunes. Estas libreras generalmente no
forman parte del sistema operativo, sino de las herramientas de desarrollo de cada lenguaje de
programacin, y constituyen la interfaz de programacin de aplicaciones del lenguaje al que
acompaan.

Las libreras estndar necesitan acceder a los servicios del sistema operativo para, a su vez, dar
servicio a los programas que las usan. Es decir, cuando un programa invoca alguna funcin o
mtodo de la librera estndar que lo acompaa, es muy probable que sta necesite invocar uno o
ms servicios del sistema operativo para atender la peticin convenientemente. Para ello las

17 POSIX (Portable Operating System Interface for Unix) es el nombre de una familia de estndares que definen una
interfaz de programacin de aplicaciones para sistemas operativos. Esto permite que un mismo programa pueda ser
ejecutado en distintas plataformas, siempre que sean compatibles con POSIX. La prctica totalidad de los sistemas
UNIX modernos son compatibles POSIX ya que la especificacin deriva de la interfaz tpica de ese tipo de sistemas.

2-24
2.1. Organizacin de los sistemas operativos Sistemas Operativos - 2014/2015

libreras estndar utilizan la librera del sistema o libreras del sistema, en el caso de que hayan
varias que acompaa al sistema operativo. La librera del sistema si forma parte del sistema
operativo y contiene un conjunto de clases y/o funciones generalmente ms primitivas que las de
la librera estndar de los lenguajes de programacin que los programas deben utilizar para
acceder a los servicios del sistema operativo. Es decir, la librera del sistema constituye la interfaz
de programacin de aplicaciones del sistema operativo. Es muy comn que esta interfaz est
implementada para ser usarla con programas en lenguaje C, lo que permite que tanto los programas
en C como en C++ la puedan utilizar directamente. Sin embargo con otros lenguajes de
programacin esto no suele ser posible, por lo que no queda ms remedio que acceder a los
servicios del sistema operativo a travs de la librera estndar del lenguaje en cuestin.

Algunos de los servicios ofrecidos pueden ser implementados en la propia librera del sistema pero
en la mayor parte de los casos sta debe solicitar dichos servicios al resto del sistema operativo. La
librera del sistema, al igual que la estndar y otras libreras utilizadas por el programa, se cargan
dentro de la regin de memoria asignada al proceso donde se ejecuta el programa que las utiliza.
Por lo tanto, la invocacin de sus mtodos y funciones se realiza como si fueran cualquier otro
mtodo o funcin del programa. Sin embargo el cdigo del ncleo del sistema operativo suele estar
en una ubicacin diferente que, desde el punto de vista de los programas, no es conocida y
generalmente est protegida frente a accesos indebidos (vase el apartado 2.2.2). Eso significa que

#
# Fragmento de cdigo para escribir SIZE bytes desde la direccin BUFFER al
# archivo con el descriptor FILEDES.
#
# Prototipo en C de la llamada al sistema write()
#
# ssize_t write (int FILEDES, const void *BUFFER, size_t SIZE)
#

# ...
lw $a0,FILEDES # cargar FILEDES
la $a1,BUFFER # cargar BUFFER
lw $a2,SIZE # cargar SIZE
li $v0,4 # cargar id. de la llamada write()
syscall # llamar al sistema
# v0 contiene el valor de retorno
# que es el nmero de bytes escritos
# ...

Figura 2.2: Llamada al sistema en Linux MIPS.

2-25
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

para que la librera del sistema invoque los servicios que necesita hace falta un procedimiento
diferente, al que se le denomina llamada al sistema.

Las llamadas al sistema proporcionan una interfaz con la que los procesos pueden invocar los
servicios que el sistema operativo ofrece. Estas llamadas estn habitualmente disponibles como
instrucciones en lenguaje ensamblador (vase la Figura 2.2) pero generalmente los programas no las
utilizan directamente sino que emplean la interfaz ofrecida por la librera del sistema, que su vez se
implementa mediante invocaciones a las llamadas al sistema.

En la Figura 2.3 se ilustra el papel de todos los elementos comentados con el ejemplo de un
programa en C++ que invoca el mtodo std::ofstream::open():

1. El programa invoca el mtodo std::ofstream::open() de la librera estndar de C++ para


abrir un archivo determinado.

2. La librera estndar utiliza la librera de sistema, de la que invoca a varias funciones, para
realizar la tarea encomendada. Entre las funciones llamadas est fopen(), que se utiliza para
abrir el archivo indicado.

sistema operativo

llamada al sistema

fopen()

librera del sistema


int fd = syscall(__NR_open, filename, ...); (glibc)

std::ofstream::open()

librera estndar de
FILE *f = fopen(filename, ...); C++ (libstdc++)

ofstream ofs;
ofs.open(filename); programa en C++

proceso

Figura 2.3: Elementos de la interfaz de programacin de aplicaciones en GNU/Linux.

2-26
2.1. Organizacin de los sistemas operativos Sistemas Operativos - 2014/2015

3. La librera del sistema utiliza los servicios del sistema operativo, expuestos mediante la
interfaz de llamadas al sistema, para realizar la tarea encomendada por la invocacin de
fopen(). Entre las llamadas al sistema utilizadas est open, que le dice al sistema operativo

que deseamos abrir el archivo indicado.

4. Al realizar la llamada el sistema operativo toma el control deteniendo la ejecucin del proceso
que la solicita. Entonces se realiza la tarea mediante el funcionamiento coordinado de los
diferentes componentes del sistema (vase el apartado 2.1.2).

a) Invocacin de las llamadas al sistema


Generalmente una llamada al sistema se invoca mediante una instruccin especfica en lenguaje
ensamblador que genera una excepcin18 por ejemplo la instruccin int 80 en la Figura 2.2 que
es capturada por el sistema operativo, deteniendo la ejecucin del proceso que la invoc. Cuando se
realiza la llamada es necesario que el proceso identifique la operacin que quiere que se realice.
Esto se suele hacer poniendo un nmero identificativo de la llamada en un registro concreto de la
CPU. Por ejemplo, el nmero de la llamada al sistema open del ejemplo de la Figura 2.3 es 219.

Sin embargo, una llamada al sistema suele requerir ms informacin que simplemente la identidad
de la llamada. Si por ejemplo se quisiera leer un bloque de datos desde un almacenamiento
secundario, al menos se debera indicar el archivo o dispositivo desde el que se desea realizar la
lectura, as como la direccin y tamao de la regin de la memoria donde se quiere que los datos
sean copiados. En concreto hay tres mtodos para pasar parmetros a una llamada al sistema:

En el paso de parmetros por registros se cargan los parmetros de la llamada al sistema en


los registros de la CPU antes de realizar la llamada. Este mtodo es el ms eficiente, pero
limita el nmero de parmetros al nmero de registros disponibles en la CPU. Es utilizado, por
ejemplo, en Linux para IA-3220 cuando la llamada al sistema tiene menos de seis parmetros
(vase la Figura 2.2).

En el paso de parmetros por tabla en memoria se copian los parmetros de la llamada al

18 Una excepcin es una interrupcin generada por software, que puede ser debida a un error por ejemplo una divisin
por cero o un acceso no vlido a memoria o a una llamada al sistema de un proceso para que se ejecute un servicio
del sistema operativo.
19 En GNU/Linux se puede conocer el nmero correspondiente a cada llamada al sistema soportada por el ncleo
consultado el listado del archivo /usr/include/asm/unistd.h.
20 IA-32 (Intel Architecture, 32-bit), conocida en la actualidad de manera genrica como x86 o i386, es la arquitectura
del conjunto de instrucciones de los procesadores Intel de 32 bits. Concretamente es una extensin de 32 bits,
implementada por primera vez en el Intel 80386, para la arquitectura x86 original de 16 bits.

2-27
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

sistema en una tabla en memoria, de manera que la direccin de dicha tabla debe ser cargada
en un registro de la CPU antes de la llamada al sistema. Evidentemente no limita el nmero de
parmetros que pueden ser pasados a una llamada al sistema. Por ejemplo, es utilizado en
Linux IA-32, cuando la llamada al sistema tiene ms de cinco parmetros, y en Microsoft
Windows.

En el paso de parmetros por pila se insertan los parmetros de la llamada al sistema en la


pila del proceso. En este caso el sistema operativo es el encargado de extraer los parmetros de
la pila durante la llamada al sistema. Al igual que en el caso anterior tampoco se limita el
nmero de parmetros que pueden ser pasados. Es utilizando, por ejemplo, en FreeBSD.

En cualquier caso, sea cual sea el mtodo utilizado, el sistema operativo debe comprobar de
manera estricta los parmetros pasados en la llamada al sistema antes de realizar cualquier
operacin, puesto que nunca debe confiar en que los procesos hagan su trabajo correctamente. A fin
de cuentas una de las funciones del sistema operativo es el control de dichos procesos.

2.1.2. Componentes del sistema


Como ya hemos comentado en diversas ocasiones en este tema, el sistema operativo ofrece una
serie de servicios a travs del funcionamiento coordinado de los diferentes componentes que lo
forman. A fin de cuentas, crear un software tan complejo como un sistema operativo no es sencillo,
por ello resulta ms prctico dividirlo en piezas ms pequeas especializadas en aspectos concretos
de la gestin del sistema.

a) Gestin de procesos
La gestin de los procesos es un elemento central de todo sistema operativo ya que el proceso es la
unidad de trabajo en cualquier sistema operativo moderno:

Un proceso puede ser considerado como un programa en ejecucin, es decir, cuando las
instrucciones del programa son ejecutadas por una CPU. Un proceso es un entidad activa que
necesita recursos CPU, memoria, archivos, E/S que se le asignan cuando es creado o cuando
lo solicita durante la ejecucin. Cuando el proceso termina el sistema operativo reclama de
estos recursos aquellos que sean reutilizables.

Un programa no es un proceso, es una entidad pasiva; como el contenido de un archivo en


disco con las instrucciones que algn da una CPU ejecutar. Un programa no puede hacer

2-28
2.1. Organizacin de los sistemas operativos Sistemas Operativos - 2014/2015

ningn tipo de trabajo a menos que sus instrucciones sean ejecutadas por una CPU pero si eso
ocurre, ya no sera un programa sino un proceso.

La CPU ejecuta las instrucciones de cada proceso una detrs de otra, de manera que para
conocer la siguiente instruccin a ejecutar cada proceso tiene un contador de programa que se
lo indica a la CPU. Por tanto, aunque dos procesos estn asociados al mismo programa no
pueden ser considerados el mismo proceso, ya que la secuencia de ejecucin de instrucciones
puede ser distinta al tener cada uno un contador de programa independiente.

Por el momento estamos considerando que proceso y trabajo (vase el apartado 1.3.1) hacen
referencia al mismo concepto. Sin embargo ms adelante veremos que el segundo es mucho ms
general que el primero puesto que un proceso puede colaborar con otros procesos para desarrollar
un trabajo determinado (vase el apartado 3.1.7).

Responsabilidades de la gestin de procesos


El sistema operativo es responsable de la siguientes actividades relacionadas con la gestin de
procesos:

Crear y terminar procesos.

Suspender y reanudar los procesos.

Proporcionar mecanismos para la sincronizacin de procesos.

Proporcionar mecanismos para la comunicacin entre procesos.

Proporcionar mecanismos para el tratamiento de interbloqueos.

b) Gestin de la memoria principal


La memoria principal es un recurso fundamental para las operaciones de cualquier sistema
operativo moderno. Esto es as porque generalmente es el nico almacenamiento al que la CPU
tiene acceso directo, por lo que para que un programa pueda ser ejecutado debe ser copiado a la
memoria principal. Adems sirve de zona de intercambio de datos entre la CPU y los dispositivos
de E/S. Por ejemplo, para que la CPU pueda procesar los datos de un archivo en disco, stos
primero deben ser transferidos a la memoria principal.

Para mejorar el aprovechamiento de la CPU y la respuesta al usuario es necesario tener copiados


varios programas en la memoria al mismo tiempo. Puesto que dichos programas deben compartir la

2-29
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

memoria existe automticamente la necesidad de que el sistema operativo disponga de un


componente de gestin de la memoria principal.

Responsabilidad de la gestin de la memoria


El componente de gestin de la memoria debe asumir las siguientes responsabilidades:

Controlar qu partes de la memoria estn actualmente en uso y cules no.

Decidir que procesos aadir o extraer de la memoria cuando hay o falta espacio en la misma.

Asignar y liberar espacio de la memoria principal segn sea necesario.

c) Gestin del sistema de archivos


Los ordenadores pueden almacenar informacin en diferentes tipos de medios fsicos por ejemplo
en discos magnticos, en CD/DVD-ROM, en memorias de estado slido, etc. cada uno de los
cuales tiene caractersticas propias. El acceso a cada tipo medio es controlado por un dispositivo
por ejemplo el controlador de disco, la unidad de CD-ROM, etc. que tambin tiene caractersticas
propias. Para simplificar todo esto el sistema operativo proporciona una visin lgica uniforme de
todos los sistemas de almacenamiento. Es decir, abstrae las propiedades fsicas de los dispositivos
de almacenamiento para definir una unidad de almacenamiento lgico, el archivo. Un archivo o
fichero es una coleccin de informacin relacionada definida por su creador por ejemplo
programas, imgenes, datos. Los archivos normalmente se organizan en directorios para facilitar
su uso.

Responsabilidades de la gestin del sistema de archivos


El sistema operativo es responsable de la siguientes actividades relacionadas con la gestin del
sistema de archivos:

Crear y borrar archivos.

Crear y borrar directorios para organizar los archivos.

Soportar primitivas21 para la manipulacin de archivos y directorios.

Mapear en memoria archivos del almacenamiento secundario.

21 El trmino primitivas hace referencia a funciones que realizan operaciones muy bsicas. Estas operaciones bsicas
pueden ser combinadas para realizar operaciones ms complejas.

2-30
2.1. Organizacin de los sistemas operativos Sistemas Operativos - 2014/2015

Copias de seguridad de los archivos en sistemas de almacenamiento estables y seguros.

d) Gestin del sistema de E/S


El sistema de E/S oculta las peculiaridades del hardware al resto del sistema. El sistema de E/S
consta de:

Un componente de gestin de memoria con soporte para servicios de buffering22, caching23 y


spooling24. Estos servicios son habitualmente utilizados por el resto del sistema de E/S.

Una interfaz genrica de acceso a los controladores de dispositivo. Esta interfaz genrica hace
que el acceso de los procesos a los dispositivos sea a travs de una interfaz similar, sin
importar las particularidades de cada dispositivo. Por ejemplo, una caracterstica de los
sistemas UNIX es que cada dispositivo de E/S se representa como un archivo en el sistema de
archivos. Esto permite que los procesos utilicen para acceder a los dispositivos de E/S las
mismas primitivas que emplean para manipular los archivos.

Controladores de dispositivo que son quines conocen las peculiaridades especficas del
dispositivo para el que ha sido creado.

e) Gestin del almacenamiento secundario


Los programas que se desean ejecutar deben estar en la memoria principal, o almacenamiento
primario, pero sta es demasiado pequea para alojar todos los datos y todos los programas del
sistema. Adems, incluso aunque pudiera ser as, los datos almacenados en la memoria principal se
perderan en caso de que fallara la alimentacin. Por eso los ordenadores deben disponer de un
almacenamiento secundario para respaldar a la memoria principal. Hoy en da lo ms comn es
utilizar discos duros para esa tarea.

22 El buffering o uso de memoria intermedia es una estrategia para leer datos desde un dispositivo de E/S. La CPU
instruye al dispositivo para que escriba bloques de datos en la memoria de forma que la operacin se realiza
mientras la CPU est ocupada procesando los bloques ledos anteriormente desde el dispositivo. Al escribir en un
dispositivo de E/S el proceso es anlogo.
23 En el caching el sistema mantiene en la memoria principal una copia de los datos almacenados en los dispositivos de
E/S del sistema como, por ejemplo, en los discos. Esto mejora la eficiencia del sistema puesto que el acceso a la
memoria principal es ms rpido que el acceso a los dispositivos de E/S. La memoria principal es de tamao
limitado, por lo que slo se mantiene copia de los datos utilizados con mayor frecuencia.
24 El spooling se utiliza en dispositivos que no admiten el acceso simultaneo de varias aplicaciones a vez, como es el
caso de impresoras y unidades de cinta. Cuando varias aplicaciones intentan enviar un trabajo a una impresora el
sistema operativo lo intercepta para copiar los datos enviados a un archivo distinto para cada aplicacin. Cuando una
aplicacin termina de enviar el trabajo el archivo correspondiente es encolado para su impresin. As los archivos
son impresos de uno en uno.

2-31
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

Responsabilidades de la gestin del almacenamiento secundario


El sistema operativo es responsable de la siguientes actividades relacionadas con la gestin del
almacenamiento secundario:

Gestin del espacio libre.

Asignacin del espacio de almacenamiento.

Planificacin del acceso al disco.

f) Gestin de red
El componente de red se responsabiliza de la comunicacin entre los procesadores en sistemas
interconectados mediante una red de ordenadores por ejemplo en Internet o la red de rea local de
una oficina.

g) Proteccin y seguridad
Proteccin es cualquier mecanismo para controlar el acceso de los procesos y usuarios a los
recursos definidos por el sistema. Estos son necesarios cuando un sistema informtico tiene
mltiples usuarios y permite la ejecucin concurrente de varios procesos, pues as slo pueden
utilizar los recursos aquellos procesos que hayan obtenido la autorizacin del sistema operativo.
Adems la proteccin tambin permite mejorar la fiabilidad al permitir detectar los elementos del
sistema que no operan correctamente. Un recurso desprotegido no puede defenderse contra el uso
o mal uso de un usuario no autorizado o incompetente.

Ejemplos tpicos de mecanismos de proteccin son el hardware de direccionamiento de memoria,


que se utiliza para que los procesos se ejecuten en su propio espacio de direcciones, y el
temporizador, que garantiza que ningn proceso toma el control de la CPU de manera indefinida.
Adems los registros de los dispositivos de E/S suelen estar protegidos del acceso directo de los
usuarios, lo que protege la integridad de los dispositivos, mientras que en algunos sistemas se
pueden establecer permisos sobre los archivos para garantizar que slo los procesos con la debida
autorizacin tienen acceso.

En todo caso, un sistema puede tener la proteccin adecuada pero estar expuesto a fallos y permitir
accesos inapropiados. Por eso es necesario disponer de mecanismos de seguridad que se encarguen
de defender el sistema frente a ataques internos y externos. Eso incluye a virus y gusanos, ataques

2-32
2.1. Organizacin de los sistemas operativos Sistemas Operativos - 2014/2015

de denegacin de servicio25, robo de identidad y uso no autorizado del sistema, entre muchos otros
tipos de ataque.

2.1.3. Interfaz de usuario


Aunque cada sistema operativo ofrece servicios diferentes, vamos a detenernos en uno comn e
importante para todos los sistemas que han sido diseados para que los usuarios interacten con
ellos directamente, la interfaz de usuario.

Las interfaces de usuario pueden ser de diferentes tipos:

Interfaz de lnea de comandos o intrprete de comandos, que permite que los usuarios
introduzcan directamente los comandos que el sistema operativo debe ejecutar. En algunos
sistemas este tipo de interfaz se incluye dentro del ncleo, pero en la mayor parte como
MSDOS y UNIX se trata de un programa especial denominado shell que se ejecuta cuando
un usuario inicia una sesin.

Interfaz de proceso por lotes, en la que los comandos y directivas para controlar dichos
comandos se listan en archivos que posteriormente pueden ser ejecutados. Este tipo de interfaz
es la utilizada en sistemas no interactivos, como los de procesamiento por lotes y los
multiprogramados. Tambin suele estar disponible en los sistemas de tiempo compartido, junto
con algn otro tipo de interfaz de usuario, como es el caso de la shell de los sistemas UNIX.

Interfaz grfica de usuario o GUI (Graphical User Interface) que permite a los usuarios
utilizar un sistema de ventanas y mens controlable mediante el ratn.

Puesto que la interfaz de usuario puede variar de un sistema a otro, y de un usuario a otro dentro del
mismo sistema, no se suele incluir como un componente bsico del sistema operativo, pero si como
un servicio til para los usuarios.

A parte de la interfaz de usuario, cualquier sistema operativo moderno incluye una coleccin de
programas del sistema. El papel de estos programas del sistema es proporcionar un entorno
conveniente para la ejecucin y desarrollo de programas. Entre los programas del sistema se suelen
incluir aplicaciones para manipular archivos y directorios, programas para obtener informacin
sobre el estado del sistema como la fecha y hora o la memoria y el espacio en disco disponible,

25 En los ataques de denegacin de servicio se intentan utilizar todos los recursos de sistema para evitar que ste pueda
dar servici a los usuarios legtimos.

2-33
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

herramientas de desarrollo como intrpretes, compiladores, enlazadores y depuradores,


programas de comunicaciones como clientes de correo electrnico y navegadores web, etc.

Adems, muchos sistemas operativos disponen de programas que son tiles para resolver los
problemas ms comunes de los usuarios. Entre estos programas se suelen incluir: editores de
archivos de texto y procesadores de texto, hojas de clculo, sistemas de base de datos, juegos, etc.
Ha esta coleccin de aplicaciones se la suele conocer con el trmino de utilidades del sistema o
programas de aplicacin.

2.2. Operacin del sistema operativo


Los sistemas operativos modernos pertenecen a un tipo de software que se dice que est controlado
mediante interrupciones:

Si no hay ningn proceso que ejecutar ni ningn dispositivo de E/S pide la atencin del
sistema, el sistema operativo debe permanecer inactivo esperado a que algo ocurra.

Los sucesos que requieren la activacin del sistema casi siempre se indican mediante una
interrupcin:

Cuando un proceso comente un error como una divisin por cero o un acceso a
memoria no vlido o un programa solicita un servicio al sistema operativo a travs de
una llamada al sistema lo que se genera es una excepcin que no es ms que una
interrupcin generada por software que despierta al sistema operativo para que haga lo
que sea ms conveniente.

Cuando los dispositivos de E/S requieren la atencin del sistema operativo por ejemplo
porque se ha completado una transferencia de datos se genera una interrupcin que
despierta al sistema operativo.

Dado que el sistema operativo y los procesos de usuarios comparten los recursos del sistema
informtico, necesitamos estar seguros de que un error que se produzca en un programa slo afecte
al proceso que lo ejecuta. Por ejemplo, en los sistemas de tiempo compartido y en cualquier otro
tipo de sistema operativo donde los programas tengan que compartir la memoria, como es el caso de
los sistema microprogramados un programa errneo puede modificar el cdigo de otro programa,
los datos de otro programa o el propio sistema operativo. Por eso es necesario establecer
mecanismos de proteccin frente a los errores en los programas que se ejecutan en el sistema.

2-34
2.2. Operacin del sistema operativo Sistemas Operativos - 2014/2015

2.2.1. Operacin en modo dual


Para evitar este tipo de problemas es necesario poder distinguir entre la ejecucin de cdigo del
sistema operativo y del cdigo de los programas de usuario. El mtodo que utilizan la mayor parte
de los sistemas operativos consiste en utilizar algn tipo de soporte en el hardware que permita
diferencia entre varios modos de ejecucin y restringir la utilizacin de las instrucciones peligrosas
instrucciones privilegiadas para que slo puedan ser utilizadas en el modo en el que se ejecuta
el cdigo del sistema operativo.

Como mnimo son necesarios dos modos de operacin diferentes:

En el modo usuario se ejecuta el cdigo de las tareas de los usuarios. Si se hace un intento de
ejecutar una instruccin privilegiada en este modo, el hardware la trata como ilegal y genera
una excepcin que es interceptada por el sistema operativo, en lugar de ejecutar la instruccin.

En el modo privilegiado tambin denominado modo supervisor, modo del sistema o modo
kernel se ejecuta el cdigo de las tareas del sistema operativo. El hardware es el encargado
de garantizar que las instrucciones privilegiadas slo pueden ser ejecutadas en este modo.

El modo actual de operacin puede venir indicado por un bit de modo que se aade al hardware de
la computadora, de forma que si por ejemplo el bit est a 0, el cdigo en ejecucin opera en modo
privilegiado mientras que si el bit est a 1, el cdigo en ejecucin opera en modo usuario.

Comnmente en el grupo de las instrucciones privilegiadas se suelen incluir:

Las instruccin para conmutar al modo usuario.

Las instrucciones de E/S.

Las instrucciones necesarias para la gestin de las interrupciones.

A continuacin podemos ver el ciclo de vida de la ejecucin de instrucciones en un sistema con


modo dual de operacin:

1. Inicialmente, al arrancar la computadora, el hardware se inicia en el modo privilegiado es


decir, con el bit de modo a 0. En este modo se carga el sistema operativo e inicia su
ejecucin.

2. El sistema operativo debe cambiar al modo usuario poniendo el bit de modo a 1 antes de
ceder el control a un proceso de usuario. Esto ocurre cuando es necesario que un proceso de
usuario contine o inicie su ejecucin (vase el apartado 3.4.2).

2-35
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

3. El hardware conmuta a modo privilegiado cuando ocurre una interrupcin o una excepcin
poniendo el bit de modo a 0 antes de pasar el control al cdigo del sistema operativo que se
encargar de tratarlas.

Esto ltimo es importante pues, como ya hemos comentado, los sistemas operativos estn
controlados mediante interrupciones. Al activarse el modo privilegiado cada vez que ocurre una
interrupcin podemos estar seguros de que las tareas del sistema operativo se ejecutar en modo
privilegiado.

Cuando se dispone de la proteccin del modo dual el hardware se encarga de detectar los errores de
ejecucin y de notificarlo al sistema operativo mediante excepciones, siendo responsabilidad de este
ltimo realizar un tratamiento adecuado de los mismos. Por lo general, si un programa falla de
alguna forma, como por ejemplo intentando utilizar una instrucciones ilegal o de acceder a una zona
de memoria invlida, el sistema operativo lo hace terminar de manera anormal.

2.2.2. Proteccin de la memoria


La memoria principal debe acomodar tanto el sistema operativo como a los diferentes procesos de
los usuarios. Por eso la memoria normalmente se divide en dos partes:

1. La primera parte sirve para albergar el sistema operativo residente 26. El sistema operativo
puede estar localizado tanto en la parte baja como en la parte alta de la memoria. El factor
determinante en la eleccin es la localizacin del vector de interrupciones. Puesto que en la
mayor parte de las arquitecturas ste reside en la parte baja de la memoria, normalmente el
sistema operativo tambin se aloja en la parte baja.

2. La segunda parte alberga los procesos de usuario.

Sin embargo en los sistemas operativos modernos los procesos no tienen acceso libre a toda
memoria fsica con el objeto de proteger a los procesos en ejecucin y al sistema operativo de
posibles errores en cualquiera de ellos:

El sistema operativo proporciona a cada proceso una vista privada de la memoria similar a
la que tendran si cada uno de ellos se estuviera ejecutando en solitario (vase la Figura 2.4).

A esa vista que tiene cada proceso de la memoria es a lo que se denomina espacio de

26 El termino sistema operativo residente hace referencias a los componentes del sistema operativo que deben estar
permanentemente en la memoria. Comnmente dicho conjunto de elementos componen el ncleo del sistema.

2-36
2.2. Operacin del sistema operativo Sistemas Operativos - 2014/2015

sistema operativo

proceso 2

proceso 1

sistema operativo
proceso 2
0x00000000 0x00000000
memoria fsica espacio de direcciones
del proceso 2

Figura 2.4: Mapeo de la memoria fsica en el espacio de direcciones virtual de un proceso.

direcciones virtual del proceso y est formado por el conjunto de direcciones que puede
generar la CPU para un proceso dado.

Durante los accesos a la memoria principal en tiempo de ejecucin estas direcciones virtuales
son convertidas en direcciones fsicas antes de ser enviadas a la memoria principal. Por tanto
las direcciones fsicas son las direcciones reales que ve la memoria, mientras que el espacio
de direcciones fsico es el conjunto de direcciones fsicas que corresponden a un espacio de
direcciones virtual dado.

La conversin de una direccin virtual en una fsica la realiza en tiempo de ejecucin un


dispositivo hardware denominado MMU (Memory-Management Unit). Las ventajas de este
dispositivo desde el punto de vista de la proteccin de la memoria son que:

Permite el aislamiento de los procesos, creando para cada uno la ilusin de que toda la
memoria es para l y evitando que un proceso pueda acceder a la memoria de otros procesos.

Permite marcar los modos de acceso autorizados en las diferentes regiones de la memoria
como por ejemplo lectura, escritura y ejecucin evitando que el cdigo ejecutado en modo
usuario tenga acceso a zonas a las que no debera tenerlo. El acceso a la memoria en un modo
no autorizado se considera una instruccin privilegiada, por lo que ese tipo de acceso desde el
modo usuario siempre genera una excepcin.

2-37
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

2.2.3. El temporizador
El temporizador se utiliza para poder estar seguros de que el sistema operativo es capaz de
mantener el control de la CPU, puesto que lo que no puede ocurrir es que un proceso entre en un
bucle infinito de manera que nunca devuelva el control al sistema operativo.

El temporizador se configura durante el arranque del sistema para interrumpir a la CPU a intervalos
regulares. As cuando el temporizador interrumpe el control se transfiere automticamente al
sistema operativo. Entonces este puede: conceder ms tiempo al proceso en ejecucin, detenerlo y
darle ms tiempo de CPU en el futuro o tratar la interrupcin como un error y terminar de manera
anormal el programa. Indudablemente las instrucciones que pueden modificar el contenido del
temporizador son instrucciones privilegiadas.

2.3. Sistemas operativos por su estructura


Ya hemos discutido anteriormente acerca de los componentes ms comunes en un sistema operativo
(vase el apartado 2.1.2). En esta seccin comentaremos su organizacin e interconexin dentro del
ncleo.

aplicaciones

programa residente del sistema

drivers de dispositivo de MSDOS

drivers de dispositivo de la BIOS

hardware

Figura 2.5: Ejemplo de sistema operativo con estructura sencilla (MSDOS).

2-38
2.3. Sistemas operativos por su estructura Sistemas Operativos - 2014/2015

2.3.1. Estructura sencilla


Los sistemas con estructura sencilla no tienen una estructura bien definida. Es decir, los interfaces
y niveles de funcionalidad no estn bien separados.

Por ejemplo, en MSDOS los programas de aplicacin podan acceder directamente a la BIOS o al
hardware para hace acceder a cualquier dispositivo (vase la Figura 2.5). Disponiendo de esa
libertad un programa errneo cualquiera poda corromper el sistema completo. Como el Intel 8086
para el que fue escrito MSDOS no proporcionaba un modo dual de operacin, los diseadores del
sistema no tuvieron ms opcin que dejar accesible el hardware a los programas de usuario.

Otro ejemplo es el de UNIX original, donde se combinaba un montn de funcionalidad en un


mismo nivel, el ncleo (vase la Figura 2.6). Es decir, todo lo que estaba por encima del hardware y
por debajo de las llamadas al sistema era el ncleo. Este proporciona la planificacin de CPU, la
gestin de la memoria, el soporte de los sistemas de archivos y muchas otras funcionalidades del
sistema operativo. En general se trata de una enorme cantidad de funcionalidad que es difcil de
implementar y mantener en un mismo nivel. Esa concentracin de funcionalidad en el ncleo
define a los sistemas de estructura sencilla como sistemas de ncleo moltico.

Tanto MSDOS como UNIX eran originalmente sistemas pequeos y simples, limitados por la

aplicaciones

intrpretes de comando
compiladores e intrpretes
modo libreras del sistema
usuario

modo
privilegiado llamadas al sistema

planificador de la
gestin de seales sistema de ficheros CPU
del terminal reemplazo de
sistema de E/S de
sistema de E/S de bloques pginas
caracteres paginacin bajo
drivers de disco y
drivers de terminal cinta demanda
memoria virtual

interfaz del ncleo con el hardware

hardware

Figura 2.6: Ejemplo de sistema operativo con estructura sencilla (UNIX original).

2-39
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

funcionalidades del hardware de su poca, que fueron creciendo ms all de las previsiones
originales. Lo cierto es que con mejor soporte del hardware se puede dividir el sistema operativo en
piezas ms pequeas y apropiadas que las del MSDOS y UNIX original.

2.3.2. Estructura en capas


Un mtodo para dividir el sistema operativo en piezas ms pequeas, con el fin de hacerlo ms
modular, es partirlo en capas. Las capas se seleccionan de manera que cada una use slo funciones
y servicios de las capas inferiores y de servicios slo a las capas superiores. Cada capa no tiene que
saber como se implementan las funciones que utiliza de las capas inferiores, slo debe conocer qu

logon OS/2 Win 16 Win 32 MSDOS POSIX


process applications applications applications applications applications

security OS/2 Win 16 MSDOS POSIX


subsystem subsystem VDM VDM subsystem

authentication
pakage

security account Win 32


manager database subsystem
modo
usuario

modo
privilegiado
executive
I/O manager
security virtual local
object process plug and
reference memory procedue window
file system manager manager play manager
monitor manager call facility manager
cache
manager
graphic
device device
driver kernel
drivers
I/O manager
network
drivers
hardware abstraction layer

hardware

Figura 2.7: Diagrama de bloques de Microsoft Windows XP.

2-40
2.3. Sistemas operativos por su estructura Sistemas Operativos - 2014/2015

es lo que hacen y como utilizar. Por lo tanto cada capa tiene la responsabilidad de ocultar la
existencia de estructuras de datos, operaciones y hardware a las capas de nivel superior. Este tipo de
sistemas son los que se denominan con estructura en capas.

Los sistemas con estructura en capas siguen concentrado la mayor parte de la funcionalidad en el
ncleo, por lo que tambin son sistemas monolticos aunque el ncleo es ms modular. Ejemplos de
este tipo de sistemas operativos son el IBM OS/2 y Microsoft Windows (vase la Figura 2.7).

Sin embargo esta forma de dividir los componentes del sistema operativo no est libre de
inconvenientes:

La mayor dificultad con los sistemas con estructura en capas es definirlas. Esto debe ser
planificado cuidadosamente debido a la restriccin, comentada anteriormente, de que un capa
slo puede utilizar los servicios de las capas inferiores. Por ejemplo, el planificador de CPU
suele tener informacin de los procesos que estn en la memoria y parte de esa informacin
puede ser intercambiada con el disco para aumentar la memoria principal disponible. Este
planteamiento nos lleva a pensar que la gestin del almacenamiento secundario debe ir en una
capa inferior a la del planificador de la CPU. Sin embargo el planificador debe replanificar la
CPU cuando el proceso que actualmente la ocupa solicita alguna operacin de E/S, por lo que
la gestin del almacenamiento secundario debe estar encima del planificador de la CPU para
que le pueda decir que replanifique. Al final la solucin de compromiso es tender hacia
sistemas con pocas capas donde cada una tiene mucha funcionalidad.

Esta estrategia es sin duda mucho menos eficiente que la de los sistemas de estructura
sencilla. En cada capa los parmetros son modificados y los datos necesarios deben de ser
transferidos, por lo que cada una aade cierto nivel de sobrecarga al funcionamiento del
sistema.

2-41
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

2.3.3. Microkernel
Los sistemas microkernel eliminan todos los componentes no esenciales del ncleo y los
implementa como programas de nivel de usuario. Aunque hay poco consenso, en general un ncleo
microkernel proporciona funciones mnimas de gestin de procesos y memoria, junto a algn
mecanismo de comunicacin. En estos sistemas la funcin principal del ncleo es precisamente
proporcionar dicho mecanismo de comunicacin entre el programa cliente y los diversos servicios
del sistema. Generalmente esta comunicacin se implementa mediante paso de mensajes (vase el
apartado 3.2).

Entre los beneficios de estos sistemas operativos se incluyen:

Facilidad a la hora de aadir nuevas funcionalidades. Los nuevos servicios son aadidos
como aplicaciones de nivel de usuario, por lo que no es necesario hacer modificaciones en el
ncleo.

Facilidad a la hora de portar el sistema a otras plataformas.

Ms seguridad y fiabilidad. Puesto que los servicios se ejecutan a nivel de usuario en procesos
separados, un servicio que falla no puede afectar a otros ni puede ser utilizado para ganar
acceso a otros servicios o al ncleo.

El mayor inconveniente es su pobre rendimiento causado por la sobrecarga que aade el


mecanismo de comunicacin. Por ejemplo Microsoft Windows NT naci con una estructura de
microkernel en capas donde una parte importante de los servicios eran proporcionados por unos
procesos de usuario llamados subsistemas. Adems el sistema operativo poda mostrar diferentes
personalidades o entornos operativos OS/2, POSIX y DOS a travs del uso de subsistemas
ambientales, que tambin se ejecutaban como procesos de usuario. Las aplicaciones de Microsoft
Windows NT se comunicaban con estos subsistemas utilizando una forma de IPC (vase el apartado
3.2.3) denominada LPC (Local Procedure Call), una forma local y optimizada de RPC27. Con esta
estructura la prdida de rendimiento respecto a Microsoft Windows 95 era tan importante que los
diseadores se vieron obligados a mover ms servicios al espacio del ncleo. En la actualidad
Microsoft Windows XP (vase la Figura 2.7) que es un heredero directo de Microsoft Windows

27 La RPC (Remote Procedure Call) es una mecanismo de llamada a procedimiento diseado para ser utilizado entre
sistemas conectados por redes de ordenadores, permitiendo que un proceso cliente llame a un procedimiento en un
proceso servidor, aunque ambos estn en equipos diferentes, y ocultado los detalles de la comunicacin que
permiten que la llamada tenga lugar.

2-42
2.3. Sistemas operativos por su estructura Sistemas Operativos - 2014/2015

aplicaciones aplicaciones
Hurd POSIX
glibc
(1)

servidores Hurd

sistema de
autenticacin contrasea
ficheros

procesos red ...

modo
usuario (1)

modo (1)
privilegiado
GNU Mach

OSkit paso de gestor de


mensajes memoria

controladores gestor de
tareas
de dispositivo

hardware

Figura 2.8: Diagrama de bloques de GNU/Hurd.

NT tiene una arquitectura ms monoltica que microkernel 28 ya que aunque muchos servicios
siguen siendo proporcionados por procesos de usuario, esto slo ocurre con aquellos donde el
rendimiento no es un factor crtico.

Sin embargo varios sistemas operativos siguen utilizando ncleos microkernel, como Tru64 UNIX
y GNU/Hurd (vase la Figura 2.8). Ambos proporcionan una interfaz UNIX implementada sobre un
microkernel Mach. Otro ejemplo es QNX, un sistema operativo de tiempo real con una gran
aceptacin que basa en la estructura de microkernel su estabilidad como sistema para tareas
crticas. Adems siguen existiendo algunos proyectos de investigacin dirigidos a resolver los
problemas de rendimiento asociados a los ncleos microkernel.

28 A las 280 llamadas al sistema de Microsoft Windows XP algo menos de 200 en Microsoft Windows NT 3.51 se
deben sumar las ms de 650 del subsistema grfico, alojado en el ncleo desde Microsoft Windows NT 4.0.

2-43
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos

2.3.4. Estructura modular


Los sistemas de estructura modular tienen divido el ncleo en mdulos, cada uno de los cuales
implementa funciones y servicios concretos, a imagen y semejanza de las tcnicas de programacin
orientada a objetos. Quizs por eso sea la mejor metodologa actual para disear sistemas
operativos. Adems se parecen a los sistemas con estructura en capas en que cada mdulo del
ncleo tiene definidos interfaces protegidas, pero a diferencia de estos todos los mdulos pueden
llamar a cualquier otro mdulo.

Estos ncleos suelen disponer un pequeo conjunto de componentes fundamentales que se cargan
durante el arranque, aunque tambin pueden enlazar dinmicamente servicios adicionales tanto
durante la inicializacin del sistema como o en tiempo de ejecucin. En este aspecto se asemejan a
los ncleos microkernel, ya que el mdulo principal slo tiene funciones bsicas, aunque es mucho
ms eficiente al no necesitar un mecanismo de paso de mensajes, puesto que los componentes se
cargan directamente en la memoria destinada al ncleo. Por lo tanto tambin deben ser
considerados como sistemas monolticos.

Este tipo de estructura es la utilizada en los UNIX modernos, como Oracle/Sun Microsystems
Solaris, Linux (vase la Figura 2.9) y Mac OS X.

2-44
aplicaciones

libreras del sistema (glibc)


modo
usuario

modo
privilegiado
llamadas al sistema

sistema de ficheros virtual planificador de procesos gestor de memoria IPC

planificacin de
buffer-cache File IPC
procesos

VFS bin_exec gestin del tiempo core mmap swap Net IPC

controladores de
gestin de mdulos Kernel IPC
dispositivo

System V IPC

red

Linux

hardware

Figura 2.9: Ejemplo de sistema operativo con estructura modular (GNU/Linux).

Vous aimerez peut-être aussi