Andrew s. Tanenbaum


INTRODUCCIÓN CAPÍTULO 1 SECCIÓN 1.2 HISTORIA DE LOS SISTEMAS OPERATIVOS 15



Descargar 4,35 Mb.
Ver original pdf
Página5/134
Fecha de conversión12.11.2019
Tamaño4,35 Mb.
1   2   3   4   5   6   7   8   9   ...   134

14

INTRODUCCIÓN

CAPÍTULO 1


SECCIÓN 1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS



15

positivos controladores de dispositivos de E/S) al instante, sin necesidad de reiniciar y sin pertur-

bar a los programas en ejecución. También hay disponible un libro que describe su operación inter-

na y contiene un listado del código fuente en un apéndice (Tanenbaum y Woodhull, 2006). El

sistema MINIX 3 está disponible en forma gratuita (incluyendo todo el código fuente) a través de

Internet, en www.minix3.org.

El deseo de una versión de producción (en vez de educativa) gratuita de MINIX llevó a un es-

tudiante finlandés, llamado Linus Torvalds, a escribir Linux. Este sistema estaba inspirado por MI-

NIX, además de que fue desarrollado en este sistema y originalmente ofrecía soporte para varias

características de MINIX (por ejemplo, el sistema de archivos de MINIX). Desde entonces se ha

extendido en muchas formas, pero todavía retiene cierta parte de su estructura subyacente común

para MINIX y UNIX. Los lectores interesados en una historia detallada sobre Linux y el movimien-

to de código fuente abierto tal vez deseen leer el libro de Glyn Moody (2001). La 

mayor parte de lo que se haya dicho acerca de UNIX en este libro se aplica también a System V,

MINIX, Linux y otras versiones y clones de UNIX.

1.2.4 La cuarta generación (1980 a la fecha):

las computadoras personales

Con el desarrollo de los circuitos LSI (Large Scale Integration, Integración a gran escala), que

contienen miles de transistores en un centímetro cuadrado de silicio (chip), nació la era de la

computadora personal. En términos de arquitectura, las computadoras personales (que al princi-

pio eran conocidas como microcomputadoras) no eran del todo distintas de las minicomputado-

ras de la clase PDP-11, pero en términos de precio sin duda eran distintas. Mientras que la

minicomputadora hizo posible que un departamento en una compañía o universidad tuviera su

propia computadora, el chip microprocesador logró que un individuo tuviera su propia compu-

tadora personal.

Cuando Intel presentó el microprocesador 8080 en 1974 (la primera CPU de 8 bits de propó-

sito general), deseaba un sistema operativo, en parte para poder probarlo. Intel pidió a uno de sus

consultores, Gary Kildall, que escribiera uno. Kildall y un amigo construyeron primero un dispo-

sitivo controlador para el disco flexible de 8 pulgadas de Shugart Associates que recién había si-

do sacado al mercado, y conectaron el disco flexible con el 8080, con lo cual produjeron la primera

microcomputadora con un disco. Después Kildall escribió un sistema operativo basado en disco

conocido como CP/M (Control Program for Microcomputers; Programa de Control para 

Microcomputadoras) para esta CPU. Como Intel no pensó que las microcomputadoras basadas en

disco tuvieran mucho futuro, cuando Kildall pidió los derechos para CP/M, Intel le concedió su

petición. Después Kildall formó una compañía llamada Digital Research para desarrollar y vender

el CP/M.


En 1977, Digital Research rediseñó el CP/M para adaptarlo de manera que se pudiera ejecutar

en todas las microcomputadoras que utilizaban los chips 8080, Zilog Z80 y otros. Se escribieron

muchos programas de aplicación para ejecutarse en CP/M, lo cual le permitió dominar por comple-

to el mundo de la microcomputación durante un tiempo aproximado de 5 años.



A principios de la década de 1980, IBM diseñó la IBM PC y buscó software para ejecutarlo en

ella. La gente de IBM se puso en contacto con Bill Gates para obtener una licencia de uso de su in-

