stringtranslate.com

Sistema operativo

Un sistema operativo ( SO ) es un software de sistema que administra los recursos de hardware y software de la computadora y proporciona servicios comunes para los programas de computadora .

Los sistemas operativos de tiempo compartido programan tareas para un uso eficiente del sistema y también pueden incluir software de contabilidad para la asignación de costos de tiempo de procesador , almacenamiento masivo , periféricos y otros recursos.

Para funciones de hardware como entrada y salida y asignación de memoria , el sistema operativo actúa como intermediario entre los programas y el hardware de la computadora, [1] [2] aunque el código de la aplicación generalmente se ejecuta directamente por el hardware y con frecuencia realiza llamadas al sistema a un funcionamiento del sistema operativo o se ve interrumpido por este. Los sistemas operativos se encuentran en muchos dispositivos que contienen una computadora, desde teléfonos celulares y consolas de videojuegos hasta servidores web y supercomputadoras .

En el mercado de las computadoras personales , en septiembre de 2023 , Microsoft Windows tiene una participación de mercado dominante de alrededor del 68%. macOS de Apple Inc. ocupa el segundo lugar (20%), y las variedades de Linux ocupan colectivamente el tercer lugar (7%). [3] En el sector móvil (incluidos teléfonos inteligentes y tabletas ), a septiembre de 2023 , la participación de Android es del 68,92%, seguido por iOS y iPadOS de Apple con un 30,42%, y otros sistemas operativos con un 0,66%. [4] Las distribuciones de Linux son dominantes en los sectores de servidores y supercomputación. Existen otras clases especializadas de sistemas operativos (sistemas operativos de propósito especial), [5] [6], como sistemas integrados y en tiempo real, para muchas aplicaciones. También existen sistemas operativos centrados en la seguridad . Algunos sistemas operativos tienen requisitos de sistema bajos (por ejemplo, una distribución Linux liviana ). Otros pueden tener requisitos de sistema más altos.

Algunos sistemas operativos requieren instalación o pueden venir preinstalados con las computadoras compradas ( instalación OEM ), mientras que otros pueden ejecutarse directamente desde un medio (es decir, un CD en vivo ) o una memoria flash (es decir, una memoria USB ).

Definición y propósito

Un sistema operativo es difícil de definir, [7] pero se le ha llamado "la capa de software que administra los recursos de una computadora para sus usuarios y sus aplicaciones ". [8] Los sistemas operativos incluyen el software que siempre está en ejecución, llamado kernel , pero también pueden incluir otro software. [7] [9] Los otros dos tipos de programas que se pueden ejecutar en una computadora son los programas del sistema (que están asociados con el sistema operativo, pero pueden no ser parte del núcleo) y las aplicaciones (todo el resto del software). [9]

Hay tres propósitos principales que cumple un sistema operativo: [10]

Tipos de sistemas operativos

Sistemas operativos multicomputadoras

En los multiprocesadores, varias CPU comparten memoria. Una computadora multicomputadora o en clúster tiene múltiples CPU, cada una de las cuales tiene su propia memoria . Las multicomputadoras se desarrollaron porque los multiprocesadores grandes son difíciles de diseñar y prohibitivamente caros; [18] son ​​universales en la computación en la nube debido al tamaño de la máquina necesaria. [19] Las diferentes CPU a menudo necesitan enviar y recibir mensajes entre sí; [20] Para garantizar un buen rendimiento, los sistemas operativos de estas máquinas deben minimizar esta copia de paquetes . [21] Los sistemas más nuevos suelen ser de colas múltiples (separando grupos de usuarios en colas separadas ) para reducir la necesidad de copiar paquetes y admitir más usuarios simultáneos. [22] Otra técnica es el acceso remoto directo a la memoria , que permite a cada CPU acceder a la memoria que pertenece a otras CPU. [20] Los sistemas operativos multicomputadoras a menudo admiten llamadas a procedimientos remotos donde una CPU puede llamar a un procedimiento en otra CPU, [23] o memoria compartida distribuida , en la que el sistema operativo utiliza la virtualización para generar memoria compartida que en realidad no existe. [24]

Sistemas distribuidos

Un sistema distribuido es un grupo de computadoras distintas conectadas en red , cada una de las cuales puede tener su propio sistema operativo y sistema de archivos. A diferencia de las multicomputadoras, pueden estar dispersas en cualquier parte del mundo. [25] El middleware , una capa de software adicional entre el sistema operativo y las aplicaciones, se utiliza a menudo para mejorar la coherencia. Aunque funciona de manera similar a un sistema operativo, no es un verdadero sistema operativo. [26]

Incorporado

Los sistemas operativos integrados están diseñados para usarse en sistemas informáticos integrados , ya sean objetos de Internet de las cosas o no conectados a una red. Los sistemas integrados incluyen muchos electrodomésticos. El factor distintivo es que no cargan software instalado por el usuario. En consecuencia, no necesitan protección entre diferentes aplicaciones, lo que permite diseños más simples. Los sistemas operativos muy pequeños pueden ejecutarse en menos de 10 kilobytes , [27] y los más pequeños son para tarjetas inteligentes . [28] Los ejemplos incluyen Embedded Linux , QNX , VxWorks y los sistemas extrapequeños RIOT y TinyOS . [29]

Tiempo real

Un sistema operativo en tiempo real es un sistema operativo que garantiza procesar eventos o datos en un momento específico en el tiempo. Los sistemas duros en tiempo real requieren una sincronización exacta y son comunes en la fabricación , la aviónica , el ejército y otros usos similares. [29] Con sistemas blandos en tiempo real, el evento ocasional perdido es aceptable; Esta categoría incluye a menudo sistemas de audio o multimedia, así como teléfonos inteligentes. [29] Para que los sistemas duros en tiempo real sean lo suficientemente exactos en su sincronización, a menudo son solo una biblioteca sin protección entre aplicaciones, como eCos . [29]

Máquina virtual

Una máquina virtual es un sistema operativo que se ejecuta como una aplicación sobre otro sistema operativo. [15] La máquina virtual no sabe que es una aplicación y funciona como si tuviera su propio hardware. [15] [30] Las máquinas virtuales se pueden pausar, guardar y reanudar, lo que las hace útiles para la investigación, el desarrollo [31] y la depuración de sistemas operativos. [32] También mejoran la portabilidad al permitir que las aplicaciones se ejecuten en una computadora incluso si no son compatibles con el sistema operativo base. [15]

Historia

Las primeras computadoras se construyeron para realizar una serie de tareas únicas, como una calculadora. Las características básicas del sistema operativo se desarrollaron en la década de 1950, como las funciones de monitor residente que podían ejecutar automáticamente diferentes programas en sucesión para acelerar el procesamiento. Los sistemas operativos no existieron en sus formas modernas y más complejas hasta principios de los años 1960. [33] Se agregaron características de hardware que permitieron el uso de bibliotecas de tiempo de ejecución , interrupciones y procesamiento paralelo . Cuando las computadoras personales se hicieron populares en la década de 1980, se crearon sistemas operativos similares en concepto a los utilizados en computadoras más grandes.

En la década de 1940, los primeros sistemas digitales electrónicos no tenían sistemas operativos. Los sistemas electrónicos de esta época se programaban en filas de interruptores mecánicos o mediante cables de puente en tableros de enchufes . Se trataba de sistemas especiales que, por ejemplo, generaban tablas balísticas para el ejército o controlaban la impresión de cheques de nómina a partir de datos en tarjetas de papel perforadas. Después de que se inventaron las computadoras programables de propósito general, se introdujeron lenguajes de máquina (que consisten en cadenas de dígitos binarios 0 y 1 en una cinta de papel perforada) que aceleraron el proceso de programación (Stern, 1981). [ se necesita cita completa ]

Un panel de operador IBM System 360/65. OS/360 se utilizó en la mayoría de las computadoras centrales de IBM a partir de 1966, incluidas las computadoras utilizadas por el programa Apollo .

A principios de la década de 1950, una computadora sólo podía ejecutar un programa a la vez. Cada usuario tenía uso exclusivo del ordenador durante un tiempo limitado y llegaba a una hora prevista con su programa y datos en tarjetas de papel perforadas o cinta perforada . El programa se cargaría en la máquina y la máquina se configuraría para funcionar hasta que el programa se completara o fallara . Por lo general, los programas se pueden depurar a través de un panel frontal mediante interruptores de palanca y luces del panel. Se dice que Alan Turing era un maestro en esto en la primera máquina Manchester Mark 1 , y ya estaba derivando la concepción primitiva de un sistema operativo a partir de los principios de la máquina universal de Turing . [33]

Las máquinas posteriores vinieron con bibliotecas de programas, que se vincularían al programa de un usuario para ayudar en operaciones como entrada y salida y compilación (generación de código de máquina a partir de código simbólico legible por humanos ). Esta fue la génesis del sistema operativo moderno. Sin embargo, las máquinas todavía realizaban un solo trabajo a la vez. En la Universidad de Cambridge, en Inglaterra, la cola de trabajos era en un momento un tendedero del que se colgaban cintas con pinzas para la ropa de diferentes colores para indicar la prioridad del trabajo. [ cita necesaria ]

A finales de la década de 1950, comenzaron a aparecer programas que uno reconocería como un sistema operativo. A menudo se señala como el primer ejemplo reconocible el GM-NAA I/O , lanzado en 1956 en el IBM 704 . El primer ejemplo conocido que realmente se refirió a sí mismo fue el sistema operativo SHARE , un desarrollo de GM-NAA I/O, lanzado en 1959. En un artículo de mayo de 1960 que describía el sistema, George Ryckman señaló:

El desarrollo de los sistemas operativos de computadora ha ayudado materialmente al problema de introducir y sacar un programa o una serie de programas de la computadora de manera eficiente. [34]

