SISTEMAS OPERATIVOS UNIX Introducción

Anuncio
SISTEMAS
OPERATIVOS
UNIX
Introducción
Sin el software una computadora es en esencia una masa metálica sin utilidad. Con el software, una
computadora puede almacenar, procesar y recuperar información; encontrar errores de ortografía e
intervenir en muchas otras valiosas actividades. El software para computadoras puede clasificarse en
general, en dos clases: los programas de sistema, que controlan la operación de la computadora en sí; y
los programas de aplicación, los cuales resuelven problemas para sus usuarios. El programa
fundamental de todos los programas de sistema es el sistema operativo, que controla todos los recursos
de la computadora y proporciona la base sobre la cual pueden escribirse los programas de aplicación.
Las funciones de los sistemas operativos son los siguientes:
• Objetivo principal: los sistemas operativos existen porque es más fácil trabajar con uno de ellos que
sin él. Esta situación es particularmente clara para los sistemas operativos para los pequeños
computadores personales.
• Objetivo secundario: la utilización eficiente del sistema de computación. Este propósito tiene una
importancia especial en los grandes sistemas multiusuario compartidos. En el pasado, las
consideraciones de eficiencia a menudo eran más importantes que la comodidad, por lo que gran parte
de la teórica de sistemas operativos se concentra en el uso óptimo de los recursos de computación.
Los sistemas operativos y la arquitectura del computador tienen una gran influencia mutua. Los sistemas
operativos se desarrollan para facilitar el uso del hardware. Al ir diseñando y utilizando los sistemas
operativos, se hizo patente que podrían simplificarse con cambios en el diseño del hardware.
1
Partes de un sistema operativo
1. Gestor de procesos
• Creación y eliminación de procesos
• Arranque y detención de procesos (scheduler)
• Sincronización y comunicación entre procesos
2. Gestor de memoria principal
• Control de qué partes de memoria están siendo utilizadas y por quién
• Decisión de qué procesos cargar cuando la memoria está disponible
• Asignación y desasignación de memoria a los procesos (malloc y free)
3. Gestor de memoria secundaria
4. Gestor del sistema de E/S
5. Gestor del sistema de archivos
• Creación y eliminación de archivos y directorios
• Soporte de primitivas para manipular archivos y directorios
• Mapeo de archivos en almacenamiento secundario
• Back−up de archivos
6. Sistema de protección
• Mecanismos para el control del acceso de procesos o usuarios a los recursos del usuario o del sistema
• Asignación de un dueño, grupo y permisos a cada recurso del sistema
Historia
Primera generación (1945−1955)
En un principio solo existía el hardware del computador. Los primeros computadores eran (físicamente)
grandes máquinas que se operaban desde una consola. La maquina era diseñada, construida, programada y
operada por un pequeño grupo de personas. La programación se realizaba en lenguaje de máquina; el sistema
operativo aún no se conocía. Los problemas que resolvían eran cálculos numéricos, como por ejemplo una
tabla con las funciones seno y coseno.
Segunda generación (1955−1965)
El programador escribía un programa y luego lo controlaba directamente. En primer lugar, el programa se
cargaba manualmente en la memoria, desde los interruptores del tablero frontal, desde una cinta de papel o
desde tarjetas perforadas. Luego se pulsaban los botones adecuados para establecer la dirección de inicio y
comenzar la ejecución del programa. Mientras éste se ejecutaba, el programador−operador lo podía supervisar
observando las luces en la consola. Si se descubrían errores, el programador podía detener el programa,
examinar el contenido de la memoria y los registros y depurar el programa directamente desde la consola. La
salida del programa se imprimía, o se perforaba en cintas de papel o tarjetas para su impresión posterior. Un
aspecto importante de ese entorno era su naturaleza interactiva directa. Se perdía mucho tiempo mientras el
operador hacía sus tareas de cargar programas y retirar la salida de la impresora. Dado que el costo de estos
equipos era muy alto, se buscaron formas de reducir el tiempo perdido.
2
La solución fue el sistema por lotes, que consistía en juntar conjuntos o lotes de tareas similares que se leían
con el lector de tarjetas perforadas y se almacenaban en una cinta. Esta tarea se realizaba en una máquina
económica y de baja capacidad de procesamiento, que era útil para leer tarjetas, copiar cintas e imprimir.
Después de armar el lote de tareas, se llevaba la cinta a la máquina que realizaba el procesamiento, la cual era
muy cara y de alta capacidad de procesamiento para esos tiempos.
El operador cargaba un programa especial que leía la primera tarea de la cinta y la ejecutaba, y la salida se
escribía en una segunda cinta. Tras finalizar cada tarea, es sistema operativo cargaba la siguiente y así
sucesivamente hasta finalizar todas las tareas contenidas. Después, el operador reemplazaba las cintas de
entrada y salida y la cinta de entrada se reemplazaba con una máquina económica de bajo procesamiento, que
realizaba la impresión off−line.
Tercera generación (1956−1980)
Aparecen los circuitos integrados, además de nuevas técnicas, como la multiprogramación y los sistemas de
tiempo compartido. Antiguamente, mientras un proceso esperaba que finalizase alguna operación de
entrada−salida, el procesador permanecía inactivo.
La multiprogramación consiste en dividir la memoria en sectores y cargar varios procesos, cada uno en un
sector de memoria. Cuando uno de ellos necesita esperar que una operación de entrada−salida finalice, otro
proceso puede utilizar el procesador. Si la cantidad de procesos que se cargan en memoria simultáneamente
son los suficientes, el procesador permanecerá ocupado casi el 100% del tiempo.
En los sistemas de tiempo compartido, cada usuario tiene una terminal on−line, donde puede enviar
comandos y ver su salida en forma interactiva. Igual que en multiprogramación, se cargan varios procesos
simultáneamente en memoria. La conmutación entre procesos no sólo tenía lugar cuando el proceso estaba
esperando que alguna operación de entrada−salida finalizase, también se conmutaba de proceso cada cierto
intervalo, dándole la sensación a cada usuario de que poseía la máquina para él sólo.
Cuarta generación (1980−presente)
Aparecen los circuitos integrados de gran escala (contienen miles de transistores en un cm2), lo que hace
disminuir costos y aparecen las computadoras personales. También aparece el software para computadoras
personales, desarrollado para gente que no conoce nada de computadoras y no tiene intenciones de aprender.
Aparecen los sistemas multiprocesador, los procesadores comparten la memoria y el reloj. Se incrementa la
capacidad de procesamiento y la confiabilidad, son económicos.
Multiprocesamiento simétrico: Cada procesador ejecuta una copia del sistema operativo.
Multiprocesamiento asimétrico: Cada procesador tiene asignada una tarea específica y existe un
procesador master que asigna tareas a los procesadores esclavos.
Aparecen los sistemas operativos para redes, donde el usuario puede dar órdenes a una computadora en forma
remota, copiar archivos de una computadora a otra, etc. Aparecen los sistemas distribuidos. Cada procesador
tiene su memoria y reloj local y se comunica con otros procesadores, unidos mediante una red, sin que el
usuario se entere. Aparecen los sistemas en tiempo real, que se utilizan cuando las tareas se deben realizar
dentro de un límite de tiempo. Existen dos tipos de sistemas en tiempo real: hard y soft.
Hard: requieren que el procesamiento se complete dentro de n límite de tiempo, si no se satisface, el sistema
falla.
Soft: son menos estrictos con los límites de tiempo y ejecutan el proceso en tiempo real con la mayor
3
prioridad.
Unix
Los orígenes de Unix se remontan al año 1962, en el que el CTSS y el MIT se encontraban investigando en
áreas de tiempo compartido y protección. En 1965, Bell Labs (la división de investigación de AT&T), General
Electric y el MIT se encontraban trabajando en un macroproyecto llamado MULTICS, previsto para
desarrollar una gran potencia de cálculo y almacenamiento de muchos usuarios. De este proyecto, se
obtuvieron interesantes resultados (capacidad de multiproceso, árbol de ficheros, shell); pero, como todo
proyecto gigante, su complejidad desbordó al equipo que lo emprendió, así que en 1969 fue abandonado.
El caso es que una de las mejores "cosas" que salieron de allí fue un tal Ken Thompson, un tanto
"mosqueado", eso sí, pero con ideas propias que lo llevaron a desarrollar ese mismo año un sistema de
ficheros propio. A Thomsom, en realidad, lo que le interesaba era derrotar el imperio Klingom jugando al Star
Trek, así que se montó una simulación de la galaxia que quitaba el aliento en un sistema GECOS. Y si no lo
quitaba, al menos eso le pareció a una tal Dennis Ritchie, que pasaba por allí y también veía Star Trek. El caso
es que Thomson encontró un PDP−7 (otro ordenador más potente) y construyó para él su sistema de ficheros
para poder jugar mejor con Ritchie sin que nadie los viera.
Bueno, ésta es la leyenda que dice que los orígenes de Unix vienen "de Vulcano". Puede que no fuera así,
pero lo cierto es que muchos grandes avances han surgido del desarrollo que grandes hombres han hecho para
su disfrute en ratos de ocio y éste fue uno de ellos. Sea como fuere, en el año 1971, Ritchie y Kernigham
crearon y utilizaron el lenguaje C en un PDP−11 (algo así como un AT), lenguaje nacido para la
programación de sistemas. Así, dos años después, en 1973, Ritchie y Thompson re−escriben su engendro en
lenguaje C, pero esta vez desarrollan un sistema multiusuario. Unix había nacido. El sistema, nacido del
trabajo y la ilusión de sólo dos personas, demostró ser algo tan bueno que ese mismo año Bell Labs contaba
con 25 instalaciones funcionando con Unix.
En 1974 aparece un artículo en las comunicaciones del ACM (Association for Computer Machinery) y se
distribuye a las universidades. En 1977 ya son 500 los centros y 125 las universidades que utilizan el sistema.
Su expansión es fulgurante, ya que se distribuye sin licencias y con fuentes. Entre 1977 y 1982 se combina
con un sistema comercial y nace Unix System III. Ya en 1984 existen 100.000 sistemas Unix en todo el
mundo.
Cronología
1969: Desarrollo original por Thompson y Ritchie sobre un PDP−7.
1970: Versión de 2 usuarios sobre DEC PDP−11.
1971: Versión multiusuario sobre PDP−11/40,45,70.
1973: Reescritura del S.O. en C (Kernighan, Ritchie) ya que originalmente estaba programado en
ensamblador. De esta forma se podía transportar a otras máquinas.
1974: Empieza la explotación comercial (25.000 dólares) de las fuentes.
1975: Versión 6 de Unix y cesión a Universidades para su enseñanza.
1983: Aparece el Unix System V (ATT) con soporte para mensajes y memoria compartida. También aparece
una versión para PC: Xenix (Microsoft).
4
1989: Aparece Unix System V, R4 con soporte para RFS, streams, redes y tiempo real.
1993: Novell compra Unix a la compañía AT&T.
1994: Novell le da el nombre "Unix" a X/OPEN.
1995: Santa Cruz Operations le compra UnixWare a Novell. Santa Cruz Operations y Hewlett−Packard
anuncian que desarrollarán conjuntamente una versión de Unix de 64−bit.
1996: International Data Corporation prevé que en 1997 habría más de 3 millones de computadoras con Unix
a nivel mundial.
Características
Unix es un sistema operativo apropiado para muchas aplicaciones, ya que ofrece muchas facilidades para
proceso de textos (en un marco atractivo para programadores) y facilidades de comunicación entre usuarios y
máquinas.
Unix es popular debido a que:
• Es portátil, y por lo tanto, todo el software desarrollado en él es portátil también.
• Se puede cambiar de máquina sin cambiar de sistema operativo ni de aplicaciones.
• Es fácil de adaptar según los requerimientos del usuario.
• Es muy fiable.
• Es fácil de usar.
• Tiene una amplia gama de utilidades.
Núcleo
El núcleo de Unix (kernel) se clasifica como de tipo monolítico, pero en él se pueden encontrar dos partes
principales: el núcleo dependiente de la máquina y el núcleo independiente. El núcleo dependiente se encarga
de las interrupciones, los manejadores de dispositivos de bajo nivel (lower half) y parte del manejo de la
memoria. El núcleo independiente es igual en todas las plataformas e incluye el manejo de llamadas del
sistema, la planificación de procesos, el entubamiento, la paginación e intercambio, el manejo de discos y del
sistema de archivos.
Procesos
El manejo de procesos en Unix es por prioridad y round robin. En algunas versiones se maneja también un
ajuste dinámico de la prioridad de acuerdo al tiempo que los procesos han esperado y al tiempo que ya han
usado el CPU. El sistema provee facilidades para crear 'pipes' entre procesos, contabilizar el uso de CPU por
proceso y una pila común para todos los procesos cuando necesitan estarse ejecutando en modo privilegiado
(tras una llamada al sistema). Unix permite que un proceso haga una copia de sí mismo por medio de la
llamada 'fork', lo cual es muy útil cuando se realizan trabajos paralelos o concurrentes. También se proveen
facilidades para el envío de mensajes entre procesos. Recientemente Sun Microsystems, AT&T, IBM, Hewlett
Packard y otros fabricantes de computadoras llegaron a un acuerdo para usar un paquete llamado ToolTalk
para crear aplicaciones que usen un mismo método de intercambio de mensajes.
Memoria
Los primeros sistemas con Unix nacieron en máquinas cuyo espacio de direcciones era muy pequeño (64
kilobytes) y tenían un manejo de memoria real algo complejo. Actualmente todos los sistemas Unix utilizan el
5
manejo de memoria virtual, siendo el esquema más usado la paginación por demanda y combinación de
segmentos paginados, en ambos casos con páginas de tamaño fijo. En todos los sistemas Unix se usa una
partición de disco duro para el área de intercambio. Esa área se reserva al tiempo de instalación del sistema
operativo. Una regla muy difundida entre administradores de sistemas es asignar una partición de disco duro
que sea al menos el doble de la cantidad de memoria real de la computadora. Con esta regla se permite que se
puedan intercambiar flexiblemente todos los procesos que estén en memoria RAM en un momento dado por
otros que estén en el disco. Todos los procesos que forman parte del kernel no pueden ser intercambiados a
disco. Algunos sistemas operativos (como SunOS) permiten incrementar el espacio de intercambio incluso
mientras el sistema está en uso. Es muy importante esa facilidad de incrementar el espacio de intercambio, así
como la facilidad de añadir módulos de memoria RAM a la computadora sin necesidad de reconfigurar el
núcleo.
Entrada/salida
Derivado de la filosofía de manejar todo como flujo de bytes, los dispositivos son considerados como archivos
que se accesan mediante descriptores de archivos cuyos nombres se encuentran generalmente en el directorio
'/dev'. Cada proceso en Unix mantiene una tabla de archivos abiertos (donde el archivo puede ser cualquier
dispositivo de entrada/salida). Esa tabla tiene entradas que corresponden a los descriptores, los cuales son
números enteros obtenidos por medio de la llamada a la llamada del sistema 'open'. En la tabla se muestran las
llamadas más usuales para realizar entrada/salida.
Llamada Función
open Obtener un descriptor entero.
close Terminar las operaciones sobre el archivo
lseek Posicionar la entrada/salida.
read,write Leer o escribir al archivo (dispositivo)
ioctl Establecer el modo de trabajo del dispositivo
En Unix es posible ejecutar llamadas al sistema de entrada/salida de dos formas: síncrona y asíncrona. El
modo síncrono es el modo normal de trabajo y consiste en hacer peticiones de lectura o escritura que hacen
que el originador tenga que esperar a que el sistema le responda, es decir, que le de los datos deseados. A
veces se requiere que un mismo proceso sea capaz de supervisar el estado de varios dispositivos y tomar
ciertas decisiones dependiendo de si existen datos o no. En este caso se requiere una forma de trabajo
asíncrona. Para este tipo de situaciones existen las llamadas a las rutinas 'select' y 'poll' que permiten saber el
estado de un conjunto de descriptores.
Unix vs MS−DOS
Las diferencias existentes entre MS−DOS y UNIX vienen expuestas en la tabla siguiente:
MS−DOS
No permite la conexión entre dos o más
ordenadores mediante protocolo TCP/IP
Se apaga el equipo al acabar la tarea sin
ejecutar ningún comando
El directorio home por defecto es 'C:\'
UNIX
Fue creado para trabajar en la red, utilizando el protocolo
TCP/IP para las comunicaciones
Se teclea el comando exit para terminar la sesión, lo cual
provoca la aparición del mensaje de 'login'
El directorio home es el prefijado por el administrador del
sistema y suele ser algo como '/home/al000001'
6
No distingue entre mayúsculas y
minúsculas
Es significativa la diferencia entre mayúsculas y minúsculas.
Por ejemplo, no es lo mismo 'cal' (comando de calendario) que
'CAL' (no existe y la shell indica que no lo encuentra)
El intérprete de comandos presenta un
prompt de la forma: 'C:\>'
El prompt tiene la forma: '$'
Semejanzas:
• En ambos sistemas operativos cada comando debe finalizar con un RETURN.
• En los dos se utilizan abreviaciones en inglés. Por ejemplo, mkdir, md (make directory), del
(delete),...
• Tanto en MS−DOS como en UNIX la secuencia de teclas que interrumpen una acción es
CONTROL+C.
Minix
Minix es un clon de Unix distribuído junto con su código fuente y desarrollado por Andrew S. Tanenbaum.
Gracias a su reducido tamaño, diseño basado en el paradigma del micronúcleo, y su amplia documentación;
resulta bastante apropiado para personas que desean instalar un sistema operativo compatible con Unix en su
máquina personal, así como aprender sobre su funcionamiento interno. Para una persona poco familiarizada
con los elementos internos de un sistema operativo, Minix es una buena opción que le permite entender casi
todos los elementos del sistema con solo algunos meses de uso y estudio. Este sistema operativo fue
concebido para poder ser estudiado y analizado por los estudiantes de informática. La filosofía del diseño es
ser fácil para su entendimiento sin dejar de ser correcta. Siguiendo con esta línea la solución que se decide dar
es simple y fácil de entender, aunque poco flexible.
La forma de comunicarse los procesos es Minix es mediante el paso de mensajes. Esta operación se realiza
mediante la utilización de dos primitivas básicas, Enviar y Recibir, que son llamadas al sistema y por tanto
son fáciles de implementar como procedimientos de biblioteca. El método con el que se gestiona el envío y
recibo de mensajes en Minix recibe el nombre de rendevouz. La implementación de este método es muy
sencilla: cuando un proceso manda un mensaje a otro proceso y éste todavía no está preparado para recibirlo,
el proceso que manda el mensaje es bloqueado hasta que el destinatario realice la llamada a Recibir. De esta
forma Minix se ahorra el mantener un buffer para los mensajes que aún no han sido leídos. Este método es
menos flexible que el de mantener un buffer, pero para el sistema operativo es suficiente, ya que su filosofía
principal es la de ser didáctico, y entendiendo éste método no es muy difícil llegar a entender los demás.
Con la utilización de mensajes que realiza Minix parece que sólo se le dé solución al problema en el cual dos
procesos actúan de forma común para solucionar un problema, pero a partir del paso de mensajes se puede
conseguir exclusión mutua. Para garantizar esto se puede crear un proceso sincronizador que mantiene un
contador y una lista de enlazada con los procesos bloqueados. Cuando otro proceso quiere realizar su sección
crítica manda un mensaje al proceso sincronizador; si el proceso que manda el mensaje puede realizarla,
recibirá respuesta del proceso sincronizador; si no puede, el proceso no recibirá ninguna respuesta y se
quedará bloqueado. Por otra parte, cuando un proceso termina de realizar su sección crítica, éste manda un
mensaje al proceso sincronizador y se lo indica. De esta forma, el proceso sincronizador dará respuesta a
alguno de los mensajes que le enviaron los otros procesos que querían realizar su sección crítica, y éste será
despertado.
Linux
El padre de Linux es Linus Torvalds, un programador finlandés de 21 años que inicialmente no tenía más
pretensión que 'divertirse' creando un sistema operativo para su uso personal. Torvalds colocó Linux en
Internet para que cualquiera lo bajara gratis, en 1991, y desde entonces participan en su desarrollo cientos de
7
voluntarios. Hoy Linux se difunde más rápido que cualquier otro sistema operativo, es venerado por una
comunidad de diez millones de usuarios y comienza a verse como una alternativa real a Windows. Ésta es su
historia.
1991: En abril, Linus Torvalds comenzó a crear un programa que varios meses después se convertiría en
Linux, un sistema operativo Unix para PC. Linux nació como un pasatiempo de Torvalds, que en esa época
tenía 21 años y estudiaba segundo año de Ciencias de los Computadores en la Universidad de Helsinki
(Finlandia). Su intención inicial no era crear un sistema operativo, sino experimentar creando software para
manejar ciertas funciones básicas del PC que había comprado cuatro meses antes. A mediados del año, el
programa estaba avanzado y Trovalds comenzó a pensar seriamente en que podría crear el kernel de un nuevo
sistema operativo, similar a Minix pero mejor. Trovalds no tenía grandes pretensiones; él dice que no pensó
en crear Linux para que fuera un sistema operativo profesional, sino que lo diseñó para su uso personal. Sin
embargo, poco a poco su pasatiempo se fue convirtiendo en un proyecto más serio. El 5 de octubre, Trovalds
publicó en un grupo de noticias sobre Minix, en Internet, un mensaje en el que anunció la creación de Linux,
un sistema operativo para PC basado en procesadores Intel 386. El mensaje decía que el sistema (Linux
versión 0.02) estaba todavía en desarrollo, pero ya funcionaba, y lo ofrecía gratis a cualquiera que deseara
bajarlo. También invitó a los programadores interesados en sistemas operativos a usarlo, y enviarle
correcciones y mejoras para incluirlas en la próxima versión. Ése fue un suceso clave en la historia de Linux;
gracias a Internet, Linux pronto se convertiría en un fenómeno mundial.
1992: En enero, Linux tenía cerca de 100 usuarios, y varios de ellos ya participaban en el desarrollo de Linux
con mejoras y correcciones que enviaban a Torvalds por Internet. Él lanzó ese mes la versión 0.12 de Linux;
que fue la primera versión que incluyó partes desarrolladas por otros programadores y la primera que
realmente se desempeñaba mejor que Minix en ciertos aspectos. El número de usuarios de Linux comenzó a
crecer rápidamente, y no era extraño que tuviera gran acogida. Al igual que Torvalds, muchos estudiantes de
sistemas y de la computación amaban los sistemas operativos Unix por su estabilidad y potencia, pero éstos
eran inalcanzables porque una versión comercial de Unix costaba en esa época 4.000 ó 5.000 dólares, y casi
todas funcionaban exclusivamente en estaciones de trabajo de 10.000 o más dólares (no en PC). Linux, en
cambio, era un sistema Unix gratuito, y funcionaba en PCs basados en procesadores Intel (386, 486, etc). A
medida que creció el número de usuarios, también aumentaron los programadores voluntarios que se
involucraron en el desarrollo de Linux. Torvalds distribuyó Linux bajo un tipo de licencia llamada GPL, que
permite a cualquier persona bajar, usar, modificar e incluso vender Linux, sin pagar; la única condición es que
los cambios o mejoras que una persona o compañía realicen en Linux también deben ser públicos. Ello generó
un fenómeno de colaboración mundial sin precedentes. Programadores de todo el planeta enviaron a Torvalds
mejoras para el kernel, reportaron errores y comenzaron a crear controladores de dispositivos para Linux. Se
calcula que al final de 1992 Linux tenía aproximadamente 1.000 usuarios.
1993: Se estima que este año Linux completó 20.000 usuarios en el mundo, y más de 100 programadores
contribuyeron en su desarrollo. Para poder manejar esas colaboraciones, Torvalds delegó las labores de
revisión del código de programación de Linux a cinco personas, que se convirtieron en sus 'oficiales'
principales. A diferencia de los programas comerciales, que se actualizan cada dos o tres años, en el mundo
Linux aparecen actualizaciones y mejoras menores cada pocas semanas; eso ha permitido que Linux
evolucione rápidamente.
1994: En marzo se lanzó la primera versión 'completa' del sistema operativo de Torvalds: Linux 1.0. Esta
versión ofreció soporte a redes de computadores, e incluyó docenas de utilidades, programas de desarrollo de
aplicaciones y otras herramientas. Se fundó Red Hat Software, una empresa que hoy es el principal
distribuidor de Linux. Aunque Linux se puede bajar gratis de Internet, hay docenas de empresas −como Red
Hat Software y Caldera− que elaboran sus propias versiones, y las venden en CD−ROM, junto con manuales,
soporte técnico y programas adicionales. Estas distribuciones cuestan entre 10 y 70 dólares, dependiendo de la
empresa. Este año Linux completó aproximadamente 100.000 usuarios.
8
1995: A finales de este año Linux tenía aproximadamente 500.000 usuarios.
1996: El 9 de junio se lanzó la versión 2.0 de Linux. Una de las principales novedades fue el soporte
amultiprocesamiento simétrico (el sistema aprovechaba el poder de computadores con más de un procesador).
Además, Linux 2.0 no solo trabajaba en PCs con procesadores Intel x86 (como el 386, 486 y Pentium), sino
también en estaciones de trabajo con procesadores Alpha. Se calcula que este año Linux completó 1,5
millones de usuarios.
1997: Linus Torvalds se fue a vivir a Santa Clara (California, Estados Unidos), debido a que fue contratado
por una compañía llamada Transmeta. Sin embargo, Torvalds continuó encabezando el equipo de gente que se
encarga del desarrollo del kernel de Linux. La firma de investigaciones Datapro dijo que Linux era el segundo
sistema operativo más popular en los servidores web de Internet, después de Solaris (un sistema Unix de Sun
Microsystems). Se estima que Linux completó 3,5 millones de usuarios. Este año se lanzó la versión 2.1.
1998: Varios de los principales fabricantes de programas para el mercado corporativo, como Oracle, Informix,
Computer Associates (CA) y Netscape, anunciaron que lanzarían versiones para Linux de sus productos. El
respaldo de estas empresas ha sido clave para la consolidación de Linux en las empresas. En septiembre, Intel
Corporation y Netscape anunciaron una inversión de capital en la empresa Red Hat Software. Este hecho fue
muy importante para aumentar la credibilidad de Linux, debido a que Intel y Netscape son dos de los líderes
de la industria de los computadores. En diciembre, Corel Corporation lanzó una versión para Linux de su
procesador de palabra WordPerfect 8. El programa se colocó en Internet para que los usuarios lo pudieran
probar gratis durante 90 días, y en los primeros seis meses lo bajaron un millón de personas. A finales de
1998, Linux dominaba cerca del 17 por ciento del mercado de sistemas operativos para redes, según la
empresa de investigación de mercados International Data Corporation (IDC). Se calcula que Linux completó
7,5 millones de usuarios. Y el número de programadores que participan en el desarrollo y pruebas del
programa creció a 10.000.
1999: En enero se lanzó la versión 2.2 de Linux, que ofreció un mejor rendimiento y soporte para
procesadores Sparc, Motorola 68000, PowerPC y MIPS. Esta versión, al igual que la 2.0, soporta
computadores con 8 procesadores, pero el multiprocesamiento es mucho más eficiente en la versión 2.2. Corel
Corporation anunció que antes de terminar este año lanzaría Corel Linux, una distribución de Linux dirigida a
usuarios de PCs. Aunque hay muchas empresas que ofrecen versiones comerciales de Linux, ésta tiene gran
relevancia por estar dirigida a usuarios comunes y por ser producida por uno de los más grandes fabricantes de
software del mundo. Corel también dijo que en el año 2000 lanzaría una versión para Linux del programa
gráfico más importante del mundo Windows, CorelDraw, lo mismo que una versión de su paquete de
programas Corel WordPerfect Suite.
Características
• Multitarea: la palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo.
Linux utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están
utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder
tiempo de microprocesador a cada programa.
• Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.
• Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386−, 486−.
Pentium, Pentium Pro, Pentium II,Amiga y Atari, también existen versiones para su utilización en
otras plataformas, como Alpha, ARM, MIPS, PowerPC y SPARC.
• Multiprocesador: Soporte para sistemas con mas de un procesador esta disponible para Intel y
SPARC.
• Funciona en modo protegido 386.
• Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
• Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están
9
siendo usadas actualmente.
• Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que
varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta
escribir en esa memoria, la página (4 Kb de memoria) se copia a otro lugar. Esta política de copia en
escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
• Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición
o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de
intercambio sobre la marcha Un total de 16 zonas de intercambio de 128 Mb de tamaño máximo
pueden ser usadas en un momento dado con un límite teórico de 2 Gb para intercambio. Este limite se
puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente.
• La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de
disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser
reducida cuando se ejecuten grandes programas.
• Se realizan volcados de estado (core dumps) para posibilitar los análisis post−mortem, permitiendo el
uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por
cualquier motivo.
• Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.
• Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las
herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir
libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente
sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
• Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia
emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador
matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada
en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y
conseguir un pequeño ahorro de memoria.
• Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos
dinámicamente.
• Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede
cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de
video). Se crean dinámicamente y puedes tener hasta 64.
• Soporte para varios sistemas de archivo comunes, incluyendo minix−1, Xenix y todos los sistemas de
archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de
hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
• Acceso transparente a particiones MS−DOS (o a particiones OS/2 FAT) mediante un sistema de
archivos especial: no es necesario ningún comando especial para usar la partición MS−DOS, esta
parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de
archivo, permisos, y esas cosas). Las particiones comprimidas de MS−DOS 6 no son accesibles en
este momento, y no se espera que lo sean en el futuro. El soporte para VFAT, FAT32 (WNT,
Windows 95/98) se encuentra soportado desde la versión 2.0 del núcleo y el NTFS de WNT desde la
versión 2.2 (Este ultimo solo en modo lectura).
• Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un
sistema de archivos DOS.
• Soporte en sólo lectura de HPFS−2 del OS/2 2.1
• Sistema de archivos de CD−ROM que lee todos los formatos estándar de CD−ROM.
• TCP/IP, incluyendo ftp, telnet, NFS, etc.
• Software cliente y servidor Netware.
Índice
Introducción 2
10
Partes de un sistema operativo 2
Historia 3
Primera generación (1945−1955) 3
Segunda generación (1955−1965) 3
Tercera generación (1956−1980) 3
Cuarta generación (1980−presente) 4
Unix 6
Cronología 6
Características 7
Núcleo 7
Procesos 8
Memoria 8
Entrada/salida 8
Unix vs MS−DOS 9
Minix 10
Linux 11
Características 13
15
11
Documentos relacionados
Descargar