térprete de BASIC. También le preguntaron si sabía de un sistema operativo que se ejecutara en la

PC. Gates sugirió a IBM que se pusiera en contacto con Digital Research, que en ese entonces era

la compañía con dominio mundial en el área de sistemas operativos. Kildall rehusó a reunirse con

IBM y envió a uno de sus subordinados, a lo cual se le considera sin duda la peor decisión de ne-

gocios de la historia. Para empeorar más aún las cosas, su abogado se rehusó a firmar el contrato

de no divulgación de IBM sobre la PC, que no se había anunciado todavía. IBM regresó con Gates

para ver si podía proveerles un sistema operativo.

Cuando IBM regresó, Gates se había enterado de que un fabricante local de computadoras,

Seattle Computer Products, tenía un sistema operativo adecuado conocido como DOS (Disk Ope-

rating System; Sistema Operativo en Disco). Se acercó a ellos y les ofreció comprarlo (supues-

tamente por 75,000 dólares), a lo cual ellos accedieron de buena manera. Después Gates ofreció

a IBM un paquete con DOS/BASIC, el cual aceptó. IBM quería ciertas modificaciones, por lo

que Gates contrató a la persona que escribió el DOS, Tim Paterson, como empleado de su recién

creada empresa de nombre Microsoft, para que las llevara a cabo. El sistema rediseñado cambió

su nombre a MS-DOS (Microsoft Disk Operating System; Sistema Operativo en Disco de Micro-

Soft) y rápidamente llegó a dominar el mercado de la IBM PC. Un factor clave aquí fue la deci-

sión de Gates (que en retrospectiva, fue en extremo inteligente) de vender MS-DOS a las

empresas de computadoras para que lo incluyeran con su hardware, en comparación con el inten-

to de Kildall por vender CP/M a los usuarios finales, uno a la vez (por lo menos al principio).

Después de que se supo todo esto, Kildall murió en forma repentina e inesperada debido a cau-

sas que aún no han sido reveladas por completo.

Para cuando salió al mercado en 1983 la IBM PC/AT, sucesora de la IBM PC, con la CPU Intel

80286, MS-DOS estaba muy afianzado y CP/M daba sus últimos suspiros. Más adelante, MS-DOS

se utilizó ampliamente en el 80386 y 80486. Aunque la versión inicial de MS-DOS era bastante 

primitiva, las versiones siguientes tenían características más avanzadas, incluyendo muchas que 

se tomaron de UNIX. (Microsoft estaba muy al tanto de UNIX e inclusive vendía una versión de 

este sistema para microcomputadora, conocida como XENIX, durante los primeros años de la com-

pañía).

CP/M, MS-DOS y otros sistemas operativos para las primeras microcomputadoras se basaban



en que los usuarios escribieran los comandos mediante el teclado. Con el tiempo esto cambió debi-

do a la investigación realizada por Doug Engelbart en el Stanford Research Institute en la década

de 1960. Engelbart inventó la Interfaz Gráfica de Usuario GUI, completa con ventanas, iconos,

menús y ratón. Los investigadores en Xerox PARC adoptaron estas ideas y las incorporaron en las

máquinas que construyeron.

Un día, Steve Jobs, que fue co-inventor de la computadora Apple en su cochera, visitó PARC,

vio una GUI y de inmediato se dio cuenta de su valor potencial, algo que la administración de Xe-

rox no hizo. Esta equivocación estratégica de gigantescas proporciones condujo a un libro titulado



Fumbling the Future (Smith y Alexander, 1988). Posteriormente, Jobs emprendió el proyecto de

construir una Apple con una GUI. Este proyecto culminó en Lisa, que era demasiado costosa y fra-

casó comercialmente. El segundo intento de Jobs, la Apple Macintosh, fue un enorme éxito, no só-

lo debido a que era mucho más económica que Lisa, sino también porque era amigable para el



16

INTRODUCCIÓN

CAPÍTULO 1


SECCIÓN 1.2

