Página semiprotejada
De Wikipedia, la enciclopedia libre
  (Redirigido desde los sistemas operativos )
Saltar a navegación Saltar a búsqueda

Un sistema operativo ( SO ) es un software de sistema que administra el hardware de la computadora , los recursos de software 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 , impresión y otros recursos.

Para funciones de hardware tales 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 es ejecutado directamente por el hardware y frecuentemente hace llamadas al sistema a un Función del sistema operativo o es interrumpido por él. 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 .

El sistema operativo de escritorio de uso general [3] dominante es Microsoft Windows, con una cuota de mercado de alrededor del 76,45%. macOS de Apple Inc. está en segundo lugar (17,72%), y las variedades de Linux están colectivamente en tercer lugar (1,73%). [4] En el sector móvil (incluidos los teléfonos inteligentes y las tabletas ), la participación de Android es de hasta un 72% en el año 2020. [5] Según los datos del tercer trimestre de 2016, la participación de Android en los teléfonos inteligentes es dominante con un 87,5 por ciento con también una tasa de crecimiento. del 10,3 por ciento anual, seguido por iOS de Applecon un 12,1 por ciento con una disminución anual en la participación de mercado del 5,2 por ciento, mientras que otros sistemas operativos ascienden a solo un 0,3 por ciento. [6] Las distribuciones de Linux son dominantes en los sectores de servidores y supercomputación. Otras clases especializadas de sistemas operativos (sistemas operativos de propósito especial) [3] [7] ), como los sistemas integrados y en tiempo real, existen para muchas aplicaciones. También existen sistemas operativos centrados en la seguridad . Algunos sistemas operativos tienen requisitos de sistema bajos (es decir , distribución Linux liviana ). Otros pueden tener requisitos de sistema más altos.

Algunos sistemas operativos requieren instalación o pueden venir preinstalados con 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).

Tipos de sistemas operativos

Tarea única y multitarea

Un sistema de una sola tarea solo puede ejecutar un programa a la vez, mientras que un sistema operativo multitarea permite que más de un programa se ejecute simultáneamente . Esto se logra mediante el tiempo compartido , donde el tiempo de procesador disponible se divide entre múltiples procesos. Cada uno de estos procesos se interrumpe repetidamente en intervalos de tiempo por un subsistema de programación de tareas del sistema operativo. La multitarea se puede caracterizar en tipos preventivos y cooperativos. En la multitarea preventiva , el sistema operativo divide el tiempo de la CPU y dedica un espacio a cada uno de los programas. Los sistemas operativos similares a Unix, como Solaris yLinux , así como los que no son similares a Unix, como AmigaOS, admiten la multitarea preventiva. La multitarea cooperativa se logra confiando en cada proceso para proporcionar tiempo a los otros procesos de una manera definida. Las versiones de 16 bits de Microsoft Windows usaban multitarea cooperativa; Las versiones de 32 bits de Windows NT y Win9x usaban multitarea preventiva.

Usuario único y multiusuario

Los sistemas operativos de un solo usuario no tienen facilidades para distinguir a los usuarios, pero pueden permitir que varios programas se ejecuten en conjunto. [8] Un sistema operativo multiusuario amplía el concepto básico de multitarea con instalaciones que identifican procesos y recursos, como espacio en disco, perteneciente a múltiples usuarios, y el sistema permite que múltiples usuarios interactúen con el sistema al mismo tiempo. . 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, impresión y otros recursos para múltiples usuarios.

Repartido

Un sistema operativo distribuido administra un grupo de computadoras en red distintas y las hace parecer como una sola computadora, ya que todos los cálculos están distribuidos (divididos entre las computadoras constituyentes). [9]

Con plantilla

En el contexto de computación distribuida y en la nube de un sistema operativo, la creación de plantillas se refiere a la creación de una sola imagen de máquina virtual como un sistema operativo invitado y luego guardarla como una herramienta para múltiples máquinas virtuales en ejecución . La técnica se utiliza tanto en la virtualización como en la gestión de la computación en la nube, y es común en grandes almacenes de servidores. [10]

Incorporado

Los sistemas operativos integrados están diseñados para utilizarse en sistemas informáticos integrados . Están diseñados para funcionar en máquinas pequeñas con menos autonomía (por ejemplo, PDA). Son muy compactos y extremadamente eficientes por diseño, y pueden operar con una cantidad limitada de recursos. Windows CE y Minix 3 son algunos ejemplos de sistemas operativos integrados.

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. Un sistema operativo en tiempo real puede ser de una o varias tareas, pero cuando es multitarea, utiliza algoritmos de programación especializados para lograr una naturaleza determinista del comportamiento. Un sistema impulsado por eventos de este tipo cambia entre tareas en función de sus prioridades o eventos externos, mientras que los sistemas operativos de tiempo compartido cambian las tareas en función de las interrupciones del reloj .

Biblioteca

Un sistema operativo de biblioteca es aquel en el que los servicios que proporciona un sistema operativo típico, como las redes, se brindan en forma de bibliotecas y se componen con el código de aplicación y configuración para construir un unikernel : un espacio de direcciones único especializado, imagen de máquina que se puede implementar en entornos integrados o en la nube.

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 la década de 1960. [11] 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 para ellos 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 programaron en filas de interruptores mecánicos o mediante cables de puente en tableros de conexiones . Estos eran sistemas de propósito especial que, por ejemplo, generaban tablas de balística para los militares o controlaban la impresión de cheques de nómina a partir de datos en tarjetas de papel perforadas. Después de que se inventaran las computadoras programables de propósito general, se introdujeron los 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 ]

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 solo podía ejecutar un programa a la vez. Cada usuario tenía el uso exclusivo de la computadora durante un período limitado y llegaría a una hora programada 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 estaría configurada para funcionar hasta que el programa se completara o fallara . Los programas generalmente se pueden depurar a través de un panel frontal usando 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 . [11]

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 seguían ejecutando un solo trabajo a la vez. En la Universidad de Cambridge en Inglaterra, la cola de trabajos fue en un momento una línea de lavado (tendedero) del que se colgaban cintas con pinzas de ropa de diferentes colores para indicar la prioridad del trabajo. [ cita requerida ]

Una mejora fue el Atlas Supervisor . Introducido con el Manchester Atlas en 1962, muchos lo consideran el primer sistema operativo moderno reconocible. [12] Brinch Hansen lo describió como "el avance más significativo en la historia de los sistemas operativos". [13]

Mainframes

A lo largo de la década de 1950, muchas características importantes fueron pioneras en el campo de los sistemas operativos en computadoras mainframe , 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 en 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 la aplicación, en lugar de en un sistema operativo separado utilizado por todas las aplicaciones. En 1959, se lanzó el sistema operativo SHARE como una utilidad integrada para el IBM 704, y más tarde en los mainframes 709 y 7090 , aunque fue rápidamente reemplazado por IBSYS / IBJOB en los 709, 7090 y 7094.

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

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 vuelve a reclamar todos estos recursos.