Uno de los ejemplos más famosos que se encuentra a menudo en las discusiones sobre los primeros sistemas es Atlas Supervisor , que se ejecutó en Atlas en 1962. [35] Se hizo referencia a él como tal en un artículo de diciembre de 1961 que describe el sistema, pero el contexto de " el Sistema Operativo" es más parecido a "el sistema funciona a la moda". El propio equipo de Atlas utilizó el término "supervisor", [36] que se utilizó ampliamente junto con "monitor". Brinch Hansen lo describió como "el avance más significativo en la historia de los sistemas operativos". [37]

Computadoras centrales

Durante la década de 1950, muchas características importantes fueron pioneras en el campo de los sistemas operativos en computadoras centrales , incluido el procesamiento por lotes , la interrupción de entrada/salida , el almacenamiento en búfer , la multitarea , la cola de impresión , las bibliotecas de tiempo de ejecución , la carga de enlaces y los programas para clasificar registros en archivos. Estas características se incluyeron o no en el software de la aplicación a opción de los programadores de aplicaciones, en lugar de en un sistema operativo separado utilizado por todas las aplicaciones. En 1959, el sistema operativo SHARE fue lanzado como una utilidad integrada para IBM 704 , y más tarde en los mainframes 709 y 7090 , aunque fue rápidamente suplantado por IBSYS /IBJOB en los 709, 7090 y 7094, lo que a su vez influyó en los posteriores. Sistemas operativos 7040- PR -150 ( 7040/7044 ) y 1410-PR-155 ( 1410/7010 ) .

Durante la década de 1960, OS/360 de IBM introdujo el concepto de un único sistema operativo que abarcaba toda una línea de productos, lo que fue crucial para el éxito de las máquinas System/360. Los sistemas operativos mainframe actuales de IBM son descendientes lejanos de este sistema original y las máquinas modernas son compatibles con aplicaciones escritas para OS/360. [ cita necesaria ]

OS/360 también fue pionero en el concepto de que el sistema operativo realiza un seguimiento de todos los recursos del sistema que se utilizan, incluida la asignación de espacio de datos y programas en la memoria principal y el espacio de archivos en el almacenamiento secundario, y el bloqueo de archivos durante las actualizaciones. Cuando un proceso finaliza por cualquier motivo, el sistema operativo recupera todos estos recursos.

El sistema CP-67 alternativo para el S/360-67 inició toda una línea de sistemas operativos de IBM centrados en el concepto de máquinas virtuales . Otros sistemas operativos utilizados en los mainframes de la serie IBM S/360 incluyeron sistemas desarrollados por IBM: DOS/360 [a] (sistema operativo de disco), TSS/360 (sistema de tiempo compartido), TOS/360 (sistema operativo de cinta), BOS/360 (Sistema operativo básico) y ACP (Programa de control de aerolíneas), así como algunos sistemas que no son de IBM: MTS (Sistema de terminal de Michigan), MUSIC (Sistema multiusuario para computación interactiva) y ORVYL (Sistema de tiempo compartido de Stanford).

Control Data Corporation desarrolló el sistema operativo SCOPE en la década de 1960, para el procesamiento por lotes . En cooperación con la Universidad de Minnesota, durante la década de 1970 se desarrollaron los sistemas operativos Kronos y más tarde NOS , que admitían el uso simultáneo por lotes y de tiempo compartido. Como muchos sistemas comerciales de tiempo compartido, su interfaz era una extensión de los sistemas operativos Dartmouth BASIC , uno de los esfuerzos pioneros en tiempo compartido y lenguajes de programación. A finales de la década de 1970, Control Data y la Universidad de Illinois desarrollaron el sistema operativo PLATO , que utilizaba pantallas de plasma y redes de tiempo compartido de larga distancia. Platón fue notablemente innovador para su época, con chat en tiempo real y juegos gráficos multiusuario.

En 1961, Burroughs Corporation presentó el B5000 con el sistema operativo MCP (Master Control Program). La B5000 era una máquina apilable diseñada para admitir exclusivamente lenguajes de alto nivel sin ensamblador; [b] de hecho, el MCP fue el primer sistema operativo escrito exclusivamente en un lenguaje de alto nivel ( ESPOL , un dialecto de ALGOL ). MCP también introdujo muchas otras innovaciones revolucionarias, como ser la primera implementación comercial de memoria virtual . MCP todavía se utiliza hoy en día en la línea de computadoras MCP/ClearPath de la compañía Unisys .

UNIVAC , el primer fabricante de computadoras comerciales, produjo una serie de sistemas operativos EXEC. [38] [39] [40] Como todos los primeros sistemas de computadora principal, este sistema orientado por lotes administraba tambores magnéticos, discos, lectores de tarjetas e impresoras de líneas. En la década de 1970, UNIVAC produjo el sistema Real-Time Basic (RTB) para soportar el tiempo compartido a gran escala, también inspirado en el sistema Dartmouth BC.

General Electric desarrolló el Supervisor Operativo Integral de General Electric (GECOS), que admitía principalmente el procesamiento por lotes. Tras su adquisición por parte de Honeywell , pasó a denominarse Sistema Operativo Integral General (GCOS).

Bell Labs , [c] General Electric y el MIT desarrollaron el Servicio de Computación e Información Multiplexada ( Multics ), que introdujo el concepto de niveles de privilegios de seguridad anillados.

Digital Equipment Corporation desarrolló muchos sistemas operativos para sus diversas líneas de computadoras, incluidos los sistemas de tiempo compartido TOPS-10 y TOPS-20 para los sistemas de clase PDP-10 de 36 bits. Antes del uso generalizado de UNIX, TOPS-10 era un sistema particularmente popular en las universidades y en la primera comunidad ARPANET . RT-11 era un sistema operativo en tiempo real de usuario único para la minicomputadora clase PDP-11 , y RSX-11 era el sistema operativo multiusuario correspondiente.

Desde finales de la década de 1960 hasta finales de la de 1970, evolucionaron varias capacidades de hardware que permitieron que software similar o adaptado se ejecutara en más de un sistema. Los primeros sistemas habían utilizado la microprogramación para implementar funciones en sus sistemas con el fin de permitir que diferentes arquitecturas informáticas subyacentes parecieran iguales a otras de una serie. De hecho, la mayoría de los 360 posteriores al 360/40 (excepto el 360/44, 360/75, 360/91, 360/95 y 360/195) eran implementaciones microprogramadas.

La enorme inversión en software para estos sistemas realizada desde la década de 1960 hizo que la mayoría de los fabricantes de computadoras originales continuaran desarrollando sistemas operativos compatibles junto con el hardware. Los sistemas operativos de mainframe compatibles notables incluyen:

microcomputadoras

PC DOS (1981), el cambio de marca de MS-DOS por parte de IBM, utiliza una interfaz de línea de comandos.

Las primeras microcomputadoras carecían de la capacidad o los requisitos para los complejos sistemas operativos utilizados en mainframes y minicomputadoras . En su lugar, utilizaron sistemas operativos minimalistas, a menudo cargados desde ROM y denominados monitores . Uno de los primeros sistemas operativos de disco importante fue CP/M , ampliamente admitido en muchas de las primeras microcomputadoras. Microsoft imitó fielmente CP/M con su MS-DOS , que ganó gran popularidad como sistema operativo para IBM PC (la versión de IBM se conocía como IBM DOS o PC DOS ).

En 1984, Apple Computer presentó el Macintosh junto con sus populares microordenadores Apple II . La Mac tenía una interfaz gráfica de usuario controlada mediante el mouse. Ejecutaba un sistema operativo más tarde conocido como Mac OS (clásico) .

La introducción del chip CPU Intel 80286 en febrero de 1982, con arquitectura y segmentación de 16 bits , y el chip CPU Intel 80386 en octubre de 1985, [41] con arquitectura de 32 bits y capacidades de paginación , proporcionó a las computadoras personales la capacidad de ejecutar Sistemas operativos multitarea como los de superminicomputadoras y mainframes anteriores . Microsoft respondió a este progreso contratando a Dave Cutler , quien había desarrollado el sistema operativo VMS para Digital Equipment Corporation . Lideraría el desarrollo del sistema operativo Windows NT , que continúa sirviendo como base para la línea de sistemas operativos de Microsoft. Steve Jobs , cofundador de Apple Inc. , fundó NeXT Computer Inc., que desarrolló el sistema operativo NeXTSTEP . Posteriormente, Apple Inc. adquiriría NeXTSTEP y lo utilizaría, junto con el código de FreeBSD, como el núcleo de Mac OS X ( macOS después del último cambio de nombre).

El Proyecto GNU fue iniciado por el activista y programador Richard Stallman con el objetivo de crear un software libre completo que reemplace el sistema operativo propietario UNIX . Si bien el proyecto logró duplicar la funcionalidad de varias partes de UNIX, el desarrollo del núcleo GNU Hurd resultó improductivo. En 1991, el estudiante finlandés de informática Linus Torvalds , con la cooperación de voluntarios que colaboraban a través de Internet, lanzó la primera versión del kernel de Linux . Pronto se fusionó con los componentes del espacio de usuario y el software del sistema GNU para formar un sistema operativo completo comúnmente conocido como Linux .

Berkeley Software Distribution (BSD) es el derivado de UNIX distribuido por la Universidad de California, Berkeley, a partir de la década de 1970. Distribuido libremente y portado a muchas minicomputadoras, eventualmente también ganó seguidores para su uso en PC, principalmente como FreeBSD , NetBSD y OpenBSD .

Ejemplos

Sistemas operativos Unix y similares a Unix

Evolución de los sistemas Unix

