stringtranslate.com

Sistema operativo distribuido

Un sistema operativo distribuido es un software de sistema sobre una colección de nodos computacionales independientes, conectados en red , que se comunican y están separados físicamente. Estos manejan trabajos que son atendidos por múltiples CPU. [1] Cada nodo individual contiene un subconjunto de software específico del sistema operativo agregado global. Cada subconjunto es una combinación de dos proveedores de servicios distintos. [2] El primero es un núcleo mínimo ubicuo , o micronúcleo , que controla directamente el hardware de ese nodo. El segundo es una colección de nivel superior de componentes de administración del sistema que coordinan las actividades individuales y colaborativas del nodo. Estos componentes abstraen las funciones del micronúcleo y dan soporte a las aplicaciones del usuario. [3]

El microkernel y la colección de componentes de gestión trabajan juntos. Apoyan el objetivo del sistema de integrar múltiples recursos y funcionalidades de procesamiento en un sistema eficiente y estable. [4] Esta integración perfecta de nodos individuales en un sistema global se conoce como transparencia o imagen única del sistema ; describe la ilusión que se brinda a los usuarios de la apariencia del sistema global como una única entidad computacional.

Descripción

Estructura de sistemas operativos basados ​​en núcleo monolítico, micronúcleo y núcleo híbrido

Un sistema operativo distribuido proporciona los servicios y la funcionalidad esenciales que se requieren de un sistema operativo, pero agrega atributos y configuraciones particulares para permitirle soportar requisitos adicionales, como mayor escala y disponibilidad. Para un usuario, un sistema operativo distribuido funciona de manera similar a un sistema operativo monolítico de un solo nodo . Es decir, aunque consta de varios nodos, aparece para los usuarios y las aplicaciones como un solo nodo.

La separación de la funcionalidad mínima a nivel de sistema de los servicios modulares adicionales a nivel de usuario proporciona una " separación entre mecanismo y política ". El mecanismo y la política pueden interpretarse simplemente como "qué se hace algo" frente a "cómo se hace algo", respectivamente. Esta separación aumenta la flexibilidad y la escalabilidad.

Descripción general

El núcleo

En cada configuración regional (normalmente un nodo), el núcleo proporciona un conjunto mínimo completo de utilidades a nivel de nodo necesarias para el funcionamiento del hardware y los recursos subyacentes de un nodo. Estos mecanismos incluyen la asignación, la gestión y la disposición de los recursos de un nodo, los procesos, la comunicación y las funciones de soporte de gestión de entrada/salida . [5] Dentro del núcleo, el subsistema de comunicaciones es de suma importancia para un sistema operativo distribuido. [3]

En un sistema operativo distribuido, el núcleo suele admitir un conjunto mínimo de funciones, entre las que se incluyen la gestión del espacio de direcciones de bajo nivel, la gestión de subprocesos y la comunicación entre procesos (IPC). Un núcleo de este diseño se denomina micronúcleo . [6] [7] Su naturaleza modular mejora la fiabilidad y la seguridad, características esenciales para un sistema operativo distribuido. [8]

Descripción general de los componentes de gestión del sistema

Gestión del sistema

Los componentes de gestión del sistema son procesos de software que definen las políticas del nodo . Estos componentes son la parte del sistema operativo fuera del núcleo. Estos componentes proporcionan comunicación de alto nivel, gestión de procesos y recursos, confiabilidad, rendimiento y seguridad. Los componentes coinciden con las funciones de un sistema de entidad única, lo que agrega la transparencia requerida en un entorno distribuido. [3]

La naturaleza distribuida del sistema operativo requiere servicios adicionales para respaldar las responsabilidades de un nodo con respecto al sistema global. Además, los componentes de gestión del sistema aceptan las responsabilidades "defensivas" de confiabilidad, disponibilidad y persistencia. Estas responsabilidades pueden entrar en conflicto entre sí. Un enfoque coherente, una perspectiva equilibrada y una comprensión profunda del sistema en general pueden ayudar a identificar los rendimientos decrecientes . La separación de políticas y mecanismos mitiga dichos conflictos. [9]

Trabajando juntos como un sistema operativo

La arquitectura y el diseño de un sistema operativo distribuido deben cumplir tanto los objetivos de los nodos individuales como los del sistema global. La arquitectura y el diseño deben abordarse de manera coherente con la separación de políticas y mecanismos. Al hacerlo, un sistema operativo distribuido intenta proporcionar un marco informático distribuido eficiente y confiable que permita una conciencia mínima absoluta del usuario de los esfuerzos de comando y control subyacentes. [8]

