Top Banner
13

Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Apr 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Introducción

Gunnar Wolf � IIEc-UNAM

Esteban Ruiz � CIFASIS-UNR

Federico Bergero � CIFASIS-UNR

Erwin Meza � UNICAUCA

Índice

1. ¾Qué es un sistema operativo? 1

1.1. ¾Por qué estudiar los sistemas operativos? . . . . . . . . . . . . . 2

2. Funciones y objetivos de los sistemas operativos 3

3. Evolución de los sistemas operativos 3

3.1. Proceso por lotes (batch processing) . . . . . . . . . . . . . . . . 43.2. Sistemas en lotes con dispositivos de carga (spool) . . . . . . . . 43.3. Sistemas multiprogramados . . . . . . . . . . . . . . . . . . . . . 53.4. Sistemas de tiempo compartido . . . . . . . . . . . . . . . . . . . 5

4. Y del lado de las computadoras personales 6

4.1. Primeros sistemas para entusiastas . . . . . . . . . . . . . . . . . 64.2. La revolución de los 8 bits . . . . . . . . . . . . . . . . . . . . . . 74.3. La computadora para �nes �serios�: La familia PC . . . . . . . . 74.4. El impacto del entorno grá�co (WIMP) . . . . . . . . . . . . . . 84.5. Convergencia de los dos grandes mercados . . . . . . . . . . . . . 9

5. Organización de los sistemas operativos 11

6. Otros recursos 13

1. ¾Qué es un sistema operativo?

El sistema operativo es el principal programa que se ejecuta en toda com-putadora de propósito general.

Hay sistemas operativos de todo tipo, desde muy simples hasta terriblementecomplejos, y entre más casos de uso hay para el cómputo en la vida diaria, másvariedad habrá en ellos.

1

Page 2: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

No nos referiremos al sistema operativo como lo ve el usuario �nal, o comolo vende la mercadotecnia � El ambiente grá�co, los programas que se ejecutanen éste, los lenguajes de programación en que están desarrollados y en que másfácilmente se puede desarrollar para ellos, e incluso el conjunto básico de fun-ciones que las bibliotecas base ofrecen son principalmente clientes del sistemaoperativo � Se ejecutan sobre él, y ofrecen su implementación a sus usuarios(incluídos, claro, los desarrolladores). La diferencia en el uso son sólo �y si mu-cho� consecuencias del diseño de un sistema operativo. Más aún, con el mismosistema operativo �como pueden constatarlo comparando dos distribuciones deLinux, o incluso la forma de trabajo de dos usuarios en la misma computadora�es posible tener entornos operativos completamente disímiles.

1.1. ¾Por qué estudiar los sistemas operativos?

La importancia de estudiar este tema radica no sólo en comprender losmecanismos que emplean los sistemas operativos para cumplir sus tareas sino enentender estos mecanismos para evitar los errores más comunes al programar,que pueden resultar desde un rendimiento de�ciente hasta pérdida de informa-ción.

Como desarrolladores, comprender el funcionamiento básico de los sistemasoperativos y las principales alternativas que nos ofrecen en muchos de sus puntos,o saber diseñar algoritmos y procesos que se ajusten mejor al sistema operativoen que vayamos a ejecutarlo, puede resultar en una diferencia cualitativa decisivaen nuestros productos.

Como administradores de sistemas, muchas veces podemos enfrentarnos asituaciones de bajo rendimiento, de con�ictos entre aplicaciones, demoras enla ejecución, y comprender lo que ocurre tras bambalinas resulta fundamentalpara realizar nuestro trabajo. Los sistemas de archivos resultan un área de es-pecial interés para administradores de sistemas: ¾Cómo comparar las virtudesy desventajas de tantos sistemas existentes? ¾Por qué puede resultarnos conve-niente mezclarlos en el mismo servidor? ¾Cómo evitar la corrupción o pérdida deinformación? Lo que es más, ¾cómo recuperar información de un disco dañado?