Unix fue escrito originalmente en lenguaje ensamblador . [42] Ken Thompson escribió B , basado principalmente en BCPL , basándose en su experiencia en el proyecto MULTICS . B fue reemplazado por C , y Unix, reescrito en C, se desarrolló hasta convertirse en una familia grande y compleja de sistemas operativos interrelacionados que han influido en todos los sistemas operativos modernos (ver Historia ).

La familia tipo Unix es un grupo diverso de sistemas operativos, con varias subcategorías importantes que incluyen System V , BSD y Linux . El nombre " UNIX " es una marca registrada de The Open Group que otorga licencia para su uso con cualquier sistema operativo que se haya demostrado que cumple con sus definiciones. "tipo UNIX" se utiliza comúnmente para referirse al gran conjunto de sistemas operativos que se parecen al UNIX original.

Los sistemas tipo Unix se ejecutan en una amplia variedad de arquitecturas informáticas . Se utilizan mucho para servidores en empresas, así como para estaciones de trabajo en entornos académicos y de ingeniería. Las variantes gratuitas de UNIX, como Linux y BSD , son populares en estas áreas.

Cinco sistemas operativos están certificados por The Open Group (titular de la marca Unix) como Unix. HP-UX de HP y AIX de IBM son descendientes del System V Unix original y están diseñados para ejecutarse únicamente en el hardware de sus respectivos proveedores. Por el contrario, Solaris de Sun Microsystems puede ejecutarse en múltiples tipos de hardware, incluidos servidores x86 y SPARC , y PC. macOS de Apple , un reemplazo del Mac OS clásico anterior (no Unix) de Apple , es una variante BSD híbrida basada en kernel derivada de NeXTSTEP , Mach y FreeBSD . Los servicios del sistema z/OS UNIX de IBM incluyen un shell y utilidades basadas en los productos InterOpen de Mortice Kerns .

Se buscó la interoperabilidad de Unix estableciendo el estándar POSIX . El estándar POSIX se puede aplicar a cualquier sistema operativo, aunque originalmente fue creado para varias variantes de Unix.

BSD y sus descendientes

El primer servidor para la World Wide Web funcionó con NeXTSTEP, basado en BSD.

Un subgrupo de la familia Unix es la familia Berkeley Software Distribution (BSD), que incluye FreeBSD , NetBSD y OpenBSD . Estos sistemas operativos se encuentran más comúnmente en servidores web , aunque también pueden funcionar como sistema operativo de computadora personal. Internet debe gran parte de su existencia a BSD, ya que muchos de los protocolos que ahora usan comúnmente las computadoras para conectarse, enviar y recibir datos a través de una red fueron ampliamente implementados y perfeccionados en BSD. La World Wide Web también se demostró por primera vez en varias computadoras que ejecutaban un sistema operativo basado en BSD llamado NeXTSTEP .

En 1974, la Universidad de California en Berkeley instaló su primer sistema Unix. Con el tiempo, los estudiantes y el personal del departamento de informática comenzaron a agregar nuevos programas para facilitar las cosas, como editores de texto. Cuando Berkeley recibió nuevas computadoras VAX en 1978 con Unix instalado, los estudiantes de la escuela modificaron Unix aún más para aprovechar las posibilidades del hardware de la computadora. La Agencia de Proyectos de Investigación Avanzada de Defensa del Departamento de Defensa de Estados Unidos se interesó y decidió financiar el proyecto. Muchas escuelas, corporaciones y organizaciones gubernamentales se dieron cuenta y comenzaron a utilizar la versión de Unix de Berkeley en lugar de la oficial distribuida por AT&T.

Steve Jobs , al dejar Apple Inc. en 1985, formó NeXT Inc. , una empresa que fabricaba computadoras de alta gama que funcionaban con una variación de BSD llamada NeXTSTEP . Tim Berners-Lee utilizó una de estas computadoras como el primer servidor web para crear la World Wide Web.

Desarrolladores como Keith Bostic alentaron el proyecto a reemplazar cualquier código no libre que se originara en Bell Labs. Sin embargo, una vez hecho esto, AT&T presentó una demanda. Después de dos años de disputas legales, el proyecto BSD generó una serie de derivados libres, como NetBSD y FreeBSD (ambos en 1993) y OpenBSD (de NetBSD en 1995).

Mac OS

macOS (anteriormente "Mac OS X" y posteriormente "OS X") es una línea de sistemas operativos gráficos de núcleo abierto desarrollados, comercializados y vendidos por Apple Inc. , el último de los cuales está precargado en todas las computadoras Macintosh que se comercializan actualmente . macOS es el sucesor del Mac OS clásico original , que había sido el principal sistema operativo de Apple desde 1984. A diferencia de su predecesor, macOS es un sistema operativo UNIX basado en tecnología que se había desarrollado en NeXT durante la segunda mitad de la década de 1980 y hasta Apple compró la empresa a principios de 1997. El sistema operativo se lanzó por primera vez en 1999 como Mac OS X Server 1.0 , seguido en marzo de 2001 por una versión cliente ( Mac OS X v10.0 "Cheetah" ). Desde entonces, se han lanzado seis ediciones más distintas de "cliente" y " servidor " de macOS, hasta que las dos se fusionaron en OS X 10.7 "Lion" .

Antes de fusionarse con macOS, la edición de servidor, macOS Server  , era arquitectónicamente idéntica a su contraparte de escritorio y generalmente se ejecutaba en la línea de hardware de servidor Macintosh de Apple . macOS Server incluía herramientas de software de administración y gestión de grupos de trabajo que brindan acceso simplificado a servicios de red clave , incluido un agente de transferencia de correo , un servidor Samba , un servidor LDAP , un servidor de nombres de dominio y otros. Con Mac OS X v10.7 Lion , todos los aspectos del servidor de Mac OS X Server se han integrado en la versión del cliente y el producto ha sido renombrado como "OS X" (eliminando "Mac" del nombre). Las herramientas del servidor ahora se ofrecen como una aplicación. [43]

Servicios del sistema z/OS UNIX

Introducido por primera vez como la actualización OpenEdition al producto del sistema MVS/ESA Versión 4 Lanzamiento 3, anunciado [44] en febrero de 1993 con soporte para POSIX y otros estándares. [45] [46] [47] z/OS UNIX System Services se basa en los servicios MVS y no se puede ejecutar de forma independiente. Si bien IBM introdujo inicialmente OpenEdition para satisfacer los requisitos FIPS , varios componentes de z/OS ahora requieren servicios UNIX, por ejemplo, TCP/IP.

linux

Ubuntu , distribución de Linux de escritorio
Una imagen del pingüino Tux , la mascota de Linux . Linux es un sistema operativo similar a Unix que fue lanzado por primera vez el 17 de septiembre de 1991 por Linus Torvalds . [48] ​​[49] [50] [51]

El kernel de Linux se originó en 1991, como un proyecto de Linus Torvalds , mientras era estudiante universitario en Finlandia. Publicó información sobre su proyecto en un grupo de noticias para estudiantes y programadores de informática, y recibió apoyo y asistencia de voluntarios que lograron crear un núcleo completo y funcional.

Linux es similar a Unix , pero fue desarrollado sin ningún código Unix, a diferencia de BSD y sus variantes. Debido a su modelo de licencia abierta, el código del kernel de Linux está disponible para estudio y modificación, lo que resultó en su uso en una amplia gama de maquinaria informática, desde supercomputadoras hasta relojes inteligentes. Aunque las estimaciones sugieren que Linux se utiliza sólo en el 2,81% de todas las PC "de escritorio" (o portátiles), [3] ha sido ampliamente adoptado para su uso en servidores [52] y sistemas integrados [53] como teléfonos móviles.

Linux ha reemplazado a Unix en muchas plataformas y se usa en la mayoría de las supercomputadoras , incluidas las 500 supercomputadoras más poderosas de la lista TOP500 , habiendo desplazado a todos los competidores en 2017. [54] Linux también se usa comúnmente en otras computadoras pequeñas y energéticamente eficientes, como teléfonos inteligentes y relojes inteligentes . El kernel de Linux se utiliza en algunas distribuciones populares, como Red Hat , Debian , Ubuntu , Linux Mint y Android , ChromeOS y ChromiumOS de Google .

Microsoft Windows

Microsoft Windows es una familia de sistemas operativos propietarios diseñados por Microsoft Corporation y dirigidos principalmente a computadoras basadas en arquitectura x86 . En 2022 , su participación de mercado mundial en todas las plataformas era de aproximadamente el 30 %, [55] y en las plataformas de escritorio/portátiles, su participación de mercado era de aproximadamente el 75 %. [56] La última versión es Windows 11 .

Microsoft Windows se lanzó por primera vez en 1985, como un entorno operativo que se ejecutaba sobre MS-DOS , que era el sistema operativo estándar incluido en la mayoría de las computadoras personales con arquitectura Intel en ese momento. En 1995, se lanzó Windows 95 , que sólo utilizaba MS-DOS como arranque. Para compatibilidad con versiones anteriores, Win9x podría ejecutar controladores MS-DOS [57] [58] en modo real y Windows 3.x [59] de 16 bits . Windows ME , lanzado en 2000, fue la última versión de la familia Win9x. Todas las versiones posteriores se han basado en el kernel de Windows NT . Las versiones de cliente actuales de Windows se ejecutan en microprocesadores IA-32 , x86-64 y Arm . [60] En el pasado, Windows NT admitía arquitecturas adicionales.

Las ediciones de servidor de Windows se utilizan ampliamente; sin embargo, el uso de Windows en servidores no está tan extendido como en computadoras personales, ya que Windows compite con Linux y BSD por la cuota de mercado de servidores. [61] [62]

ReactOS es un sistema operativo alternativo a Windows, que se desarrolla según los principios de Windows, sin utilizar ningún código de Microsoft.

Otro