La colaboración multinivel entre un núcleo y los componentes de gestión del sistema, y ​​a su vez entre los distintos nodos de un sistema operativo distribuido, es el desafío funcional del sistema operativo distribuido. Este es el punto del sistema que debe mantener una perfecta armonía de propósitos y, al mismo tiempo, mantener una desconexión total entre la intención y la implementación. Este desafío es la oportunidad que tiene el sistema operativo distribuido de producir la base y el marco para un sistema confiable, eficiente, disponible, robusto, extensible y escalable. Sin embargo, esta oportunidad tiene un costo muy alto en términos de complejidad.

El precio de la complejidad

En un sistema operativo distribuido, el excepcional grado de complejidad inherente podría fácilmente convertir al sistema entero en un anatema para cualquier usuario. Por ello, el precio lógico de implementar un sistema operativo distribuido debe calcularse en términos de superar enormes cantidades de complejidad en muchas áreas y en muchos niveles. Este cálculo incluye la profundidad, amplitud y variedad de la inversión en diseño y la planificación arquitectónica requeridas para lograr incluso la implementación más modesta. [10]

Estas consideraciones de diseño y desarrollo son fundamentales e implacables. Por ejemplo, se requiere una comprensión profunda de los detalles generales de la arquitectura y el diseño de un sistema operativo distribuido en un momento excepcionalmente temprano. [1] Una serie exhaustiva de consideraciones de diseño son inherentes al desarrollo de un sistema operativo distribuido. Cada una de estas consideraciones de diseño puede afectar potencialmente a muchas de las otras en un grado significativo. Esto conduce a un esfuerzo masivo en un enfoque equilibrado, en términos de las consideraciones de diseño individuales y muchas de sus permutaciones. Como ayuda en este esfuerzo, la mayoría se basa en la experiencia documentada y la investigación en potencia informática distribuida.

Historia

Los esfuerzos de investigación y experimentación comenzaron seriamente en la década de 1970 y continuaron durante la de 1990, con un interés concentrado que alcanzó su punto máximo a fines de la década de 1980. Durante este período se introdujeron varios sistemas operativos distribuidos; sin embargo, muy pocas de estas implementaciones lograron un éxito comercial siquiera modesto.

Las implementaciones fundamentales y pioneras de conceptos primitivos de componentes de sistemas operativos distribuidos datan de principios de la década de 1950. [11] [12] [13] Algunos de estos pasos individuales no se centraron directamente en la computación distribuida y, en ese momento, es posible que muchos no se dieran cuenta de su importante impacto. Estos esfuerzos pioneros sentaron bases importantes e inspiraron la investigación continua en áreas relacionadas con la computación distribuida. [14] [15] [16] [17] [18] [19]

A mediados de la década de 1970, la investigación produjo avances importantes en la computación distribuida. Estos avances proporcionaron una base sólida y estable para los esfuerzos que continuaron durante la década de 1990.

La creciente proliferación de investigaciones sobre sistemas de procesadores multiprocesador y multinúcleo condujo a un resurgimiento del concepto de sistema operativo distribuido.

El DYSEAC

Uno de los primeros esfuerzos fue el DYSEAC , un ordenador síncrono de propósito general . En una de las primeras publicaciones de la Association for Computing Machinery , en abril de 1954, un investigador de la Oficina Nacional de Normas  (ahora el Instituto Nacional de Normas y Tecnología , NIST ) presentó una especificación detallada del DYSEAC. La introducción se centró en los requisitos de las aplicaciones previstas, incluidas las comunicaciones flexibles, pero también mencionó otros ordenadores:

Por último, los dispositivos externos podrían incluir incluso otros ordenadores a gran escala que empleen el mismo lenguaje digital que el DYSEAC. Por ejemplo, el SEAC u otros ordenadores similares podrían conectarse al DYSEAC y, mediante el uso de programas coordinados, podrían lograr que trabajaran juntos en cooperación mutua en una tarea común... En consecuencia, el ordenador puede utilizarse para coordinar las diversas actividades de todos los dispositivos externos en una operación conjunta eficaz.

—  ALAN L. LEINER, Especificaciones del sistema para DYSEAC

La especificación analizó la arquitectura de sistemas multicomputadoras, prefiriendo el modelo peer-to-peer en lugar del modelo maestro-esclavo.

Cada miembro de un grupo interconectado de computadoras independientes tiene la libertad de iniciar y enviar en cualquier momento órdenes especiales de control a cualquiera de sus socios en el sistema. En consecuencia, el control de supervisión sobre la tarea común puede estar inicialmente distribuido de manera flexible en todo el sistema y luego concentrarse temporalmente en una computadora, o incluso pasar rápidamente de una máquina a otra según surja la necesidad. …las diversas funciones de interrupción que se han descrito se basan en la cooperación mutua entre la computadora y los dispositivos externos subsidiarios de ella, y no reflejan simplemente una relación amo-esclavo.