En el área de la seguridad en cómputo, la relación resulta obvia: si nos in-teresa localizar vulnerabilidades que nos permitan elevar nuestro nivel de privi-legios, ¾cómo podríamos hacerlo sin comprender cómo se engranan los diversoscomponentes de un sistema? La cantidad de tareas que debe cubrir un sistemaoperativo es tremenda, y veremos ejemplos de sitios donde un atacante puedeenfocar sus energías. Del mismo modo, para quien busca defender un sistema(o una red), resulta fundamental comprender cuáles son los vectores de ataquemás comunes y �nuevamente� la relación entre los componentes involucradospara poder remediar o, mejor, prevenir dichos ataques.

Y claro está, podemos ver al mundo en general, fuera del entorno del cóm-puto, como una serie de modelos interactuantes. Muchos de los métodos y al-goritmos que aquí veremos pueden emplearse fuera del entorno del cómputo, yuna vez que comprendamos los problemas de concurrencia, de competencia porrecursos, o de protección y separación que han sido resueltos en el campo de los

2

Page 3: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

sistemas operativos, podemos extrapolar estas soluciones a otros campos.El camino por delante es largo, y puede resultar interesante y divertido.

2. Funciones y objetivos de los sistemas opera-tivos

El sistema operativo es el único programa que interactúa directamente conel hardware de la computadora. Sus funciones primarias son:

Abstracción Los programas no deben tener que preocuparse de los detalles deacceso a hardware, o de la con�guración particular de una computadora.El sistema operativo se encarga de proporcionar una serie de abstraccionespara que los programadores puedan enfocarse en resolver las necesidadesparticulares de sus usuarios. Un ejemplo de tales abstracciones es que lainformación está organizada en archivos y directorios (en uno o muchosdispositivos de almacenamiento).

Administración de recursos Una sistema de cómputo puede tener a su dis-posición una gran cantidad de recursos (memoria, espacio de almace-namiento, tiempo de procesamiento, etc.), y los diferentes procesos quese ejecuten en él compiten por ellos. Al gestionar toda la asignación derecursos, el sistema operativo puede implementar políticas que los asig-nen de forma efectiva y acorde a las necesidades establecidas para dichosistema.

Aislamiento En un sistema multiusuario y multitarea cada proceso y cadausuario no tendrá que preocuparse por otros que estén usando el mismosistema � Idealmente, su experiencia será la misma que si el sistemaestuviera exclusivamente dedicado a su atención (aunque fuera un sistemamenos poderoso).

Para implementar correctamente las funciones de aislamiento hace faltaque el sistema operativo utilice hardware especí�co para dicha protección.

3. Evolución de los sistemas operativos

No se puede comenzar a abordar el tema de los sistemas operativos sin re-visar brevemente su desarrollo histórico. Esto no sólo permitirá comprender porqué fueron apareciendo determinadas características y patrones de diseño que sesiguen empleando décadas más tarde, sino (como resulta particularmente bienejempli�cado en el discurso de recepción del premio Turing de Fernando Cor-bató en 1990, On building systems that will fail), adecuar un sistema existentea un entorno cambiante, por mejor diseñado que éste estuviera, lleva casi in-evitablemente a abrir espacios de comportamiento no previsto � El espacio máspropicio para que �orezcan los fallos. Conocer los factores que motivaron a losdistintos desarrollos puede ayudar a prever y prevenir problemas.

3

Page 4: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

3.1. Proceso por lotes (batch processing)

