Académique Documents
Professionnel Documents
Culture Documents
Introduccin
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.
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
sistema operativo
hardware
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-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.
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.
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.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
1-4
1.3. Tipos de sistemas operativos Sistemas Operativos - 2014/2015
sistema operativo
rea de los
programas de usuario
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.
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.
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).
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.
Para seguir un esquema como el anterior es necesario que el sistema operativo realice tres tareas
esenciales:
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
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
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).
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
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.
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
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 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-11
Sistemas Operativos - 2014/2015 1. Introduccin
a) Caractersticas
Sin sistema operativo.
b) Ejemplos
Mainframe IBM 701 y 704.
a) Caractersticas
Sistemas operativos de procesamiento por lotes.
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.
a) Caractersticas
Sistemas operativos multiprogramados.
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
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.
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).
1-14
1.4. Historia de los sistemas operativos Sistemas Operativos - 2014/2015
1-15
Sistemas Operativos - 2014/2015 1. Introduccin
UNIX. Desarrollado originalmente por Bell Labs en 1970 para los sistemas PDP-11/20.
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.
IBM OS/400. Es un sistema utilizado en la familia IBM AS/400 ahora llamada iSeries.
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.
a) Caractersticas
Sistemas operativos de escritorio y ordenadores personales (PC)12.
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.
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
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.
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.
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
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.
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.
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 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.
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
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.
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
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).
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.
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
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.
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
# ...
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():
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()
std::ofstream::open()
librera estndar de
FILE *f = fopen(filename, ...); C++ (libstdc++)
ofstream ofs;
ofs.open(filename); programa en C++
proceso
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
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).
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:
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 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.
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.
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).
2-29
Sistemas Operativos - 2014/2015 2. Estructura de los sistemas operativos
Decidir que procesos aadir o extraer de la memoria cuando hay o falta espacio en la misma.
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
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.
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
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.
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.
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
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.
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
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.
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.
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.
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
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.
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.
aplicaciones
hardware
2-38
2.3. Sistemas operativos por su estructura Sistemas Operativos - 2014/2015
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.
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
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.
authentication
pakage
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
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).
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.
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.
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
modo
usuario (1)
modo (1)
privilegiado
GNU Mach
controladores gestor de
tareas
de dispositivo
hardware
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
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
modo
privilegiado
llamadas al sistema
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