—  ALAN L. LEINER, Especificaciones del sistema para DYSEAC

Este es uno de los primeros ejemplos de un ordenador con control distribuido. El Departamento del Ejército informa [20] que lo certificó como fiable y que pasó todas las pruebas de aceptación en abril de 1954. Se completó y entregó a tiempo, en mayo de 1954. Se trataba de un " ordenador portátil ", alojado en un camión con remolque , con dos vehículos auxiliares y 6 toneladas de capacidad de refrigeración .

Lincoln TX-2

Descrito como un sistema de entrada-salida experimental, el Lincoln TX-2 hizo hincapié en dispositivos de entrada-salida flexibles y de funcionamiento simultáneo, es decir, multiprogramación . El diseño del TX-2 era modular, lo que permitía un alto grado de modificación y expansión. [12]

El sistema empleaba la técnica de programación de secuencias múltiples, que permitía asociar varios contadores de programas con una de las 32 posibles secuencias de código de programa. Estas secuencias priorizadas explícitamente podían intercalarse y ejecutarse simultáneamente, lo que afectaba no solo al cómputo en proceso, sino también al flujo de control de las secuencias y a la conmutación de dispositivos. Se habló mucho de la secuenciación de dispositivos.

De manera similar a DYSEAC, los dispositivos TX-2 programados por separado pueden funcionar simultáneamente, lo que aumenta el rendimiento . La potencia total de la unidad central estaba disponible para cualquier dispositivo. El TX-2 fue otro ejemplo de un sistema que exhibía control distribuido, ya que su unidad central no tenía control dedicado.

Células intercomunicadas

Un primer intento de abstraer el acceso a la memoria fue el de las células intercomunicadas, en el que una célula estaba compuesta por una colección de elementos de memoria . Un elemento de memoria era básicamente un flip-flop o relé electrónico binario . Dentro de una célula había dos tipos de elementos, símbolo y célula . Cada estructura celular almacena datos en una cadena de símbolos, que consta de un nombre y un conjunto de parámetros . La información se vincula a través de asociaciones de células. [13]

La teoría sostenía que el direccionamiento es un nivel de indirección inútil y sin valor . Se accedía a la información de dos maneras: directa y mediante recuperación cruzada. La recuperación directa acepta un nombre y devuelve un conjunto de parámetros. La recuperación cruzada se proyecta a través de conjuntos de parámetros y devuelve un conjunto de nombres que contienen el subconjunto de parámetros dado. Esto era similar a una estructura de datos de tabla hash modificada que permitía múltiples valores (parámetros) para cada clave (nombre).

Esta configuración era ideal para sistemas distribuidos. La proyección de tiempo constante a través de la memoria para almacenar y recuperar datos era inherentemente atómica y exclusiva . Las características distribuidas intrínsecas de la memoria celular serían invaluables. El impacto en el usuario , el hardware / dispositivo o las interfaces de programación de aplicaciones era indirecto. Los autores estaban considerando sistemas distribuidos y afirmaban:

Queríamos presentar aquí las ideas básicas de un sistema lógico distribuido... el concepto macroscópico del diseño lógico, alejado del escaneo, la búsqueda, el direccionamiento y el conteo, es igualmente importante. Debemos, a toda costa, liberarnos de las cargas de los problemas locales detallados que sólo son propios de una máquina de un nivel inferior en la escala evolutiva de las máquinas.

—  Chung-Yeol (CY) Lee, Células intercomunicadas, base para una computadora lógica distribuida

Trabajo fundacional

Abstracción coherente de la memoria

 Algoritmos para sincronización escalable en multiprocesadores de memoria compartida [21]

Abstracción del sistema de archivos

 Medidas de un sistema de archivos distribuido [22]
  Coherencia de memoria en sistemas de memoria virtual compartida [23]

Abstracción de transacciones

 Transacciones
  Sagas [24]

 Memoria transaccional
  Transacciones de memoria componibles [25]
  Memoria transaccional: soporte arquitectónico para estructuras de datos sin bloqueos [26]
  Memoria transaccional de software para estructuras de datos de tamaño dinámico [27]
  Memoria transaccional de software [28]

Abstracción de persistencia

 OceanStore: una arquitectura para el almacenamiento persistente a escala global [29]

Abstracción del coordinador

 Votación ponderada para datos replicados [30]
  Consenso en presencia de sincronía parcial [31]

Abstracción de confiabilidad

 Comprobaciones de cordura
  El problema de los generales bizantinos [32]
  Procesadores con sistema de parada por fallo: un enfoque para diseñar sistemas informáticos tolerantes a fallos [33]

 Recuperabilidad Instantáneas distribuidas : determinación de estados globales de sistemas distribuidos [34] Recuperación optimista en sistemas distribuidos [35]
 
 