Ha habido muchos sistemas operativos que fueron significativos en su día pero que ya no lo son, como por ejemplo AmigaOS ; OS/2 de IBM y Microsoft; Mac OS clásico , el precursor no Unix de macOS de Apple; BeOS ; XTS-300 ; SO RISC ; Morfos ; Haikú ; BareMetal y FreeMint . Algunas todavía se utilizan en nichos de mercado y continúan desarrollándose como plataformas minoritarias para comunidades de entusiastas y aplicaciones especializadas.

El sistema operativo z/OS para computadoras centrales IBM z/Architecture todavía se está utilizando y desarrollando, y OpenVMS , anteriormente de DEC , todavía está en desarrollo activo por parte de VMS Software Inc. También se sigue utilizando y desarrollando el sistema operativo IBM i para ordenadores de gama media IBM AS/400 e IBM Power Systems .

Sin embargo, otros sistemas operativos se utilizan casi exclusivamente en el mundo académico, para la educación sobre sistemas operativos o para investigar conceptos de sistemas operativos. Un ejemplo típico de un sistema que cumple ambas funciones es MINIX , mientras que, por ejemplo, Singularity se utiliza únicamente para investigación. Otro ejemplo es el sistema Oberon diseñado en ETH Zürich por Niklaus Wirth , Jürg Gutknecht y un grupo de estudiantes del antiguo Instituto de Sistemas Informáticos en los años 1980. Se utilizó principalmente para investigación, docencia y trabajo diario en el grupo de Wirth.

Otros sistemas operativos no han logrado ganar una participación de mercado significativa, pero han introducido innovaciones que han influido en los sistemas operativos convencionales, entre ellos el Plan 9 de Bell Labs .

Componentes

Los componentes de un sistema operativo están diseñados para garantizar que varias partes de una computadora funcionen de manera coherente. Todo el software del usuario debe interactuar con el sistema operativo para acceder al hardware.

Núcleo

Un kernel conecta el software de la aplicación al hardware de una computadora.

Con la ayuda de firmware y controladores de dispositivos , el kernel proporciona el nivel más básico de control sobre todos los dispositivos de hardware de la computadora. Gestiona el acceso a la memoria para los programas en la RAM , determina qué programas obtienen acceso a qué recursos de hardware, configura o restablece los estados operativos de la CPU para un funcionamiento óptimo en todo momento y organiza los datos para un almacenamiento no volátil a largo plazo. con sistemas de archivos en medios tales como discos, cintas, memoria flash, etc.

Ejecución del programa

El sistema operativo proporciona una interfaz entre un programa de aplicación y el hardware de la computadora, de modo que un programa de aplicación puede interactuar con el hardware sólo obedeciendo reglas y procedimientos programados en el sistema operativo. El sistema operativo es también un conjunto de servicios que simplifican el desarrollo y la ejecución de programas de aplicación. La ejecución de un programa de aplicación generalmente implica la creación de un proceso por parte del núcleo del sistema operativo , que asigna espacio de memoria y otros recursos, establece una prioridad para el proceso en sistemas multitarea, carga el código binario del programa en la memoria e inicia la ejecución de la aplicación. programa, que luego interactúa con el usuario y con los dispositivos de hardware. Sin embargo, en algunos sistemas una aplicación puede solicitar que el sistema operativo ejecute otra aplicación dentro del mismo proceso, ya sea como una subrutina o en un subproceso separado, por ejemplo, las funciones LINK y ATTACH de OS/360 y sus sucesores .

Interrumpe

Una interrupción (también conocida como aborto , excepción , falla , señal , [63] o trampa ) [64] proporciona una forma eficiente para que la mayoría de los sistemas operativos reaccionen al entorno. Las interrupciones hacen que la unidad central de procesamiento (CPU) tenga un cambio de flujo de control del programa actualmente en ejecución a un controlador de interrupciones , también conocido como rutina de servicio de interrupción (ISR). [65] [66] Una rutina de servicio de interrupción puede causar que la unidad central de procesamiento (CPU) tenga un cambio de contexto . [67] [d] Los detalles de cómo una computadora procesa una interrupción varían de una arquitectura a otra, y los detalles de cómo se comportan las rutinas del servicio de interrupción varían de un sistema operativo a otro. [68] Sin embargo, varias funciones de interrupción son comunes. [68] La arquitectura y el sistema operativo deben: [68]

  1. transferir el control a una rutina de servicio de interrupción.
  2. guardar el estado del proceso actualmente en ejecución.
  3. restaurar el estado después de que se atienda la interrupción.
interrupción de software

Una interrupción de software es un mensaje a un proceso de que ha ocurrido un evento. [63] Esto contrasta con una interrupción de hardware , que es un mensaje a la unidad central de procesamiento (CPU) de que ha ocurrido un evento. [69] Las interrupciones de software son similares a las interrupciones de hardware: hay un cambio fuera del proceso que se está ejecutando actualmente. [70] De manera similar, tanto las interrupciones de hardware como las de software ejecutan una rutina de servicio de interrupción .

Las interrupciones de software pueden ser eventos que ocurren normalmente. Se espera que ocurra un intervalo de tiempo , por lo que el núcleo tendrá que realizar un cambio de contexto . [71] Un programa de computadora puede configurar un temporizador para que suene después de unos segundos en caso de que demasiados datos provoquen que un algoritmo demore demasiado. [72]

Las interrupciones de software pueden ser condiciones de error, como una instrucción de máquina con formato incorrecto . [72] Sin embargo, las condiciones de error más comunes son la división por cero y el acceso a una dirección de memoria no válida . [72]

Los usuarios pueden enviar mensajes al kernel para modificar el comportamiento de un proceso actualmente en ejecución. [72] Por ejemplo, en el entorno de línea de comandos , presionar el carácter de interrupción (generalmente Control-C ) podría finalizar el proceso que se está ejecutando actualmente. [72]

Para generar interrupciones de software para CPU x86 , la instrucción en lenguaje ensamblador INT está disponible. [73] La sintaxis es , donde está el número de desplazamiento (en formato hexadecimal ) a la tabla de vectores de interrupción .INT XX

Señal

Para generar interrupciones de software en sistemas operativos tipo Unix , la kill(pid,signum) llamada al sistema enviará una señal a otro proceso. [74] pid es el identificador del proceso de recepción. signumes el número de señal (en formato mnemotécnico ) [e] que se enviará. ( killSe eligió el nombre abrasivo de porque las primeras implementaciones solo terminaron el proceso). [75]

En los sistemas operativos tipo Unix, las señales informan a los procesos sobre la ocurrencia de eventos asincrónicos. [74] Para comunicarse de forma asincrónica, se requieren interrupciones. [76] Una de las razones por las que un proceso necesita comunicarse de forma asincrónica con otro proceso resuelve una variación del clásico problema de lector/escritor . [77] El escritor recibe una tubería del shell para que su salida se envíe al flujo de entrada del lector. [78] La sintaxis de la línea de comandosalpha | bravo es . alphaescribirá en la tubería cuando su cálculo esté listo y luego dormirá en la cola de espera. [79] bravo luego se moverá a la cola lista y pronto leerá desde su flujo de entrada. [80] El núcleo generará interrupciones de software para coordinar la tubería. [80]

Las señales se pueden clasificar en 7 categorías. [74] Las categorías son:

  1. cuando un proceso finaliza normalmente.
  2. cuando un proceso tiene una excepción de error.
  3. cuando un proceso se queda sin un recurso del sistema.
  4. cuando un proceso ejecuta una instrucción ilegal.
  5. cuando un proceso establece un evento de alarma.
  6. cuando se aborta un proceso desde el teclado.
  7. cuando un proceso tiene una alerta de seguimiento para depuración.
interrupción de proceso

Los dispositivos de entrada/salida (E/S) son más lentos que la CPU. Por lo tanto, ralentizaría la computadora si la CPU tuviera que esperar a que finalice cada E/S. En cambio, una computadora puede implementar interrupciones para completar la E/S, evitando la necesidad de sondeo o espera ocupada. [81]

Algunas computadoras requieren una interrupción para cada carácter o palabra, lo que cuesta una cantidad significativa de tiempo de CPU. El acceso directo a la memoria (DMA) es una característica de la arquitectura que permite a los dispositivos omitir la CPU y acceder a la memoria principal directamente. [82] (Aparte de la arquitectura, un dispositivo puede realizar acceso directo a la memoria [f] hacia y desde la memoria principal, ya sea directamente o a través de un bus). [83] [g]

De entrada y salida

E/S controlada por interrupción

Cuando un usuario de computadora escribe una tecla en el teclado, normalmente el carácter aparece inmediatamente en la pantalla. Del mismo modo, cuando un usuario mueve el mouse , el cursor se mueve inmediatamente por la pantalla. Cada pulsación de tecla y movimiento del mouse genera una interrupción llamada E/S impulsada por interrupciones . Una E/S controlada por interrupción ocurre cuando un proceso provoca una interrupción por cada carácter [83] o palabra [84] transmitida.

Memoria de acceso directo

Los dispositivos como unidades de disco duro , unidades de estado sólido y unidades de cinta magnética pueden transferir datos a una velocidad lo suficientemente alta como para interrumpir la CPU por cada byte o palabra transferida y hacer que la CPU transfiera el byte o la palabra entre el dispositivo y la memoria. requeriría demasiado tiempo de CPU. En cambio, los datos se transfieren entre el dispositivo y la memoria independientemente de la CPU mediante hardware como un canal o un controlador de acceso directo a la memoria ; se entrega una interrupción solo cuando se transfieren todos los datos. [85]

Si un programa de computadora ejecuta una llamada al sistema para realizar una operación de escritura de E/S en bloque , entonces la llamada al sistema podría ejecutar las siguientes instrucciones:

