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

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


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

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 ]
- transferir el control a una rutina de servicio de interrupción.
- guardar el estado del proceso que se está ejecutando actualmente.
- 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:
- cuando un proceso finaliza normalmente.
- cuando un proceso tiene una excepción de error.
- cuando un proceso se queda sin un recurso del sistema.
- cuando un proceso ejecuta una instrucción ilegal.
- cuando un proceso establece un evento de alarma.
- cuando un proceso se interrumpe desde el teclado.
- 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:
- Coloca el contenido de los registros de la CPU (incluido el contador de programa ) en el bloque de control de procesos . [ 76 ]
- Crea una entrada en la tabla de estado del dispositivo. [ 77 ] El sistema operativo mantiene esta tabla para llevar un registro de qué procesos están esperando qué dispositivos. Un campo de la tabla es la dirección de memoria del bloque de control del proceso.
- Coloca todos los caracteres que se enviarán al dispositivo en un búfer de memoria . [ 66 ]
- Establezca la dirección de memoria del búfer de memoria en un registro de dispositivo predeterminado. [ 78 ]
- Establezca el tamaño del búfer (un número entero) en otro registro predeterminado. [ 78 ]
- Ejecuta la instrucción de la máquina para comenzar la escritura.
- Realizar un cambio de contexto al siguiente proceso en la cola de listos .
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:
- Inserta el contenido del contador de programa (un registro) seguido del registro de estado en la pila de llamadas . [ 58 ]
- Coloca el contenido de los demás registros en la pila de llamadas. (Alternativamente, el contenido de los registros puede colocarse en una tabla del sistema). [ 79 ]
- Lee el número entero del bus de datos. El número entero es un desplazamiento a la tabla de vectores de interrupción . Las instrucciones de la tabla de vectores serán las siguientes:
- 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.
- Extrae 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

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 dispositivos de almacenamiento permanente utilizados en las computadoras del siglo XXI, a diferencia de la memoria de acceso aleatorio dinámica volátil (DRAM), siguen siendo accesibles después de un fallo o una interrupción del suministro eléctrico . El almacenamiento permanente ( no volátil ) es mucho más económico por byte, pero requiere varios órdenes de magnitud más de tiempo para acceder, leer y escribir. [ 93 ] [ 94 ] Las dos tecnologías principales son el disco duro, compuesto por discos magnéticos , y la memoria flash (una unidad de estado sólido que almacena datos en circuitos eléctricos). Esta última es más cara, pero más rápida y duradera. [ 95 ] [ 96 ]
Los sistemas de archivos son una abstracción utilizada por el sistema operativo para simplificar el acceso al almacenamiento permanente. Proporcionan nombres de archivo legibles por humanos y otros metadatos , aumentan el rendimiento mediante la amortización de accesos, impiden que múltiples subprocesos accedan a la misma sección de memoria e incluyen sumas de comprobación para identificar la corrupción . [ 97 ] Los sistemas de archivos se componen de archivos (colecciones de datos con nombre, de tamaño arbitrario) y directorios (también llamados carpetas) que enumeran nombres de archivo legibles por humanos y otros directorios. [ 98 ] Una ruta de archivo absoluta comienza en el directorio raíz y enumera los subdirectorios divididos por signos de puntuación, mientras que una ruta relativa define la ubicación de un archivo dentro de un directorio. [ 99 ] [ 100 ]
Las llamadas al sistema (que a veces están encapsuladas por bibliotecas) permiten a las aplicaciones crear, eliminar, abrir y cerrar archivos, así como enlazarlos, leerlos y escribir en ellos. Todas estas operaciones las realiza el sistema operativo en nombre de la aplicación. [ 101 ] Los esfuerzos del sistema operativo para reducir la latencia incluyen almacenar en caché los bloques de memoria solicitados recientemente y precargar datos que la aplicación no ha solicitado, pero que podría necesitar posteriormente. [ 102 ] Los controladores de dispositivos son software específico para cada dispositivo de entrada/salida (E/S) que permite al sistema operativo funcionar sin modificaciones en diferentes hardware. [ 103 ] [ 104 ]
Otro componente de los sistemas de archivos es un diccionario que asigna el nombre y los metadatos de un archivo al bloque de datos donde se almacena su contenido. [ 105 ] La mayoría de los sistemas de archivos utilizan directorios para convertir los nombres de archivo en números de archivo. Para encontrar el número de bloque, el sistema operativo utiliza un índice (a menudo implementado como un árbol ). [ 106 ] Por separado, existe un mapa de espacio libre para rastrear los bloques libres, comúnmente implementado como un mapa de bits . [ 106 ] Aunque cualquier bloque libre puede usarse para almacenar un nuevo archivo, muchos sistemas operativos intentan agrupar archivos en el mismo directorio para maximizar el rendimiento, o reorganizan periódicamente los archivos para reducir la fragmentación . [ 107 ]
Mantener la fiabilidad de los datos ante un fallo informático o de hardware es otra preocupación. [ 108 ] Los protocolos de escritura de archivos están diseñados con operaciones atómicas para no dejar el almacenamiento permanente en un estado parcialmente escrito e inconsistente en caso de un fallo en cualquier punto durante la escritura. [ 109 ] La corrupción de datos se aborda mediante almacenamiento redundante (por ejemplo, RAID: matriz redundante de discos económicos ) [ 110 ] [ 111 ] y sumas de comprobación para detectar cuándo se han corrompido los datos. Con múltiples capas de sumas de comprobación y copias de seguridad de un archivo, un sistema puede recuperarse de múltiples fallos de hardware. Los procesos en segundo plano se utilizan a menudo para detectar y recuperarse de la corrupción de datos. [ 111 ]
Redes de contactos
Los sistemas operativos modernos suelen incluir una pila de red , como por ejemplo la pila de protocolos TCP/IP .
Seguridad
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 ]
La seguridad de los sistemas operativos se ve obstaculizada por su creciente complejidad y la consiguiente inevitabilidad de errores. [ 120 ] Dado que la verificación formal de los sistemas operativos puede no ser factible, los desarrolladores utilizan el endurecimiento de sistemas operativos para reducir las vulnerabilidades, [ 121 ] por ejemplo, la aleatorización del diseño del espacio de direcciones , la integridad del flujo de control , [ 122 ] las restricciones de acceso , [ 123 ] y otras técnicas. [ 124 ] No existen restricciones sobre quién puede contribuir con código a los sistemas operativos de código abierto; dichos sistemas operativos tienen historiales de cambios transparentes y estructuras de gobernanza distribuidas. [ 125 ] Los desarrolladores de código abierto se esfuerzan por trabajar en colaboración para encontrar y eliminar vulnerabilidades de seguridad, utilizando la revisión de código y la verificación de tipos para eliminar el código malicioso. [ 126 ] [ 127 ] Andrew S. Tanenbaum aconseja publicar el código fuente de todos los sistemas operativos, argumentando que esto evita que los desarrolladores depositen confianza en el secreto y, por lo tanto, dependan de la práctica poco fiable de la seguridad por ocultación . [ 128 ]
Interfaz de usuario
Una interfaz de usuario (UI) es esencial para facilitar la interacción humana con un ordenador. Los dos tipos de interfaz de usuario más comunes para cualquier ordenador son:
- interfaz de línea de comandos , donde se escriben los comandos de la computadora, línea por línea,
- Interfaz gráfica de usuario (GUI) que utiliza un entorno visual, generalmente una combinación de los elementos ventana, icono, menú y puntero, también conocido como WIMP .
Para ordenadores personales, incluidos teléfonos inteligentes y tabletas , y para estaciones de trabajo , la entrada del usuario se realiza normalmente mediante una combinación de teclado , ratón y panel táctil o pantalla táctil , todos ellos conectados al sistema operativo con software especializado. [ 129 ] Los usuarios de ordenadores personales que no son desarrolladores de software ni programadores suelen preferir las interfaces gráficas de usuario (GUI) tanto para la entrada como para la salida; la mayoría de los ordenadores personales admiten GUI. [ 130 ] El software para admitir GUI es más complejo que una línea de comandos para la entrada y la salida de texto plano. La salida de texto plano suele ser la preferida por los programadores y es fácil de implementar. [ 131 ]
Desarrollo de sistemas operativos como hobby
Un sistema operativo de aficionado puede clasificarse como aquel cuyo código no se ha derivado directamente de un sistema operativo existente y que tiene pocos usuarios y desarrolladores activos. [ 132 ]
En algunos casos, el desarrollo por afición se centra en un dispositivo informático casero , como por ejemplo, un ordenador de placa única con un microprocesador 6502. O bien, el desarrollo puede estar orientado a una arquitectura ya ampliamente utilizada. El desarrollo de sistemas operativos puede partir de conceptos totalmente nuevos o comenzar modelando un sistema operativo existente. En cualquier caso, el aficionado desarrolla su propio software o interactúa con un pequeño grupo, a veces informal, de personas con intereses similares.
Algunos ejemplos de sistemas operativos para aficionados son Syllable y TempleOS .
Diversidad de sistemas operativos y portabilidad
Si una aplicación se escribe para usarse en un sistema operativo específico y se adapta a otro sistema operativo, la funcionalidad requerida por esa aplicación puede implementarse de manera diferente en ese sistema operativo (los nombres de las funciones, el significado de los argumentos, etc.), lo que requiere que la aplicación se adapte, se modifique o se mantenga de alguna otra manera .
Este coste derivado del soporte a la diversidad de sistemas operativos puede evitarse escribiendo aplicaciones para plataformas de software como Java o Qt . Estas abstracciones ya han asumido el coste de la adaptación a sistemas operativos específicos y sus bibliotecas de sistema .
Otro enfoque consiste en que los proveedores de sistemas operativos adopten estándares. Por ejemplo, las capas de abstracción POSIX y de sistemas operativos proporcionan elementos comunes que reducen los costos de adaptación.
Sistemas operativos populares
A partir de octubre de 2025 Las métricas de tráfico web muestran que Android es el sistema operativo más popular para conectarse a la web , con una cuota del 38%, seguido de Microsoft Windows con un 31%, iOS y iPadOS con un 15%, macOS con un 7% y Linux con un 1%. Android, iOS y iPadOS son sistemas operativos móviles , mientras que Windows, macOS y Linux son sistemas operativos de escritorio. [ 4 ]
Linux