Los antecedentes a lo que hoy se conoce como sistema operativo se puedenencontrarlos en la automatización inicial del procesamiento de diferentes progra-mas, surgida en los primeros centros de cómputo: cuando en los `50 aparecieronlos dispositivos perforadores/lectores de tarjetas de papel, el tiempo que unacomputadora estaba improductiva esperando a que estuviera lista una tarea

(como se designaba a una ejecución de cada determinado programa) para poderejecutarla disminuyó fuertemente ya que los programadores entregaban su lotede tarjetas perforadas (en inglés, batches) a los operadores, quienes las ali-mentaban a los dispositivos lectores, que lo cargaban en memoria en un tiemporazonable, iniciaban y monitoreaban la ejecución, y producían los resultados.

En esta primer época en que las computadoras se especializaban en tareasde cálculo intensivo y los dispositivos que interactuaban con medios externoseran prácticamente desconocidos, el rol del sistema monitor o de control erabásicamente asistir al operador en la carga de los programas y las bibliotecasrequeridas, la noti�cación de resultados y la contabilidad de recursos empleadospara su cobro.

Los sistemas monitores se fueron so�sticando al implementar proteccionesque evitaran la corrupción de otros trabajos (por ejemplo, lanzar erróneamentela instrucción leer siguiente tarjeta causaría que el siguiente trabajo encoladoperdiera sus primeros caracteres, corrompiéndolo e impidiendo su ejecución), oque entraran en un ciclo in�nito, estableciendo alarmas (timers) que interrum-pirían la ejecución de un proceso si éste duraba más allá del tiempo estipula-do. Estos monitores implicaban la modi�cación del hardware para contemplardichas características de seguridad � Y ahí se puede hablar ya de la caracterís-tica básica de gestión de recursos que identi�ca a los sistemas operativos.

Cabe añadir que el tiempo de carga y puesta a punto de una tarea seguíarepresentando una parte importante del tiempo que la computadora dedicabaal procesamiento: un lector de cintas rápido procesaba del orden de cientos decaracteres por minuto, y a pesar de la lentitud relativa de las computadoras delos `50 ante los estándares de hoy (se medirían por miles de instrucciones porsegundo, KHz, en vez de miles de millones como se hace hoy, GHz), esperarcinco o diez minutos con el sistema completamente detenido por la carga de unprograma moderadadamente extenso resulta a todas luces un desperdicio.

3.2. Sistemas en lotes con dispositivos de carga (spool)

Una mejora natural a este último punto fue la invención del spool : Un mecan-ismo de entrada/salida que permitía que una computadora de propósito especí�-co, mucho más económica y limitada, leyera las tarjetas y las fuera convirtiendoa cinta magnética, un medio mucho más rápido, teniéndola lista para que lacomputadora central la cargara cuando terminara con el trabajo anterior. Delmismo modo, la computadora central guardarba sus resultados en cinta paraque equipos especializados la leyeran e imprimieran para el usuario solicitante.

La palabra spool (bobina) se tomó como acrónimo inverso hacia Simulta-

4

Page 5: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

neous Peripherial Operations On-Line, operación simultánea de periféricos en

línea.

3.3. Sistemas multiprogramados

A lo largo de su ejecución, un programa normalmente pasa por etapas conmuy distintas características: durante un ciclo fuertemente dedicado al cálculonumérico, el sistema opera limitado por el CPU (CPU-bound), mientras que alleer o escribir resultados a medios externos (incluso a través de spools) el límitees impuesto por los dispositivos, esto es, opera limitado por entrada-salida (I-Obound). La programación multitareas o los sistemas multiprogramados buscabanmaximizar el tiempo de uso efectivo del procesador ejecutando varios procesosal mismo tiempo.

El hardware requerido cambió fuertemente. Si bien se esperaba que cadausuario fuera responsable con el uso de recursos, se hizo necesario que aparecierala infraestructura de protección de recursos: un proceso no debe sobreescribir elespacio de memoria de otro (ni el código ni los datos), mucho menos el espaciodel monitor. Esta protección se encuentra en la Unidad de Manejo de Memoria