Modelos de computación distribuida

Tres distribuciones básicas

Para ilustrar mejor este punto, examinemos tres arquitecturas de sistemas : centralizada, descentralizada y distribuida. En este examen, consideremos tres aspectos estructurales: organización, conexión y control. La organización describe las características de la disposición física de un sistema. La conexión cubre las vías de comunicación entre nodos. El control gestiona el funcionamiento de las dos consideraciones anteriores.

Organización

Un sistema centralizado tiene un nivel de estructura, donde todos los elementos constitutivos dependen directamente de un único elemento de control. Un sistema descentralizado es jerárquico. El nivel inferior une subconjuntos de las entidades de un sistema. Estos subconjuntos de entidades a su vez se combinan en niveles superiores, culminando finalmente en un elemento maestro central. Un sistema distribuido es una colección de elementos autónomos sin concepto de niveles.

Conexión

Los sistemas centralizados conectan a los constituyentes directamente con una entidad maestra central en un sistema radial. Un sistema descentralizado (también conocido como sistema de red ) incorpora rutas directas e indirectas entre los elementos constituyentes y la entidad central. Normalmente, esto se configura como una jerarquía con solo una ruta más corta entre dos elementos. Finalmente, el sistema operativo distribuido no requiere ningún patrón; son posibles conexiones directas e indirectas entre dos elementos cualesquiera. Considere los fenómenos de la década de 1970 del " arte de cuerdas " o un dibujo espirográfico como un sistema completamente conectado , y la telaraña o el sistema de autopistas interestatales entre ciudades de EE. UU. como ejemplos de un sistema parcialmente conectado .

Control

Los sistemas centralizados y descentralizados tienen flujos de conexión dirigidos hacia y desde la entidad central, mientras que los sistemas distribuidos se comunican a lo largo de rutas arbitrarias. Esta es la noción fundamental de la tercera consideración. El control implica asignar tareas y datos a los elementos del sistema equilibrando la eficiencia, la capacidad de respuesta y la complejidad.

Los sistemas centralizados y descentralizados ofrecen más control, lo que facilita potencialmente la administración al limitar las opciones. Los sistemas distribuidos son más difíciles de controlar explícitamente, pero escalan mejor horizontalmente y ofrecen menos puntos de falla en todo el sistema. Las asociaciones se ajustan a las necesidades impuestas por su diseño, pero no por el caos organizacional.

Consideraciones de diseño

Transparencia

La transparencia o imagen de un solo sistema se refiere a la capacidad de una aplicación para tratar el sistema en el que opera sin tener en cuenta si está distribuido y sin tener en cuenta el hardware u otros detalles de implementación. Muchas áreas de un sistema pueden beneficiarse de la transparencia, incluido el acceso, la ubicación, el rendimiento, la denominación y la migración. La consideración de la transparencia afecta directamente la toma de decisiones en cada aspecto del diseño de un sistema operativo distribuido. La transparencia puede imponer ciertos requisitos y/o restricciones sobre otras consideraciones de diseño.

Los sistemas pueden violar opcionalmente la transparencia en distintos grados para cumplir con los requisitos específicos de la aplicación. Por ejemplo, un sistema operativo distribuido puede presentar un disco duro en una computadora como "C:" y una unidad en otra computadora como "G:". El usuario no necesita ningún conocimiento de los controladores de dispositivos o la ubicación de la unidad; ambos dispositivos funcionan de la misma manera, desde la perspectiva de la aplicación. Una interfaz menos transparente podría requerir que la aplicación sepa qué computadora aloja la unidad. Dominios de transparencia:

Comunicación entre procesos

La comunicación entre procesos (IPC) es la implementación de la comunicación general, la interacción de procesos y el flujo de datos entre subprocesos y/o procesos , tanto dentro de un nodo como entre nodos en un sistema operativo distribuido. Los requisitos de comunicación intranodo e internodo impulsan el diseño de IPC de bajo nivel, que es el enfoque típico para implementar funciones de comunicación que respalden la transparencia. En este sentido, la comunicación entre procesos es el concepto subyacente más importante en las consideraciones de diseño de bajo nivel de un sistema operativo distribuido.

Gestión de procesos

La gestión de procesos proporciona políticas y mecanismos para compartir recursos de manera eficaz y eficiente entre procesos distribuidos. Estas políticas y mecanismos respaldan las operaciones que implican la asignación y desasignación de procesos y puertos a los procesadores, así como los mecanismos para ejecutar, suspender, migrar, detener o reanudar la ejecución de procesos. Si bien estos recursos y operaciones pueden ser locales o remotos entre sí, el sistema operativo distribuido mantiene el estado y la sincronización de todos los procesos del sistema.