El sistema CP-67 alternativo para el S / 360-67 inició una línea completa de sistemas operativos IBM enfocados en el concepto de máquinas virtuales . Otros sistemas operativos utilizados en los mainframes de la serie IBM S / 360 incluían sistemas desarrollados por IBM: COS / 360 (sistema operativo de compatibilidad), DOS / 360 (sistema operativo de disco), TSS / 360 (sistema de tiempo compartido), TOS / 360 (sistema operativo de cinta). System), BOS / 360 (Basic Operating System) y ACP (Airline Control Program), así como algunos sistemas que no son de IBM: MTS (Michigan Terminal System), MUSIC (Multi-User System for Interactive Computing) 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, los sistemas operativos Kronos y más tarde NOS se desarrollaron durante la década de 1970, que admitían el uso simultáneo de lotes y 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 PLATOsistema operativo, que utilizaba pantallas de panel 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 introdujo el B5000 con el sistema operativo MCP (Programa de control maestro). La B5000 era una máquina apiladora diseñada para soportar exclusivamente lenguajes de alto nivel sin lenguaje máquina ni ensamblador; de hecho, el MCP fue el primer sistema operativo que se escribió 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 . Durante el desarrollo del AS / 400, IBM se acercó a Burroughs para obtener una licencia de MCP para que se ejecute en el hardware AS / 400. Esta propuesta fue rechazada por la gerencia de Burroughs para proteger su producción de hardware existente. MCP todavía se usa hoy en día en la línea de computadoras ClearPath / MCP de la compañía Unisys .

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

General Electric y el MIT desarrollaron el supervisor operativo integral de General Electric (GECOS), que introdujo el concepto de niveles de privilegios de seguridad anillados. Después de la adquisición por Honeywell , pasó a llamarse Sistema Operativo Integral General (GCOS).

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 de ARPANET . RT-11 era un sistema operativo en tiempo real de un solo usuario para la minicomputadora de 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 características en sus sistemas a fin de permitir que las diferentes arquitecturas de computadora subyacentes parecieran ser las mismas que otras en una serie. De hecho, la mayoría de 360 ​​después de 360/40 (excepto 360/165 y 360/168) fueron 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 más notables incluyen:

  • Burroughs MCP  - B5000 , 1961 a Unisys Clearpath / MCP, presente
  • IBM OS / 360  - IBM System / 360 , 1966 a IBM z / OS , presente
  • IBM CP-67  - IBM System / 360 , 1967 a IBM z / VM
  • UNIVAC EXEC 8  - UNIVAC 1108 , 1967, a OS 2200 Unisys Clearpath Dorado, presente

Microcomputadoras

PC DOS fue uno de los primeros sistemas operativos de computadora personal que presentaba una interfaz de línea de comandos.
Mac OS de Apple Computer se convirtió en el primer sistema operativo generalizado que presenta una interfaz gráfica de usuario . Muchas de sus características, como ventanas e íconos, se convertirían más tarde en algo común en las GUI.

Las primeras microcomputadoras no tenían la capacidad ni la necesidad de los elaborados sistemas operativos que se habían desarrollado para mainframes y minis; Se desarrollaron sistemas operativos minimalistas, a menudo cargados desde ROM y conocidos como monitores . Una temprana notable sistema operativo de disco era CP / M , que recibió el apoyo de muchos microordenadores tempranos y estaba estrechamente imitado por Microsoft 's de MS-DOS , que se hizo muy popular como el sistema operativo elegido para el IBM PC (versión de IBM la cual fue llamada IBM DOS o PC DOS ). En la década de 1980, Apple Computer Inc. (ahora Apple Inc. ) abandonó su popularSerie de microcomputadoras Apple II para presentar la computadora Apple Macintosh con una innovadora interfaz gráfica de usuario (GUI) para Mac OS .

La introducción del chip de CPU Intel 80386 en octubre de 1985, [14] 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 las miniordenadores y mainframes anteriores . Microsoft respondió a este progreso contratando a Dave Cutler , quien había desarrollado el sistema operativo VMS para Digital Equipment Corporation . Dirigirí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 . NEXTSTEP más tarde sería adquirido por Apple Inc. y utilizado, 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 reemplazo de software libre completo para el sistema operativo propietario UNIX . Si bien el proyecto tuvo un gran éxito al duplicar la funcionalidad de varias partes de UNIX, el desarrollo del kernel de GNU Hurd resultó ser improductivo. En 1991, el estudiante finlandés de ciencias de la computación 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 GNU y el software del sistema.para formar un sistema operativo completo. Desde entonces, la combinación de los dos componentes principales ha sido denominada simplemente "Linux" por la industria del software, una convención de nomenclatura a la que Stallman y la Free Software Foundation siguen oponiéndose, prefiriendo el nombre GNU / Linux. La distribución de software de Berkeley, conocida como BSD , es el derivado de UNIX distribuido por la Universidad de California, Berkeley, a partir de la década de 1970. Distribuido libremente y adaptado a muchas miniordenadores, eventualmente también ganó seguidores para su uso en PC, principalmente como FreeBSD , NetBSD y OpenBSD .

Ejemplos de

Sistemas operativos Unix y similares a Unix

Evolución de los sistemas Unix

Unix fue escrito originalmente en lenguaje ensamblador . [15] Ken Thompson escribió B , principalmente basado en BCPL , basado en su experiencia en el proyecto MULTICS . B fue reemplazado por C , y Unix, reescrito en C, se convirtió en una familia grande y compleja de sistemas operativos interrelacionados que han tenido influencia en todos los sistemas operativos modernos (ver Historia ).

La familia similar a 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 comercial de The Open Group que lo licencia para su uso con cualquier sistema operativo que se haya demostrado que se ajusta a sus definiciones. "Similar a UNIX" se usa comúnmente para referirse al gran conjunto de sistemas operativos que se asemejan al UNIX original.

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