(MMU), presente en todas las computadoras de uso genérico desde los `90.Ciertos dispositivos requieren bloqueo para ofrecer acceso exclusivo/único

� Cintas e impresoras, por ejemplo, son de acceso estrictamente secuencial, ysi dos usuarios intentaran usarlas al mismo tiempo, el resultado para ambos secorrompería. Para estos dispositivos, el sistema debe implementar otros spoolsy mecanismos de bloqueo.

3.4. Sistemas de tiempo compartido

El modo de interactuar con las computadoras se modi�có drásticamentedurante los `60, al extenderse la multitarea para convertirse en sistemas inter-activos y multiusuarios, en buena medida diferenciados de los anteriores por laaparición de las terminales (primero teletipos seriales, posteriormente equiposcon una pantalla completa como se conocen hasta hoy).

En primer término, la tarea de programación y depuración del código sesimpli�có fuertemente al poder el programador hacer directamente cambios ysometer el programa a la ejecución inmediata. En segundo término, la computa-dora nunca más estaría simplemente esperando a que esté listo un progama:Mientras un programador editaba o compilaba su programa, la computadoraseguía calculando lo que otros procesos requirieran.

Un cambio fundamental entre el modelo de multiprogramación y de tiempo

compartido es el tipo de control sobre la multitarea: (se verá en detalle en elcapítulo ?? (Administración de procesos)

Multitarea cooperativa o no apropiativa (Cooperative multitasking) La im-plementaron los sistemas multiprogramados: Cada proceso tenía controldel CPU hasta que éste hacía una llamada al sistema (o indicara su dis-

posición a cooperar por medio de la llamada yield: ceder el paso).

5

Page 6: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Un cálculo largo no era interrumpido por el sistema operativo, en conse-cuencia un error de programador podía congelar la computadora completa.

Multitarea preventiva o apropiativa (Preemptive multitasking) En los sis-temas de tiempo compartido, el reloj del sistema interrumpe periódica-mente a los diversos procesos, trans�riendo forzosamente el control nue-vamente al sistema operativo. El sistema operativo puede entonces elegirotro proceso para continuar la ejecución.

Además, fueron naciendo de forma natural y paulatina las abstraccionesque se conocen hoy en día, como los conceptos de archivos y directorios, y elcódigo necesario para emplearlos iba siendo enviado a las bibliotecas de sistema

y, cada vez más (por su centralidad) hacia el núcleo mismo del �ahora sí� sistemaoperativo.

Un cambio importante entre los sistemas multiprogramados y de tiempocompartido es que la velocidad del cambio entre una tarea y otra es mucho másrápido: si bien en un sistema multiprogramado un cambio de contexto podíaproducirse sólo cuando la tarea cambiaba de un modo de ejecución a otro, enun sistema interactivo, para dar la ilusión de uso exclusivo de la computadora,el hardware emitía periódicamente al sistema operativo interrupciones (señales)que le indicaban que cambie el proceso activo (como ahora se le denomina a unainstancia de un programa en ejecución).

Diferentes tipos de proceso pueden tener distinto nivel de importancia �Ya sea porque son más relevantes para el funcionamiento de la computadoramisma (procesos de sistema), porque tienen mayor carga de interactividad (porla experiencia del usuario) o por diversas categorías de usuarios (sistemas concontabilidad por tipo de atención). Esto requiere la implementación de diversasprioridades para cada uno de estos.

4. Y del lado de las computadoras personales

Si bien la discusión hasta este momento asume una computadora central conoperadores dedicados y múltiples usuarios, en la década de los `70 comenzarona aparecer las computadoras personales, sistemas en un inicio verdaderamentereducidos en prestaciones y a un nivel de precios que los ponían al alcance,primero, de los a�cionados entusiastas y, posteriormente, de cualquiera.

4.1. Primeros sistemas para entusiastas

Las primeras computadoras personales eran distribuídas sin sistemas oper-ativos o lenguajes de programación; la interfaz primaria para programarlas eraa través de llaves (switches), y para recibir sus resultados, se utilizaban bancosde LEDs. Claro está, esto requería conocimientos especializados, y las computa-doras personales eran aún vistas sólo como juguetes caros.

6

Page 7: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Figura 1: La microcomputadora Altair 8800, primer computadora personal condistribución masiva, a la venta a partir de 1975. (Imagen de la Wikipedia: Altair8800 )

4.2. La revolución de los 8 bits

La verdadera revolución apareció cuando poco tiempo más tarde, comen-zaron a venderse computadoras personales con salida de video (típicamente através de una televisión) y entrada a través de un teclado. Estas computadoraspopularizaron el lenguaje de programación BASIC, diseñado para usuarios no-vatos en los `60, y para permitir a los usuarios gestionar sus recursos (unidadesde cinta, pantalla posicionable, unidades de disco, impresoras, modem, etc.)llevaban un software mínimo de sistema � Nuevamente, un proto-sistema op-erativo.

Figura 2: La Commodore Pet 2001, en el mercado desde 1977, una de las primerascon intérprete de BASIC. (Imagen de la Wikipedia: Commodore PET )

4.3. La computadora para �nes �serios�: La familia PC

Al aparecer las computadoras personales �serias�, orientadas a la o�cina másque al hobby, a principios de los `80 (particularmente representadas por la IBMPC, 1981), sus sistemas operativos se comenzaron a diferenciar de los equipos

7

Page 8: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

previos al separar el entorno de desarrollo en algún lenguaje de programacióndel entorno de ejecución. El rol principal del sistema operativo ante el usuarioera administrar los archivos de las diversas aplicaciones a través de una sencillainterfaz de línea de comando, y lanzar las aplicaciones que el usuario selecciona-ba.

La PC de IBM fue la primer arquitectura de computadoras personales endesarrollar una amplia familia de clones, computadoras compatibles diseñadaspara trabajar con el mismo sistema operativo, y que eventualmente capturaroncasi el 100% del mercado. Prácticamente todas las computadoras de escritorioy portátiles en el mercado hoy derivan de la arquitectura de la IBM PC.

Figura 3: La computadora IBM PC modelo 5150 (1981), iniciadora de la arqui-tectura predominantemente en uso hasta el día de hoy. (Imagen de la Wikipedia:IBM Personal Computer)

Ante las aplicaciones, el sistema operativo (PC-DOS, en las versiones dis-tribuídas directamente por IBM, o el que se popularizó más, MS-DOS, en losclones) ofrecía la ya conocida serie de interfaces y abstracciones para adminis-trar los archivos y la entrada/salida a través de sus puertos. Cabe destacar que,particularmente en sus primeros años, muchos programas se ejecutaban direc-tamente sobre el hardware, arrancando desde el BIOS y sin emplear el sistemaoperativo.

4.4. El impacto del entorno grá�co (WIMP)

Hacia mediados de los `80 comenzaron a aparecer computadoras con inter-faces grá�cas basadas en el paradigma WIMP (Windows, Icons, Menus, Point-

er ; Ventanas, Iconos, Menúes, Apuntador), que permitían la interacción convarios programas al mismo tiempo. Esto no necesariamente signi�ca que seansistemas multitarea � Por ejemplo, la primer interfaz de MacOS permitía visu-alizar varias ventanas abiertas simultáneamente, pero sólo el proceso activo seejecutaba.

8

Page 9: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Figura 4: Apple Macintosh (1984), popularizó la interfaz usuario grá�ca (GUI).(Imagen de la Wikipedia: Macintosh)

Esto comenzó, sin embargo, a plantear inevitablemente las necesidades deconcurrencia a los programadores. Los programas ya no tenían acceso directo a lapantalla para manipular a su antojo, sino que a una abstracción (la ventana) quepodía variar sus medidas, y que requería que toda la salida fuera estrictamentea través de llamadas a bibliotecas de primitivas grá�cas que comenzaron a versecomo parte integral del sistema operativo.

Además, los problemas de protección y separación entre procesos concur-rentes comenzaron a hacerse evidentes: los programadores tenían ahora queprogramar con la conciencia de que compartirían recursos � con el limitante(que no tenían en las máquinas profesionales) de no contar con hardware es-pecializado para esta protección. Los procesadores en uso comercial en los `80no manejaban anillos o niveles de ejecución ni unidad de administración de

memoria (MMU), por lo que un programa fallado o dañino podía corromper laoperación completa del equipo. Y si bien los entornos que más éxito tuvieron(Apple MacOS y Microsoft Windows) no implementaban multitarea real, sí hubodesde el principio sistemas como la Commodore Amiga o la Atari ST que hacíanun multitasking preventivo verdadero.

Naturalmente, ante el uso común de un entorno de ventanas, los progra-mas que se ejecutaban sin requerir de la carga del sistema operativo cayeronlentamente en el olvido.

4.5. Convergencia de los dos grandes mercados

Conforme fueron apareciendo los CPU con características su�cientes en elmercado para ofrecer la protección y aislamiento necesario (particularmente, In-

9

Page 10: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Figura 5: Commodore Amiga 500 (1987), la computadora más popular de lafamilia Amiga, con amplias capacidades multimedia y multitarea preventiva; unaverdadera maravilla para su momento. (Imagen de la Wikipedia: Amiga)

tel 80386 y Motorola 68030), la brecha de funcionalidad entre las computadoraspersonales y las estaciones de trabajo y mainframes se fue cerrando.

Hacia principios de los 1990, la mayor parte de las computadoras de ar-quitecturas alternativas fueron cediendo a las presiones del mercado, y haciamediados de la década sólo quedaban dos arquitecturas principales: la derivadade IBM y la derivada de la Apple Macintosh.

Los sistemas operativos primarios para ambas plataformas fueron respon-diendo a las nuevas características del hardware: en las IBM, la presencia deMicrosoft Windows (originalmente un entorno operativo desde su primer edi-ción en 1985, evolucionando hacia un sistema operativo completo ejecutandosobre una base de MS-DOS en 1995) se fue haciendo prevalente hasta ser lanorma. Windows pasó de ser un sistema meramente de aplicaciones propias yque operaba únicamente por reemplazo de aplicación activa a ser un sistemade multitarea cooperativa, y �nalmente un sistema que requería protección enhardware (80386) e implementaba multitarea preventiva.

A partir del 2003, el núcleo de Windows en más amplio uso fue reemplazadopor un desarrollo hecho de inicio como un sistema operativo completo y ya nocomo una aplicación dependiente de MS-DOS: el núcleo de Nueva Tecnología(Windows NT), que, sin romper compatibilidad con los APIs históricos de Win-dows, ofreció mucho mayor estabilidad.

Por el lado de Apple, la evolución fue muy en paralelo: ante un sistemaya agotado y obsoleto, el MacOS 9, en 2001 anunció una nueva versión de susistema operativo que fue en realidad un relanzamiento completo: MacOS X esun sistema basado en un núcleo Unix BSD, sobre el microkernel Mach.

Y otro importante jugador que entró en escena durante los `90 fue el soft-ware libre, por medio de varias implementaciones distintas de sistemas tipoUnix � principalmente, Linux y los *BSD (FreeBSD, NetBSD, OpenBSD). Es-tos sistemas implementaron, colaborativamente y a escala mundial, softwarecompatibles con las PC y con el que se ejecutaba en las estaciones de trabajo

10

Page 11: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

a gran escala, con alta con�abilidad, y cerrando por �n la divergencia del árboldel desarrollo de la computación en �erros grandes y �erros chicos.

Al día de hoy, la arquitectura derivada de Intel (y la PC) es el claro ganadorde este proceso de 35 años, habiendo conquistado casi la totalidad de los casos deuso, incluso las máquinas Apple. Hoy en día, la arquitectura Intel ejecuta desdesubportátiles hasta supercomputadoras y centros de datos; el sistema operativoespecí�co varía según el uso, yendo mayoritariamente hacia Windows, con losdiferentes Unixes concentrados en los equipos servidores.

En el frente de los dispositivos embebidos (las computadoras más pequeñas,desde microcontroladores hasta teléfonos y tabletas), la norma es la arquitecturaARM, también bajo versiones especí�cas de sistemas operativos Unix yWindows(en ese orden).

5. Organización de los sistemas operativos

Para comenzar el estudio de los sistemas operativos, la complejidad del temarequiere que se haga de una forma modular. En este texto no se busca enseñarcómo se usa un determinado sistema operativo, ni siquiera comparar el uso deuno con otro (fuera de hacerlo con �nes de explicar diferentes implementaciones).

Al nivel que se estudiará, un sistema operativo es más bien un gran progra-ma, que ejecuta otros programas y les provee un conjunto de interfaces paraque puedan aprovechar los recursos de cómputo. Hay dos formas primarias deorganización interna del sistema operativo: los sistemas monolíticos y los sis-temas microkernel. Y si bien no se puede marcar una línea clara a rajatablaque indique en qué clasi�ciación cae cada sistema, no es di�cil encontrar líneasbases.

Monolíticos La mayor parte de los sistemas operativos históricamente hansido monolíticos � Esto signi�ca que hay un sólo proceso privilegiado

(justamente el sistema operativo) que opera en modo supervisor, y dentrodel cual se encuentran todas las rutinas para las diversas tareas que realizael sistema operativo.

Microkernel El núcleo del sistema operativo se mantiene en el mínimo posiblede funcionalidad, descargando en procesos especiales sin privilegios lastareas que implementan el acceso a dispositivos y las diversas políticas deuso del sistema.

La principal ventaja de diseñar un sistema siguiendo un esquema monolíticoes la simpli�cación de una gran cantidad de mecanismos de comunicación, quelleva a una mayor velocidad de ejecución (al requerir menos cambios de contex-to para cualquier operación realizada). Además, al manejarse la comunicacióndirecta como paso de estructuras en memoria, el mayor acoplamiento permitemás �exibilidad al adecuarse para nuevos requisitos (al no tener que modi�carno sólo al núcleo y a los procesos especiales, sino también la interfaz públicaentre ellos).

11

Page 12: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Figura 6: Esquematización de los componentes en un sistema monolítico

Figura 7: Esquematización de los componentes en un sistema microkernel

Por otro lado, los sistemas microkernel siguen esquemas lógicos más limpios,permiten implementaciones más elegantes y facilitan la comprensión por sep-arado de cada una de sus piezas. Pueden auto-repararse con mayor facilidad,dado que en caso de fallar uno de los componentes (por más que parezca ser demuy bajo nivel), el núcleo puede reiniciarlo o incluso reemplazarlo.

Sistemas con concepciones híbridas No se puede hablar de concepcionesúnicas ni de verdades absolutas. A lo largo del libro se verán ejemplos deconcepciones híbridas en este sentido � Sistemas que son mayormentemonolíticos pero manejan algunos procesos que parecerían centrales através de procesos de nivel usuario como los microkernel (por ejemplo,los sistemas de archivos en espacio de usuario, FUSE, en Linux).

12

Page 13: Introducción - gwolf.orgsistop.gwolf.org/pdf/01_introduccion.pdf · 1.1. ¾Por qué estudiar los sistemas operativos? La importancia de estudiar este tema radica no sólo en comprender

Figura 8: Esquematización de los componentes en un sistema híbrido

6. Otros recursos

On building systems that will fail

http://dl.acm.org/citation.cfm?id=1283947

Fernando J. Corbató (1990); ACM Turing award lectures

A Brief History of Computer Operating Systems

http://cs.gordon.edu/courses/cs322/lectures/history.html

R. Bjork (2000); Gordon College

Making EPERM friendlier

http://lwn.net/Articles/532771/

Michael Kerrisk (2013); Linux Weekly News: Explica algunas de las lim-itantes de la semántica POSIX: Falta de granularidad en el reporte demensajes de error (EPERM), y errno global por hilo.

Biculturalism

http://www.joelonsoftware.com/articles/Biculturalism.html

Joel Spolsky (2003); Joel on Software

13