HISTORIA DE LOS SISTEMAS OPERATIVOS



17

usuario (user friendly), lo cual significaba que estaba diseñada para los usuarios que no sólo no sa-

bían nada acerca de las computadoras, sino que además no tenían ninguna intención de aprender.

En el mundo creativo del diseño gráfico, la fotografía digital profesional y la producción de video

digital profesional, las Macintosh son ampliamente utilizadas y sus usuarios son muy entusiastas

sobre ellas. 

Cuando Microsoft decidió crear un sucesor para el MS-DOS estaba fuertemente influenciado

por el éxito de la Macintosh. Produjo un sistema basado en GUI llamado Windows, el cual en un

principio se ejecutaba encima del MS-DOS (es decir, era más como un shell que un verdadero sis-

tema operativo). Durante cerca de 10 años, de 1985 a 1995, Windows fue sólo un entorno gráfico

encima de MS-DOS. Sin embargo, a partir de 1995 se liberó una versión independiente de Win-

dows, conocida como Windows 95, que incorporaba muchas características de los sistemas opera-

tivos y utilizaba el sistema MS-DOS subyacente sólo para iniciar y ejecutar programas de MS-DOS

antiguos. En 1998, se liberó una versión ligeramente modificada de este sistema, conocida como

Windows 98. Sin embargo, tanto Windows 95 como Windows 98 aún contenían una gran cantidad

de lenguaje ensamblador para los procesadores Intel de 16 bits.

Otro de los sistemas operativos de Microsoft es Windows NT (NT significa Nueva Tecnolo-

gía), que es compatible con Windows 95 en cierto nivel, pero fue completamente rediseñado en su

interior. Es un sistema completo de 32 bits. El diseñador en jefe de Windows NT fue David Cutler,

quien también fue uno de los diseñadores del sistema operativo VMS de VAX, por lo que hay al-

gunas ideas de VMS presentes en NT. De hecho, había tantas ideas de VMS presentes que el pro-

pietario de VMS (DEC) demandó a Microsoft. El caso se resolvió en la corte por una cantidad de

muchos dígitos. Microsoft esperaba que la primera versión de NT acabara con MS-DOS y todas las

demás versiones de Windows, ya que era un sistema muy superior, pero fracasó. No fue sino hasta

Windows NT 4.0 que finalmente empezó a tener éxito, en especial en las redes corporativas. La ver-

sión 5 de Windows NT cambió su nombre a Windows 2000 a principios de 1999. Estaba destinada

a ser el sucesor de Windows 98 y de Windows NT 4.0.

Esto tampoco funcionó como se esperaba, por lo que Microsoft preparó otra versión de Win-

dows 98 conocida como Windows Me (Millennium edition). En el 2001 se liberó una versión lige-

ramente actualizada de Windows 2000, conocida como Windows XP. Esa versión duró mucho más

en el mercado (6 años), reemplazando a casi todas las versiones anteriores de Windows. Después,

en enero del 2007 Microsoft liberó el sucesor para Windows XP, conocido como Windows Vista.

Tenía una interfaz gráfica nueva, Aero, y muchos programas de usuario nuevos o actualizados. Mi-

crosoft espera que sustituya a Windows XP por completo, pero este proceso podría durar casi toda

una década.

El otro competidor importante en el mundo de las computadoras personales es UNIX (y to-

das sus variantes). UNIX es más fuerte en los servidores tanto de redes como empresariales, pe-

ro también está cada vez más presente en las computadoras de escritorio, en especial en los países

que se desarrollan con rapidez, como India y China. En las computadoras basadas en Pentium,

Linux se está convirtiendo en una alternativa popular para Windows entre los estudiantes y cada

vez más usuarios corporativos. Como agregado, a lo largo de este libro utilizaremos el término

“Pentium” para denotar al Pentium I, II, III y 4, así como sus sucesores tales como el Core 2 Duo.

El término x86 también se utiliza algunas veces para indicar el rango completo de CPU Intel par-

tiendo desde el 8086, mientras que utilizaremos “Pentium” para indicar todas las CPU desde el