Mientras se realiza la escritura, el sistema operativo cambiará de contexto a otros procesos de forma normal. Cuando el dispositivo termine de escribir, interrumpirá el proceso que se está ejecutando actualmente mediante una solicitud de interrupción . El dispositivo también colocará un número entero en el bus de datos. [89] Al aceptar la solicitud de interrupción, el sistema operativo:

  • Acceda a la tabla de estado del dispositivo.
  • Extraiga el bloque de control del proceso.
  • Realice un cambio de contexto para volver al proceso de escritura.

Cuando el proceso de escritura haya expirado su intervalo de tiempo , el sistema operativo: [90]

Con el contador del programa ahora reiniciado, el proceso interrumpido reanudará su intervalo de tiempo. [68]

Modos de privilegio

Anillos de privilegios para la arquitectura de microprocesador x86 disponibles en modo protegido . Los sistemas operativos determinan qué procesos se ejecutan en cada modo.

Las computadoras modernas admiten múltiples modos de operación. Las CPU con esta capacidad ofrecen al menos dos modos: modo de usuario y modo de supervisor . En términos generales, la operación en modo supervisor permite el acceso sin restricciones a todos los recursos de la máquina, incluidas todas las instrucciones de la MPU. La operación en modo de usuario establece límites en el uso de instrucciones y normalmente no permite el acceso directo a los recursos de la máquina. Las CPU también pueden tener otros modos similares al modo de usuario, como los modos virtuales para emular tipos de procesadores más antiguos, como procesadores de 16 bits en uno de 32 bits o procesadores de 32 bits en uno de 64 bits .

Al encender o reiniciar, el sistema comienza en modo supervisor. Una vez que se ha cargado e iniciado el kernel de un sistema operativo , se puede establecer el límite entre el modo de usuario y el modo supervisor (también conocido como modo kernel).

El kernel utiliza el modo supervisor para tareas de bajo nivel que necesitan acceso sin restricciones al hardware, como controlar cómo se accede a la memoria y comunicarse con dispositivos como unidades de disco y dispositivos de visualización de video. El modo de usuario, por el contrario, se utiliza para casi todo lo demás. Los programas de aplicación, como los procesadores de texto y los administradores de bases de datos, operan en modo usuario y sólo pueden acceder a los recursos de la máquina entregando el control al núcleo, proceso que provoca un cambio al modo supervisor. Normalmente, la transferencia de control al kernel se logra ejecutando una instrucción de interrupción de software , como la TRAPinstrucción Motorola 68000. La interrupción del software hace que el procesador cambie del modo de usuario al modo de supervisor y comience a ejecutar código que permite que el kernel tome el control.

En el modo de usuario, los programas normalmente tienen acceso a un conjunto restringido de instrucciones del procesador y, por lo general, no pueden ejecutar ninguna instrucción que pueda causar interrupciones en el funcionamiento del sistema. En el modo supervisor, las restricciones de ejecución de instrucciones generalmente se eliminan, lo que permite al kernel acceso sin restricciones a todos los recursos de la máquina.

El término "recurso en modo de usuario" generalmente se refiere a uno o más registros de CPU, que contienen información que el programa en ejecución no puede alterar. Los intentos de alterar estos recursos generalmente provocan un cambio al modo supervisor, donde el sistema operativo puede lidiar con la operación ilegal que el programa estaba intentando; por ejemplo, terminando por la fuerza ("matando") el programa.

Gestión de la memoria

Entre otras cosas, el núcleo de un sistema operativo multiprogramador debe ser responsable de gestionar toda la memoria del sistema que utilizan actualmente los programas. Esto garantiza que un programa no interfiera con la memoria que ya está utilizando otro programa. Dado que los programas comparten tiempo, cada programa debe tener acceso independiente a la memoria.

La gestión cooperativa de la memoria, utilizada por muchos de los primeros sistemas operativos, supone que todos los programas hacen un uso voluntario del administrador de memoria del núcleo y no exceden la memoria asignada. Este sistema de gestión de memoria casi nunca se ve ya, ya que los programas a menudo contienen errores que pueden hacer que excedan la memoria asignada. Si un programa falla, puede causar que la memoria utilizada por uno o más programas se vea afectada o sobrescrita. Los programas maliciosos o virus pueden alterar intencionalmente la memoria de otro programa o afectar el funcionamiento del propio sistema operativo. Con la gestión cooperativa de la memoria, sólo hace falta un programa con un mal comportamiento para que el sistema falle.

La protección de la memoria permite al kernel limitar el acceso de un proceso a la memoria de la computadora. Existen varios métodos de protección de la memoria, incluida la segmentación de la memoria y la paginación . Todos los métodos requieren algún nivel de soporte de hardware (como la MMU 80286 ), que no existe en todas las computadoras.

Tanto en la segmentación como en la paginación, ciertos registros del modo protegido especifican a la CPU a qué dirección de memoria debe permitir el acceso a un programa en ejecución. Los intentos de acceder a otras direcciones desencadenan una interrupción, lo que hace que la CPU vuelva a entrar en modo supervisor , colocando al núcleo a cargo. Esto se llama violación de segmentación o Seg-V para abreviar, y dado que es difícil asignar un resultado significativo a dicha operación y porque generalmente es una señal de un programa que se comporta mal, el núcleo generalmente recurre a terminar el programa infractor. y reporta el error.

Las versiones de Windows 3.1 a ME tenían cierto nivel de protección de memoria, pero los programas podían evitar fácilmente la necesidad de usarla. Se produciría una falla de protección general , indicando que se había producido una violación de segmentación; sin embargo, el sistema a menudo fallaba de todos modos.

Memoria virtual

Muchos sistemas operativos pueden "engañar" a los programas para que utilicen la memoria dispersa en el disco duro y la RAM como si fuera un trozo continuo de memoria, llamado memoria virtual.

El uso de direccionamiento de memoria virtual (como paginación o segmentación) significa que el núcleo puede elegir qué memoria puede usar cada programa en un momento dado, lo que permite que el sistema operativo use las mismas ubicaciones de memoria para múltiples tareas.

Si un programa intenta acceder a una memoria a la que no se puede acceder [h] , pero que aún así se le ha asignado, el núcleo se interrumpe (consulte § Gestión de la memoria) . Este tipo de interrupción suele ser un error de página .

Cuando el kernel detecta un error en una página, generalmente ajusta el rango de memoria virtual del programa que lo activó, otorgándole acceso a la memoria solicitada. Esto le da al kernel poder discrecional sobre dónde se almacena la memoria de una aplicación en particular, o incluso si ya se ha asignado o no.

En los sistemas operativos modernos, la memoria a la que se accede con menos frecuencia se puede almacenar temporalmente en un disco u otro medio para que ese espacio esté disponible para que lo utilicen otros programas. Esto se llama intercambio , ya que varios programas pueden utilizar un área de memoria y lo que contiene esa área de memoria se puede intercambiar o intercambiar según demanda.

La memoria virtual proporciona al programador o al usuario la percepción de que hay una cantidad de RAM en la computadora mucho mayor de la que realmente hay. [91]

concurrencia

La concurrencia se refiere a la capacidad del sistema operativo para realizar múltiples tareas simultáneamente. [92] Prácticamente todos los sistemas operativos modernos admiten la concurrencia. [93]

Los subprocesos permiten dividir el trabajo de un proceso en varias partes que pueden ejecutarse simultáneamente. [94] El número de subprocesos no está limitado por el número de procesadores disponibles. Si hay más subprocesos que procesadores, el kernel del sistema operativo programa, suspende y reanuda los subprocesos, controlando cuándo se ejecuta cada subproceso y cuánto tiempo de CPU recibe. [95] Durante un cambio de contexto , se suspende un subproceso en ejecución, su estado se guarda en el bloque y la pila de control de subprocesos y se carga el estado del nuevo subproceso. [96] Históricamente, en muchos sistemas un subproceso podía ejecutarse hasta que control renunciado ( multitarea cooperativa ). Debido a que este modelo puede permitir que un solo subproceso monopolice el procesador, la mayoría de los sistemas operativos ahora pueden interrumpir un subproceso ( multitarea preventiva ). [97]

Los subprocesos tienen su propio ID de subproceso, contador de programa (PC), un conjunto de registros y una pila , pero comparten código, datos de montón y otros recursos con otros subprocesos del mismo proceso. [98] [99] Por lo tanto, hay menos gastos generales para crear un hilo que un nuevo proceso. [100] En sistemas de una sola CPU, la concurrencia cambia entre procesos. Muchas computadoras tienen varias CPU. [101] El paralelismo con múltiples subprocesos ejecutándose en diferentes CPU puede acelerar un programa, dependiendo de cuánto se puede ejecutar simultáneamente. [102]

Sistema de archivos

Los sistemas de archivos permiten a los usuarios y programas organizar y ordenar archivos en una computadora, a menudo mediante el uso de directorios (o carpetas).

Los dispositivos de almacenamiento permanente utilizados en las computadoras del siglo XXI, a diferencia de la memoria dinámica volátil de acceso aleatorio (DRAM), aún son accesibles después de una falla o un corte de energía . El almacenamiento permanente ( no volátil ) es mucho más económico por byte, pero lleva varios órdenes de magnitud más tiempo para acceder, leer y escribir. [103] [104] Las dos tecnologías principales son un disco duro que consta de discos magnéticos y una memoria flash (una unidad de estado sólido que almacena datos en circuitos eléctricos). Este último es más caro pero más rápido y duradero. [105] [106]