Por ejemplo, el equilibrio de carga es una función común de gestión de procesos. El equilibrio de carga supervisa el rendimiento de los nodos y es responsable de trasladar la actividad a los nodos cuando el sistema está desequilibrado. Una función de equilibrio de carga es elegir un proceso para mover. El núcleo puede emplear varios mecanismos de selección, incluida la elección basada en prioridades. Este mecanismo elige un proceso en función de una política como "solicitud más reciente". El sistema implementa la política

Gestión de recursos

Los recursos de los sistemas, como la memoria, los archivos, los dispositivos, etc., se distribuyen por todo el sistema y, en cualquier momento, cualquiera de estos nodos puede tener cargas de trabajo ligeras o inactivas. La distribución y el equilibrio de carga requieren muchas decisiones orientadas a políticas, que van desde encontrar CPU inactivas hasta cuándo moverlas y cuáles mover. Existen muchos algoritmos para ayudar en estas decisiones; sin embargo, esto requiere un segundo nivel de política de toma de decisiones para elegir el algoritmo más adecuado para el escenario y las condiciones que lo rodean.

Fiabilidad

Los sistemas operativos distribuidos pueden proporcionar los recursos y servicios necesarios para alcanzar altos niveles de confiabilidad , o la capacidad de prevenir y/o recuperarse de errores. Los fallos son defectos físicos o lógicos que pueden causar errores en el sistema. Para que un sistema sea confiable, debe superar de alguna manera los efectos adversos de los fallos.

Los métodos principales para tratar los fallos incluyen la prevención de fallos , la tolerancia a fallos y la detección y recuperación de fallos . La prevención de fallos abarca las medidas proactivas adoptadas para minimizar la aparición de fallos. Estas medidas proactivas pueden adoptar la forma de transacciones , replicación y copias de seguridad . La tolerancia a fallos es la capacidad de un sistema de seguir funcionando en presencia de un fallo. En ese caso, el sistema debería detectar y recuperar la funcionalidad completa. En cualquier caso, las medidas adoptadas deberían hacer todo lo posible por preservar la imagen única del sistema .

Disponibilidad

La disponibilidad es la fracción de tiempo durante la cual el sistema puede responder a las solicitudes.

Actuación

Muchas métricas de referencia cuantifican el rendimiento : rendimiento, tiempo de respuesta, finalizaciones de trabajos por unidad de tiempo, utilización del sistema, etc. Con respecto a un sistema operativo distribuido, el rendimiento suele reducirse a un equilibrio entre el paralelismo de procesos y la IPC. [ cita requerida ] Gestionar la granularidad de las tareas del paralelismo en una relación sensata con los mensajes necesarios para el soporte es extremadamente eficaz. [ cita requerida ] Además, identificar cuándo es más beneficioso migrar un proceso a sus datos, en lugar de copiar los datos, también es eficaz. [ cita requerida ]

Sincronización

Los procesos concurrentes que cooperan tienen una necesidad inherente de sincronización , lo que garantiza que los cambios se produzcan de forma correcta y predecible. Tres situaciones básicas que definen el alcance de esta necesidad:

  • uno o más procesos deben sincronizarse en un punto determinado para que uno o más procesos continúen,
  • uno o más procesos deben esperar una condición asincrónica para continuar,
  • o un proceso debe establecer acceso exclusivo a un recurso compartido.

Una sincronización inadecuada puede dar lugar a múltiples modos de fallo, entre ellos pérdida de atomicidad, consistencia, aislamiento y durabilidad , bloqueo , bloqueo activo y pérdida de serialización . [ cita requerida ]

Flexibilidad

La flexibilidad de un sistema operativo distribuido se mejora gracias a las características modulares del sistema operativo distribuido y al proporcionar un conjunto más completo de servicios de nivel superior. La integridad y calidad del núcleo/micronúcleo simplifica la implementación de dichos servicios y potencialmente permite a los proveedores de servicios una mayor variedad de proveedores para dichos servicios. [ cita requerida ]

Investigación

Modelo replicado extendido a un modelo de objeto componente

 Diseño arquitectónico del sistema operativo distribuido E1 [38]
  El sistema operativo distribuido Cronus [39]
  Diseño y desarrollo del sistema operativo distribuido MINIX [40]

Complejidad/Exposición a la confianza a través de la responsabilidad aceptada

Escala y rendimiento en el núcleo de aislamiento Denali. [41]

Sistemas centrados en múltiples núcleos

El multinúcleo: una nueva arquitectura de sistema operativo para sistemas multinúcleo escalables. [42]
Corey: un sistema operativo para muchos núcleos. [43]
Almos: Sistema operativo de gestión de localidades avanzado para núcleos múltiples cc-NUMA. [44]