Pentium I. Admitimos que este término no es perfecto, pero no hay disponible uno mejor. Uno se

pregunta qué genio de mercadotecnia en Intel desperdició una marca comercial (Pentium) que 

la mitad del mundo conocía bien y respetaba, sustituyéndola con términos como “Core 2 duo”

que muy pocas personas comprenden; ¿qué significan “2” y “duo”? Tal vez “Pentium 5” (o “Pen-

tium 5 dual core”, etc.) eran demasiado difíciles de recordar. FreeBSD es también un derivado

popular de UNIX, que se originó del proyecto BSD en Berkeley. Todas la computadoras modernas

Macintosh utilizan una versión modificada de FreeBSD. UNIX también es estándar en las estacio-

nes de trabajo operadas por chips RISC de alto rendimiento, como los que venden Hewlett-Packard

y Sun Microsystems.

Muchos usuarios de UNIX, en especial los programadores experimentados, prefieren una in-

terfaz de línea de comandos a una GUI, por lo que casi todos los sistemas UNIX presentan un sis-

tema de ventanas llamado X Window System (también conocido como X11), producido en el

M.I.T. Este sistema se encarga de la administración básica de las ventanas y permite a los usuarios

crear, eliminar, desplazar y cambiar el tamaño de las ventanas mediante el uso de un ratón. Con fre-

cuencia hay disponible una GUI completa, como Gnome KDE, para ejecutarse encima de X11,

lo cual proporciona a UNIX una apariencia parecida a la Macintosh o a Microsoft Windows, para

aquellos usuarios de UNIX que desean algo así.

Un interesante desarrollo que empezó a surgir a mediados de la década de 1980 es el crecimien-

to de las redes de computadoras personales que ejecutan sistemas operativos en red sistemas

operativos distribuidos (Tanenbaum y Van Steen, 2007). En un sistema operativo en red, los usua-

rios están conscientes de la existencia de varias computadoras, y pueden iniciar sesión en equipos

remotos y copiar archivos de un equipo a otro. Cada equipo ejecuta su propio sistema operativo lo-

cal y tiene su propio usuario (o usuarios) local.

Los sistemas operativos en red no son fundamentalmente distintos de los sistemas operativos

con un solo procesador. Es obvio que necesitan un dispositivo controlador de interfaz de red y cier-

to software de bajo nivel para controlarlo, así como programas para lograr el inicio de una sesión

remota y el acceso remoto a los archivos, pero estas adiciones no cambian la estructura esencial del

sistema operativo.

En contraste, un sistema operativo distribuido se presenta a sus usuarios en forma de un sis-

tema tradicional con un procesador, aun cuando en realidad está compuesto de varios procesado-

res. Los usuarios no tienen que saber en dónde se están ejecutando sus programas o en dónde se

encuentran sus archivos; el sistema operativo se encarga de todo esto de manera automática y efi-

ciente.


Los verdaderos sistemas operativos distribuidos requieren algo más que sólo agregar un poco

de código a un sistema operativo con un solo procesador, ya que los sistemas distribuidos y los cen-

tralizados difieren en varios puntos críticos. Por ejemplo, los sistemas distribuidos permiten con fre-

cuencia que las aplicaciones se ejecuten en varios procesadores al mismo tiempo, lo que requiere

algoritmos de planificación del procesador más complejos para poder optimizar la cantidad de pa-

ralelismo.

Los retrasos de comunicación dentro de la red implican a menudo que estos (y otros) algorit-

mos deban ejecutarse con información incompleta, obsoleta o incluso incorrecta. Esta situación es

muy distinta a la de un sistema con un solo procesador, donde el sistema operativo tiene informa-

ción completa acerca del estado del sistema.



18

INTRODUCCIÓN

CAPÍTULO 1


SECCIÓN 1.3

REVISIÓN DEL HARDWARE DE COMPUTADORA



19

1.3  REVISIÓN DEL HARDWARE DE COMPUTADORA