Linux es software libre distribuido bajo la Licencia Pública General de GNU (GPL), lo que significa que todos sus derivados están obligados legalmente a publicar su código fuente . [ 133 ] Linux fue diseñado por programadores para su propio uso, haciendo hincapié en la simplicidad y la coherencia, con un pequeño número de elementos básicos que pueden combinarse de formas casi ilimitadas y evitando la redundancia. [ 134 ]
Su diseño es similar al de otros sistemas UNIX que no utilizan un microkernel . [ 135 ] Está escrito en C [ 136 ] y utiliza la sintaxis de UNIX System V , pero también admite la sintaxis de BSD . Linux admite las características de red estándar de UNIX, así como el conjunto completo de herramientas de UNIX, al tiempo que admite múltiples usuarios y emplea multitarea preventiva . Inicialmente de un diseño minimalista, Linux es un sistema flexible que puede funcionar con menos de 16 MB de RAM , pero aún se utiliza en grandes sistemas multiprocesador . [ 135 ] Al igual que otros sistemas UNIX, las distribuciones de Linux se componen de un kernel , bibliotecas del sistema y utilidades del sistema . [ 137 ] Linux tiene una interfaz gráfica de usuario (GUI) con un escritorio, iconos de carpetas y archivos, así como la opción de acceder al sistema operativo a través de una línea de comandos . [ 138 ]
Android es un sistema operativo parcialmente de código abierto basado en Linux y se ha convertido en el sistema operativo más utilizado por los usuarios, debido a su popularidad en teléfonos inteligentes y, en menor medida, en sistemas embebidos que necesitan una interfaz gráfica de usuario (GUI), como relojes inteligentes , paneles de control de automóviles , respaldos de asientos de aviones, dispositivos médicos y electrodomésticos . [ 139 ] A diferencia de Linux, gran parte de Android está escrito en Java y utiliza un diseño orientado a objetos . [ 140 ]
Microsoft Windows