Los sistemas de archivos son una abstracción utilizada por el sistema operativo para simplificar el acceso al almacenamiento permanente. Proporcionan nombres de archivos legibles por humanos y otros metadatos , aumentan el rendimiento mediante la amortización de los accesos, evitan que varios subprocesos accedan a la misma sección de memoria e incluyen sumas de comprobación para identificar la corrupción . [107] Los sistemas de archivos se componen de archivos (colecciones de datos con nombre, de un tamaño arbitrario) y directorios (también llamados carpetas) que enumeran nombres de archivos legibles por humanos y otros directorios. [108] Una ruta de archivo absoluta comienza en el directorio raíz y enumera los subdirectorios divididos por puntuación, mientras que una ruta relativa define la ubicación de un archivo de un directorio. [109] [110]

Las llamadas al sistema (que a veces están empaquetadas en bibliotecas) permiten a las aplicaciones crear, eliminar, abrir y cerrar archivos, así como vincularlos, leerlos y escribirlos. Todas estas operaciones las realiza el sistema operativo en nombre de la aplicación. [111] Los esfuerzos del sistema operativo para reducir la latencia incluyen almacenar bloques de memoria solicitados recientemente en un caché y recuperar previamente datos que la aplicación no ha solicitado, pero que podría necesitar a continuación. [112] Los controladores de dispositivos son software específico para cada dispositivo de entrada/salida (E/S) que permite que el sistema operativo funcione sin modificaciones en diferentes hardware. [113] [114]

Otro componente de los sistemas de archivos es un diccionario que asigna el nombre y los metadatos de un archivo al bloque de datos donde se almacena su contenido. [115] La mayoría de los sistemas de archivos utilizan directorios para convertir nombres de archivos en números de archivos. Para encontrar el número de bloque, el sistema operativo utiliza un índice (a menudo implementado como un árbol ). [116] Por separado, hay un mapa de espacio libre para rastrear bloques libres, comúnmente implementado como un mapa de bits . [116] Aunque cualquier bloque libre se puede utilizar para almacenar un archivo nuevo, muchos sistemas operativos intentan agrupar archivos en el mismo directorio para maximizar el rendimiento o reorganizar periódicamente los archivos para reducir la fragmentación . [117]

Mantener la confiabilidad de los datos ante una falla de la computadora o del hardware es otra preocupación. [118] Los protocolos de escritura de archivos están diseñados con operaciones atómicas para no dejar el almacenamiento permanente en un estado parcialmente escrito e inconsistente en caso de una falla en cualquier momento durante la escritura. [119] La corrupción de datos se aborda mediante almacenamiento redundante (por ejemplo, RAID: matriz redundante de discos económicos ) [120] [121] y sumas de verificación para detectar cuándo se han dañado los datos. Con múltiples capas de sumas de verificación y copias de seguridad de un archivo, un sistema puede recuperarse de múltiples fallas de hardware. Los procesos en segundo plano se utilizan a menudo para detectar y recuperar datos dañados. [121]

Seguridad

La seguridad significa proteger a los usuarios de otros usuarios de la misma computadora, así como de aquellos que buscan acceso remoto a ella a través de una red. [122] La seguridad de los sistemas operativos se basa en lograr la tríada de la CIA : confidencialidad (los usuarios no autorizados no pueden acceder a los datos), integridad (los usuarios no autorizados no pueden modificar los datos) y disponibilidad (garantizar que el sistema permanezca disponible para los usuarios autorizados, incluso en el caso de un ataque de denegación de servicio ). [123] Al igual que con otros sistemas informáticos, aislar los dominios de seguridad (en el caso de los sistemas operativos, el kernel, los procesos y las máquinas virtuales ) es clave para lograr la seguridad. [124] Otras formas de aumentar la seguridad incluyen la simplicidad para minimizar la superficie de ataque , bloquear el acceso a los recursos de forma predeterminada, verificar todas las solicitudes de autorización, el principio de autoridad mínima (otorgar el privilegio mínimo esencial para realizar una tarea), la separación de privilegios y reducir datos compartidos. [125]

Algunos diseños de sistemas operativos son más seguros que otros. Aquellos que no tienen aislamiento entre el kernel y las aplicaciones son los menos seguros, mientras que aquellos con un kernel monolítico como la mayoría de los sistemas operativos de propósito general siguen siendo vulnerables si alguna parte del kernel se ve comprometida. Un diseño más seguro presenta micronúcleos que separan los privilegios del núcleo en muchos dominios de seguridad separados y reducen las consecuencias de una única infracción del núcleo. [126] Los Unikernels son otro enfoque que mejora la seguridad al minimizar el kernel y separar la funcionalidad de otros sistemas operativos por aplicación. [126]

La mayoría de los sistemas operativos están escritos en C o C++ , lo que crea vulnerabilidades potenciales de explotación. A pesar de los intentos de protegerse contra ellos, las vulnerabilidades son causadas por ataques de desbordamiento del búfer , que son posibles gracias a la falta de verificación de límites . [127] Las vulnerabilidades de hardware, algunas de ellas causadas por optimizaciones de la CPU , también pueden usarse para comprometer el sistema operativo. [128] Hay casos conocidos de programadores de sistemas operativos que implantan deliberadamente vulnerabilidades, como puertas traseras . [129]

La seguridad de los sistemas operativos se ve obstaculizada por su creciente complejidad y la consiguiente inevitabilidad de los errores. [130] Debido a que la verificación formal de los sistemas operativos puede no ser factible, los desarrolladores utilizan el fortalecimiento del sistema operativo para reducir las vulnerabilidades, [131] por ejemplo, aleatorización del diseño del espacio de direcciones , integridad del flujo de control , [132] restricciones de acceso , [133] y otras técnicas. [134] No existen restricciones sobre quién puede contribuir con código a los sistemas operativos de código abierto; Dichos sistemas operativos tienen historiales de cambios transparentes y estructuras de gobernanza distribuida. [135] Los desarrolladores de código abierto se esfuerzan por trabajar en colaboración para encontrar y eliminar vulnerabilidades de seguridad, utilizando la revisión de código y la verificación de tipos para eliminar el código malicioso. [136] [137] Andrew S. Tanenbaum aconseja publicar el código fuente de todos los sistemas operativos, argumentando que evita que los desarrolladores confíen en el secreto y, por lo tanto, dependan de la práctica poco confiable de seguridad por oscuridad . [138]

Interfaz de usuario

Una interfaz de usuario (UI) es esencial para respaldar la interacción humana con una computadora. Los dos tipos de interfaz de usuario más comunes para cualquier computadora son

Para las computadoras personales, incluidos teléfonos inteligentes y tabletas , y para estaciones de trabajo , la entrada del usuario generalmente se realiza a través de una combinación de teclado , mouse y trackpad o pantalla táctil , todos los cuales están conectados al sistema operativo con software especializado. [139] Los usuarios de computadoras personales que no son desarrolladores o codificadores de software a menudo prefieren las GUI tanto para la entrada como para la salida; Las GUI son compatibles con la mayoría de las computadoras personales. [140] El software para admitir GUI es más complejo que una línea de comando para entrada y salida de texto sin formato. Los programadores suelen preferir la salida de texto sin formato y es fácil de admitir. [141]

El desarrollo de sistemas operativos como hobby

Un sistema operativo aficionado puede clasificarse como aquel cuyo código no se ha derivado directamente de un sistema operativo existente y tiene pocos usuarios y desarrolladores activos. [142]

En algunos casos, el desarrollo de pasatiempos respalda un dispositivo informático " casero ", por ejemplo, una simple computadora de placa única alimentada por un microprocesador 6502 . O bien, el desarrollo puede ser para una arquitectura que ya se utiliza ampliamente. El desarrollo de un sistema operativo puede surgir de conceptos completamente nuevos o puede comenzar modelando un sistema operativo existente. En cualquier caso, el aficionado es su propio desarrollador o puede interactuar con un grupo pequeño y a veces desestructurado de personas que tienen intereses similares.

Ejemplos de sistemas operativos para aficionados incluyen Syllable y TempleOS .

Diversidad de sistemas operativos y portabilidad.

Si una aplicación está escrita para su uso en un sistema operativo específico y se traslada a otro sistema operativo, la funcionalidad requerida por esa aplicación puede ser implementada de manera diferente por ese sistema operativo (los nombres de las funciones, el significado de los argumentos, etc.), lo que requiere que la aplicación ser adaptado, modificado o mantenido de otro modo .

Este costo de soportar la diversidad de sistemas operativos se puede evitar escribiendo aplicaciones en plataformas de software como Java o Qt . Estas abstracciones ya han asumido el costo de la adaptación a sistemas operativos específicos y sus bibliotecas de sistema .

Otro enfoque es que los proveedores de sistemas operativos adopten estándares. Por ejemplo, las capas de abstracción POSIX y OS proporcionan puntos en común que reducen los costos de portabilidad.

Cuota de mercado

Ver también

Notas

  1. ^ Una combinación de DOS/360 y software de emulación se conocía como sistema operativo de compatibilidad (COS).
  2. ^ Sin embargo, ESPOL permitió que los programas fuente especificaran todas las operaciones del repertorio de instrucciones.
  3. ^ Bell Labs abandonó rápidamente, dejando GE y MIT.
  4. ^ Las CPU modernas proporcionan instrucciones (por ejemplo, SYSENTER) para invocar servicios del kernel seleccionados sin interrupciones. Visite https://wiki.osdev.org/SYSENTER para obtener más información.
  5. ^ Los ejemplos incluyen SIGINT , SIGSEGV y SIGBUS .
  6. ^ a menudo en forma de chip DMA para sistemas más pequeños y canales de E/S para sistemas más grandes
  7. ^ Las placas base modernas tienen un controlador DMA. Además, un dispositivo también puede tener uno. Visite el protocolo SCSI RDMA .
  8. ^ Hay varias razones por las que la memoria puede ser inaccesible
    • La dirección puede estar fuera de rango.
    • La dirección puede hacer referencia a una página o segmento que se ha movido a una tienda de respaldo.
    • La dirección puede referirse a la memoria que tiene acceso restringido debido, por ejemplo, a una llave o un anillo .