Un sistema operativo está íntimamente relacionado con el hardware de la computadora sobre la que

se ejecuta. Extiende el conjunto de instrucciones de la computadora y administra sus recursos. Para

trabajar debe conocer muy bien el hardware, por lo menos en lo que respecta a cómo aparece para el

programador. Por esta razón, revisaremos brevemente el hardware de computadora como se encuen-

tra en las computadoras personales modernas. Después de eso, podemos empezar a entrar en los de-

talles acerca de qué hacen los sistemas operativos y cómo funcionan.

Conceptualmente, una computadora personal simple se puede abstraer mediante un modelo co-

mo el de la figura 1-6. La CPU, la memoria y los dispositivos de E/S están conectados mediante un

bus del sistema y se comunican entre sí a través de este bus. Las computadoras personales moder-

nas tienen una estructura más complicada en la que intervienen varios buses, los cuales analizare-

mos más adelante; por ahora basta con este modelo. En las siguientes secciones analizaremos

brevemente estos componentes y examinaremos algunas de las cuestiones de hardware que son de

relevancia para los diseñadores de sistemas operativos; sobra decir que será un resumen muy com-

pacto. Se han escrito muchos libros acerca del tema del hardware de computadora y su organiza-

ción. Dos libros muy conocidos acerca de este tema son el de Tanenbaum (2006) y el de Patterson

y Hennessy (2004).

Monitor


Teclado

Impresora

USB

Unidad de



disco duro

Dispositivo

controlador

de disco duro

Dispositivo

controlador

de USB

Dispositivo



controlador

de teclado

Dispositivo

controlador

de video

Memoria


CPU

Bus


MMU

Figura 1-6. Algunos de los componentes de una computadora personal simple.

1.3.1 Procesadores

El “cerebro” de la computadora es la CPU, que obtiene las instrucciones de la memoria y las eje-

cuta. El ciclo básico de toda CPU es obtener la primera instrucción de memoria, decodificarla para

determinar su tipo y operandos, ejecutarla y después obtener, decodificar y ejecutar las instruccio-

nes subsiguientes. El ciclo se repite hasta que el programa termina. De esta forma se ejecutan los

programas.



Cada CPU tiene un conjunto específico de instrucciones que puede ejecutar. Así, un Pentium

no puede ejecutar programas de SPARC y un SPARC no puede ejecutar programas de Pentium. Co-

mo el acceso a la memoria para obtener una instrucción o palabra de datos requiere mucho más

tiempo que ejecutar una instrucción, todas las CPU contienen ciertos registros en su interior para

contener las variables clave y los resultados temporales. Debido a esto, el conjunto de instruccio-

nes generalmente contiene instrucciones para cargar una palabra de memoria en un registro y alma-

cenar una palabra de un registro en la memoria. Otras instrucciones combinan dos operandos de los

registros, la memoria o ambos en un solo resultado, como la operación de sumar dos palabras y al-

macenar el resultado en un registro o la memoria.

Además de los registros generales utilizados para contener variables y resultados temporales,

la mayoría de las computadoras tienen varios registros especiales que están visibles para el progra-

mador. Uno de ellos es el contador de programa (program counter), el cual contiene la dirección

de memoria de la siguiente instrucción a obtener. Una vez que se obtiene esa instrucción, el conta-

dor de programa se actualiza para apuntar a la siguiente.

Otro registro es el apuntador de pila (stack pointer), el cual apunta a la parte superior de la

pila (stack) actual en la memoria. La pila contiene un conjunto de valores por cada procedimiento

al que se ha entrado pero del que todavía no se ha salido. El conjunto de valores en la pila por pro-

cedimiento contiene los parámetros de entrada, las variables locales y las variables temporales que

no se mantienen en los registros.

Otro de los registros es PSW (Program Status Word; Palabra de estado del programa). Este 

registro contiene los bits de código de condición, que se asignan cada vez que se ejecutan las ins-

trucciones de comparación, la prioridad de la CPU, el modo (usuario o kernel) y varios otros bits

