Sistemas operativos
Por su estructura
De Wikilibros, la colección de libros de texto de contenido libre.
Sistemas operativos/Por su estructura
Saltar a navegación, buscar
Estructura monolítica
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por
un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que
cada una puede llamar a cualquier otra. Las características:
Construcción del programa final a base de módulos compilados separadamente
que se unen a través del ligador.
Buena definición de parámetros de enlace entre las distintas rutinas existentes,
que puede provocar mucho acoplamiento.
Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes
aspectos de los recursos de la computadora, como memoria, disco, etc.
Estructura jerárquica
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los
sistemas. se hizo necesaria una mayor organización del software, del sistema operativo,
donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.
Ejemplos: Multics y Unix.
Máquina virtual
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso,
mostrando una máquina que parece idéntica a la máquina real subyacente. Estos
sistemas operativos separan dos conceptos que suelen estar unidos en el resto de
sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas
operativos de máquina virtual es el de integrar distintos sistemas operativos dando la
sensación de ser varias máquinas diferentes.
Multics
Multics
Parte de la familia Tiempo compartido
Desarrollador
MIT, GE, Bell Labs
Multics Internet Server
Información general
Modelo de libre - open source desde 2007. Antes
desarrollo semi-free
Tipo de núcleo Monolítico
Licencia MIT License
Estado actual Maduro, histórico
En español ?
Multics (Multiplexed Information and Computing Service) fue uno de los primeros
sistemas operativos de tiempo compartido y tuvo una gran influencia en el desarrollo de
los posteriores sistemas operativos.
Contenido
[ocultar]
1 Descripción
2 Ideas nuevas
3 Historia del proyecto
4 Mirando hacia atrás
5 Véase también
6 Bibliografía
o 6.1 Detalles técnicos
o 6.2 Seguridad
7 Enlaces externos
Descripción
Los planes iniciales y el desarrollo de Multics comenzó en 1964. Originalmente era un
proyecto cooperativo liderado por Fernando J. Corbató del MIT, con General Electric y
los laboratorios Bell. Los laboratorios Bell abandonaron en 1969, y en 1970 el negocio
de computación de General Electric, incluyendo Multics, fue adquirido por Honeywell.
Multics fue concebido como un producto comercial por General Electric, y alcanzó este
logro para Honeywell, pero no tuvo un gran éxito. Sin embargo, tuvo un gran impacto
en el campo de la computación gracias a sus muchas ideas nuevas y valiosas. Aunque en
su época recibió muchas críticas [1], la historia ha demostrado que eran infundadas.
Un gran número de características intentaban proporcionar alta disponibilidad, de
manera que el servicio de computación igualase a los servicios de telefonía y a la red
eléctrica. Para alcanzar este logro, se utilizó una estructura modular tanto en el software
como en el hardware, y el sistema podía crecer simplemente añadiendo más recursos -
poder de computación, memoria principal, almacenamiento de disco, etc. Listas de
control de acceso sobre cada archivo proporcionaban un método flexible para compartir
información, además de la privacidad requerida. Contenía diferentes mecanismos
estándar para permitir a los ingenieros analizar el rendimiento del sistema, además de
varios mecanismos para la optimización del rendimiento.
[editar] Ideas nuevas
Multics fue un de los primeros sistemas operativos que implementó un único nivel de
almacenamiento para el acceso a los datos, desechando la clara distinción entre los
archivos (llamados segmentos en Multics) y los procesos en memoria.
La memoria de un proceso consistía solamente en segmentos que estaban mapeados en
su espacio de direcciones; para leer o escribir en ellos, el proceso simplemente utilizaba
instrucciones normales de la CPU, y el sistema operativo tenía cuidado de asegurarse
que todas las modificaciones fueran guardadas en disco.
En la terminología POSIX, era como si cada archivo fuese mapeado; sin embargo, en
Multics no existía el concepto de memoria de proceso, separado del de la memoria
utilizada para mantener mapeados sobre los archivos, como hace Unix. Toda la
memoria del sistema formaba parte de algún segmento, que aparecía en el sistema de
archivos; incluida la memoria temporal del proceso, la pila del núcleo, etc.
(Una desventaja práctica, dadas las particularidades de la arquitectura del hardware de
las máquinas en las que se ejecutaba, y no del concepto básico, era que el tamaño de los
segmentos estaba limitado a 256K palabras de 36 bits, aproximadamente igual a 1MB
actual, y por lo tanto se debía utilizar código extra para trabajar con archivos mayores
que esto, llamados archivos multisegmento. En los días anteriores a las bases de datos
grandes, y los posteriores gráficos bitmaps inmensos, no era frecuente encontrarse con
esta limitación.)
Esto nos conduce a la segunda gran idea de Multics, enlace dinámico, mediante el que
un proceso en ejecución puede solicitar que otros segmentos se añadan a su espacio de
direcciones, estos segmentos pueden incluir código que puede ser ejecutado.
Con esta característica disponible, las aplicaciones automáticamente utilizaban la última
versión de cualquier rutina externa que llamaban, estas rutinas estaban en otros
segmentos, que se enlazaban dinámicamente sólo cuando un proceso intentaba
ejecutarlas. Como diferentes procesos, pertenecientes a diferentes usuarios, podían
utilizar diferentes reglas de búsqueda, diferentes usuarios podían automáticamente
acabar utilizando diferentes versiones de las rutinas externas.
Igualmente importante, con la configuración adecuada de las características de
seguridad de Multics, el código en el otro segmento podía ganar acceso a las estructuras
de datos mantenidas en un proceso diferente.
De este modo, para interactuar con una aplicación ejecutándose en parte como un
demonio (informática) (en otro proceso) un proceso de usuario simplemente realiza una
llamanda normal a un procedimiento, hacia un segmento de código con el que se enlazó
dinámicamente (un segmento de código que implementa alguna operación asociada con
este demonio). El código en este segmento puede entonces modificar los datos
mantenidos y utilizados por el demonio. Cuando la acción necesaria para comenzar la
solicitud se completa, una simple instrucción de retorno del proceso retorna el control
del proceso de usuario al código del usuario.
Debe notarse que estas dos ideas, se utilizan todavía en la mayoría de los sistemas
operativos, independientemente del rápido y enorme avance realizado en el campo de la
computación desde la década de 1960.
Multics también soportaba una reconfiguración on-line muy agresiva; las CPUs, los
bancos de memoria, unidades de disco, etc. podían ser añadidas y quitadas mientras el
sistema continuaba funcionando; entrando en servicio, o eliminándose cuando fuera
necesario.
(De hecho, era una práctica común en el sistema del MIT, donde se realizó la mayoría
de los desarrollos de software iniciales, dividir el sistema; que era un sistema
multiprocesador; en dos sistemas separados, al eliminiar suficiente componentes para
formar un segundo sistema, dejando el resto todavía ejecutando la los usuarios que
tenían una sesión abierta. Las comprobaciones sobre el software desarrollado podían
realizarse en la segunda máquina; cuando los tests concluían, los componentes del
segundo sistema se añadían de nuevo en el sistema principal, sin tener que apagarlo en
ningún momento).
Como se soportaban varias CPUs, fue uno de los primeros sistemas multiprocesador.
Multics también fue notable por su innovador énfasis en su diseño para obtener
seguridad informática, y Multics fue posiblemente el primer sistema operativo diseñado
como un sistema seguro desde su inicio. Independientemente de esto, las primeras
versiones de Multics se mostraron vulnerables, no una vez, sino de forma repetida.
Esto condujo a más trabajo para mejorar la seguridad que trazó las técnias de seguridad
modernas, e hizo los sistemas mucho más seguros; al adoptarse el hardware de segunda
generación, con soporte hardware para los anillos de seguridad (un refinamiento
multinivel del concepto de modo maestro), las intrusiones se convirtieron en algo muy
extraño.
Además de haber sido el primer sistema operativo que proporcionó un sistema de
archivos jerárquico, los nombres de los archivos casi podían tener una longitud y
sintaxis arbitraria; dado un archivo o directorio este podía tener varios nombres
(típicamente uno largo y otro corto); también se soportaban enlaces simbólicos entre
directorios.
Fue el primero en utilizar el ahora estándar concepto de tener una pila por proceso en el
núcleo, con una pila separada para cada anillo de seguridad. También fue uno de los
primeros escritos en un lenguaje de alto nivel; se utilizó PL/I, aunque el sistema
Burroughs B5000, que utilizaba ALGOL precedió a Multics.
[editar] Historia del proyecto
Multics se desarrolló inicialmente para el mainframe GE-645, un sistema de 36 bits;
después fue soportado por la serie de máquinas Honeywell 6180.
Los laboratorios Bell dejaron el proyecto en 1969; algunas de las personas que habían
trabajado en su desarrollo se dedicaron a crear el sistema Unix. Aunque de un modo
superficial, UNIX muestra la influencia de Multics en muchas áreas, incluido el nombre
de los comandos. La filosofía de diseño fue muy diferente, centrándose en mantener el
sistema tan pequeño y simple como fuese posible, y de este modo corrigiendo lo que se
veía como una deficiencia de Multics. El nombre "Unix" (originalmente "Unics") es un
hack de "Multics". Se rumorea que la U de UNIX significia "Uniplexado" en oposición
al concepto "Multiplexado" de Multics, resaltando la intención de los diseñadores de
rechazar la complejidad de Multics en favor de una aproximación práctica más directa.
Honeywell compró la división de computación de General Electric, lanzó una mejor
base hardware, y continuó el desarrollo del sistema hasta 1985. Se realizaron unas 80
instalaciones por valor de varios millones de dólares, en universidades, industria, y
administración. El sistema universitario de Francia contó con varias instalaciones en los
inicios de la década de 1980. Después Honeywell dejó de soportar Multics, los usuarios
migraron a otros sistemas (incluyendo sistemas Unix).
La última máquina Multics fue apagada el 31 de octubre de 2000, en el Ministerio de
Defensa de Canadá.
El código fuente de Multics fue liberado por el MIT y se puede descargar desde su
página.
[editar] Mirando hacia atrás
Es más que sorprendente descubrir que el núcleo de este poderoso mainframe
multiprocesador computing utility, tan criticado en sus días por ser demasiado grande y
complejo, ocupaba 135 kB de código. El primer GE-645 del MIT tuvo 512K palabras
de memoria (2 MB), de manera que el núcleo sólo utilizaba una pequeña porción de la
memoria principal de Multics.
Medido de otra forma, el sistema completo, incluyendo no sólo el sistema operativo,
sino también el complejo compilador de PL/I, los comandos de usuario, y las bibliotecas
de subrutinas, contenía unos 1500 módulos de código fuente. Cada uno con una
longitud media de unas 200 líneas de código fuente, y compilaban para producir
aproximadamente 4,5 MB de código de procedimientos, que aunque hoy parezca
pequeño era muy grande para los standards de la época.
Los compiladores de Multics generalmente optimizaban la densidad de código antes que
la velocidad de ejecución, por ejemplo se utilizaban pequeñas subrutinas llamadas
operadores para secuencias de código frecuentes, realizar comparaciones directas con el
tamaño de los objetos de código en los sistemas más modernos no tiene sentido. La alta
densidad de código era una buena opción de optimización para un sistema multiusuario
con una memoria principal cara, como Multics.
Unix
Unix (registrado oficialmente como UNIX®) es un sistema operativo portable,
multitarea y multiusuario; desarrollado, en principio, en 1969 por un grupo de
empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson,
Dennis Ritchie y Douglas McIlroy.1 2
«después de treinta años de su creación, UNIX sigue siendo un fenómeno»
Dennis Ritchie3
Hasta 2009, el propietario de la marca UNIX® fue The Open Group, un consorcio de
normalización industrial. A partir de marzo de 2010 y tras una larga batalla legal, esta
ha pasado nuevamente a ser propiedad de Novell, Inc. Sólo los sistemas totalmente
compatibles y que se encuentran certificados por la especificación Single UNIX
Specification pueden ser denominados "UNIX®" (otros reciben la denominación
"similar a un sistema Unix" o "similar a Unix"). En ocasiones, suele usarse el término
"Unix tradicional" para referirse a Unix o a un sistema operativo que cuenta con las
características de UNIX Versión 7 o UNIX System V.
Contenido
1 Historia
2 Familias
3 Familias UNIX más significativas
4 La marca
5 Implementaciones más importantes
6 Órdenes clásicas de UNIX
7 Referencias
8 Véase también
9 Enlaces externos
Historia
Ken Thompson y Dennis Ritchie Creadores de Unix.
A finales de 1960, el Instituto Tecnológico de Massachusetts, los Laboratorios Bell de
AT&T y General Electric trabajaban en un sistema operativo experimental llamado
Multics (Multiplexed Information and Computing Service),4 desarrollado para
ejecutarse en una computadora central (mainframe) modelo GE-645. El objetivo del
proyecto era desarrollar un gran sistema operativo interactivo que contase con muchas
innovaciones, entre ellas mejoras en las políticas de seguridad. El proyecto consiguió
dar a luz versiones para producción, pero las primeras versiones contaban con un pobre
rendimiento. Los laboratorios Bell de AT&T decidieron desvincularse y dedicar sus
recursos a otros proyectos.
Uno de los programadores del equipo de los laboratorios Bell, Ken Thompson, siguió
trabajando para la computadora GE-6355 y escribió un juego llamado Space Travel,6 7
(Viaje espacial). Sin embargo, descubrió que el juego era lento en la máquina de
General Electric y resultaba realmente caro, algo así como 75 dólares de [Link]. por
cada partida.
De este modo, Thompson escribió nuevamente el programa, con ayuda de Dennis
Ritchie, en lenguaje ensamblador, para que se ejecutase en una computadora DEC PDP-
7. Esta experiencia, junto al trabajo que desarrolló para el proyecto Multics, condujo a
Thompson a iniciar la creación de un nuevo sistema operativo para la DEC PDP-7.8
Thompson y Ritchie lideraron un grupo de programadores, entre ellos a Rudd Canaday,
en los laboratorios Bell, para desarrollar tanto el sistema de ficheros como el sistema
operativo multitarea en sí. A lo anterior, agregaron un intérprete de órdenes (o intérprete
de comandos) y un pequeño conjunto de programas. El proyecto fue bautizado UNICS,
como acrónimo Uniplexed Information and Computing System, pues sólo prestaba
servicios a dos usuarios (de acuerdo con Andrew Tanenbaum, era sólo a un usuario9 ).
La autoría de esta sigla se le atribuye a Brian Kernighan, ya que era un hack de Multics.
Dada la popularidad que tuvo un juego de palabras que consideraba a UNICS un
sistema MULTICS castrado (pues eunuchs, en inglés, es un homófono de UNICS), se
cambió el nombre a UNIX, dando origen al legado que llega hasta nuestros días.10
Hasta ese instante, no había existido apoyo económico por parte de los laboratorios
Bell, pero eso cambió cuando el Grupo de Investigación en Ciencias de la Computación
decidió utilizar UNIX en una máquina superior a la PDP-7. Thompson y Ritchie
lograron cumplir con la solicitud de agregar herramientas que permitieran el
procesamiento de textos a UNIX en una máquina PDP-11/20, y como consecuencia de
ello consiguieron el apoyo económico de los laboratorios Bell. Fue así como por vez
primera, en 1970, se habla oficialmente del sistema operativo UNIX11 ejecutado en una
PDP-11/20. Se incluía en él un programa para dar formato a textos (runoff) y un editor
de texto. Tanto el sistema operativo como los programas fueron escritos en el lenguaje
ensamblador de la PDP-11/20. Este "sistema de procesamiento de texto" inicial,
compuesto tanto por el sistema operativo como de runoff y el editor de texto, fue
utilizado en los laboratorios Bell para procesar las solicitudes de patentes que ellos
recibían. Pronto, runoff evolucionó hasta convertirse en troff, el primer programa de
edición electrónica que permitía realizar composición tipográfica. El 3 de noviembre de
1971 Thomson y Ritchie publicaron un manual de programación de UNIX (título
original en inglés: "UNIX Programmer's Manual").12
En 1972 se tomó la decisión de escribir nuevamente UNIX, pero esta vez en el lenguaje
de programación C.13 Este cambio significaba que UNIX podría ser fácilmente
modificado para funcionar en otras computadoras (de esta manera, se volvía portable) y
así otras variaciones podían ser desarrolladas por otros programadores. Ahora, el código
era más conciso y compacto, lo que se tradujo en un aumento en la velocidad de
desarrollo de UNIX. AT&T puso a UNIX a disposición de universidades y compañías,
también al gobierno de los Estados Unidos, a través de licencias.14 Una de estas
licencias fue otorgada al Departamento de Computación de la Universidad de
California, con sede en Berkeley.14 En 1975 esta institución desarrolló y publicó su
propio sucedáneo de UNIX, conocida como Berkeley Software Distribution (BSD), que
se convirtió en una fuerte competencia para la familia UNIX de AT&T.
Mientras tanto, AT&T creó una división comercial denominada Unix Systems
Laboratories para la explotación comercial del sistema operativo. El desarrollo
prosiguió, con la entrega de las versiones 4, 5 y 615 en el transcurso de 1975. Estas
versiones incluían los pipes o tuberías, lo que permitió dar al desarrollo una orientación
modular respecto a la base del código, consiguiendo aumentar aún más la velocidad de
desarrollo. Ya en 1978, cerca de 600 o más máquinas estaban ejecutándose con alguna
de las distintas encarnaciones de UNIX.
La versión 7,15 la última versión del UNIX original con amplia distribución, entró en
circulación en 1979. Las versiones 8, 9 y 1015 se desarrollaron durante la década de
1980, pero su circulación se limitó a unas cuantas universidades, a pesar de que se
publicaron los informes que describían el nuevo trabajo. Los resultados de esta
investigación sirvieron de base para la creación de Plan 9 from Bell Labs, un nuevo
sistema operativo portable y distribuido, diseñado para ser el sucesor de UNIX en
investigación por los Laboratorios Bell.
Éste sería el aspecto de UNIX sobre los fines de la década de 1980 utilizando X Window
System creado por el MIT
AT&T entonces inició el desarrollo de UNIX System III, basado en la versión 7, como
una variante de tinte comercial y así vendía el producto de manera directa. La primera
versión se lanzó en 1981.15 A pesar de lo anterior, la empresa subsidiaria Western
Electric seguía vendiendo versiones antiguas de Unix basadas en las distintas versiones
hasta la séptima. Para finalizar con la confusión con todas las versiones divergentes,
AT&T decidió combinar varias versiones desarrolladas en distintas universidades y
empresas, dando origen en 1983 al Unix System V Release 1.15 Esta versión presentó
características tales como el editor Vi y la biblioteca curses, desarrolladas por Berkeley
Software Distribution en la Universidad de California, Berkeley. También contaba con
compatibilidad con las máquinas VAX de la compañía DEC.
En 1993, la compañía Novell adquirió la división Unix Systems Laboratories de AT&T
junto con su propiedad intelectual.16 Esto ocurrió en un momento delicado en el que
Unix Systems Laboratories disputaba una demanda en los tribunales contra BSD por
infracción de los derechos de copyright, revelación de secretos y violación de marca de
mercado[cita requerida].
BSD no solamente ganó el juicio sino que cambiaron tornas descubriendo que grandes
porciones del código de BSD habían sido copiadas ilegalmente en UNIX System V. En
realidad, la propiedad intelectual de Novell (recién adquirida de Unix Systems
Laboratories) se reducía a unos pocos ficheros fuente[cita requerida]. La correspondiente
contra-demanda acabó en un acuerdo extrajudicial cuyos términos permanecen bajo
secreto a petición de Novell.
Aproximadamente por esa misma fecha, un estudiante de ciencias de la computación
llamado Linus Torvalds desarrolló un núcleo para computadoras con arquitectura de
procesador Intel x86 que mimetizaba muchas de las funcionalidades de UNIX y lo lanzó
en forma de código abierto en 1991, bajo el nombre de Linux. En 1992, el Proyecto
GNU comenzó a utilizar el núcleo Linux junto a sus programas.
En 1995, Novell vendió su división UNIX comercial16 (es decir, la antigua Unix
Systems Laboratories) a Santa Cruz Operation (SCO) reservándose, aparentemente,
algunos derechos de propiedad intelectual sobre el software.17 SCO continúa la
comercialización de System V en su producto UnixWare, que durante cierto tiempo
pasó a denominarse OpenUnix, aunque ha retomado de nuevo el nombre de UnixWare.
Familias
Como se puede deducir de esta breve reseña histórica, existen varias familias del
sistema operativo UNIX, que han evolucionado de manera independiente a lo largo de
los años. Cada familia se distingue no tanto por sus diferencias técnicas como por sus
diferencias en propiedad intelectual. Se observa que todas las familias se han visto
contaminadas, directa o indirectamente, por otras familias.
Familias UNIX más significativas
AT&T: la familia que tuvo su origen en el UNIX de AT&T. Considerada la
familia UNIX "pura" y original. Sus sistemas operativos más significativos son
UNIX System III y UNIX System V.
BSD: familia originada por el licenciamiento de UNIX a Berkely. BSD se
reescribió para no incorporar propiedad intelectual originaria de AT&T en la
versión 4. La primera implementación de los protocolos TCP/IP que dieron
origen a Internet son la pila (stack) TCP/IP BSD.
AIX: Esta familia surge por el licenciamiento de UNIX System III a IBM.
Xenix: familia derivada de la adquisición de los derechos originales de AT&T
primero por parte de Microsoft y de esta los vendió a SCO.
GNU: En 1983, Richard Stallman anunció el Proyecto GNU, un ambicioso
esfuerzo para crear un sistema similar a Unix, que pudiese ser distribuido
libremente. El software desarrollado por este proyecto -por ejemplo, GNU
Emacs y GCC - también han sido parte fundamental de otros sistemas UNIX.
Linux: En 1991, cuando Linus Torvalds empezó a proponer el núcleo Linux y a
reunir colaboradores, las herramientas GNU eran la elección perfecta. Al
combinarse ambos elementos, conformaron la base del sistema operativo
(basado en POSIX) que hoy se conoce como GNU/Linux. Las distribuciones
basadas en el núcleo, el software GNU y otros agregados entre las que se pueden
mencionar a Slackware Linux, Red Hat Linux y Debian GNU/Linux se han
hecho populares tanto entre los aficionados a la computación como en el mundo
empresarial. Obsérvese que Linux tiene un origen independiente, por lo que se
considera un 'clónico' de UNIX y no un UNIX en el sentido histórico.
Las interrelaciones entre estas familias son las siguientes, aproximadamente en orden
cronológico:
La familia BSD surge del licenciamiento del UNIX original de AT&T.
Xenix también surge por licenciamiento del UNIX original de AT&T, aunque
aún no era propiedad de SCO.
AIX surge por licenciamiento de UNIX System III, pero también incorpora
propiedad intelectual de BSD.
La familia original AT&T incorpora ilegalmente propiedad intelectual de BSD
en UNIX System III r3.
La familia AIX vuelve a incorporar propiedad intelectual de la familia AT&T,
esta vez procedente de UNIX System V.
Linux incorpora propiedad intelectual de BSD, gracias a que éste también se
libera con una licencia de código abierto denominada Open-source BSD.
Según SCO Group, Linux incorpora propiedad intelectual procedente de AIX,
gracias a la colaboración de IBM en la versión 2.4, más aún no está demostrado,
hay un proceso judicial al respecto: Disputas de SCO sobre Linux.
La marca
UNIX es una marca registrada de The Open Group en Estados Unidos y otros países.
Esta marca sólo se puede aplicar a los sistemas operativos que cumplen la "Single Unix
Specification" de esta organización y han pagado las regalías establecidas.
En la práctica, el término UNIX se utiliza en su acepción de familia. Se aplica también a
sistemas multiusuario basados en POSIX (tales como GNU/Linux, Mac OS X [el cual,
en su versión 10.5 ya ha alcanzado la certificación UNIX], FreeBSD, NetBSD,
OpenBSD), los cuales no buscan la certificación UNIX por resultar cara para productos
destinados al consumidor final o que se distribuyen libremente en Internet. En estos
casos, el término se suele escribir como "UN*X", "*NIX", o "*N?X".