Referencias

  1. ^ Puestos (2005). Sistemas operativos, componentes internos y principios de diseño . Pearson: Prentice Hall. pag. 6.
  2. ^ Dhotre, IA (2009). Sistemas operativos . Publicaciones técnicas. pag. 1.
  3. ^ ab "Cuota de mercado de sistemas operativos de escritorio en todo el mundo". Estadísticas globales de StatCounter . Archivado desde el original el 2 de octubre de 2023 . Consultado el 3 de octubre de 2023 .
  4. ^ "Cuota de mercado de sistemas operativos para móviles y tabletas en todo el mundo". Estadísticas globales de StatCounter . Consultado el 2 de octubre de 2023 .
  5. ^ "VII. Sistemas de propósito especial: conceptos de sistemas operativos, séptima edición [libro]". www.oreilly.com . Archivado desde el original el 13 de junio de 2021 . Consultado el 8 de febrero de 2021 .
  6. ^ "Sistemas operativos de propósito especial - Instituto de la UNIVERSIDAD RWTH AACHEN para la automatización de sistemas de energía complejos - Inglés". www.acs.eonerc.rwth-aachen.de . Archivado desde el original el 14 de junio de 2021 . Consultado el 8 de febrero de 2021 .
  7. ^ ab Tanenbaum y Bos 2023, pag. 4.
  8. ^ Anderson y Dahlin 2014, pág. 6.
  9. ^ ab Silberschatz et al. 2018, pág. 6.
  10. ^ abc Anderson y Dahlin 2014, pág. 7.
  11. ^ Anderson y Dahlin 2014, págs. 9-10.
  12. ^ Tanenbaum y Bos 2023, págs.
  13. ^ Anderson y Dahlin 2014, pág. 10.
  14. ^ Tanenbaum y Bos 2023, pag. 5.
  15. ^ abcd Anderson y Dahlin 2014, pág. 11.
  16. ^ Anderson y Dahlin 2014, págs.7, 9, 13.
  17. ^ Anderson y Dahlin 2014, págs. 12-13.
  18. ^ Tanenbaum y Bos 2023, pag. 557.
  19. ^ Tanenbaum y Bos 2023, pag. 558.
  20. ^ ab Tanenbaum y Bos 2023, pag. 565.
  21. ^ Tanenbaum y Bos 2023, pag. 562.
  22. ^ Tanenbaum y Bos 2023, pag. 563.
  23. ^ Tanenbaum y Bos 2023, pag. 569.
  24. ^ Tanenbaum y Bos 2023, pag. 571.
  25. ^ Tanenbaum y Bos 2023, pag. 579.
  26. ^ Tanenbaum y Bos 2023, pag. 581.
  27. ^ Tanenbaum y Bos 2023, págs.
  28. ^ Tanenbaum y Bos 2023, pag. 39.
  29. ^ abcd Tanenbaum y Bos 2023, pag. 38.
  30. ^ Silberschatz y col. 2018, págs.701.
  31. ^ Silberschatz y col. 2018, págs.705.
  32. ^ Anderson y Dahlin 2014, pág. 12.
  33. ^ ab Hansen, Por Brinch, ed. (2001). Sistemas operativos clásicos. Saltador. págs. 4–7. ISBN 0-387-95113-X. Archivado desde el original el 11 de enero de 2023 . Consultado el 19 de diciembre de 2020 .
  34. ^ Ryckman, George (1960). "El lenguaje de funcionamiento de la computadora". IRE-AIEE-ACM '60 (occidental) : 341. doi :10.1145/1460361.1460406. S2CID  30745551.
  35. ^ Lavington, Simón (1998). Una historia de las computadoras de Manchester (2ª ed.). Swindon: Sociedad Británica de Computación. págs. 50–52. ISBN 978-1-902505-01-5.
  36. ^ Kilburn, T.; Payne, RB; Howarth, DJ (diciembre de 1961). "El Supervisor del Atlas". Instituto de Ingenieros Eléctricos : 279–294. doi :10.1145/1460764.1460786. S2CID  16466990. Archivado desde el original el 9 de junio de 2022 . Consultado el 17 de junio de 2022 .
  37. ^ Brinch Hansen, Per (2000). Sistemas operativos clásicos: del procesamiento por lotes a los sistemas distribuidos . Springer-Verlag.
  38. ^ Sistema ejecutivo EXEC I UNIVAC 1107 (PDF) (rev. 1 ed.). Sperry Rand . UP-2577. Archivado (PDF) desde el original el 15 de junio de 2022 . Consultado el 15 de mayo de 2022 .
  39. ^ Manual de referencia para programadores EXEC II del sistema multiprocesador de la división de procesamiento de datos UNIVAC (PDF) . Sperry Rand . 1966. UP-4058. Archivado (PDF) desde el original el 15 de junio de 2022 . Consultado el 15 de mayo de 2022 .
  40. ^ Referencia de programadores EXEC 8 del sistema operativo del sistema multiprocesador UNIVAC 1108 (PDF) (rev. 1 ed.). Sperry Rand . 1968. UP-4144. Archivado (PDF) desde el original el 25 de mayo de 2022 . Consultado el 15 de mayo de 2022 .
  41. ^ "Guía de referencia rápida del microprocesador Intel® - Año". Intel . Archivado desde el original el 25 de abril de 2016 . Consultado el 24 de abril de 2016 .
  42. ^ Ritchie, Dennis. "Manual Unix, primera edición". Tecnologías Lucent. Archivado desde el original el 18 de mayo de 2008 . Consultado el 22 de noviembre de 2012 .
  43. ^ "OS X Mountain Lion: haga avanzar su Mac aún más". Manzana. Archivado desde el original el 23 de mayo de 2011 . Consultado el 7 de agosto de 2012 .
  44. ^ "Se anunciaron los servicios de apertura en MVS/ESA SP versión 4 versión 3 y disponibilidad de MVS/ESA SP versión 4 versión 3 con mejoras adicionales". Cartas de anuncio . IBM. 9 de febrero de 1993. 293-060 . Consultado el 16 de julio de 2023 .
  45. ^ Presentamos OpenEdition MVS . Primera edición. IBM. Diciembre de 1993. GC23-3010-00.
  46. ^ Documento de conformidad OpenEdition MVS POSIX.1 . Primera edición. IBM. Febrero de 1993. GC23-3011-00.
  47. ^ Documento de conformidad OpenEdition MVS POSIX.2 . Primera edición. IBM. Diciembre de 1993. GC23-3012-00.
  48. ^ "Veinte años de Linux según Linus Torvalds". ZDNet. 13 de abril de 2011. Archivado desde el original el 19 de septiembre de 2016 . Consultado el 19 de septiembre de 2016 .
  49. ^ Linus Benedict Torvalds (5 de octubre de 1991). "Fuentes de kernel gratuitas tipo minix para 386-AT". Grupo de noticias : comp.os.minix. Archivado desde el original el 2 de marzo de 2013 . Consultado el 30 de septiembre de 2011 .
  50. ^ "¿Qué es Linux: una descripción general del sistema operativo Linux?". Medio. 11 de abril de 2020 . Consultado el 16 de julio de 2023 .
  51. ^ Linux en línea (2008). "Logotipos y mascotas de Linux". Archivado desde el original el 15 de agosto de 2010 . Consultado el 11 de agosto de 2009 .
  52. ^ "Informe de IDC sobre la cuota de mercado de servidores". Idc.com. Archivado desde el original el 27 de septiembre de 2012 . Consultado el 7 de agosto de 2012 .
  53. ^ Personal de LinuxDevices (23 de abril de 2008). "Linux sigue siendo el principal sistema operativo integrado". LinuxGizmos.com . Archivado desde el original el 19 de abril de 2016 . Consultado el 5 de abril de 2016 .
  54. ^ "Familia de sistemas operativos / Linux | TOP500". www.top500.org . Consultado el 30 de julio de 2023 .
  55. ^ "Cuota de mercado de sistemas operativos en todo el mundo, enero-diciembre de 2022". 2022 . Consultado el 4 de noviembre de 2023 .
  56. ^ "Cuota de mercado de sistemas operativos de escritorio en todo el mundo, enero-diciembre de 2022". 2022 . Consultado el 4 de noviembre de 2023 .
  57. ^ "Solución de problemas del modo de compatibilidad de MS-DOS en discos duros". Soporte de Microsoft. Archivado desde el original el 10 de agosto de 2012 . Consultado el 7 de agosto de 2012 .
  58. ^ "Uso de los controladores de tarjetas de red NDIS 2 PCMCIA en Windows 95". Soporte de Microsoft. Archivado desde el original el 17 de febrero de 2013 . Consultado el 7 de agosto de 2012 .
  59. ^ "INFORMACIÓN: Los controladores de dispositivos Wave multimedia de Windows 95 deben ser de 16 bits". Soporte de Microsoft. Archivado desde el original el 17 de febrero de 2013 . Consultado el 7 de agosto de 2012 .
  60. ^ Arthur, Charles (5 de enero de 2011). " ' Windows 8' se ejecutará en chips ARM, pero será necesario reescribir las aplicaciones de terceros" . El guardián . Archivado desde el original el 12 de octubre de 2016.
  61. ^ "Compartición del sistema operativo por grupos para sitios en todas las ubicaciones, enero de 2009". Archivado desde el original el 6 de julio de 2009 . Consultado el 3 de mayo de 2010 .
  62. ^ "Detrás de los datos de IDC: Windows sigue siendo el número uno en sistemas operativos de servidores". ZDNet . 26 de febrero de 2010. Archivado desde el original el 1 de marzo de 2010.
  63. ^ ab Kerrisk, Michael (2010). La interfaz de programación de Linux . Sin prensa de almidón. pag. 388.ISBN 978-1-59327-220-3. Una señal es una notificación a un proceso de que ha ocurrido un evento. A veces las señales se describen como interrupciones de software.
  64. ^ Hyde, Randall (1996). "Capítulo Diecisiete: Interrupciones, trampas y excepciones (Parte 1)". El arte de la programación en lenguaje ensamblador . Sin prensa de almidón. Archivado desde el original el 22 de diciembre de 2021 . Consultado el 22 de diciembre de 2021 . El concepto de interrupción es algo que ha ido ampliando su alcance a lo largo de los años. La familia 80x86 solo ha aumentado la confusión que rodea a las interrupciones al introducir la instrucción int (interrupción de software). De hecho, diferentes fabricantes han utilizado términos como excepciones, fallas, abortos, trampas e interrupciones para describir los fenómenos que analiza este capítulo. Lamentablemente no existe un consenso claro sobre el significado exacto de estos términos. Diferentes autores adoptan diferentes términos para su propio uso.
  65. ^ Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 308.ISBN 978-0-13-854662-5. Al igual que la trampa, la interrupción detiene el programa en ejecución y transfiere el control a un controlador de interrupciones, que realiza alguna acción apropiada. Cuando termina, el manejador de interrupciones devuelve el control al programa interrumpido.
  66. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 32.ISBN 978-0-201-50480-4. Cuando ocurre una interrupción (o trampa), el hardware transfiere el control al sistema operativo. Primero, el sistema operativo preserva el estado de la CPU almacenando registros y el contador del programa. Luego, determina qué tipo de interrupción se ha producido. Para cada tipo de interrupción, segmentos separados de código en el sistema operativo determinan qué acción se debe tomar.
  67. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 105.ISBN 978-0-201-50480-4. Cambiar la CPU a otro proceso requiere guardar el estado del proceso anterior y cargar el estado guardado para el nuevo proceso. Esta tarea se conoce como cambio de contexto.
  68. ^ abcde Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 31.ISBN 978-0-201-50480-4.
  69. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 30.ISBN 978-0-201-50480-4. El hardware puede provocar una interrupción en cualquier momento enviando una señal a la CPU, normalmente a través del bus del sistema.
  70. ^ Kerrisk, Michael (2010). La interfaz de programación de Linux . Sin prensa de almidón. pag. 388.ISBN 978-1-59327-220-3. Las señales son análogas a las interrupciones de hardware en el sentido de que interrumpen el flujo normal de ejecución de un programa; en la mayoría de los casos, no es posible predecir exactamente cuándo llegará una señal.
  71. ^ Kerrisk, Michael (2010). La interfaz de programación de Linux . Sin prensa de almidón. pag. 388.ISBN 978-1-59327-220-3. Entre los tipos de eventos que hacen que el kernel genere una señal para un proceso se encuentran los siguientes: Ocurrió un evento de software. Por ejemplo,... se superó el límite de tiempo de CPU del proceso[.]
  72. ^ abcdeKerrisk, Michael (2010). La interfaz de programación de Linux . Sin prensa de almidón. pag. 388.ISBN 978-1-59327-220-3.
  73. ^ "Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32" (PDF) . Corporación Intel . Septiembre de 2016. pág. 610. Archivado (PDF) desde el original el 23 de marzo de 2022 . Consultado el 5 de mayo de 2022 .
  74. ^ abc Bach, Maurice J. (1986). El diseño del sistema operativo UNIX . Prentice Hall. pag. 200.ISBN 0-13-201799-7.
  75. ^ Kerrisk, Michael (2010). La interfaz de programación de Linux . Sin prensa de almidón. pag. 400.ISBN 978-1-59327-220-3.
  76. ^ ab Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 308.ISBN 978-0-13-854662-5.
  77. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 182.ISBN 978-0-201-50480-4.
  78. ^ Haviland, Keith; Salamá, Ben (1987). Programación del sistema UNIX . Compañía editorial Addison-Wesley. pag. 153.ISBN 0-201-12919-1.
  79. ^ Haviland, Keith; Salamá, Ben (1987). Programación del sistema UNIX . Compañía editorial Addison-Wesley. pag. 148.ISBN 0-201-12919-1.
  80. ^ ab Haviland, Keith; Salamá, Ben (1987). Programación del sistema UNIX . Compañía editorial Addison-Wesley. pag. 149.ISBN 0-201-12919-1.
  81. ^ Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 292.ISBN 978-0-13-854662-5.
  82. ^ IBM (septiembre de 1968), "Almacenamiento principal" (PDF) , Principios de funcionamiento de IBM System/360 (PDF) , octava edición, p. 7, archivado (PDF) desde el original el 19 de marzo de 2022 , consultado el 13 de abril de 2022.
  83. ^ ab Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 294.ISBN 978-0-13-854662-5.
  84. ^ "Controlador de interrupción de programa (PIC)" (PDF) . Manual del usuario: PDP-7 (PDF) . Corporación de equipos digitales . 1965. págs. 48. F-75. Archivado (PDF) desde el original el 10 de mayo de 2022 . Consultado el 20 de abril de 2022 .
  85. ^ Manual de sistemas de entrada-salida PDP-1 (PDF) . Corporación de equipos digitales . págs. 19-20. Archivado (PDF) desde el original el 25 de enero de 2019 . Consultado el 16 de agosto de 2022 .
  86. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 32.ISBN 978-0-201-50480-4.
  87. ^ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pag. 34.ISBN 978-0-201-50480-4.
  88. ^ ab Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 295.ISBN 978-0-13-854662-5.
  89. ^ ab Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 309.ISBN 978-0-13-854662-5.
  90. ^ Tanenbaum, Andrew S. (1990). Organización informática estructurada, tercera edición. Prentice Hall. pag. 310.ISBN 978-0-13-854662-5.
  91. ^ Puestos, William (2008). Organización y arquitectura de computadoras . Nueva Delhi: Prentice-Hall of India Private Limited. pag. 267.ISBN 978-81-203-2962-1.
  92. ^ Anderson y Dahlin 2014, pág. 129.
  93. ^ Silberschatz y col. 2018, pág. 159.
  94. ^ Anderson y Dahlin 2014, pág. 130.
  95. ^ Anderson y Dahlin 2014, pág. 131.
  96. ^ Anderson y Dahlin 2014, págs.157, 159.
  97. ^ Anderson y Dahlin 2014, pág. 139.
  98. ^ Silberschatz y col. 2018, pág. 160.
  99. ^ Anderson y Dahlin 2014, pág. 183.
  100. ^ Silberschatz y col. 2018, pág. 162.
  101. ^ Silberschatz y col. 2018, págs. 162-163.
  102. ^ Silberschatz y col. 2018, pág. 164.
  103. ^ Anderson y Dahlin 2014, págs.492, 517.
  104. ^ Tanenbaum y Bos 2023, págs.
  105. ^ Anderson y Dahlin 2014, págs.517, 530.
  106. ^ Tanenbaum y Bos 2023, pag. 260.
  107. ^ Anderson y Dahlin 2014, págs. 492–493.
  108. ^ Anderson y Dahlin 2014, pág. 496.
  109. ^ Anderson y Dahlin 2014, págs. 496–497.
  110. ^ Tanenbaum y Bos 2023, págs. 274-275.
  111. ^ Anderson y Dahlin 2014, págs. 502–504.
  112. ^ Anderson y Dahlin 2014, pág. 507.
  113. ^ Anderson y Dahlin 2014, pág. 508.
  114. ^ Tanenbaum y Bos 2023, pag. 359.
  115. ^ Anderson y Dahlin 2014, pág. 545.
  116. ^ ab Anderson y Dahlin 2014, pág. 546.
  117. ^ Anderson y Dahlin 2014, pág. 547.
  118. ^ Anderson y Dahlin 2014, págs.589, 591.
  119. ^ Anderson y Dahlin 2014, págs. 591–592.
  120. ^ Tanenbaum y Bos 2023, págs. 385–386.
  121. ^ ab Anderson y Dahlin 2014, pág. 592.
  122. ^ Tanenbaum y Bos 2023, págs. 605–606.
  123. ^ Tanenbaum y Bos 2023, pag. 608.
  124. ^ Tanenbaum y Bos 2023, pag. 609.
  125. ^ Tanenbaum y Bos 2023, págs.
  126. ^ ab Tanenbaum y Bos 2023, pag. 612.
  127. ^ Tanenbaum y Bos 2023, págs.648, 657.
  128. ^ Tanenbaum y Bos 2023, págs. 668–669, 674.
  129. ^ Tanenbaum y Bos 2023, págs. 679–680.
  130. ^ Tanenbaum y Bos 2023, págs. 605, 617–618.
  131. ^ Tanenbaum y Bos 2023, págs. 681–682.
  132. ^ Tanenbaum y Bos 2023, pag. 683.
  133. ^ Tanenbaum y Bos 2023, pag. 685.
  134. ^ Tanenbaum y Bos 2023, pag. 689.
  135. ^ Richet y Bouaynaya 2023, pag. 92.
  136. ^ Richet y Bouaynaya 2023, págs. 92–93.
  137. ^ Berntsso, Strandén y Warg 2017, págs. 130-131.
  138. ^ Tanenbaum y Bos 2023, pag. 611.
  139. ^ Tanenbaum y Bos 2023, págs.396, 402.
  140. ^ Tanenbaum y Bos 2023, págs.395, 408.
  141. ^ Tanenbaum y Bos 2023, pag. 402.
  142. ^ Holwerda, Thom (20 de diciembre de 2009). "Mi sistema operativo es menos hobby que el tuyo". Noticias del sistema operativo . Consultado el 4 de junio de 2024 .

Otras lecturas

enlaces externos