de control. Los programas de usuario pueden leer normalmente todo el PSW pero por lo general só-

lo pueden escribir en algunos de sus campos. El PSW juega un papel importante en las llamadas al

sistema y en las operaciones de E/S.

El sistema operativo debe estar al tanto de todos los registros. Cuando la CPU se multiplexa en

el tiempo, el sistema operativo detiene con frecuencia el programa en ejecución para (re)iniciar otro.

Cada vez que detiene un programa en ejecución, el sistema operativo debe guardar todos los regis-

tros para poder restaurarlos cuando el programa continúe su ejecución.

Para mejorar el rendimiento, los diseñadores de CPUs abandonaron desde hace mucho tiempo

el modelo de obtener, decodificar y ejecutar una instrucción a la vez. Muchas CPUs modernas cuen-

tan con medios para ejecutar más de una instrucción al mismo tiempo. Por ejemplo, una CPU po-

dría tener unidades separadas de obtención, decodificación y ejecución, de manera que mientras se

encuentra ejecutando la instrucción n, también podría estar decodificando la instrucción n

 1 y ob-

teniendo la instrucción n

 2. A dicha organización se le conoce como canalización (pipeline); la

figura 1-7(a) ilustra una canalización de tres etapas. El uso de canalizaciones más grandes es co-

mún. En la mayoría de los diseños de canalizaciones, una vez que se ha obtenido una instrucción y

se coloca en la canalización, se debe ejecutar aún si la instrucción anterior era una bifurcación con-

dicional que se tomó. Las canalizaciones producen grandes dolores de cabeza a los programadores

de compiladores y de sistemas operativos, ya que quedan al descubierto las complejidades de la má-

quina subyacente.

Aún más avanzada que el diseño de una canalización es la CPU superescalar, que se muestra

en la figura 1-7(b). En este diseño hay varias unidades de ejecución; por ejemplo, una para la arit-

20

INTRODUCCIÓN

CAPÍTULO 1


SECCIÓN 1.3

REVISIÓN DEL HARDWARE DE COMPUTADORA



21

mética de enteros, una para la aritmética de punto flotante y otra para las operaciones Booleanas.

Dos o más instrucciones se obtienen a la vez, se decodifican y se vacían en un búfer de contención

hasta que puedan ejecutarse. Tan pronto como una unidad de ejecución se encuentre libre, busca en

el búfer de contención para ver si hay una instrucción que pueda manejar; de ser así, saca la instruc-

ción del búfer y la ejecuta. Una consecuencia de este diseño es que con frecuencia las instrucciones

del programa se ejecutan en forma desordenada. En gran parte, es responsabilidad del hardware ase-

gurarse de que el resultado producido sea el mismo que hubiera producido una implementación se-

cuencial, pero una cantidad molesta de complejidad es impuesta al sistema operativo, como

veremos más adelante.

La mayoría de las CPU, con excepción de las extremadamente simples que se utilizan en los

sistemas integrados, tienen dos modos: modo kernel y modo usuario, como dijimos antes. Por lo ge-

neral, un bit en el PSW controla el modo. Al operar en modo kernel, la CPU puede ejecutar cual-

quier instrucción de su conjunto de instrucciones y utilizar todas las características del hardware. El

sistema operativo opera en modo kernel, lo cual le da acceso al hardware completo.

En contraste, los programas de usuario operan en modo de usuario, el cual les permite ejecutar

sólo un subconjunto de las instrucciones y les da acceso sólo a un subconjunto de las característi-

cas. En general, no se permiten las instrucciones que implican operaciones de E/S y protección de

la memoria en el modo usuario. Desde luego que también está prohibido asignar el bit de modo del

PSW para entrar al modo kernel.

Para obtener servicios del sistema operativo, un programa usuario debe lanzar una llamada al



Compartir con tus amigos:
1   2   3   4   5   6   7   8   9   ...   134


La base de datos está protegida por derechos de autor ©absta.info 2019
enviar mensaje

    Página principal