Articulo de referencia

Sistema operativo

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

Page semi-protected

Un sistema operativo ( SO ) es un software de sistema que gestiona los recursos de hardware y software de la computadora y proporciona servicios comunes para los programas informáticos . [ 1 ]

Los sistemas operativos de tiempo compartido programan las tareas para un uso eficiente del sistema y también pueden incluir software de contabilidad para la asignación de costos del tiempo del procesador , el almacenamiento masivo , los 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, [ 2 ] [ 3 ] aunque el código de la aplicación suele ser ejecutado directamente por el hardware y frecuentemente realiza llamadas al sistema a una función del SO 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 . 

A partir de noviembre de 2025 Android es el sistema operativo más popular, con una cuota de mercado del 38%, seguido de Microsoft Windows con un 33%, iOS y iPadOS con un 15%, macOS con un 4% y Linux con un 1%. Android, iOS y iPadOS son sistemas operativos para dispositivos móviles como teléfonos inteligentes, mientras que Windows, macOS y Linux son para ordenadores de escritorio. [ 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 los sistemas embebidos y en tiempo real, para muchas aplicaciones. También existen sistemas operativos centrados en la seguridad . Algunos sistemas operativos tienen bajos requisitos de sistema (por ejemplo, la distribución ligera de Linux ). Otros pueden tener requisitos de sistema más altos.

Algunos sistemas operativos requieren instalación o pueden venir preinstalados en los ordenadores comprados ( instalación OEM ), mientras que otros pueden ejecutarse directamente desde un medio (por ejemplo, un CD de arranque ) o una memoria flash (por ejemplo, un LiveUSB desde 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 núcleo , pero también pueden incluir otro software. [ 7 ] [ 9 ] Los otros dos tipos de programas que pueden ejecutarse 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 demás software. [ 9 ]

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

  • Los sistemas operativos asignan recursos entre diferentes aplicaciones, decidiendo cuándo recibirán tiempo de la unidad central de procesamiento (CPU) o espacio en la memoria . [ 10 ] En las computadoras personales modernas , los usuarios a menudo desean ejecutar varias aplicaciones a la vez. Para garantizar que un programa no pueda monopolizar los recursos de hardware limitados de la computadora, el sistema operativo asigna a cada aplicación una parte del recurso, ya sea en tiempo (CPU) o espacio (memoria). [ 11 ] [ 12 ] El sistema operativo también debe aislar las aplicaciones entre sí para protegerlas de errores y vulnerabilidades de seguridad en el código de otra aplicación, pero permitir la comunicación entre diferentes aplicaciones. [ 13 ]
  • Los sistemas operativos proporcionan una interfaz que abstrae los detalles del acceso a los detalles del hardware (como la memoria física) para facilitar el trabajo de los programadores. [ 10 ] [ 14 ] La virtualización también permite que el sistema operativo oculte los recursos limitados del hardware; por ejemplo, la memoria virtual puede proporcionar a un programa la ilusión de una memoria casi ilimitada que excede la memoria real del ordenador. [ 15 ]
  • Los sistemas operativos proporcionan servicios comunes, como una interfaz para acceder a dispositivos de red y de disco. Esto permite que una aplicación se ejecute en hardware diferente sin necesidad de reescribirla. [ 16 ] Los servicios que se incluyen en un sistema operativo varían enormemente, y esta funcionalidad constituye la gran mayoría del código de la mayoría de los sistemas operativos. [ 17 ]

Tipos de sistemas operativos

Sistemas operativos multicomputadora

Con los multiprocesadores, varias CPU comparten memoria. Un multiordenador o clúster de computadoras tiene varias CPU, cada una con su propia memoria . Los multiordenadores 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 múltiples colas —separando grupos de usuarios en colas separadas— para reducir la necesidad de copiar paquetes y admitir más usuarios concurrentes. [ 22 ] Otra técnica es el acceso remoto directo a memoria , que permite que cada CPU acceda a la memoria perteneciente a otras CPU. [ 20 ] Los sistemas operativos multicomputadora 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 no existe físicamente. [ 24 ]

Sistemas distribuidos

Un sistema distribuido es un grupo de computadoras distintas y conectadas en red , cada una de las cuales puede tener su propio sistema operativo y sistema de archivos. A diferencia de los sistemas multicomputadora, 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 consistencia. Aunque funciona de forma similar a un sistema operativo, no es un sistema operativo propiamente dicho. [ 26 ]

Incorporado

Los sistemas operativos embebidos están diseñados para usarse en sistemas informáticos embebidos , ya sean dispositivos del Internet de las Cosas o no conectados a una red. Los sistemas embebidos incluyen muchos electrodomésticos. Su característica distintiva es que no cargan software instalado por el usuario. Por consiguiente, no necesitan protección entre diferentes aplicaciones, lo que permite diseños más sencillos. Los sistemas operativos más pequeños pueden ocupar menos de 10 kilobytes [ 27 ] , y los más pequeños se utilizan para tarjetas inteligentes [ 28 ] . Algunos ejemplos son Embedded Linux , QNX , VxWorks y los sistemas ultracompactos RIOT y TinyOS [ 29 ] .

En tiempo real

Un sistema operativo en tiempo real es aquel que garantiza el procesamiento de eventos o datos en un momento específico. Los sistemas de tiempo real estricto requieren una sincronización exacta y son comunes en la fabricación , la aviónica , el ámbito militar y otros usos similares. [ 29 ] En los sistemas de tiempo real flexible, se acepta la pérdida ocasional de eventos; esta categoría suele incluir sistemas de audio o multimedia, así como teléfonos inteligentes. [ 29 ] Para que los sistemas de tiempo real estricto sean suficientemente precisos en su sincronización, a menudo son simplemente una biblioteca sin protección entre aplicaciones, como eCos . [ 29 ]

Hipervisor

Un hipervisor es un sistema operativo que ejecuta una máquina virtual . La máquina virtual es una aplicación que emula hardware; en otras palabras, funciona lo más parecido posible al hardware real en el que se diseñó el sistema operativo. [ 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 un ordenador incluso si no son compatibles con el sistema operativo base. [ 15 ]

Biblioteca

Un sistema operativo de biblioteca (libOS) es aquel en el que los servicios que proporciona un sistema operativo típico, como la red, se proporcionan en forma de bibliotecas y se componen con un único código de aplicación y configuración para construir un unikernel : [ 33 ] una imagen de máquina especializada (solo se extraen de las bibliotecas las piezas de código absolutamente necesarias y se unen [ 34 ] ), de un único espacio de direcciones , que se puede implementar en entornos de nube o integrados.

El código del sistema operativo y el código de la aplicación no se ejecutan en dominios de protección separados (solo hay una aplicación en ejecución, al menos conceptualmente, por lo que no hay necesidad de evitar la interferencia entre aplicaciones) y se accede a los servicios del SO mediante simples llamadas a bibliotecas (posiblemente insertándolas en línea según umbrales del compilador), sin la sobrecarga habitual de los cambios de contexto , [ 35 ] de forma similar a los SO embebidos y en tiempo real. Esta sobrecarga no es despreciable: al coste directo del cambio de modo hay que añadir la contaminación indirecta de estructuras importantes del procesador (como las cachés de la CPU , la tubería de instrucciones , etc.) que afecta tanto al rendimiento en modo usuario como en modo kernel. [ 36 ]

Historia

Consola de operador y CPU del IBM System/360 Modelo 50; la consola de operador es un terminal que utiliza el sistema operativo para comunicarse con el operador.

Las primeras computadoras de finales de la década de 1940 y de la década de 1950 se programaban directamente con placas de conexión o con código máquina introducido en soportes como tarjetas perforadas , sin lenguajes de programación ni sistemas operativos. [ 37 ] Tras la introducción del transistor a mediados de la década de 1950, comenzaron a construirse las computadoras centrales . Estas aún necesitaban operadores profesionales [ 37 ] que realizaban manualmente lo que haría un sistema operativo moderno, como programar la ejecución de programas, [ 38 ] pero las computadoras centrales aún tenían sistemas operativos rudimentarios como Fortran Monitor System (FMS) e IBSYS . [ 39 ] En la década de 1960, IBM introdujo la primera serie de computadoras intercompatibles ( System/360 ). Todas ellas ejecutaban el mismo sistema operativo — OS/360 — que consistía en millones de líneas de lenguaje ensamblador que tenían miles de errores . El OS/360 fue también el primer sistema operativo popular en admitir la multiprogramación , de modo que, si un trabajo se bloquea esperando a que finalice una operación de entrada/salida (E/S), otro trabajo puede usar la CPU. Mantener varios trabajos en memoria requería particionamiento de memoria y medidas de seguridad para evitar que un trabajo accediera a la memoria asignada a otro. [ 40 ]

Por la misma época, los teletipos comenzaron a usarse como terminales para que varios usuarios pudieran acceder a la computadora simultáneamente. El sistema operativo MULTICS fue diseñado para permitir que cientos de usuarios accedieran a una computadora grande. A pesar de su limitada adopción, puede considerarse el precursor de la computación en la nube . El sistema operativo UNIX se originó como un desarrollo de MULTICS para un solo usuario. [ 41 ] Debido a que el código fuente de UNIX estaba disponible, se convirtió en la base de otros sistemas operativos incompatibles, de los cuales los más exitosos fueron System V de AT&T y la distribución de software de Berkeley (BSD) de la Universidad de California . [ 42 ] Para aumentar la compatibilidad, el IEEE publicó el estándar POSIX para interfaces de programación de aplicaciones (API) de sistemas operativos, que es compatible con la mayoría de los sistemas UNIX. MINIX fue una versión simplificada de UNIX, desarrollada en 1987 para usos educativos, que inspiró el software libre y comercialmente disponible Linux . Desde 2008, MINIX se usa en los controladores de la mayoría de los microchips Intel , mientras que Linux está ampliamente extendido en centros de datos y teléfonos inteligentes Android . [ 43 ]

Microcomputadoras

Interfaz de línea de comandos del sistema operativo MS-DOS
Interfaz gráfica de usuario de un Macintosh

La invención de la integración a gran escala permitió la producción de computadoras personales (inicialmente llamadas microcomputadoras ) a partir de 1980 aproximadamente. [ 44 ] Durante unos cinco años, CP/M (Control Program for Microcomputers) fue el sistema operativo más popular para microcomputadoras. [ 45 ] Posteriormente, IBM compró un sistema operativo de disco a Microsoft , que IBM vendió como IBM PC DOS y Microsoft comercializó como MS-DOS ( Microsoft Disk Operating System), y que se utilizó ampliamente en microcomputadoras compatibles con IBM PC . Las versiones posteriores aumentaron su sofisticación, en parte al incorporar características de UNIX. [ 45 ]

El primer ordenador popular en utilizar una interfaz gráfica de usuario (GUI) fue el Macintosh de Apple . La GUI demostró ser mucho más fácil de usar que la interfaz de línea de comandos basada únicamente en texto de los sistemas operativos anteriores. Este éxito impulsó a Microsoft a añadir una superposición de GUI a MS-DOS llamada Windows . Posteriormente, Windows se reescribió como un sistema operativo independiente, Windows NT , tomando prestadas tantas características de otro sistema operativo ( VAX/VMS ) que se pagó una cuantiosa indemnización legal . [ 46 ] En el siglo XXI, Windows sigue siendo popular en ordenadores personales, pero tiene una menor cuota de mercado en servidores. Los sistemas operativos UNIX, especialmente Linux, son los más populares en sistemas empresariales y servidores, pero también se utilizan en dispositivos móviles y muchos otros sistemas informáticos. [ 47 ]

En dispositivos móviles, Symbian OS dominó inicialmente, siendo posteriormente reemplazado por BlackBerry OS (lanzado en 2002) e iOS para iPhones (a partir de 2007). Más tarde, el sistema operativo de código abierto Android (lanzado en 2008), con un núcleo Linux y una biblioteca C ( Bionic ) parcialmente basada en código BSD, se convirtió en el más popular. [ 48 ]

Componentes

Los componentes de un sistema operativo están diseñados para garantizar que las distintas partes de un ordenador funcionen de forma coordinada. Con la obsolescencia de facto de DOS , todo el software de usuario debe interactuar con el sistema operativo para acceder al hardware.

Núcleo

El núcleo es la parte del sistema operativo que proporciona protección entre diferentes aplicaciones y usuarios. Esta protección es clave para mejorar la fiabilidad al mantener los errores aislados en un solo programa, así como la seguridad al limitar el poder del software malicioso y proteger los datos privados, y garantizar que ningún programa pueda monopolizar los recursos del ordenador. [ 49 ] La mayoría de los sistemas operativos tienen dos modos de funcionamiento: [ 50 ] en modo usuario , el hardware comprueba que el software solo esté ejecutando instrucciones legales, mientras que el núcleo tiene poderes ilimitados y no está sujeto a estas comprobaciones. [ 51 ] El núcleo también gestiona la memoria para otros procesos y controla el acceso a los dispositivos de entrada/salida . [ 52 ]

Ejecución del programa

Un núcleo conecta el software de la aplicación con el hardware de un ordenador.

El sistema operativo proporciona una interfaz entre un programa de aplicación y el hardware del ordenador, de modo que un programa de aplicación solo puede interactuar con el hardware siguiendo las reglas y los 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 normalmente 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 del programa de aplicación, 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 hilo 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 , fallo , señal , [ 53 ] o trampa ) [ 54 ] 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 que se está ejecutando actualmente a un manejador de interrupciones , también conocido como rutina de servicio de interrupción (ISR). [ 55 ] [ 56 ] Una rutina de servicio de interrupción puede hacer que la unidad central de procesamiento (CPU) tenga un cambio de contexto . [ 57 ] [ a ] ​​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 de servicio de interrupción varían de un sistema operativo a otro. [ 58 ] Sin embargo, varias funciones de interrupción son comunes. [ 58 ] La arquitectura y el sistema operativo deben: [ 58 ]

  1. transferir el control a una rutina de servicio de interrupción.
  2. guardar el estado del proceso que se está ejecutando actualmente.
  3. restaurar el estado una vez que se haya atendido la interrupción.
Interrupción de software

Una interrupción de software es un mensaje a un proceso que indica que ha ocurrido un evento. [ 53 ] Esto contrasta con una interrupción de hardware , que es un mensaje a la unidad central de procesamiento (CPU) que indica que ha ocurrido un evento. [ 59 ] Las interrupciones de software son similares a las interrupciones de hardware: hay un cambio respecto al proceso que se está ejecutando actualmente. [ 60 ] 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 una porción de tiempo , por lo que el núcleo tendrá que realizar un cambio de contexto . [ 61 ] Un programa de computadora puede configurar un temporizador para que se active después de unos segundos en caso de que demasiados datos hagan que un algoritmo tarde demasiado. [ 62 ]

Las interrupciones de software pueden ser condiciones de error, como una instrucción de máquina mal formada . [ 62 ] 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 . [ 62 ]

Los usuarios pueden enviar mensajes al núcleo para modificar el comportamiento de un proceso en ejecución. [ 62 ] Por ejemplo, en el entorno de línea de comandos , al presionar el carácter de interrupción (normalmente Control-C ) se puede terminar el proceso en ejecución. [ 62 ]

Para generar interrupciones de software para CPU x86 , está disponible la instrucción en lenguaje ensamblador INT . [ 63 ] La sintaxis es , donde es 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. [ 64 ]pid es el identificador del proceso receptor. signumes el número de señal (en formato mnemotécnico ) [ b ] que se enviará. (El nombre agresivo de killse eligió porque las primeras implementaciones solo terminaban el proceso). [ 65 ]

En los sistemas operativos tipo Unix, las señales informan a los procesos de la ocurrencia de eventos asíncronos. [ 64 ] Para comunicarse asíncronamente, se requieren interrupciones. [ 66 ] Una razón por la que un proceso necesita comunicarse asíncronamente con otro proceso resuelve una variación del problema clásico lector/escritor . [ 67 ] El escritor recibe una tubería del shell para que su salida se envíe al flujo de entrada del lector. [ 68 ] La sintaxis de la línea de comandos es alpha | bravo. alphaescribirá en la tubería cuando su cálculo esté listo y luego dormirá en la cola de espera. [ 69 ]bravo luego se moverá a la cola de listos y pronto leerá de su flujo de entrada. [ 70 ] El kernel generará interrupciones de software para coordinar el enrutamiento. [ 70 ]

Las señales se pueden clasificar en 7 categorías. [ 64 ] 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 un proceso se interrumpe desde el teclado.
  7. cuando un proceso tiene una alerta de rastreo para depuración.
Interrupción de hardware

Los dispositivos de entrada/salida (E/S) son más lentos que la CPU. Por lo tanto, la CPU tendría que esperar a que finalizara cada operación de E/S, lo que ralentizaría el ordenador. En su lugar, un ordenador puede implementar interrupciones para la finalización de las operaciones de E/S, evitando así la necesidad de sondeo o espera activa. [ 71 ]

Algunos ordenadores requieren una interrupción por cada carácter o palabra, lo que consume una cantidad significativa de tiempo de CPU. El acceso directo a memoria (DMA) es una característica de la arquitectura que permite a los dispositivos omitir la CPU y acceder directamente a la memoria principal . [ 72 ] (Independientemente de la arquitectura, un dispositivo puede realizar acceso directo a memoria [ c ] hacia y desde la memoria principal, ya sea directamente o a través de un bus). [ 73 ] [ d ]

Entrada/salida

Conductores

El sistema operativo incluye controladores de dispositivos para acceder a los dispositivos de entrada/salida.

E/S controlada por interrupciones

Cuando un usuario de computadora presiona una tecla en el teclado, el carácter suele aparecer inmediatamente en la pantalla. Del mismo modo, cuando un usuario mueve el ratón , el cursor se desplaza inmediatamente por la pantalla. Cada pulsación de tecla y movimiento del ratón genera una interrupción denominada E/S controlada por interrupciones . Una E/S controlada por interrupciones se produce cuando un proceso genera una interrupción por cada carácter [ 73 ] o palabra [ 74 ] transmitida.

Acceso directo a la memoria

Dispositivos como discos duros , unidades de estado sólido y unidades de cinta magnética pueden transferir datos a una velocidad tan alta que interrumpir la CPU por cada byte o palabra transferida, y 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 memoria ; la interrupción se produce solo cuando se han transferido todos los datos. [ 75 ]

Si un programa informático 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 como de costumbre. 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. [ 79 ] Al aceptar la solicitud de interrupción, el sistema operativo hará lo siguiente:

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

Cuando el proceso de escritura agota su segmento de tiempo , el sistema operativo hará lo siguiente: [ 80 ]

  • Extraiga de la pila de llamadas los registros que no sean el registro de estado ni el contador de programa.
  • Extraiga el registro de estado de la pila de llamadas.
  • Extrae de la pila de llamadas la dirección de la siguiente instrucción y vuelve a colocarla en el contador de programa.

Ahora que el contador del programa se ha reiniciado, el proceso interrumpido reanudará su segmento de tiempo. [ 58 ]

Gestión de la memoria

Entre otras cosas, el núcleo de un sistema operativo multiprogramador debe encargarse de gestionar toda la memoria del sistema que esté siendo utilizada por los programas. Esto garantiza que un programa no interfiera con la memoria que ya está siendo utilizada por otro. Dado que los programas comparten el tiempo de memoria, cada uno debe tener acceso independiente a ella.

La gestión cooperativa de memoria, utilizada por muchos sistemas operativos antiguos, presupone que todos los programas hacen uso voluntario del gestor de memoria del núcleo y no exceden la memoria asignada. Este sistema de gestión de memoria prácticamente ha desaparecido, ya que los programas suelen contener errores que pueden provocar que excedan la memoria asignada. Si un programa falla, puede afectar o sobrescribir la memoria utilizada por otros programas. Los programas maliciosos o los virus pueden alterar deliberadamente la memoria de otro programa o afectar el funcionamiento del propio sistema operativo. Con la gestión cooperativa de memoria, basta con que un solo programa falle para que el sistema se bloquee .

La protección de memoria permite al núcleo limitar el acceso de un proceso a la memoria del ordenador. Existen diversos métodos de protección de memoria, como la segmentación y la paginación . Todos ellos requieren cierto nivel de compatibilidad de hardware (como la MMU 80286 ), que no está presente en todos los ordenadores.

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 el acceso a un programa en ejecución. Los intentos de acceder a otras direcciones provocan una interrupción, lo que hace que la CPU vuelva al modo supervisor , dejando al núcleo al mando. Esto se denomina violación de segmentación o Seg-V, y dado que es difícil asignar un resultado significativo a dicha operación, y porque suele ser un indicio de un programa con comportamiento anómalo, el núcleo generalmente opta por terminar el programa infractor e informa del error.

Las versiones de Windows 3.1 a ME contaban con cierto nivel de protección de memoria, pero los programas podían eludir fácilmente la necesidad de utilizarla. Se generaba un error de protección general , que indicaba una violación de segmentación; sin embargo, el sistema solía bloquearse igualmente.

Memoria virtual

Muchos sistemas operativos pueden "engañar" a los programas para que utilicen la memoria dispersa por el disco duro y la RAM como si fuera un único bloque continuo de memoria, denominado memoria virtual.

El uso del direccionamiento de memoria virtual (como la paginación o la 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 utilice las mismas ubicaciones de memoria para múltiples tareas.

Si un programa intenta acceder a memoria que no es accesible [ e ] , pero que no obstante se le ha asignado, el núcleo se interrumpe . Este tipo de interrupción es típicamente un fallo de página .

Cuando el núcleo detecta un fallo de página, generalmente ajusta el rango de memoria virtual del programa que lo provocó, otorgándole acceso a la memoria solicitada. Esto le da al núcleo la facultad de decidir 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 otros programas puedan utilizar ese espacio. Esto se conoce como intercambio de memoria (swapping ), ya que un área de memoria puede ser utilizada por varios programas, y su contenido se puede intercambiar según sea necesario.

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

Concurrencia

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

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

Los hilos tienen su propio ID de hilo, contador de programa (PC), un conjunto de registros y una pila , pero comparten código, datos de montón y otros recursos con otros hilos del mismo proceso. [ 88 ] [ 89 ] Por lo tanto, hay menos sobrecarga para crear un hilo que un nuevo proceso. [ 90 ] En sistemas de una sola CPU, la concurrencia es el cambio entre procesos. Muchas computadoras tienen múltiples CPU. [ 91 ] El paralelismo con múltiples hilos ejecutándose en diferentes CPU puede acelerar un programa, dependiendo de cuánto de él se pueda ejecutar concurrentemente. [ 92 ]

Sistema de archivos

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

Permanent storage devices used in twenty-first century computers, unlike volatiledynamic random-access memory (DRAM), are still accessible after a crash or power failure. Permanent (non-volatile) storage is much cheaper per byte, but takes several orders of magnitude longer to access, read, and write.[93][94] The two main technologies are a hard drive consisting of magnetic disks, and flash memory (a solid-state drive that stores data in electrical circuits). The latter is more expensive but faster and more durable.[95][96]

File systems are an abstraction used by the operating system to simplify access to permanent storage. They provide human-readable filenames and other metadata, increase performance via amortization of accesses, prevent multiple threads from accessing the same section of memory, and include checksums to identify corruption.[97] File systems are composed of files (named collections of data, of an arbitrary size) and directories (also called folders) that list human-readable filenames and other directories.[98] An absolute file path begins at the root directory and lists subdirectories divided by punctuation, while a relative path defines the location of a file from a directory.[99][100]

System calls (which are sometimes wrapped by libraries) enable applications to create, delete, open, and close files, as well as link, read, and write to them. All these operations are carried out by the operating system on behalf of the application.[101] The operating system's efforts to reduce latency include storing recently requested blocks of memory in a cache and prefetching data that the application has not asked for, but might need next.[102]Device drivers are software specific to each input/output (I/O) device that enables the operating system to work without modification over different hardware.[103][104]

Another component of file systems is a dictionary that maps a file's name and metadata to the data block where its contents are stored.[105] Most file systems use directories to convert file names to file numbers. To find the block number, the operating system uses an index (often implemented as a tree).[106] Separately, there is a free space map to track free blocks, commonly implemented as a bitmap.[106] Although any free block can be used to store a new file, many operating systems try to group together files in the same directory to maximize performance, or periodically reorganize files to reduce fragmentation.[107]

Maintaining data reliability in the face of a computer crash or hardware failure is another concern.[108] File writing protocols are designed with atomic operations so as not to leave permanent storage in a partially written, inconsistent state in the event of a crash at any point during writing.[109] Data corruption is addressed by redundant storage (for example, RAID—redundant array of inexpensive disks)[110][111] and checksums to detect when data has been corrupted. With multiple layers of checksums and backups of a file, a system can recover from multiple hardware failures. Background processes are often used to detect and recover from data corruption.[111]

Networking

Modern operating systems usually include a network stack, such as the TCP/IP protocol stack.

Security

La seguridad implica proteger a los usuarios de otros usuarios del mismo equipo, así como de aquellos que buscan acceder a él de forma remota a través de una red. [ 112 ] La seguridad de los sistemas operativos se basa en lograr la tríada 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 caso de un ataque de denegación de servicio ). [ 113 ] Al igual que con otros sistemas informáticos, aislar los dominios de seguridad —en el caso de los sistemas operativos, el núcleo, los procesos y las máquinas virtuales— es clave para lograr la seguridad. [ 114 ] Otras formas de aumentar la seguridad incluyen la simplicidad para minimizar la superficie de ataque , el bloqueo del acceso a los recursos por defecto, la verificación de todas las solicitudes de autorización, el principio de mínima autoridad (otorgar el privilegio mínimo esencial para realizar una tarea), la separación de privilegios y la reducción de datos compartidos. [ 115 ]

Algunos diseños de sistemas operativos son más seguros que otros. Los que no presentan aislamiento entre el núcleo y las aplicaciones son los menos seguros, mientras que aquellos con un núcleo monolítico, como la mayoría de los sistemas operativos de propósito general, siguen siendo vulnerables si alguna parte del núcleo se ve comprometida. Un diseño más seguro incorpora micronúcleos que separan los privilegios del núcleo en múltiples dominios de seguridad independientes y reducen las consecuencias de una única brecha de seguridad en el núcleo. [ 116 ] Los uninúcleos son otro enfoque que mejora la seguridad al minimizar el núcleo y separar otras funcionalidades del sistema operativo por aplicación. [ 116 ]

La mayoría de los sistemas operativos están escritos en C o C++ , lo que crea vulnerabilidades potenciales para su explotación. A pesar de los intentos por protegerse contra ellas, las vulnerabilidades son causadas por ataques de desbordamiento de búfer , que se ven facilitados por la falta de comprobación de límites . [ 117 ] Las vulnerabilidades de hardware, algunas de ellas causadas por optimizaciones de la CPU , también pueden utilizarse para comprometer el sistema operativo. [ 118 ] Existen casos conocidos de programadores de sistemas operativos que implantan deliberadamente vulnerabilidades, como puertas traseras . [ 119 ]

Operating systems security is hampered by their increasing complexity and the resulting inevitability of bugs.[120] Because formal verification of operating systems may not be feasible, developers use operating system hardening to reduce vulnerabilities,[121] e.g. address space layout randomization, control-flow integrity,[122]access restrictions,[123] and other techniques.[124] There are no restrictions on who can contribute code to open source operating systems; such operating systems have transparent change histories and distributed governance structures.[125] Open source developers strive to work collaboratively to find and eliminate security vulnerabilities, using code review and type checking to expunge malicious code.[126][127]Andrew S. Tanenbaum advises releasing the source code of all operating systems, arguing that it prevents developers from placing trust in secrecy and thus relying on the unreliable practice of security by obscurity.[128]

User interface

A user interface (UI) is essential to support human interaction with a computer. The two most common user interface types for any computer are

For personal computers, including smartphones and tablet computers, and for workstations, user input is typically from a combination of keyboard, mouse, and trackpad or touchscreen, all of which are connected to the operating system with specialized software.[129] Personal computer users who are not software developers or coders often prefer GUIs for both input and output; GUIs are supported by most personal computers.[130] The software to support GUIs is more complex than a command line for input and plain text output. Plain text output is often preferred by programmers, and is easy to support.[131]

Operating system development as a hobby

A hobby operating system may be classified as one whose code has not been directly derived from an existing operating system, and has few users and active developers.[132]

In some cases, hobby development is in support of a "homebrew" computing device, for example, a simple single-board computer powered by a 6502 microprocessor. Or, development may be for an architecture already in widespread use. Operating system development may come from entirely new concepts, or may commence by modeling an existing operating system. In either case, the hobbyist is her/his own developer, or may interact with a small and sometimes unstructured group of individuals who have like interests.

Examples of hobby operating systems include Syllable and TempleOS.

Diversity of operating systems and portability

If an application is written for use on a specific operating system, and is ported to another OS, the functionality required by that application may be implemented differently by that OS (the names of functions, meaning of arguments, etc.) requiring the application to be adapted, changed, or otherwise maintained.

This cost in supporting operating systems diversity can be avoided by instead writing applications for software platforms such as Java or Qt. These abstractions have already borne the cost of adaptation to specific operating systems and their system libraries.

Another approach is for operating system vendors to adopt standards. For example, POSIX and OS abstraction layers provide commonalities that reduce porting costs.

As of October 2025, Android, based on the Linux kernel, is the most popular operating system with a 38% market share, followed by Microsoft Windows at 31%, iOS and iPadOS at 15%, macOS at 7%, and Linux at 1%. Android, iOS, and iPadOS are mobile operating systems, while Windows, macOS, and Linux are desktop operating systems.[4]

Linux

Layers of a Linux system

Linux is free software distributed under the GNU General Public License (GPL), which means that all of its derivatives are legally required to release their source code.[133] Linux was designed by programmers for their own use, thus emphasizing simplicity and consistency, with a small number of basic elements that can be combined in nearly unlimited ways, and avoiding redundancy.[134]

Its design is similar to other UNIX systems not using a microkernel.[135] It is written in C[136] and uses UNIX System V syntax, but also supports BSD syntax. Linux supports standard UNIX networking features, as well as the full suite of UNIX tools, while supporting multiple users and employing preemptive multitasking. Initially of a minimalist design, Linux is a flexible system that can work in under 16 MB of RAM, but still is used on large multiprocessor systems.[135] Similar to other UNIX systems, Linux distributions are composed of a kernel, system libraries, and system utilities.[137] Linux has a graphical user interface (GUI) with a desktop, folder and file icons, as well as the option to access the operating system via a command line.[138]

Android is a partially open-source operating system closely based on Linux and has become the most widely used operating system by users, due to its popularity on smartphones and, to a lesser extent, embedded systems needing a GUI, such as "smart watches, automotive dashboards, airplane seatbacks, medical devices, and home appliances".[139] Unlike Linux, much of Android is written in Java and uses object-oriented design.[140]

Microsoft Windows

Security descriptor for a file that is read-only by default, specified no access for Elvis, read/write access for Cathy, and full access for Ida, the owner of the file[141]

Windows is a proprietary operating system that is widely used on desktop computers, laptops, tablets, phones, workstations, enterprise servers, and Xbox consoles.[142] The operating system was designed for "security, reliability, compatibility, high performance, extensibility, portability, and international support"—later on, energy efficiency and support for dynamic devices also became priorities.[143]

Windows Executive works via kernel-mode objects for important data structures like processes, threads, and sections (memory objects, for example files).[144] The operating system supports demand paging of virtual memory, which speeds up I/O for many applications. I/O device drivers use the Windows Driver Model.[144] The NTFS file system has a master table and each file is represented as a record with metadata.[145] The scheduling includes preemptive multitasking.[146] Windows has many security features;[147] especially important are the use of access-control lists and integrity levels. Every process has an authentication token and each object is given a security descriptor. Later releases have added even more security features.[145]

See also

Notes

  1. Modern CPUs provide instructions (e.g. SYSENTER) to invoke selected kernel services without an interrupts. Visit https://wiki.osdev.org/SYSENTER for more information.
  2. Examples include SIGINT, SIGSEGV, and SIGBUS.
  3. often in the form of a DMA chip for smaller systems and I/O channels for larger systems
  4. Modern motherboards have a DMA controller. Additionally, a device may also have one. Visit SCSI RDMA Protocol.
  5. There are several reasons that the memory might be inaccessible
    • The address might be out of range
    • The address might refer to a page or segment that has been moved to a backing store
    • The address might refer to memory that has restricted access due to, e.g., key, ring.

References

  1. Jia, Shian; Wang, Xinbo; Song, Mingli; Chen, Gang (15 November 2024). "Agent Centric Operating System – a Comprehensive Review and Outlook for Operating System". arXiv:2411.17710 [cs.DC].
  2. Stallings (2005). Operating Systems, Internals and Design Principles. Pearson: Prentice Hall. p. 6.
  3. Dhotre, I.A. (2009). Operating Systems. Technical Publications. p. 1.
  4. 12"Operating System Market Share Worldwide". StatCounter Global Stats. Retrieved 20 December 2024.
  5. Silberschatz, Abraham; Galvin, Peter B.; Gagne, Greg (2005). "VII. Special-Purpose Systems". Operating System Concepts (Seventh ed.). Wiley. ISBN 978-0-471-69466-3. Archived from the original on 13 June 2021. Retrieved 8 February 2021.
  6. "Special-Purpose Operating Systems - RWTH AACHEN UNIVERSITY Institute for Automation of Complex Power Systems - English". www.acs.eonerc.rwth-aachen.de. Archived from the original on 14 June 2021. Retrieved 8 February 2021.
  7. 12Tanenbaum & Bos 2023, p. 4.
  8. Anderson & Dahlin 2014, p. 6.
  9. 12Silberschatz et al. 2018, p. 6.
  10. 123Anderson & Dahlin 2014, p. 7.
  11. Anderson & Dahlin 2014, pp. 9–10.
  12. Tanenbaum & Bos 2023, pp. 6–7.
  13. Anderson & Dahlin 2014, p. 10.
  14. Tanenbaum & Bos 2023, p. 5.
  15. 123Anderson & Dahlin 2014, p. 11.
  16. Anderson & Dahlin 2014, pp. 7, 9, 13.
  17. Anderson & Dahlin 2014, pp. 12–13.
  18. Tanenbaum y Bos 2023 , pág. 557.
  19. Tanenbaum y Bos 2023 , pág. 558.
  20. 1 2 Tanenbaum y Bos 2023 , pág. 565.
  21. Tanenbaum y Bos 2023 , pág. 562.
  22. Tanenbaum y Bos 2023 , pág. 563.
  23. Tanenbaum y Bos 2023 , pág. 569.
  24. Tanenbaum y Bos 2023 , pág. 571.
  25. Tanenbaum y Bos 2023 , pág. 579.
  26. Tanenbaum y Bos 2023 , pág. 581.
  27. Tanenbaum y Bos 2023 , págs. 37–38.
  28. Tanenbaum y Bos 2023 , pág. 39.
  29. 1 2 3 4 Tanenbaum y Bos 2023 , pág. 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. Madhavapeddy, Anil; Scott, David J (noviembre de 2013). "Unikernels: El auge del sistema operativo de biblioteca virtual: ¿Qué pasaría si todas las capas de software en un dispositivo virtual se compilaran dentro del mismo marco de lenguaje seguro de alto nivel?" . ACM Queue . Vol. 11, n.º 11. Nueva York, NY, EE. UU.: ACM. págs. 30–44 . doi : 10.1145/2557963.2566628 . ISSN 1542-7730 . Recuperado el 7 de agosto de 2024 .    
  34. "Proceso de compilación - Unikraft" . Archivado del original el 22 de abril de 2024. Consultado el 8 de agosto de 2024 .
  35. «Deja tu sistema operativo en casa: el auge de los sistemas operativos para bibliotecas» . ACM SIGARCH . 14 de septiembre de 2017. Archivado del original el 1 de marzo de 2024. Consultado el 7 de agosto de 2024 .
  36. Soares, Livio Baldini; Stumm, Michael (4 October 2010). FlexSC: Flexible System Call Scheduling with Exception-Less System Calls. OSDI '10, 9th USENIX Symposium on Operating System Design and Implementation. USENIX. Retrieved 9 August 2024. p. 2: Synchronous implementation of system calls negatively impacts the performance of system intensive workloads, both in terms of the direct costs of mode switching and, more interestingly, in terms of the indirect pollution of important processor structures which affects both user-mode and kernel-mode performance. A motivating example that quantifies the impact of system call pollution on application performance can be seen in Figure 1. It depicts the user-mode instructions per cycles (kernel cycles and instructions are ignored) of one of the SPEC CPU 2006 benchmarks (Xalan) immediately before and after a pwrite system call. There is a significant drop in instructions per cycle (IPC) due to the system call, and it takes up to 14,000 cycles of execution before the IPC of this application returns to its previous level. As we will show, this performance degradation is mainly due to interference caused by the kernel on key processor structures.
  37. 12Tanenbaum & Bos 2023, p. 8.
  38. Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (2015). Operating Systems: Three Easy Pieces. Archived from the original on 25 July 2016. Retrieved 25 July 2016.
  39. Tanenbaum & Bos 2023, p. 10.
  40. Tanenbaum & Bos 2023, pp. 11–12.
  41. Tanenbaum & Bos 2023, pp. 13–14.
  42. Tanenbaum & Bos 2023, pp. 14–15.
  43. Tanenbaum & Bos 2023, p. 15.
  44. Tanenbaum & Bos 2023, pp. 15–16.
  45. 12Tanenbaum & Bos 2023, p. 16.
  46. Tanenbaum & Bos 2023, p. 17.
  47. Tanenbaum & Bos 2023, p. 18.
  48. Tanenbaum & Bos 2023, pp. 19–20.
  49. Anderson & Dahlin 2014, pp. 39–40.
  50. Tanenbaum & Bos 2023, p. 2.
  51. Anderson & Dahlin 2014, pp. 41, 45.
  52. Anderson & Dahlin 2014, pp. 52–53.
  53. 12Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. A signal is a notification to a process that an event has occurred. Signals are sometimes described as software interrupts.
  54. Hyde, Randall (1996). "Chapter Seventeen: Interrupts, Traps and Exceptions (Part 1)". The Art Of Assembly Language Programming. No Starch Press. Archived from the original on 22 December 2021. Retrieved 22 December 2021. The concept of an interrupt is something that has expanded in scope over the years. The 80x86 family has only added to the confusion surrounding interrupts by introducing the int (software interrupt) instruction. Indeed, different manufacturers have used terms like exceptions, faults, aborts, traps and interrupts to describe the phenomena this chapter discusses. Unfortunately there is no clear consensus as to the exact meaning of these terms. Different authors adopt different terms to their own use.
  55. Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 308. ISBN 978-0-13-854662-5. Like the trap, the interrupt stops the running program and transfers control to an interrupt handler, which performs some appropriate action. When finished, the interrupt handler returns control to the interrupted program.
  56. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 32. ISBN 978-0-201-50480-4. When an interrupt (or trap) occurs, the hardware transfers control to the operating system. First, the operating system preserves the state of the CPU by storing registers and the program counter. Then, it determines which type of interrupt has occurred. For each type of interrupt, separate segments of code in the operating system determine what action should be taken.
  57. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 105. ISBN 978-0-201-50480-4. Switching the CPU to another process requires saving the state of the old process and loading the saved state for the new process. This task is known as a context switch.
  58. 12345Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 31. ISBN 978-0-201-50480-4.
  59. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 30. ISBN 978-0-201-50480-4. Hardware may trigger an interrupt at any time by sending a signal to the CPU, usually by way of the system bus.
  60. Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. Signals are analogous to hardware interrupts in that they interrupt the normal flow of execution of a program; in most cases, it is not possible to predict exactly when a signal will arrive.
  61. Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. Among the types of events that cause the kernel to generate a signal for a process are the following: A software event occurred. For example, ... the process's CPU time limit was exceeded[.]
  62. 12345Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3.
  63. "Intel® 64 and IA-32 Architectures Software Developer's Manual"(PDF). Intel Corporation. September 2016. p. 610. Archived(PDF) from the original on 23 March 2022. Retrieved 5 May 2022.
  64. 123Bach, Maurice J. (1986). The Design of the UNIX Operating System. Prentice-Hall. p. 200. ISBN 0-13-201799-7.
  65. Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 400. ISBN 978-1-59327-220-3.
  66. 12Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 308. ISBN 978-0-13-854662-5.
  67. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 182. ISBN 978-0-201-50480-4.
  68. Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 153. ISBN 0-201-12919-1.
  69. Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 148. ISBN 0-201-12919-1.
  70. 12Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 149. ISBN 0-201-12919-1.
  71. Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 292. ISBN 978-0-13-854662-5.
  72. IBM (September 1968), "Main Storage"(PDF), IBM System/360 Principles of Operation(PDF), Eighth Edition, p. 7, archived(PDF) from the original on 19 March 2022, retrieved 13 April 2022
  73. 12Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 294. ISBN 978-0-13-854662-5.
  74. "Program Interrupt Controller (PIC)"(PDF). Users Handbook - PDP-7(PDF). Digital Equipment Corporation. 1965. pp. 48. F-75. Archived(PDF) from the original on 10 May 2022. Retrieved 20 April 2022.
  75. PDP-1 Input-Output Systems Manual(PDF). Digital Equipment Corporation. pp. 19–20. Archived(PDF) from the original on 25 January 2019. Retrieved 16 August 2022.
  76. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 32. ISBN 978-0-201-50480-4.
  77. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 34. ISBN 978-0-201-50480-4.
  78. 12Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 295. ISBN 978-0-13-854662-5.
  79. 12Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 309. ISBN 978-0-13-854662-5.
  80. Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 310. ISBN 978-0-13-854662-5.
  81. Stallings, William (2008). Computer Organization & Architecture. New Delhi: Prentice-Hall of India Private Limited. p. 267. ISBN 978-81-203-2962-1.
  82. Anderson & Dahlin 2014, p. 129.
  83. Silberschatz et al. 2018, p. 159.
  84. Anderson & Dahlin 2014, p. 130.
  85. Anderson & Dahlin 2014, p. 131.
  86. Anderson & Dahlin 2014, pp. 157, 159.
  87. Anderson & Dahlin 2014, p. 139.
  88. Silberschatz et al. 2018, p. 160.
  89. Anderson & Dahlin 2014, p. 183.
  90. Silberschatz et al. 2018, p. 162.
  91. Silberschatz et al. 2018, pp. 162–163.
  92. Silberschatz et al. 2018, p. 164.
  93. Anderson & Dahlin 2014, pp. 492, 517.
  94. Tanenbaum & Bos 2023, pp. 259–260.
  95. Anderson & Dahlin 2014, pp. 517, 530.
  96. Tanenbaum & Bos 2023, p. 260.
  97. Anderson & Dahlin 2014, pp. 492–493.
  98. Anderson & Dahlin 2014, p. 496.
  99. Anderson & Dahlin 2014, pp. 496–497.
  100. Tanenbaum & Bos 2023, pp. 274–275.
  101. Anderson & Dahlin 2014, pp. 502–504.
  102. Anderson & Dahlin 2014, p. 507.
  103. Anderson & Dahlin 2014, p. 508.
  104. Tanenbaum & Bos 2023, p. 359.
  105. Anderson & Dahlin 2014, p. 545.
  106. 12Anderson & Dahlin 2014, p. 546.
  107. Anderson & Dahlin 2014, p. 547.
  108. Anderson & Dahlin 2014, pp. 589, 591.
  109. Anderson & Dahlin 2014, pp. 591–592.
  110. Tanenbaum & Bos 2023, pp. 385–386.
  111. 12Anderson & Dahlin 2014, p. 592.
  112. Tanenbaum & Bos 2023, pp. 605–606.
  113. Tanenbaum & Bos 2023, p. 608.
  114. Tanenbaum & Bos 2023, p. 609.
  115. Tanenbaum & Bos 2023, pp. 609–610.
  116. 12Tanenbaum & Bos 2023, p. 612.
  117. Tanenbaum & Bos 2023, pp. 648, 657.
  118. Tanenbaum & Bos 2023, pp. 668–669, 674.
  119. Tanenbaum & Bos 2023, pp. 679–680.
  120. Tanenbaum & Bos 2023, pp. 605, 617–618.
  121. Tanenbaum & Bos 2023, pp. 681–682.
  122. Tanenbaum & Bos 2023, p. 683.
  123. Tanenbaum & Bos 2023, p. 685.
  124. Tanenbaum & Bos 2023, p. 689.
  125. Richet & Bouaynaya 2023, p. 92.
  126. Richet & Bouaynaya 2023, pp. 92–93.
  127. Berntsso, Strandén & Warg 2017, pp. 130–131. sfn error: no target: CITEREFBerntssoStrandénWarg2017 (help)
  128. Tanenbaum & Bos 2023, p. 611.
  129. Tanenbaum & Bos 2023, pp. 396, 402.
  130. Tanenbaum & Bos 2023, pp. 395, 408.
  131. Tanenbaum & Bos 2023, p. 402.
  132. Holwerda, Thom (20 December 2009). "My OS Is Less Hobby than Yours". OS News. Retrieved 4 June 2024.
  133. Silberschatz et al. 2018, pp. 779–780.
  134. Tanenbaum & Bos 2023, pp. 713–714.
  135. 12Silberschatz et al. 2018, p. 780.
  136. Vaughan-Nichols, Steven (2022). "Linus Torvalds prepares to move the Linux kernel to modern C". ZDNET. Retrieved 7 February 2024.
  137. Silberschatz et al. 2018, p. 781.
  138. Tanenbaum & Bos 2023, pp. 715–716.
  139. Tanenbaum & Bos 2023, pp. 793–794.
  140. Tanenbaum & Bos 2023, p. 793.
  141. Tanenbaum & Bos 2023, pp. 1021–1022.
  142. Tanenbaum & Bos 2023, p. 871.
  143. Silberschatz et al. 2018, p. 826.
  144. 12Tanenbaum & Bos 2023, p. 1035.
  145. 12Tanenbaum & Bos 2023, p. 1036.
  146. Silberschatz et al. 2018, p. 821.
  147. Silberschatz et al. 2018, p. 827.

Further reading

  • Anderson, Thomas; Dahlin, Michael (2014). Operating Systems: Principles and Practice. Recursive Books. ISBN 978-0-9856735-2-9.
  • Auslander, M. A.; Larkin, D. C.; Scherr, A. L. (September 1981). "The Evolution of the MVS Operating System". IBM Journal of Research and Development. 25 (5): 471–482. doi:10.1147/rd.255.0471. ISSN 0018-8646.
  • Berntsson, Petter Sainio; Strandén, Lars; Warg, Fredrik (2017). Evaluation of Open Source Operating Systems for Safety-Critical Applications. Springer International Publishing. pp. 117–132. ISBN 978-3-319-65948-0.
  • Deitel, Harvey M.; Deitel, Paul; Choffnes, David (25 December 2015). Operating Systems. Pearson/Prentice Hall. ISBN 978-0-13-092641-8.
  • Bic, Lubomur F.; Shaw, Alan C. (2003). Operating Systems. Pearson: Prentice Hall.
  • Silberschatz, Avi; Galvin, Peter; Gagne, Greg (2008). Operating Systems Concepts. John Wiley & Sons. ISBN 978-0-470-12872-5.
  • O'Brien, J. A.; Marakas, G. M. (2011). Management Information Systems (10th ed.). McGraw-Hill Irwin.
  • Leva, Alberto; Maggio, Martina; Papadopoulos, Alessandro Vittorio; Terraneo, Federico (2013). Control-based Operating System Design. IET. ISBN 978-1-84919-609-3.
  • Richet, Jean-Loup; Bouaynaya, Wafa (2023). "Understanding and Managing Complex Software Vulnerabilities: An Empirical Analysis of Open-Source Operating Systems". Systèmes d'information & management. 28 (1): 87–114. doi:10.54695/sim.28.1.0087.
  • Silberschatz, Abraham; Galvin, Peter B.; Gagne, Greg (2018). Operating System Concepts (10 ed.). Wiley. ISBN 978-1-119-32091-3.
  • Tanenbaum, Andrew S.; Bos, Herbert (2023). Modern Operating Systems, Global Edition. Pearson Higher Ed. ISBN 978-1-292-72789-9.
  • Multics History and the history of operating systems