Cuatro sistemas operativos están certificados por The Open Group (titular de la marca comercial 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 solo en el hardware de sus respectivos proveedores. Por el contrario, Sun Microsystems 's Solaris puede ejecutarse en múltiples tipos de hardware, incluyendo x86 y Sparc servidores y PCs. MacOS de Apple , un reemplazo del Mac OS anterior de Apple (no Unix), es una variante BSD híbrida basada en el kernel derivada de NeXTSTEP , Mach y FreeBSD .

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

BSD y sus descendientes

El primer servidor de la World Wide Web se ejecutó en NeXTSTEP, basado en BSD.

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

En 1974, la Universidad de California, 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 los 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 de hardware de la computadora. La Agencia de Proyectos de Investigación Avanzada de Defensa del Departamento de Defensa de EE . UU . Se interesó y decidió financiar el proyecto. Muchas escuelas, corporaciones y organizaciones gubernamentales se dieron cuenta y comenzaron a usar 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 en crear la World Wide Web.

Desarrolladores como Keith Bostic alentaron al proyecto a reemplazar cualquier código no libre que se originara con 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 gratuitos, como NetBSD y FreeBSD (ambos en 1993) y OpenBSD (de NetBSD en 1995).

Mac OS

macOS (anteriormente "Mac OS X" y más tarde "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 distribuyen actualmente . macOS es el sucesor del Mac OS clásico original , que había sido el sistema operativo principal de Apple desde 1984. A diferencia de su predecesor, macOS es un sistema operativo UNIX construido sobre 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 de 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 su fusión 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 incluye 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 se renombró como "OS X" (eliminando "Mac" del nombre). Las herramientas del servidor ahora se ofrecen como una aplicación. [dieciséis]

Linux

Ubuntu , distribución de Linux de escritorio
Linux , un sistema operativo similar a Unix, fue lanzado por primera vez el 17 de septiembre de 1991 por Linus Torvalds . [17] [18] [19] Imagen de Tux el pingüino , mascota de Linux. [20]

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 computación, y recibió apoyo y asistencia de voluntarios que lograron crear un núcleo completo y funcional.

Linux es similar a Unix , pero se desarrolló 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 su 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 1,82% de todas las PC de "sobremesa" (o portátiles), [21] se ha adoptado ampliamente para su uso en servidores [22] y sistemas integrados [23] 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 385 principales. [24] Muchas de las mismas computadoras también están en Green500.(pero en un orden diferente), y Linux se ejecuta en el top 10. Linux también se usa comúnmente en otras computadoras pequeñas de bajo consumo, como teléfonos inteligentes y relojes inteligentes . El núcleo de Linux se utiliza en algunas distribuciones más populares, como Red Hat , Debian , Ubuntu , Linux Mint y Google 's Android , Chrome OS , y Chromium OS .

Microsoft Windows

Microsoft Windows es una familia de sistemas operativos patentados diseñados por Microsoft Corporation y dirigidos principalmente a computadoras basadas en la arquitectura Intel, con un porcentaje de uso total estimado del 88.9 por ciento en computadoras conectadas a la Web. [21] [25] [26] [27] La última versión es Windows 10 .

En 2011, Windows 7 superó a Windows XP como la versión más común en uso. [28] [29] [30]

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 que se distribuía en la mayoría de las computadoras personales con arquitectura Intel en ese momento. En 1995, se lanzó Windows 95, que solo usaba MS-DOS como bootstrap. Para compatibilidad con versiones anteriores, Win9x podría ejecutar controladores MS-DOS [31] [32] en modo real y Windows 3.x [33] 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 IA-32 , x86-64y microprocesadores ARM de 32 bits . [34] Además, Itanium todavía es compatible con la versión anterior del servidor Windows Server 2008 R2 . En el pasado, Windows NT admitía arquitecturas adicionales.

Las ediciones de servidor de Windows se utilizan ampliamente. En los últimos años, Microsoft ha invertido un capital significativo en un esfuerzo por promover el uso de Windows como sistema operativo de servidor . 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 participación en el mercado de servidores. [35] [36]

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

Otro

Ha habido muchos sistemas operativos que fueron importantes en su día pero que ya no lo son, como AmigaOS ; OS / 2 de IBM y Microsoft; Mac OS clásico , el precursor no Unix del macOS de Apple; BeOS ; XTS-300 ; RISC OS ; MorphOS ; Haiku ; BareMetal y FreeMint . Algunos todavía se utilizan en nichos de mercado y continúan desarrollándose como plataformas minoritarias para comunidades de entusiastas y aplicaciones especializadas. OpenVMS , anteriormente de DEC , todavía está en desarrollo activo por VMS Software Inc. Sin embargo, otros sistemas operativos se utilizan casi exclusivamente en el ámbito académico, para la educación de sistemas operativos o para realizar investigaciones sobre conceptos de sistemas operativos. Un ejemplo típico de un sistema que cumple ambos roles es MINIX , mientras que, por ejemplo, Singularity se usa únicamente para la 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 Computer Systems Institute en la década de 1980. Se utilizó principalmente para la investigación, la docencia y el 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

Todos los componentes de un sistema operativo existen para hacer que las diferentes partes de una computadora trabajen juntas. Todo el software del usuario debe pasar por el sistema operativo para poder utilizar cualquier hardware, ya sea tan simple como un mouse o un teclado o tan complejo como un componente de Internet.

Núcleo

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

Con la ayuda del firmware y los controladores de dispositivo , el kernel proporciona el nivel más básico de control sobre todos los dispositivos de hardware de la computadora. Administra el acceso a la memoria para los programas en la RAM , determina qué programas tienen 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 el almacenamiento no volátil a largo plazo. con sistemas de archivos en medios 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 solo obedeciendo las reglas y procedimientos programados en el sistema operativo. El sistema operativo también es 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 implica la creación de un proceso por parte del kernel 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 del programa de aplicación que luego interactúa con el usuario y con los dispositivos de hardware.

Interrupciones

Las interrupciones son fundamentales para los sistemas operativos, ya que proporcionan una forma eficiente para que el sistema operativo interactúe y reaccione a su entorno. La alternativa - hacer que el sistema operativo "observe" las diversas fuentes de entrada en busca de eventos (sondeo) que requieran acción - se puede encontrar en sistemas más antiguos con pilas muy pequeñas (50 o 60 bytes), pero es inusual en sistemas modernos con pilas grandes. La programación basada en interrupciones es compatible directamente con la mayoría de las CPU modernas. Las interrupciones proporcionan a una computadora una forma de guardar automáticamente los contextos de registros locales y ejecutar un código específico en respuesta a eventos. Incluso las computadoras muy básicas admiten interrupciones de hardware y permiten al programador especificar el código que se puede ejecutar cuando se produce ese evento.

Cuando se recibe una interrupción, el hardware de la computadora suspende automáticamente cualquier programa que se esté ejecutando actualmente, guarda su estado y ejecuta el código de computadora previamente asociado con la interrupción; esto es análogo a colocar un marcador en un libro en respuesta a una llamada telefónica. En los sistemas operativos modernos, las interrupciones son manejadas por el kernel del sistema operativo . Las interrupciones pueden provenir del hardware de la computadora o del programa en ejecución.

Cuando un dispositivo de hardware desencadena una interrupción, el núcleo del sistema operativo decide cómo lidiar con este evento, generalmente ejecutando algún código de procesamiento. La cantidad de código que se ejecuta depende de la prioridad de la interrupción (por ejemplo: una persona generalmente responde a una alarma de detector de humo antes de contestar el teléfono). El procesamiento de interrupciones de hardware es una tarea que generalmente se delega a un software llamado controlador de dispositivo , que puede ser parte del kernel del sistema operativo, parte de otro programa o ambos. Los controladores de dispositivos pueden transmitir información a un programa en ejecución por diversos medios.

Un programa también puede provocar una interrupción en el sistema operativo. Si un programa desea acceder al hardware, por ejemplo, puede interrumpir el kernel del sistema operativo, lo que hace que el control se devuelva al kernel. Luego, el kernel procesa la solicitud. Si un programa desea recursos adicionales (o desea eliminar recursos) como la memoria, desencadena una interrupción para llamar la atención del kernel.

Modos

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

Los microprocesadores modernos (CPU o MPU) 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, el funcionamiento en modo supervisor permite el acceso sin restricciones a todos los recursos de la máquina, incluidas todas las instrucciones de 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 un kernel del 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 vídeo. 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 dentro del modo de usuario y solo pueden acceder a los recursos de la máquina al transferir el control al kernel, un proceso que provoca un cambio al modo de supervisor. Normalmente, la transferencia de control al kernel se logra mediante la ejecución de una instrucción de interrupción de software , como el Motorola 68000TRAPinstrucción. La interrupción del software hace que el microprocesador cambie del modo de usuario al modo de supervisor y comience a ejecutar el código que permite que el kernel tome el control.

En el modo de usuario, los programas generalmente tienen acceso a un conjunto restringido de instrucciones del microprocesador y, por lo general, no pueden ejecutar ninguna instrucción que pueda potencialmente causar una interrupción 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 de 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, un núcleo de sistema operativo de multiprogramación debe ser responsable de administrar toda la memoria del sistema que actualmente utilizan los programas. Esto asegura que un programa no interfiera con la memoria que ya está siendo utilizada por otro programa. Dado que los programas comparten el tiempo, cada programa debe tener acceso independiente a la memoria.

La gestión de memoria cooperativa, utilizada por muchos de los primeros sistemas operativos, asume que todos los programas hacen un uso voluntario del administrador de memoria del kernel y no exceden la memoria asignada. Este sistema de administración de memoria casi nunca se ve más, ya que los programas a menudo contienen errores que pueden hacer que excedan su 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 o virus maliciosos pueden alterar intencionalmente la memoria de otro programa o pueden afectar el funcionamiento del sistema operativo en sí. Con la administración de memoria cooperativa, solo se necesita un programa que se comporte mal para bloquear el sistema.

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 y la paginación de la memoria . Todos los métodos requieren algún nivel de soporte de hardware (como el 80286 MMU), que no existe en todas las computadoras.

Tanto en la segmentación como en la paginación, ciertos registros de modo protegido especifican a la CPU a qué dirección de memoria debe permitir que acceda un programa en ejecución. Los intentos de acceder a otras direcciones desencadenan una interrupción que hace que la CPU vuelva a ingresar al modo supervisor , colocando al kernel a cargo. Esto se denomina 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 un signo de un programa que se está comportando mal, el kernel generalmente recurre a terminar el programa ofensivo. e informa del error.

Las versiones de Windows 3.1 a ME tenían cierto nivel de protección de la memoria, pero los programas podían fácilmente eludir la necesidad de usarlo. Se produciría una falla de protección general , indicando que se ha 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 esparcida por el disco duro y la RAM como si fuera una porción continua de memoria, llamada memoria virtual.

El uso de direccionamiento de memoria virtual (como paginación o segmentación) significa que el kernel 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 la memoria que no está en su rango actual de memoria accesible, pero no obstante se le ha asignado, el kernel se interrumpe de la misma manera que lo haría si el programa superara su memoria asignada. (Consulte la sección sobre administración de memoria). En UNIX, este tipo de interrupción se conoce como falla de página .

Cuando el kernel detecta una falla en la 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 su uso por otros programas. Esto se denomina intercambio , ya que varios programas pueden utilizar un área de memoria y lo que contiene ese área de memoria se puede intercambiar o intercambiar a pedido.

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

Multitarea

La multitarea se refiere a la ejecución de varios programas informáticos independientes en la misma computadora; dando la apariencia de que está realizando las tareas al mismo tiempo. Dado que la mayoría de las computadoras pueden hacer como máximo una o dos cosas a la vez, esto generalmente se hace a través del tiempo compartido, lo que significa que cada programa usa una parte del tiempo de la computadora para ejecutarse.

El núcleo de un sistema operativo contiene un programa de programación que determina cuánto tiempo dedica cada proceso a ejecutarse y en qué orden se debe pasar el control de ejecución a los programas. El kernel pasa el control a un proceso, lo que permite que el programa acceda a la CPU y la memoria. Posteriormente, el control se devuelve al kernel a través de algún mecanismo, de modo que se pueda permitir que otro programa use la CPU. Este llamado paso de control entre el kernel y las aplicaciones se denomina cambio de contexto .

Un modelo temprano que regía la asignación de tiempo a los programas se llamaba multitarea cooperativa . En este modelo, cuando el kernel pasa el control a un programa, puede ejecutarse durante el tiempo que quiera antes de devolver explícitamente el control al kernel. Esto significa que un programa malintencionado o que funciona mal no solo puede evitar que otros programas utilicen la CPU, sino que también puede bloquear todo el sistema si entra en un bucle infinito .

Los sistemas operativos modernos extienden los conceptos de preferencia de aplicaciones a los controladores de dispositivos y al código del kernel, de modo que el sistema operativo también tiene control preventivo sobre los tiempos de ejecución internos.

La filosofía que rige la multitarea preventiva es la de garantizar que todos los programas tengan un tiempo regular en la CPU. Esto implica que todos los programas deben estar limitados en cuanto a la cantidad de tiempo que pueden pasar en la CPU sin ser interrumpidos. Para lograr esto, los núcleos de los sistemas operativos modernos utilizan una interrupción temporizada. El kernel establece un temporizador de modo protegido que activa un retorno al modo supervisor una vez transcurrido el tiempo especificado. (Consulte las secciones anteriores sobre interrupciones y funcionamiento en modo dual).

En muchos sistemas operativos de un solo usuario, la multitarea cooperativa es perfectamente adecuada, ya que las computadoras domésticas generalmente ejecutan una pequeña cantidad de programas bien probados. El AmigaOS es una excepción, ya que tiene multitarea preventiva desde su primera versión. Windows NT fue la primera versión de Microsoft Windows que impuso la multitarea preventiva, pero no llegó al mercado de usuarios domésticos hasta Windows XP (ya que Windows NT estaba dirigido a profesionales).

Acceso al disco y sistemas de archivos

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

El acceso a los datos almacenados en discos es una característica central de todos los sistemas operativos. Las computadoras almacenan datos en discos utilizando archivos , que están estructurados de formas específicas para permitir un acceso más rápido, una mayor confiabilidad y hacer un mejor uso del espacio disponible en la unidad. La forma específica en que se almacenan los archivos en un disco se denomina sistema de archivos y permite que los archivos tengan nombres y atributos. También permite que se almacenen en una jerarquía de directorios o carpetas organizadas en un árbol de directorios .

Los primeros sistemas operativos generalmente admitían un solo tipo de unidad de disco y solo un tipo de sistema de archivos. Los primeros sistemas de archivos estaban limitados en su capacidad, velocidad y en los tipos de nombres de archivos y estructuras de directorios que podían usar. Estas limitaciones a menudo reflejan limitaciones en los sistemas operativos para los que fueron diseñados, lo que dificulta mucho que un sistema operativo admita más de un sistema de archivos.

Si bien muchos sistemas operativos más simples admiten una gama limitada de opciones para acceder a los sistemas de almacenamiento, los sistemas operativos como UNIX y Linux admiten una tecnología conocida como sistema de archivos virtual o VFS. Un sistema operativo como UNIX admite una amplia gama de dispositivos de almacenamiento, independientemente de su diseño o sistemas de archivos , lo que permite acceder a ellos a través de una interfaz de programación de aplicaciones (API) común . Esto hace que sea innecesario que los programas tengan conocimiento sobre el dispositivo al que acceden. Un VFS permite que el sistema operativo proporcione a los programas acceso a un número ilimitado de dispositivos con una variedad infinita de sistemas de archivos instalados en ellos, mediante el uso decontroladores de dispositivo y controladores del sistema de archivos.

Se accede a un dispositivo de almacenamiento conectado , como un disco duro , a través de un controlador de dispositivo . El controlador de dispositivo comprende el idioma específico de la unidad y es capaz de traducir ese idioma a un idioma estándar utilizado por el sistema operativo para acceder a todas las unidades de disco. En UNIX, este es el idioma de los dispositivos de bloque .

Cuando el kernel tiene instalado un controlador de dispositivo adecuado, puede acceder al contenido de la unidad de disco en formato sin formato, que puede contener uno o más sistemas de archivos. Se utiliza un controlador del sistema de archivos para traducir los comandos utilizados para acceder a cada sistema de archivos específico en un conjunto estándar de comandos que el sistema operativo puede usar para comunicarse con todos los sistemas de archivos. Los programas pueden entonces tratar con estos sistemas de archivos sobre la base de nombres de archivo y directorios / carpetas, contenidos dentro de una estructura jerárquica. Pueden crear, eliminar, abrir y cerrar archivos, así como recopilar información diversa sobre ellos, incluidos permisos de acceso, tamaño, espacio libre y fechas de creación y modificación.

Varias diferencias entre los sistemas de archivos dificultan la compatibilidad con todos los sistemas de archivos. Los caracteres permitidos en los nombres de archivo, la distinción entre mayúsculas y minúsculas y la presencia de varios tipos de atributos de archivo hacen que la implementación de una interfaz única para cada sistema de archivos sea una tarea abrumadora. Los sistemas operativos tienden a recomendar el uso (y así admitir de forma nativa) sistemas de archivos diseñados específicamente para ellos; por ejemplo, NTFS en Windows y ext3 y ReiserFS en Linux. Sin embargo, en la práctica, los controladores de terceros suelen estar disponibles para dar soporte a los sistemas de archivos más utilizados en la mayoría de los sistemas operativos de propósito general (por ejemplo, NTFS está disponible en Linux a través de NTFS-3g, ext2 / 3 y ReiserFS están disponibles en Windows a través de software de terceros).

El soporte para sistemas de archivos es muy variado entre los sistemas operativos modernos, aunque hay varios sistemas de archivos comunes para los que casi todos los sistemas operativos incluyen soporte y controladores. Los sistemas operativos varían en el soporte del sistema de archivos y en los formatos de disco en los que se pueden instalar. En Windows, la aplicación de cada sistema de archivos suele estar limitada a determinados medios; por ejemplo, los CD deben utilizar ISO 9660 o UDF y, a partir de Windows Vista, NTFS es el único sistema de archivos en el que se puede instalar el sistema operativo. Es posible instalar Linux en muchos tipos de sistemas de archivos. A diferencia de otros sistemas operativos, Linux y UNIX permiten que se utilice cualquier sistema de archivos independientemente del medio en el que esté almacenado, ya sea un disco duro, un disco (CD, DVD ...), una unidad flash USB o incluso contenido dentro de un archivo ubicado en otro sistema de archivos.

Controladores de dispositivo

Un controlador de dispositivoes un tipo específico de software de computadora desarrollado para permitir la interacción con dispositivos de hardware. Por lo general, esto constituye una interfaz para comunicarse con el dispositivo, a través del bus de computadora específico o el subsistema de comunicaciones al que está conectado el hardware, proporcionando comandos y / o recibiendo datos del dispositivo, y en el otro extremo, las interfaces requeridas para el operador. aplicaciones de software y sistema. Es un programa informático especializado dependiente del hardware que también es específico del sistema operativo que permite que otro programa, normalmente un sistema operativo o un paquete de software de aplicaciones o un programa informático que se ejecuta bajo el kernel del sistema operativo, interactúe de forma transparente con un dispositivo de hardware.y generalmente proporciona el manejo de interrupciones necesario para cualquier necesidad de interfaz de hardware asincrónica dependiente del tiempo.

El objetivo de diseño clave de los controladores de dispositivos es la abstracción. Cada modelo de hardware (incluso dentro de la misma clase de dispositivo) es diferente. Los fabricantes también lanzan modelos más nuevos que brindan un rendimiento más confiable o mejor y estos modelos más nuevos a menudo se controlan de manera diferente. No se puede esperar que las computadoras y sus sistemas operativos sepan cómo controlar todos los dispositivos, tanto ahora como en el futuro. Para resolver este problema, los sistemas operativos básicamente dictan cómo se debe controlar cada tipo de dispositivo. La función del controlador de dispositivo es traducir estas llamadas de función exigidas por el sistema operativo en llamadas específicas del dispositivo. En teoría, un nuevo dispositivo, que se controla de una manera nueva, debería funcionar correctamente si se dispone de un controlador adecuado. Este nuevo controlador asegura que el dispositivo parece funcionar como de costumbre desde el punto de vista del sistema operativo.

En las versiones de Windows anteriores a Vista y las versiones de Linux anteriores a la 2.6, toda la ejecución del controlador era cooperativa, lo que significa que si un controlador entraba en un bucle infinito, congelaba el sistema. Las revisiones más recientes de estos sistemas operativos incorporan la preferencia del kernel, donde el kernel interrumpe al controlador para asignarle tareas y luego se separa del proceso hasta que recibe una respuesta del controlador del dispositivo o le asigna más tareas para realizar.

Redes

Actualmente, la mayoría de los sistemas operativos admiten una variedad de protocolos de red, hardware y aplicaciones para usarlos. Esto significa que las computadoras que ejecutan sistemas operativos diferentes pueden participar en una red común para compartir recursos como computación , archivos, impresoras y escáneres mediante conexiones por cable o inalámbricas. Básicamente, las redes pueden permitir que el sistema operativo de una computadora acceda a los recursos de una computadora remota para admitir las mismas funciones que podría tener si esos recursos estuvieran conectados directamente a la computadora local. Esto incluye todo, desde una simple comunicación hasta el uso de sistemas de archivos en red o incluso compartir los gráficos o el hardware de sonido de otra computadora. Algunos servicios de red permiten acceder de forma transparente a los recursos de una computadora, comoSSH, que permite a los usuarios en red acceso directo a la interfaz de línea de comandos de una computadora.

La red cliente / servidor permite que un programa en una computadora, llamado cliente, se conecte a través de una red a otra computadora, llamada servidor. Los servidores ofrecen (o alojan) varios servicios a otras computadoras y usuarios de la red. Estos servicios generalmente se brindan a través de puertos o puntos de acceso numerados más allá de la dirección IP del servidor . Cada número de puerto generalmente está asociado con un máximo de un programa en ejecución, que es responsable de manejar las solicitudes a ese puerto. Un demonio, al ser un programa de usuario, puede a su vez acceder a los recursos de hardware locales de esa computadora pasando solicitudes al kernel del sistema operativo.

Muchos sistemas operativos también admiten uno o más protocolos de red abiertos o específicos del proveedor, por ejemplo, SNA en sistemas IBM , DECnet en sistemas de Digital Equipment Corporation y protocolos específicos de Microsoft ( SMB ) en Windows. También se pueden admitir protocolos específicos para tareas específicas, como NFS para el acceso a archivos. Los protocolos como ESound o esd se pueden extender fácilmente a través de la red para proporcionar sonido desde aplicaciones locales, en el hardware de sonido de un sistema remoto.

Seguridad

La seguridad de una computadora depende de que varias tecnologías funcionen correctamente. Un sistema operativo moderno proporciona acceso a una serie de recursos, que están disponibles para el software que se ejecuta en el sistema y para dispositivos externos como redes a través del kernel. [38]

El sistema operativo debe ser capaz de distinguir entre las solicitudes que deben procesarse y otras que no deben procesarse. Si bien algunos sistemas pueden simplemente distinguir entre "privilegiados" y "no privilegiados", los sistemas comúnmente tienen una forma de identidad de solicitante , como un nombre de usuario. Para establecer la identidad, puede haber un proceso de autenticación . A menudo, se debe citar un nombre de usuario y cada nombre de usuario puede tener una contraseña. En su lugar, podrían utilizarse otros métodos de autenticación, como tarjetas magnéticas o datos biométricos. En algunos casos, especialmente en las conexiones desde la red, se puede acceder a los recursos sin autenticación alguna (como leer archivos a través de un recurso compartido de red). También cubierto por el concepto de identidad del solicitante estáautorización ; los servicios y recursos particulares accesibles por el solicitante una vez que ha iniciado sesión en un sistema están vinculados a la cuenta de usuario del solicitante oa los grupos de usuarios configurados de diversas formas a los que pertenece el solicitante. [ cita requerida ]

Además del modelo de seguridad de permitir o no permitir, un sistema con un alto nivel de seguridad también ofrece opciones de auditoría. Estos permitirían el seguimiento de las solicitudes de acceso a los recursos (por ejemplo, "¿quién ha estado leyendo este archivo?"). La seguridad interna, o la seguridad de un programa que ya se está ejecutando, solo es posible si todas las solicitudes posiblemente dañinas deben llevarse a cabo mediante interrupciones en el kernel del sistema operativo. Si los programas pueden acceder directamente al hardware y los recursos, no se pueden proteger. [ cita requerida ]

La seguridad externa implica una solicitud desde fuera de la computadora, como un inicio de sesión en una consola conectada o algún tipo de conexión de red. Las solicitudes externas a menudo se pasan a través de controladores de dispositivo al kernel del sistema operativo, donde se pueden pasar a las aplicaciones o llevar a cabo directamente. La seguridad de los sistemas operativos ha sido una preocupación durante mucho tiempo debido a los datos altamente sensibles que se almacenan en las computadoras, tanto de naturaleza comercial como militar. El Departamento de Defensa del Gobierno de los Estados Unidos (DoD) creó los Criterios de evaluación de sistemas informáticos de confianza (TCSEC), que es un estándar que establece los requisitos básicos para evaluar la eficacia de la seguridad. Esto se volvió de vital importancia para los fabricantes de sistemas operativos, porque el TCSEC se utilizó para evaluar, clasificar y seleccionarSe están considerando sistemas operativos confiables para el procesamiento, almacenamiento y recuperación de información confidencial o clasificada .

Los servicios de red incluyen ofertas como intercambio de archivos, servicios de impresión, correo electrónico, sitios web y protocolos de transferencia de archivos (FTP), la mayoría de los cuales pueden tener la seguridad comprometida. En la primera línea de seguridad se encuentran los dispositivos de hardware conocidos como firewalls.o sistemas de detección / prevención de intrusiones. A nivel del sistema operativo, hay varios firewalls de software disponibles, así como sistemas de detección / prevención de intrusiones. La mayoría de los sistemas operativos modernos incluyen un firewall de software, que está habilitado de forma predeterminada. Se puede configurar un firewall de software para permitir o denegar el tráfico de red hacia o desde un servicio o aplicación que se ejecuta en el sistema operativo. Por lo tanto, uno puede instalar y ejecutar un servicio inseguro, como Telnet o FTP, y no tener que verse amenazado por una violación de seguridad porque el firewall negaría todo el tráfico que intenta conectarse al servicio en ese puerto.

Una estrategia alternativa, y la única estrategia de espacio aislado disponible en sistemas que no cumplen con los requisitos de virtualización de Popek y Goldberg , es donde el sistema operativo no ejecuta programas de usuario como código nativo, sino que emula un procesador o proporciona un host para un p. -sistema basado en código como Java.

La seguridad interna es especialmente relevante para los sistemas multiusuario; permite que cada usuario del sistema tenga archivos privados que los demás usuarios no pueden manipular ni leer. La seguridad interna también es vital para que la auditoría sea de alguna utilidad, ya que un programa puede potencialmente pasar por alto el sistema operativo, incluida la auditoría.

Interfaz de usuario

Una captura de pantalla de la línea de comandos de Bash . Cada comando se escribe después del 'indicador', y luego su salida aparece debajo, abriéndose camino hacia abajo en la pantalla. El símbolo del sistema actual está en la parte inferior.

Cada computadora que va a ser operada por un individuo requiere una interfaz de usuario . La interfaz de usuario suele denominarse shell y es esencial para que se pueda admitir la interacción humana. La interfaz de usuario ve la estructura del directorio y solicita servicios del sistema operativo que adquirirán datos de dispositivos de hardware de entrada , como un teclado , mouse o lector de tarjetas de crédito , y solicita servicios del sistema operativo para mostrar avisos , mensajes de estado y demás en el hardware de salida. dispositivos , como un monitor de video o una impresora. Las dos formas más comunes de una interfaz de usuario han sido históricamente la interfaz de línea de comandos , donde los comandos de la computadora se escriben línea por línea, y la interfaz gráfica de usuario , donde está presente un entorno visual (más comúnmente un WIMP ).

Interfaces gráficas de usuario

Una captura de pantalla de la interfaz gráfica de usuario de KDE Plasma 5 . Los programas toman la forma de imágenes en la pantalla y los archivos, carpetas (directorios) y aplicaciones toman la forma de iconos y símbolos. Se utiliza un mouse para navegar por la computadora.

La mayoría de los sistemas informáticos modernos admiten interfaces gráficas de usuario (GUI) y, a menudo, las incluyen. En algunos sistemas informáticos, como la implementación original del Mac OS clásico , la GUI está integrada en el kernel .

Si bien técnicamente una interfaz gráfica de usuario no es un servicio del sistema operativo, incorporar soporte para una en el kernel del sistema operativo puede permitir que la GUI sea más receptiva al reducir el número de cambios de contexto necesarios para que la GUI realice sus funciones de salida. Otros sistemas operativos son modulares , separando el subsistema de gráficos del kernel y el sistema operativo. En la década de 1980, UNIX, VMS y muchos otros tenían sistemas operativos que se construyeron de esta manera. Linux y macOS también se construyen de esta manera. Las versiones modernas de Microsoft Windows, como Windows Vista, implementan un subsistema de gráficos que se encuentra principalmente en el espacio del usuario; sin embargo, las rutinas de dibujo de gráficos de versiones entre Windows NT 4.0 yWindows Server 2003 existe principalmente en el espacio del kernel. Windows 9x tenía muy poca distinción entre la interfaz y el kernel.

Muchos sistemas operativos de computadora permiten al usuario instalar o crear cualquier interfaz de usuario que desee. El sistema X Window junto con GNOME o KDE Plasma 5 es una configuración que se encuentra comúnmente en la mayoría de los sistemas Unix y similares a Unix (BSD, Linux, Solaris). Se han lanzado varios reemplazos de shell de Windows para Microsoft Windows, que ofrecen alternativas al shell de Windows incluido , pero el shell en sí no se puede separar de Windows.

Han existido numerosas GUI basadas en Unix a lo largo del tiempo, la mayoría derivadas de X11. La competencia entre los diversos proveedores de Unix (HP, IBM, Sun) condujo a mucha fragmentación, aunque un esfuerzo por estandarizar en la década de 1990 a COSE y CDE fracasó por varias razones, y finalmente fue eclipsado por la adopción generalizada de GNOME y K Desktop Environment. . Antes de los entornos de escritorio y los kits de herramientas basados ​​en software libre , Motif era la combinación de escritorio y kit de herramientas predominante (y fue la base sobre la que se desarrolló el CDE).

Las interfaces gráficas de usuario evolucionan con el tiempo. Por ejemplo, Windows ha modificado su interfaz de usuario casi cada vez que se lanza una nueva versión principal de Windows, y la GUI de Mac OS cambió drásticamente con la introducción de Mac OS X en 1999. [39]

Sistemas operativos en tiempo real

Un sistema operativo en tiempo real (RTOS) es un sistema operativo destinado a aplicaciones con plazos fijos ( computación en tiempo real ). Dichas aplicaciones incluyen algunos pequeños sistemas integrados , controladores de motores de automóviles, robots industriales, naves espaciales, control industrial y algunos sistemas informáticos a gran escala.

Un ejemplo temprano de un sistema operativo en tiempo real a gran escala fue la instalación de procesamiento de transacciones desarrollada por American Airlines e IBM para el sistema de reservas de aerolíneas Sabre .

Los sistemas integrados que tienen plazos fijos utilizan un sistema operativo en tiempo real como VxWorks , PikeOS , eCos , QNX , MontaVista Linux y RTLinux . Windows CE es un sistema operativo en tiempo real que comparte API similares a las de Windows de escritorio, pero no comparte ninguna base de código de Windows de escritorio. [40] Symbian OS también tiene un kernel RTOS (EKA2) a partir de la versión 8.0b.

Algunos sistemas integrados utilizan sistemas operativos como Palm OS , BSD y Linux , aunque dichos sistemas operativos no son compatibles con la informática en tiempo real.

El desarrollo del sistema operativo como pasatiempo

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. [ cita requerida ]

En algunos casos, el desarrollo de pasatiempos es compatible con un dispositivo informático " casero ", por ejemplo, una computadora simple de una sola placa alimentada por un microprocesador 6502 . O el desarrollo puede ser para una arquitectura que ya está en uso generalizado. El desarrollo del sistema operativo puede provenir 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, no estructurado de personas que tienen intereses similares.

Los ejemplos de un sistema operativo de pasatiempo incluyen Syllable y TempleOS .

Diversidad de sistemas operativos y portabilidad

El software de aplicación generalmente está escrito para su uso en un sistema operativo específico y, a veces, incluso para hardware específico. [ cita requerida ] Al migrar la aplicación para que se ejecute en 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.) requiriendo que la aplicación se adapte, cambie o de lo contrario mantenido .

Unix fue el primer sistema operativo que no estaba escrito en lenguaje ensamblador, lo que lo hacía muy portátil a sistemas diferentes de su PDP-11 nativo . [41]

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

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

  • Comparación de sistemas operativos
  • Crash (informática)
  • Hipervisor
  • Sistema operativo interrumpible
  • Lista de publicaciones importantes en sistemas operativos
  • Lista de sistemas operativos
  • Lista de pioneros en informática
  • CD en vivo
  • Glosario de términos de sistemas operativos
  • Microcontrolador
  • Dispositivo móvil
  • Sistema operativo móvil
  • Sistema operativo de red
  • Sistema operativo orientado a objetos
  • Proyectos de sistema operativo
  • Comandante del sistema
  • Imagen del sistema
  • Cronología de los sistemas operativos

Referencias

  1. ^ Stallings (2005). Sistemas operativos, internos y principios de diseño . Pearson: Prentice Hall. pag. 6.
  2. ^ Dhotre, IA (2009). Sistemas operativos . Publicaciones técnicas. pag. 1.
  3. ^ a b "VII. Sistemas para fines especiales - conceptos de sistema operativo, séptima edición [libro]" . www.oreilly.com .
  4. ^ "Cuota de mercado del sistema operativo de escritorio en todo el mundo" . Estadísticas globales de StatCounter . Consultado el 31 de octubre de 2020 .
  5. ^ "Cuota de mercado del sistema operativo móvil y tableta en todo el mundo" . Estadísticas globales de StatCounter . Consultado el 31 de octubre de 2020 .
  6. ^ "Análisis de estrategia: Android captura un récord del 88 por ciento de los envíos globales de teléfonos inteligentes en el tercer trimestre de 2016" . 2 de noviembre de 2016. Archivado desde el original el 5 de noviembre de 2016.
  7. ^ "Sistemas operativos para fines especiales - Instituto de la UNIVERSIDAD RWTH AACHEN para la automatización de sistemas de energía complejos - Inglés" . www.acs.eonerc.rwth-aachen.de .
  8. ^ Lorch, Jacob R. y Alan Jay Smith. "Reducir el consumo de energía del procesador al mejorar la administración del tiempo del procesador en un sistema operativo de un solo usuario". Actas de la segunda conferencia internacional anual sobre redes y computación móvil. ACM, 1996.
  9. ^ Mishra, B .; Singh, N .; Singh, R. (2014). "Modelo basado en un grupo maestro-esclavo para la selección de coordinadores, una mejora del algoritmo del matón". Congreso Internacional de Computación Paralela, Distribuida y Grid (PDGC) . págs. 457–460. doi : 10.1109 / PDGC.2014.7030789 . ISBN 978-1-4799-7682-9. S2CID  13887160 .
  10. ^ Gagne, Silberschatz Galvin (2012). Conceptos de sistemas operativos . Nueva York: Wiley. pag. 716. ISBN 978-1118063330.
  11. ↑ a b Hansen, Per Brinch, ed. (2001). Sistemas operativos clásicos . Saltador. págs. 4–7. ISBN 0-387-95113-X.
  12. ^ Lavington, Simon (1998). Una historia de las computadoras de Manchester (2ª ed.). Swindon: Sociedad británica de informática. págs. 50–52. ISBN 978-1-902505-01-5.
  13. ^ Brinch Hansen, Per (2000). Sistemas operativos clásicos: desde el procesamiento por lotes hasta los sistemas distribuidos . Springer-Verlag.
  14. ^ "Guía de referencia rápida del microprocesador Intel® - Año" . www.intel.com . Archivado desde el original el 25 de abril de 2016 . Consultado el 24 de abril de 2016 .
  15. ^ 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 .
  16. ^ "OS X Mountain Lion - Mueva su Mac aún más adelante" . Manzana. Archivado desde el original el 23 de mayo de 2011 . Consultado el 7 de agosto de 2012 .
  17. ^ "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 .
  18. ^ Linus Benedict Torvalds (5 de octubre de 1991). "Fuentes de kernel gratuitas tipo minix para 386-AT" . Grupo de noticiascomp.os.minix . Consultado el 30 de septiembre de 2011 .
  19. ^ "Qué es Linux: una descripción general del sistema operativo Linux" . Medio . Consultado el 21 de diciembre de 2019 .
  20. ^ Linux en línea (2008). "Logos y mascotas de Linux" . Archivado desde el original el 15 de agosto de 2010 . Consultado el 11 de agosto de 2009 .
  21. ^ a b "Top 5 sistemas operativos de enero a abril de 2011" . StatCounter. Octubre de 2009. Archivado desde el original el 26 de mayo de 2012 . Consultado el 5 de noviembre de 2009 .
  22. ^ "Informe de IDC en cuota de mercado de servidor" . Idc.com. Archivado desde el original el 27 de septiembre de 2012 . Consultado el 7 de agosto de 2012 .
  23. ^ Personal de LinuxDevices (23 de abril de 2008). "Linux sigue siendo el mejor sistema operativo integrado" . LinuxGizmos.com . Archivado desde el original el 19 de abril de 2016 . Consultado el 5 de abril de 2016 .
  24. ^ "Generador de sublistas" . Top500.org . Consultado el 6 de febrero de 2017 .
  25. ^ "Estadísticas web globales" . Participación neta de mercado, aplicaciones netas. Mayo de 2011. Archivado desde el original el 25 de enero de 2010 . Consultado el 7 de mayo de 2011 .
  26. ^ "Estadísticas web globales" . W3Counter, Awio Web Services. Septiembre de 2009. Archivado desde el original el 28 de junio de 2012 . Consultado el 24 de octubre de 2009 .
  27. ^ "Cuota de mercado del sistema operativo" . Aplicaciones de red. Octubre de 2009. Archivado desde el original el 25 de enero de 2010 . Consultado el 5 de noviembre de 2009 .
  28. ^ "Estadísticas de la plataforma del sistema operativo w3schools.com" . Archivado desde el original el 5 de agosto de 2011 . Consultado el 30 de octubre de 2011 .
  29. ^ "Estadísticas cuentan las estadísticas globales cinco sistemas operativos superiores" . Archivado desde el original el 26 de mayo de 2012 . Consultado el 30 de octubre de 2011 .
  30. ^ "Estadísticas globales en w3counter.com" . Archivado desde el original el 28 de junio de 2012 . Consultado el 23 de enero de 2012 .
  31. ^ "Solución de problemas del modo de compatibilidad de MS-DOS en discos duros" . Support.microsoft.com. Archivado desde el original el 10 de agosto de 2012 . Consultado el 7 de agosto de 2012 .
  32. ^ "Uso de controladores de tarjeta de red NDIS 2 PCMCIA en Windows 95" . Support.microsoft.com. Archivado desde el original el 17 de febrero de 2013 . Consultado el 7 de agosto de 2012 .
  33. ^ "INFORMACIÓN: Los controladores de dispositivos multimedia Wave de Windows 95 deben ser de 16 bits" . Support.microsoft.com. Archivado desde el original el 17 de febrero de 2013 . Consultado el 7 de agosto de 2012 .
  34. ^ Arthur, Charles. "Windows 8 se ejecutará en chips ARM, pero las aplicaciones de terceros deberán reescribirse" . The Guardian . Archivado desde el original el 12 de octubre de 2016.
  35. ^ "Sistema operativo compartido por grupos para sitios en todas las ubicaciones de enero de 2009" . Archivado desde el original el 6 de julio de 2009 . Consultado el 3 de mayo de 2010 .
  36. ^ "Detrás de los datos de IDC: Windows sigue siendo el número 1 en los sistemas operativos de servidor" . ZDNet . 26 de febrero de 2010. Archivado desde el original el 1 de marzo de 2010.
  37. ^ Stallings, William (2008). Organización y Arquitectura de Computadoras . Nueva Delhi: Prentice-Hall of India Private Limited. pag. 267. ISBN 978-81-203-2962-1.
  38. ^ "Sistemas operativos: seguridad" . www.cs.uic.edu . Consultado el 27 de noviembre de 2020 .
  39. ^ Poisson, Ken. "Chronology of Personal Computer Software" Archivado el 14 de mayo de 2008 en Wayback Machine . Consultado el 7 de mayo de 2008. Última comprobación el 2009-03-30.
  40. ^ "Lectura: sistema operativo" . Lumen . Consultado el 5 de enero de 2019 .
  41. ^ "La historia de Unix" . BYTE . Agosto de 1983. p. 188 . Consultado el 31 de enero de 2015 .

Otras lecturas

  • Auslander, Marc A .; Larkin, David C .; Scherr, Allan L. (1981). "La evolución del sistema operativo MVS" (PDF) . IBM J. Investigación y desarrollo. Cite journal requiere |journal=( ayuda )
  • Deitel, Harvey M .; Deitel, Paul; Choffnes, David (25 de diciembre de 2015). Sistemas operativos . Pearson / Prentice Hall. ISBN 978-0-13-092641-8.
  • Bic, Lubomur F .; Shaw, Alan C. (2003). Sistemas operativos . Pearson: Prentice Hall .
  • Silberschatz, Avi; Galvin, Peter; Gagne, Greg (2008). Conceptos de sistemas operativos . John Wiley e hijos . ISBN 978-0-470-12872-5.
  • O'Brien, JA y Marakas, GM (2011). Sistemas de información gerencial . 10e. McGraw-Hill Irwin.
  • Leva, Alberto; Maggio, Martina; Papadopoulos, Alessandro Vittorio; Terraneo, Federico (2013). Diseño de sistema operativo basado en control . IET . ISBN 978-1-84919-609-3.
  • Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (2015). Sistemas operativos: tres piezas fáciles .

enlaces externos

  • Sistemas operativos en Curlie
  • Historia de Multics y la historia de los sistemas operativos