Windows es un sistema operativo propietario ampliamente utilizado en computadoras de escritorio, portátiles, tabletas, teléfonos, estaciones de trabajo , servidores empresariales y consolas Xbox . [ 142 ] El sistema operativo fue diseñado para "seguridad, confiabilidad, compatibilidad, alto rendimiento, extensibilidad, portabilidad y soporte internacional"; posteriormente, la eficiencia energética y el soporte para dispositivos dinámicos también se convirtieron en prioridades. [ 143 ]
El ejecutivo de Windows funciona mediante objetos en modo kernel para estructuras de datos importantes como procesos, subprocesos y secciones (objetos de memoria, por ejemplo, archivos). [ 144 ] El sistema operativo admite la paginación bajo demanda de la memoria virtual , lo que acelera la E/S para muchas aplicaciones. Los controladores de dispositivos de E/S utilizan el modelo de controlador de Windows . [ 144 ] El sistema de archivos NTFS tiene una tabla maestra y cada archivo se representa como un registro con metadatos . [ 145 ] La planificación incluye multitarea preventiva . [ 146 ] Windows tiene muchas características de seguridad; [ 147 ] especialmente importantes son el uso de listas de control de acceso y niveles de integridad . Cada proceso tiene un token de autenticación y a cada objeto se le asigna un descriptor de seguridad. Las versiones posteriores han añadido aún más características de seguridad. [ 145 ]
Véase también
- Comparación de sistemas operativos
- DBOS
- Sistema operativo interrumpible
- Lista de sistemas operativos
- Lista de pioneros en informática
- Glosario de términos de sistemas operativos
- Microcontrolador
- Sistema operativo de red
- Sistema operativo orientado a objetos
- Máquina Lisp
- Proyectos de sistemas operativos
- Comandante del sistema
- Imagen del sistema
- Cronología de los sistemas operativos
Notas
- ↑ Las CPU modernas proporcionan instrucciones (por ejemplo, SYSENTER) para invocar servicios del kernel seleccionados sin interrupciones. Visite https://wiki.osdev.org/SYSENTER para obtener más información.
- ↑ Algunos ejemplos son SIGINT , SIGSEGV y SIGBUS .
- ↑ a menudo en forma de un chip DMA para sistemas más pequeños y canales de E/S para sistemas más grandes.
- ↑ Las placas base modernastienen un controlador DMA. Además, un dispositivo también puede tener uno. Visite el protocolo SCSI RDMA .
- ↑ Existen varias razones por las que la memoria podría ser inaccesible.
Referencias
- ↑ Jia, Shian; Wang, Xinbo; Song, Mingli; Chen, Gang (15 de noviembre de 2024). "Sistema operativo centrado en agentes: una revisión exhaustiva y perspectivas para el sistema operativo". arXiv : 2411.17710 [ cs.DC ].
- ↑ Stallings (2005). Sistemas operativos, aspectos internos y principios de diseño . Pearson: Prentice Hall. pág. 6.
- ↑ Dhotre, IA (2009). Sistemas operativos . Publicaciones técnicas. pág. 1.
- 1 2 "Cuota de mercado mundial de sistemas operativos" . Estadísticas globales de StatCounter . Consultado el 20 de diciembre de 2024 .
- ↑ Silberschatz, Abraham; Galvin, Peter B.; Gagne, Greg (2005). "VII. Sistemas de propósito especial" . Conceptos de sistemas operativos (séptima ed.). Wiley. ISBN 978-0-471-69466-3Archivado del original el 13 de junio de 2021. Consultado el 8 de febrero de 2021 .
- ↑ "Sistemas Operativos de Propósito Especial - Instituto de Automatización de Sistemas de Energía Complejos de la Universidad RWTH Aachen - Inglés" . www.acs.eonerc.rwth-aachen.de . Archivado del original el 14 de junio de 2021. Consultado el 8 de febrero de 2021 .
- 1 2 Tanenbaum y Bos 2023 , pág. 4.
- ^ Anderson y Dahlin 2014 , pág. 6.
- ^ Silberschatz y cols. 2018 , pág. 6.
- ^ Anderson y Dahlin 2014 , pág.7.
- ^ Anderson y Dahlin 2014 , págs. 9-10.
- ↑ Tanenbaum y Bos 2023 , págs. 6–7.
- ^ Anderson y Dahlin 2014 , pág. 10.
- ↑ Tanenbaum y Bos 2023 , pág. 5.
- ^ Anderson y Dahlin 2014 , pág.11.
- ^ Anderson y Dahlin 2014 , págs.7 , 9, 13.
- ^ Anderson y Dahlin 2014 , págs .
- ↑ Tanenbaum y Bos 2023 , pág. 557.
- ↑ Tanenbaum y Bos 2023 , pág. 558.
- 1 2 Tanenbaum y Bos 2023 , pág. 565.
- ↑ Tanenbaum y Bos 2023 , pág. 562.
- ↑ Tanenbaum y Bos 2023 , pág. 563.
- ↑ Tanenbaum y Bos 2023 , pág. 569.
- ↑ Tanenbaum y Bos 2023 , pág. 571.
- ↑ Tanenbaum y Bos 2023 , pág. 579.
- ↑ Tanenbaum y Bos 2023 , pág. 581.
- ↑ Tanenbaum y Bos 2023 , págs. 37–38.
- ↑ Tanenbaum y Bos 2023 , pág. 39.
- 1 2 3 4 Tanenbaum y Bos 2023 , pág. 38.
- ↑ Silberschatz y col. 2018 , págs.701 .
- ↑ Silberschatz y col. 2018 , págs.705 .
- ^ Anderson y Dahlin 2014 , pág. 12.
- ↑ 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 .
- ↑ "Proceso de compilación - Unikraft" . Archivado del original el 22 de abril de 2024. Consultado el 8 de agosto de 2024 .
- ↑ «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 .
- ↑ Soares, Livio Baldini; Stumm, Michael (4 de octubre de 2010). FlexSC: Flexible System Call Scheduling with Exception-Less System Calls . OSDI '10, 9th USENIX Symposium on Operating System Design and Implementation . USENIX . Recuperado el 9 de agosto de 2024 . p. 2:
La implementación síncrona de las llamadas al sistema impacta negativamente el rendimiento de las cargas de trabajo intensivas del sistema, tanto en términos de los costos
directos
del cambio de modo como, más interesante, en términos de la contaminación
indirecta
de estructuras importantes del procesador que afecta tanto al rendimiento en modo usuario como en modo kernel. Un ejemplo motivador que cuantifica el impacto de la contaminación de llamadas al sistema en el rendimiento de la aplicación se puede ver en la Figura 1. Representa las instrucciones en modo usuario por ciclo (se ignoran los ciclos e instrucciones del kernel) de uno de los benchmarks SPEC CPU 2006 (Xalan) inmediatamente antes y después de una
llamada al sistema. Se produce una caída significativa en las instrucciones por ciclo (IPC) debido a la llamada al sistema, y se requieren hasta 14 000 ciclos de ejecución para que el IPC de esta aplicación vuelva a su nivel anterior. Como demostraremos, esta degradación del rendimiento se debe principalmente a la interferencia del núcleo en estructuras clave del procesador.
pwrite - 1 2 Tanenbaum y Bos 2023 , pág. 8.
- ↑ Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (2015). Sistemas operativos: tres piezas fáciles . Archivado del original el 25 de julio de 2016. Recuperado el 25 de julio de 2016 .
- ↑ Tanenbaum y Bos 2023 , pág. 10.
- ↑ Tanenbaum y Bos 2023 , págs. 11–12.
- ↑ Tanenbaum y Bos 2023 , págs. 13–14.
- ↑ Tanenbaum y Bos 2023 , págs. 14–15.
- ↑ Tanenbaum y Bos 2023 , pág. 15.
- ↑ Tanenbaum y Bos 2023 , págs. 15–16.
- 1 2 Tanenbaum y Bos 2023 , pág. 16.
- ↑ Tanenbaum y Bos 2023 , pág. 17.
- ↑ Tanenbaum y Bos 2023 , pág. 18.
- ↑ Tanenbaum y Bos 2023 , págs. 19–20.
- ^ Anderson y Dahlin 2014 , págs .
- ↑ Tanenbaum y Bos 2023 , pág. 2.
- ^ Anderson y Dahlin 2014 , págs.41 , 45.
- ^ Anderson y Dahlin 2014 , págs .
- 1 2 Kerrisk, Michael (2010). La interfaz de programación de Linux . No Starch Press. pág. 388. ISBN 978-1-59327-220-3Una señal es una notificación a un proceso de que ha ocurrido un evento. A veces ,
las señales se describen como interrupciones de software.
- ↑ Hyde, Randall (1996). "Capítulo diecisiete: Interrupciones, trampas y excepciones (Parte 1)" . El arte de la programación en lenguaje ensamblador . No Starch Press. Archivado del original el 22 de diciembre de 2021. Recuperado el 22 de diciembre de 2021.
El concepto de interrupción es algo que se ha expandido en alcance a lo largo de los años. La familia 80x86 solo ha aumentado la confusión en torno a las interrupciones al introducir la instrucción int (interrupción de software). De hecho, diferentes fabricantes han utilizado términos como excepciones, fallas, abortos, trampas e interrupciones para describir los fenómenos que se discuten en este capítulo. Desafortunadamente, no hay un consenso claro sobre el significado exacto de estos términos. Diferentes autores adoptan diferentes términos para su propio uso.
- ↑ Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 308. ISBN 978-0-13-854662-5Al igual que la trampa ,
la interrupción detiene el programa en ejecución y transfiere el control a un manejador de interrupciones, que realiza la acción correspondiente. Una vez finalizada, el manejador de interrupciones devuelve el control al programa interrumpido.
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 32. ISBN 978-0-201-50480-4Cuando
se produce una interrupción (o trampa), el hardware transfiere el control al sistema operativo. Primero, el sistema operativo conserva el estado de la CPU almacenando los registros y el contador de programa. Luego, determina qué tipo de interrupción se ha producido. Para cada tipo de interrupción, segmentos de código independientes del sistema operativo determinan la acción que debe realizarse.
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 105. ISBN 978-0-201-50480-4Para
cambiar la CPU a otro proceso, es necesario guardar el estado del proceso anterior y cargarlo en el nuevo proceso. Esta tarea se conoce como cambio de contexto.
- 1 2 3 4 5 Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 31. ISBN 978-0-201-50480-4.
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 30. ISBN 978-0-201-50480-4El
hardware puede provocar una interrupción en cualquier momento enviando una señal a la CPU, normalmente a través del bus del sistema.
- ↑ Kerrisk, Michael (2010). La interfaz de programación de Linux . No Starch Press. pág. 388. ISBN 978-1-59327-220-3Las señales son análogas a las interrupciones de hardware, ya que interrumpen el flujo normal de ejecución de un programa; en la mayoría
de los casos, no es posible predecir con exactitud cuándo llegará una señal.
- ↑ Kerrisk, Michael (2010). La interfaz de programación de Linux . No Starch Press. pág. 388. ISBN 978-1-59327-220-3
Entre los tipos de eventos que hacen que el núcleo genere una señal para un proceso se encuentran los siguientes: Se produjo un evento de software. Por ejemplo, ... se superó el límite de tiempo de CPU del proceso[.
] - 1 2 3 4 5 Kerrisk, Michael (2010). La interfaz de programación de Linux . No Starch Press. pág. 388. ISBN 978-1-59327-220-3.
- ↑ "Manual del desarrollador de software para arquitecturas Intel® 64 e IA-32" (PDF) . Intel Corporation . Septiembre de 2016. pág. 610. Archivado (PDF) del original el 23 de marzo de 2022. Consultado el 5 de mayo de 2022 .
- 1 2 3 Bach, Maurice J. (1986). El diseño del sistema operativo UNIX . Prentice-Hall. pág. 200. ISBN 0-13-201799-7.
- ↑ Kerrisk, Michael (2010). La interfaz de programación de Linux . No Starch Press. pág. 400. ISBN 978-1-59327-220-3.
- 1 2 Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 308. ISBN 978-0-13-854662-5.
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 182. ISBN 978-0-201-50480-4.
- ↑ Haviland, Keith; Salama, Ben (1987). Programación de sistemas UNIX . Addison-Wesley Publishing Company. pág. 153. ISBN 0-201-12919-1.
- ↑ Haviland, Keith; Salama, Ben (1987). Programación de sistemas UNIX . Addison-Wesley Publishing Company. pág. 148. ISBN 0-201-12919-1.
- 1 2 Haviland, Keith; Salama, Ben (1987). Programación de sistemas UNIX . Addison-Wesley Publishing Company. pág. 149. ISBN 0-201-12919-1.
- ↑ Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 292. ISBN 978-0-13-854662-5.
- ↑ IBM (septiembre de 1968), "Almacenamiento principal" (PDF) , Principios de funcionamiento del IBM System/360 (PDF) , Octava edición, pág. 7, archivado (PDF) del original el 19 de marzo de 2022 , consultado el 13 de abril de 2022.
- 1 2 Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 294. ISBN 978-0-13-854662-5.
- ↑ "Controlador de interrupción de programa (PIC)" (PDF) . Manual del usuario - PDP-7 (PDF) . Digital Equipment Corporation . 1965. pp. 48. F-75. Archivado (PDF) del original el 10 de mayo de 2022. Recuperado el 20 de abril de 2022 .
- ↑ Manual de sistemas de entrada/salida PDP-1 (PDF) . Digital Equipment Corporation . págs. 19–20 . Archivado (PDF) del original el 25 de enero de 2019. Consultado el 16 de agosto de 2022 .
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 32. ISBN 978-0-201-50480-4.
- ↑ Silberschatz, Abraham (1994). Conceptos de sistemas operativos, cuarta edición . Addison-Wesley. pág. 34. ISBN 978-0-201-50480-4.
- 1 2 Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 295. ISBN 978-0-13-854662-5.
- 1 2 Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 309. ISBN 978-0-13-854662-5.
- ↑ Tanenbaum, Andrew S. (1990). Organización estructurada de computadoras, tercera edición . Prentice Hall. pág . 310. ISBN 978-0-13-854662-5.
- ↑ Stallings, William (2008). Organización y arquitectura de computadoras . Nueva Delhi: Prentice-Hall of India Private Limited. pág. 267. ISBN 978-81-203-2962-1.
- ^ Anderson y Dahlin 2014 , pág. 129.
- ↑ Silberschatz y col. 2018 , pág. 159.
- ^ Anderson y Dahlin 2014 , pág. 130.
- ^ Anderson y Dahlin 2014 , pág. 131.
- ^ Anderson y Dahlin 2014 , págs.157 , 159.
- ^ Anderson y Dahlin 2014 , pág. 139.
- ↑ Silberschatz y col. 2018 , pág. 160.
- ^ Anderson y Dahlin 2014 , pág. 183.
- ↑ Silberschatz y col. 2018 , pág. 162.
- ↑ Silberschatz y col. 2018 , págs. 162-163.
- ↑ Silberschatz y col. 2018 , pág. 164.
- ^ Anderson y Dahlin 2014 , págs.492 , 517.
- ↑ Tanenbaum y Bos 2023 , págs. 259–260.
- ^ Anderson y Dahlin 2014 , págs.517 , 530.
- ↑ Tanenbaum y Bos 2023 , pág. 260.
- ^ Anderson y Dahlin 2014 , págs .
- ^ Anderson y Dahlin 2014 , pág. 496.
- ^ Anderson y Dahlin 2014 , págs .
- ↑ Tanenbaum y Bos 2023 , págs. 274–275.
- ^ Anderson y Dahlin 2014 , págs .
- ^ Anderson y Dahlin 2014 , pág. 507.
- ^ Anderson y Dahlin 2014 , pág. 508.
- ↑ Tanenbaum y Bos 2023 , pág. 359.
- ^ Anderson y Dahlin 2014 , pág. 545.
- ^ Anderson y Dahlin 2014 , pág. 546.
- ^ Anderson y Dahlin 2014 , pág. 547.
- ^ Anderson y Dahlin 2014 , págs.589 , 591.
- ^ Anderson y Dahlin 2014 , págs .
- ↑ Tanenbaum y Bos 2023 , págs. 385–386.
- ^ Anderson y Dahlin 2014 , pág. 592.
- ↑ Tanenbaum y Bos 2023 , págs. 605–606.
- ↑ Tanenbaum y Bos 2023 , pág. 608.
- ↑ Tanenbaum y Bos 2023 , pág. 609.
- ↑ Tanenbaum y Bos 2023 , págs. 609–610.
- 1 2 Tanenbaum y Bos 2023 , pág. 612.
- ↑ Tanenbaum y Bos 2023 , págs. 648, 657.
- ↑ Tanenbaum y Bos 2023 , págs. 668–669, 674.
- ↑ Tanenbaum y Bos 2023 , págs. 679–680.
- ↑ Tanenbaum y Bos 2023 , págs. 605, 617–618.
- ↑ Tanenbaum y Bos 2023 , págs. 681–682.
- ↑ Tanenbaum y Bos 2023 , pág. 683.
- ↑ Tanenbaum y Bos 2023 , pág. 685.
- ↑ Tanenbaum y Bos 2023 , pág. 689.
- ↑ Richet y Bouaynaya 2023 , pág. 92.
- ^ Richet y Bouaynaya 2023 , págs .
- ↑ Berntsso, Strandén & Warg 2017 , págs . Error sfn: sin destino: CITEREFBerntssoStrandénWarg2017 ( ayuda )
- ↑ Tanenbaum y Bos 2023 , pág. 611.
- ↑ Tanenbaum y Bos 2023 , págs. 396, 402.
- ↑ Tanenbaum y Bos 2023 , págs. 395, 408.
- ↑ Tanenbaum y Bos 2023 , pág. 402.
- ↑ Holwerda, Thom (20 de diciembre de 2009). "Mi sistema operativo es menos un hobby que el tuyo" . Noticias sobre sistemas operativos . Consultado el 4 de junio de 2024 .
- ↑ Silberschatz y col. 2018 , págs. 779–780.
- ↑ Tanenbaum y Bos 2023 , págs. 713–714.
- ^ Silberschatz y cols. 2018 , pág. 780.
- ↑ Vaughan-Nichols, Steven (2022). "Linus Torvalds se prepara para trasladar el núcleo de Linux a C moderno" . ZDNET . Consultado el 7 de febrero de 2024 .
- ↑ Silberschatz y col. 2018 , pág. 781.
- ↑ Tanenbaum y Bos 2023 , págs. 715–716.
- ↑ Tanenbaum y Bos 2023 , págs. 793–794.
- ↑ Tanenbaum y Bos 2023 , pág. 793.
- ↑ Tanenbaum y Bos 2023 , págs. 1021–1022.
- ↑ Tanenbaum y Bos 2023 , pág. 871.
- ↑ Silberschatz y col. 2018 , pág. 826.
- 1 2 Tanenbaum y Bos 2023 , pág. 1035.
- 1 2 Tanenbaum y Bos 2023 , pág. 1036.
- ↑ Silberschatz y col. 2018 , pág. 821.
- ↑ Silberschatz y col. 2018 , pág. 827.
Lecturas adicionales
- Anderson, Thomas ; Dahlin, Michael (2014). Sistemas operativos: principios y práctica . Recursive Books. ISBN 978-0-9856735-2-9.
- Auslander, MA; Larkin, DC; Scherr, AL (septiembre de 1981). "La evolución del sistema operativo MVS". 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). Evaluación de sistemas operativos de código abierto para aplicaciones críticas de seguridad . Springer International Publishing. pp. 117–132 . ISBN 978-3-319-65948-0.
- 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 & Sons . ISBN 978-0-470-12872-5.
- O'Brien, JA; Marakas, GM (2011). Sistemas de información gerencial (10.ª ed.). McGraw-Hill Irwin.
- Leva, Alberto; Maggio, Martina; Papadopoulos, Alessandro Vittorio; Terraneo, Federico (2013). Diseño de sistemas operativos basados en control . IET . ISBN 978-1-84919-609-3.
- Richet, Jean-Loup; Bouaynaya, Wafa (2023). "Comprensión y gestión de vulnerabilidades de software complejas: un análisis empírico de sistemas operativos de código abierto" . Systèmes d'information & management . 28 (1): 87– 114. doi : 10.54695/sim.28.1.0087 .
- Silberschatz, Abraham; Galvin, Peter B.; Gagne, Greg (2018). Conceptos de sistemas operativos (10.ª ed.). Wiley. ISBN 978-1-119-32091-3.
- Tanenbaum, Andrew S.; Bos, Herbert (2023). Sistemas operativos modernos, edición global . Pearson Higher Ed. ISBN 978-1-292-72789-9.
Enlaces externos
- Historia de Multics y la historia de los sistemas operativos
- Sistemas operativos