Procesamiento distribuido sobre extremos de heterogeneidad

Helios: multiprocesamiento heterogéneo con núcleos satélite. [45]

Eficaz y estable en múltiples niveles de complejidad.

Teselación: Particionado espacio-temporal en un sistema operativo cliente multinúcleo. [46]

Véase también

Referencias

  1. ^ ab Tanenbaum, Andrew S (septiembre de 1993). "Sistemas operativos distribuidos año 1992. ¿Qué hemos aprendido hasta ahora?". Ingeniería de sistemas distribuidos . 1 (1): 3–10. Bibcode :1993DSE.....1....3T. doi : 10.1088/0967-1846/1/1/001 .
  2. ^ Nutt, Gary J. (1992). Sistemas operativos centralizados y distribuidos . Prentice Hall. ISBN 978-0-13-122326-4.
  3. ^ abcdef Gościński, Andrzej (1991). Sistemas operativos distribuidos: el diseño lógico. Addison-Wesley Pub. Co. ISBN 978-0-201-41704-3.
  4. ^ Fortier, Paul J. (1986). Diseño de sistemas operativos distribuidos: conceptos y tecnología. Intertext Publications. ISBN 9780070216211.
  5. ^ Hansen, Per Brinch, ed. (2001). Sistemas operativos clásicos: del procesamiento por lotes a los sistemas distribuidos. Springer. ISBN 978-0-387-95113-3.
  6. ^ Uso de LOTOS para especificar el núcleo del sistema operativo distribuido CHORUS Pecheur, C. 1992. Uso de LOTOS para especificar el núcleo del sistema operativo distribuido CHORUS. Comput. Commun. 15, 2 (marzo de 1992), 93-102.
  7. ^ COOL: soporte del núcleo para entornos orientados a objetos Habert, S. y Mosseri, L. 1990. COOL: soporte del núcleo para entornos orientados a objetos. En Actas de la Conferencia Europea sobre Programación Orientada a Objetos sobre Sistemas, Lenguajes y Aplicaciones de Programación Orientada a Objetos (Ottawa, Canadá). OOPSLA/ECOOP '90. ACM, Nueva York, NY, 269-275.
  8. ^ abcde Sinha, Pradeep Kumar (1997). Sistemas operativos distribuidos: conceptos y diseño . IEEE Press. ISBN 978-0-7803-1119-0.
  9. ^ abc Chow, Randy; Theodore Johnson (1997). Sistemas operativos distribuidos y algoritmos. Addison Wesley. ISBN 978-0-201-49838-7.
  10. ^ Surajbali, B., Coulson, G., Greenwood, P. y Grace, P. 2007. Aumento del middleware reflexivo con una capa de soporte de orientación de aspecto. En Actas del 6.º taller internacional sobre middleware adaptativo y reflexivo: celebrado en la conferencia internacional sobre middleware ACM/IFIP/USENIX (Newport Beach, CA, 26-30 de noviembre de 2007). ARM '07. ACM, Nueva York, NY, 1-6.
  11. ^ Leiner, Alan L. (abril de 1954). "Especificaciones del sistema para el DYSEAC". Revista de la ACM . 1 (2): 57–81. doi :10.1145/320772.320773. S2CID  15381094.
  12. ^ ab Forgie, James W. (26-28 de febrero de 1957). El sistema de entrada-salida Lincoln TX-2 . Conferencia conjunta occidental de informática: técnicas para la fiabilidad. Los Ángeles, California: Association for Computing Machinery. págs. 156-160. doi : 10.1145/1455567.1455594 . ISBN . 9781450378611.
  13. ^ ab CY Lee (4-6 de diciembre de 1962). Celdas intercomunicadas, base para una computadora lógica distribuida . Fall Joint Computer Conference. Filadelfia, Pensilvania: Association for Computing Machinery. págs. 130-136. doi : 10.1145/1461518.1461531 .
  14. Dreyfus, Phillippe (1958-05-08) [1958-05-06], escrito en Los Ángeles, "System design of the Gamma 60" (PDF) , Proceedings of the May 6–8, 1958, Western Joint Computer Conference : Contrasts in Computers , ACM, Nueva York, NY, EE. UU., págs. 130-133, IRE-ACM-AIEE '58 (Western), archivado (PDF) del original el 2017-04-03 , consultado el 2017-04-03
  15. ^ Leiner, AL, Notz, WA, Smith, JL y Weinberger, A. 1958. Organizar una red de computadoras para cumplir con los plazos. En Documentos y discusiones presentados en la Conferencia Conjunta de Computadoras del Este del 9 al 13 de diciembre de 1957: Computadoras con plazos que cumplir (Washington, DC, 9 al 13 de diciembre de 1957). IRE-ACM-AIEE '57
  16. ^ Leiner, AL, Smith, JL, Notz, WA y Weinberger, A. 1958. PILOT, el sistema multicomputador NBS. En Documentos y debates presentados en la Conferencia Conjunta de Computación del Este del 3 al 5 de diciembre de 1958: Computadoras modernas: objetivos, diseños, aplicaciones (Filadelfia, Pensilvania, 3 al 5 de diciembre de 1958). AIEE-ACM-IRE '58 (Eastern). ACM, Nueva York, NY, 71-75.
  17. ^ Bauer, WF 1958. Diseño de computadoras desde el punto de vista del programador. En Documentos y discusiones presentados en la Conferencia Conjunta de Computadoras del Este del 3 al 5 de diciembre de 1958: Computadoras modernas: objetivos, diseños, aplicaciones (Filadelfia, Pensilvania, 3 al 5 de diciembre de 1958). AIEE-ACM-IRE '58 (Eastern). ACM, Nueva York, NY, 46-51.
  18. ^ Leiner, AL, Notz, WA, Smith, JL y Weinberger, A. 1959. PILOT: un nuevo sistema informático múltiple. J. ACM 6, 3 (julio de 1959), 313-335.
  19. ^ Estrin, G. 1960. Organización de sistemas informáticos: el ordenador de estructura fija más variable. En Documentos presentados en la Conferencia informática conjunta IRE-AIEE-ACM del oeste del 3 al 5 de mayo de 1960 (San Francisco, California, 3 al 5 de mayo de 1960). IRE-AIEE-ACM '60 (occidental). ACM, Nueva York, NY, 33-40.
  20. ^ Martin H. Weik, "Un tercer estudio de los sistemas informáticos digitales electrónicos domésticos", Informe nº 1115 de los Laboratorios de Investigación Balística, pág. 234-5, Aberdeen Proving Ground, Maryland, marzo de 1961
  21. ^ Mellor-Crummey, JM y Scott, ML 1991. Algoritmos para sincronización escalable en multiprocesadores de memoria compartida. ACM Trans. Comput. Syst. 9, 1 (febrero de 1991), 21-65.
  22. ^ Baker, MG, Hartman, JH, Kupfer, MD, Shirriff, KW y Ousterhout, JK 1991. Medidas de un sistema de archivos distribuido. En Actas del Decimotercer Simposio de la ACM sobre Principios de Sistemas Operativos (Pacific Grove, California, Estados Unidos, 13-16 de octubre de 1991). SOSP '91. ACM, Nueva York, NY, 198-212.
  23. ^ Li, K. y Hudak, P. 1989. Coherencia de memoria en sistemas de memoria virtual compartida. ACM Trans. Comput. Syst. 7, 4 (noviembre de 1989), 321-359.
  24. ^ Garcia-Molina, H. y Salem, K. 1987. Sagas. En Actas de la Conferencia Internacional ACM SIGMOD de 1987 sobre Gestión de Datos (San Francisco, California, Estados Unidos, 27-29 de mayo de 1987). U. Dayal, Ed. SIGMOD '87. ACM, Nueva York, NY, 249-259.
  25. ^ Harris, T., Marlow, S., Peyton-Jones, S. y Herlihy, M. 2005. Transacciones de memoria componibles. En Actas del Décimo Simposio ACM SIGPLAN sobre Principios y Práctica de Programación Paralela (Chicago, IL, EE. UU., 15-17 de junio de 2005). PPoPP '05. ACM, Nueva York, NY, 48-60.
  26. ^ Herlihy, M. y Moss, JE 1993. Memoria transaccional: soporte arquitectónico para estructuras de datos sin bloqueos. En Actas del 20.º Simposio internacional anual sobre arquitectura informática (San Diego, California, Estados Unidos, 16-19 de mayo de 1993). ISCA '93. ACM, Nueva York, NY, 289-300.
  27. ^ Herlihy, M., Luchangco, V., Moir, M. y Scherer, WN 2003. Memoria transaccional de software para estructuras de datos de tamaño dinámico. En Actas del vigésimo segundo simposio anual sobre principios de computación distribuida (Boston, Massachusetts, 13-16 de julio de 2003). PODC '03. ACM, Nueva York, NY, 92-101.
  28. ^ Shavit, N. y Touitou, D. 1995. Memoria transaccional de software. En Actas del decimocuarto simposio anual de la ACM sobre principios de computación distribuida (Ottawa, Ontario, Canadá, 20-23 de agosto de 1995). PODC '95. ACM, Nueva York, NY, 204-213.
  29. ^ Kubiatowicz, J., Bindel, D., Chen, Y., Czerwinski, S., Eaton, P., Geels, D., Gummadi, R., Rhea, S., Weatherspoon, H., Wells, C. y Zhao, B. 2000. OceanStore: una arquitectura para el almacenamiento persistente a escala global. En Actas de la Novena Conferencia Internacional sobre Soporte Arquitectónico para Lenguajes de Programación y Sistemas Operativos (Cambridge, Massachusetts, Estados Unidos). ASPLOS-IX. ACM, Nueva York, NY, 190-201.
  30. ^ Gifford, DK 1979. Votación ponderada para datos replicados. En Actas del Séptimo Simposio de la ACM sobre Principios de Sistemas Operativos (Pacific Grove, California, Estados Unidos, 10-12 de diciembre de 1979). SOSP '79. ACM, Nueva York, NY, 150-162
  31. ^ Dwork, C., Lynch, N. y Stockmeyer, L. 1988. Consenso en presencia de sincronía parcial. J. ACM 35, 2 (abril de 1988), 288-323.
  32. ^ Lamport, L., Shostak, R. y Pease, M. 1982. El problema de los generales bizantinos. ACM Trans. Program. Lang. Syst. 4, 3 (julio de 1982), 382-401.
  33. ^ Schlichting, RD y Schneider, FB 1983. Procesadores de parada por fallo: un enfoque para diseñar sistemas informáticos tolerantes a fallos. ACM Trans. Comput. Syst. 1, 3 (agosto de 1983), 222-238.
  34. ^ Chandy, KM y Lamport, L. 1985. Instantáneas distribuidas: determinación de estados globales de sistemas distribuidos. ACM Trans. Comput. Syst. 3, 1 (febrero de 1985), 63-75.
  35. ^ Strom, R. y Yemini, S. 1985. Recuperación optimista en sistemas distribuidos. ACM Trans. Comput. Syst. 3, 3
  36. ^ abc Galli, Doreen L. (2000). Sistemas operativos distribuidos: conceptos y práctica . Prentice Hall. ISBN 978-0-13-079843-5.
  37. ^ Tanenbaum, Andrew S. (1995). Sistemas operativos distribuidos . Prentice Hall. ISBN 978-0-13-219908-7.
  38. ^ LB Ryzhyk, AY Burtsev. Diseño arquitectónico del sistema operativo distribuido dE1. Revista científica y técnica internacional System Research and Information Technologies, octubre de 2004, Kiev, Ucrania.
  39. ^ Vinter, ST y Schantz, RE 1986. El sistema operativo distribuido Cronus. En Actas del 2º Taller sobre cómo hacer que los sistemas distribuidos funcionen (Ámsterdam, Países Bajos, 8-10 de septiembre de 1986). EW 2. ACM, Nueva York, NY, 1-3.
  40. ^ Ramesh, KS 1988. Diseño y desarrollo del sistema operativo distribuido MINIX. En Actas de la Decimosexta Conferencia Anual sobre Ciencias de la Computación de la ACM de 1988 (Atlanta, Georgia, Estados Unidos). CSC '88. ACM, Nueva York, NY, 685.
  41. ^ Whitaker, A., Shaw, M. y Gribble, SD 2002. En Actas del 5º Simposio sobre Diseño e Implementación de Sistemas Operativos
  42. ^ Baumann, A., Barham, P., Dagand, P., Harris, T., Isaacs, R., Peter, S., Roscoe, T., Schüpbach, A. y Singhania, A. 2009. En Actas del 22º Simposio sobre Principios de Sistemas Operativos de la ACM SIGOPS (Big Sky, Montana, EE. UU., 11 al 14 de octubre de 2009). SOSP '09.
  43. ^ S. Boyd-Wickizer, H. Chen, R. Chen, Y. Mao, F. Kashoek, R. Morris, A. Pesterev, L. Stein, M. Wu, Y. Dai, Y. Zhang y Z. Zhang. Actas del Simposio de 2008 sobre diseño e implementación de sistemas operativos (OSDI), diciembre de 2008.
  44. ^ Almaless, G. y Wajsbürt, F. 2011. En Actas del quinto seminario nacional de GDR SoC-SIP, Lyon, Francia, 2011.
  45. ^ Nightingale, EB, Hodson, O., McIlroy, R., Hawblitzel, C. y Hunt, G. 2009. En Actas del 22º Simposio sobre Principios de Sistemas Operativos de ACM SIGOPS (Big Sky, Montana, EE. UU., 11 al 14 de octubre de 2009). SOSP '09.
  46. ^ Rose Liu, Kevin Klues y Sarah Bird, Universidad de California en Berkeley; Steven Hofmeyr, Laboratorio Nacional Lawrence Berkeley; Krste Asanović y John Kubiatowicz, Universidad de California en Berkeley. HotPar09.

Lectura adicional

Enlaces externos