Sistemas Operativos: Conceptos, Evolución y Componentes Clave
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 29,06 KB
Concepto de Sistema Operativo
Un sistema operativo es un conjunto de programas de control cuya finalidad es hacer más fácil y eficiente el uso del ordenador en que se ejecutan. Aunque inicialmente se hablaba de programas de control y programas de proceso, en la actualidad se considera que las características de cualquier sistema operativo corresponden principalmente a las de un programa de control. En efecto, su tarea primordial es gestionar y asignar los recursos hardware a los distintos procesos en ejecución. De este modo controla tanto los programas de los usuarios como los propios, así como el uso de los diferentes elementos del ordenador (CPU, buses, memoria principal, dispositivos de E/S, etc).
Por lo tanto, el SO es el software que actúa como intermediario entre el usuario y el ordenador proporcionando los medios para utilizar de forma correcta los recursos de un sistema informático global.
Objetivos
- Comodidad: Facilitar el uso de la máquina a los usuarios, proporcionando un entorno cómodo para el desarrollo y ejecución de programas y para el acceso a los recursos de la máquina.
- Eficiencia: El SO debe administrar los recursos de la máquina (HW y SW) de forma que se aprovechen de la manera más conveniente.
- Seguridad: El SO debe controlar el acceso y la utilización de los recursos del sistema, además también debe controlar quién hace uso de estos recursos impidiendo a aquellos usuarios no autorizados el acceso a los datos o incluso al sistema informático.
- Capacidad de evolución: Debe ser construido de tal manera que permita la introducción de nuevas funciones en el sistema, sin que por ello se vean afectados los servicios que proporciona.
Evolución de los Sistemas Operativos
Para entender el funcionamiento de un SO en la actualidad hay que estudiar su evolución en los últimos 50 años. Viendo esta evolución podremos identificar la necesidad de ciertos elementos, y cómo fueron mejorando.
Primera Generación (1945 - 1955)
Se utilizaba en estos primeros años una tecnología de válvulas de vacío con lo que el hardware era muy inestable ya que las válvulas tenían un tiempo de vida muy limitado. Los ordenadores al estar construidos con válvulas ocupaban mucho espacio y consumían mucha energía.
Se programaban en código máquina. Y la misma persona era diseñadora del hardware, programadora y operadora. Con todo ello se generaba un proceso muy lento y complejo para diseñar y ejecutar un programa, con resultados poco fiables debido a la inestabilidad del hardware.
Con la aparición de los primeros periféricos de E/S, las tarjetas perforadas y las impresoras, se consigue mejorar el tiempo de codificación y carga. En estos primeros ordenadores el SO no existía.
Segunda Generación (1955 - 1965)
Con la introducción del transistor a mediados de los 50 se crearon nuevos ordenadores suficientemente estables, destacando entre ellos la serie 1401 y la serie 7030 de IBM. Estos ordenadores solo estaban al alcance de organismos oficiales y multinacionales.
Surgen los primeros compiladores de lenguaje ensamblador que permitían escribir los programas en vez de en lenguaje máquina en ensamblador. También aparecen en el año 1956 los lenguajes de programación COBOL y FORTRAN, lenguajes de alto nivel más cercanos al lenguaje humano. Para poder ejecutar cualquier programa escrito en un lenguaje de alto nivel se debía, primero, traducir a lenguaje máquina.
En esta época surge la idea del proceso por lotes, agrupar todos los trabajos con un mismo lenguaje, para evitar tener que cargar varias veces el compilador correspondiente. Una vez terminado un programa había que cargar el siguiente. También surge la idea de que esta transición se realice de forma automática.
Para hacer posible este funcionamiento era necesario un programa residente de forma permanente en la memoria del ordenador que se llamaba monitor residente y que se puede considerar un embrión del sistema operativo.
Con la transición automática de trabajos, se eliminan los tiempos muertos debidos a operaciones manuales, agrupándose las tareas correspondientes a varios trabajos en una misma cinta de entrada.
Aparece un nuevo dispositivo de E/S, la cinta magnética. Se utiliza una cinta de sistema que contiene los programas del sistema: compiladores, linkadores, librerías. Surge la especialización en el personal informático, el programador, el operador y el diseñador del HW son personas con funciones propias y claramente diferenciadas.
A pesar de estos avances, siguen vigentes una serie de problemas, el trabajo es no interactivo siendo el tiempo de respuesta muy largo. La corrección de los errores de ejecución se debía hacer obteniendo un volcado de memoria en el instante del error.
El coste de estos ordenadores era tan alto, que el tiempo en que la CPU estaba parada suponía un enorme despilfarro para el organismo que lo poseía.
Para mejorar la velocidad se desarrollaron dos tipos de procesamiento por lotes:
- Procesamiento Off-line.
- Spooling.
Procesamiento por lotes con procesamiento Off-line
El ordenador principal trabajaba con periféricos de E/S rápidos como eran las cintas magnéticas. Y existían ordenadores específicos, mucho más baratos, para efectuar la transferencia de datos entre las cintas magnéticas y las impresoras o las lectoras de tarjetas.
Procesamiento por lotes con Spooling
A finales de los años 50 aparecieron los canales y las interrupciones. El canal es un pequeño procesador especializado en el control de las unidades de E/S. El canal intercambia interrupciones con el procesador central y bajo su supervisión controla la transferencia de datos de E/S.
Gracias a esto surge una nueva técnica de procesamiento por lotes conocida como Spooling (Simultaneous Peripheral Operation On Line) que significa "simultanear la E/S de un trabajo con la ejecución de otro".
Tercera Generación (1965 - 1980)
Al inicio de la década de los 60 muchos fabricantes de computadoras tenían dos líneas de trabajo distintas e incompatibles. Por un lado existían las computadoras científicas, como la IBM7094, que se utilizaban para realizar cálculos numéricos de ciencias e ingeniería. Por otro lado estaban las computadoras comerciales, como la IBM1401, que se utilizaban para el almacenamiento de datos por parte de grandes empresas, como bancos y compañías de seguros.
El mantenimiento de ambas líneas de producción era muy costoso para los fabricantes. Además, si un usuario poseía una maquina IBM1401 no existía la posibilidad de mejorar las prestaciones de ésta de manera gradual y acercarse a las prestaciones de una IBM7094 sino que debía adquirir esta nueva máquina con el problema añadido de que el software que disponía no funcionaba en este nuevo ordenador.
IBM intento resolver estos problemas introduciendo en el mercado el SYSTEM/360. El 360 eran una serie de maquinas compatibles cuya capacidad variaba desde la IBM 1401 hasta la IBM 7094. El SYSTEM/360 estaba diseñado para realizar cálculos tanto científicos como comerciales por lo que una sola familia de maquinas podía satisfacer las necesidades de todos los clientes.
El SYSTEM/360 fue la primera serie de ordenadores que utilizo circuitos integrados, con lo que se consiguió mejorar la relación calidad/precio respecto a los de la segunda generación. También con esta serie de ordenadores se afronto el problema de la escalabilidad del software, ya que debía funcionar en todos los ordenadores de la familia. Esto obligó a realizar un SO muy complejo y enorme, difícil de mantener y con gran cantidad de errores que se llamo OS/360.
A pesar de los problemas, planteó una serie de innovaciones muy importantes entre ellas la multiprogramación y los sistemas de tiempo compartido.
Multiprogramación (multitarea)
Durante la ejecución normal de un programa, se tienen que realizar operaciones de E/S, y durante esos momentos la CPU permanece inactiva. Para solucionar este problema surgió la multiprogramación que permitía la ejecución simultánea de varios programas. Para ello es necesario mantenerlos todos en memoria, y cuando el proceso que esta utilizando la CPU realiza una operación de E/S, el procesador puede cambiar a otro proceso. Esta técnica obliga a que el SO tenga que realizar:
- Gestión de memoria: Al poder tener más de un proceso en memoria, el SO tiene que tener un control espacio ocupado y libre, para poder asignar espacio a nuevos procesos. Además debe articular políticas de seguridad para impedir que un proceso acceda al área de memoria de otro proceso.
- Gestión de procesos: El SO debe planificar el uso de la CPU. El SO debe elegir entre los procesos listos en memoria, cual de ellos se hará con el control del procesador. También debe guardar el contexto del proceso que abandona el procesador, para reanudar su ejecución en el mismo estado en que lo dejo.
Sistemas de tiempo compartido (multiusuario)
Los sistemas operativos de la tercera generación seguían siendo sistemas de proceso por lotes, con lo que el tiempo de respuesta para un trabajo era a menudo de varias horas, y eso sin contar que no hubiese errores.
La necesidad de un tiempo de respuesta corto para los trabajos, hizo que surgiera el concepto de tiempo compartido. La técnica consiste en poder tener a varios usuarios utilizando de forma simultánea el sistema mediante terminales, cuando el usuario ejecuta un comando en el ordenador, este lo procesa tan pronto como le es posible, y la respuesta aparece en el terminal del usuario. El SO intercala la ejecución de cada programa de usuario, asignándole a cada uno una fracción de tiempo de uso de CPU, dando la sensación a cada usuario de disponer de la computadora de manera exclusiva.
La multiprogramación y los sistemas de tiempo compartido están relacionados de la siguiente manera, a cada usuario se le asigna un proceso. En el tiempo compartido los requerimientos de seguridad del sistema operativo son mucho mayores ya que tenemos trabajos de diferentes usuarios y el trabajo de uno no puede acceder a zonas de memoria ocupadas por el trabajo de otro usuario.
Si juntamos multiprogramación con multiusuario tendremos al mismo tiempo varios usuarios en el sistema y cada usuario ejecutando varios procesos concurrentemente.
Durante estos años MIT, Bell Laboratories y General Electric comenzaron el desarrollo de la "computadora de servicio publico" conocida como MULTICS (Multiplexed Information and Computing Service). La idea era tener un servicio de computación centralizado, que al igual que el teléfono o la electricidad pudiera llegar a los hogares y oficinas, donde se conectarían a este servicio a través de simples terminales. El proyecto fue muy ambicioso para el nivel tecnológico de aquella época y fue abandonado en 1969 pero introdujo muchos conceptos originales, como por ejemplo el concepto de proceso, la memoria paginada-segmentada, la memoria virtual con el algoritmo de reemplazamiento de segunda oportunidad, o un sistema de archivos con estructura jerárquica. Tuvo enorme influencia sobre otros sistemas siguientes.
Otro avance durante la tercera generación fue el desarrollo de minicomputadoras, comenzando con la DEC PDP-1 en 1961. Uno de los científicos que había trabajado en el proyecto MULTICS, Ken Thompson, escribió una versión menos ambiciosa de MULTICS para un usuario, sobre una de estas minicomputadoras, en concreto para la DEC PDP-7. A este sistema le llamo UNICS (Uniplexed Information and Computing Service). Este nombre evoluciono al nombre actual con que se le conoce: UNIX.
La cuarta generación (A partir de 1980)
Con la creación de los circuitos integrados LSI (integración a gran escala), chips que contienen miles de transistores en un centímetro cuadrado de silicio, surge la cuarta generación, la era de los ordenadores personales.
El SO que predominan en esta generación son los de la familia de Microsoft, MS-DOS y sus descendientes Windows. La evolución del SO ha ido acompañada de la mejora de la arquitectura del PC, así si el MS-DOS era un sistema monousuario y monotarea, el Windows 2003 Server es un sistema multiusuario, multitarea y que proporciona a los usuarios acceso en tiempo compartido a sus recursos.
Un avance importante de esta época fue el desarrollo de redes de comunicación suficientemente fiables y su aplicación para interconectar ordenadores, desarrollándose sistemas operativos en red y distribuidos.
- Un SO en red nos proporciona un soporte para conectarnos a otros ordenadores, para acceder a sus recursos: archivos impresoras, etc. Cada ordenador tiene su SO local y para acceder a esos recursos un usuario debe tener derechos de accesos Un SO en red necesita de un controlador de red y programas que permitan acceder a la red.
- Un SO distribuido es aquel que esta compuesto por múltiples procesadores. Los sistemas distribuidos pueden ser locales o remotos.
- Locales: Funcionan en máquinas que tienen varios procesadores, comparten los buses, el reloj, la memoria, etc. Los sistemas de múltiple procesador pueden realizar procesamiento simétrico o asimétrico. En el procesamiento simétrico cada procesador ejecuta una copia del sistema operativo y estas copias se comunican cuando es necesario. En el procesamiento asimétrico a cada procesador se le asigna una tarea específica, Así tenemos un procesador principal que distribuye varias tareas entre los demás estableciendo una relación maestro-esclavo.
- Remotos: Funcionan en máquinas que no comparten nada, son máquinas independientes, los procesadores se comunican mediante redes de comunicación. Los procesadores en este sistema pueden ser microprocesadores pequeños, estaciones de trabajo, miniordenadores, etc. Estos sistemas abarcan todos los servicios de red, logrando integrar recursos (impresoras, discos, memoria, procesadores) en una sola máquina virtual. La ventaja de construir este sistema es la rapidez en la computación. Un cálculo se puede dividir en varios subcálculos de ejecución concurrente, el sistema remoto lo reparte entre diferentes sitios y el coste es menor que teniendo un sistema paralelo. Además tenemos una mayor fiabilidad, si un nodo falla, la. carga de trabajo se reparte a otra estación y el sistema sigue trabajando, si bien el rendimiento se verá perjudicado.
Componentes de un Sistema Operativo
Los sistemas operativos han alcanzado un tamaño tan vasto y complejo, que su construcción debe hacerse con cuidado para que funcionen correctamente y puedan modificarse con facilidad.
Un sistema tan grande sólo se puede construir si se divide en componentes más pequeños. Aunque no todos los SO tienen la misma estructura, es bastante habitual dividirlos en el siguiente conjunto de componentes básicos:
- Gestor de procesos
- Gestor de la memoria principal
- Gestor del sistema de archivos
- Gestor del sistema de E/S
- Gestor del almacenamiento secundario
- Sistema de protección
- Sistema de comunicación
- Intérprete de órdenes
Gestor de procesos
Podemos definir un proceso como un programa en ejecución en un momento dado. Un programa es un conjunto de instrucciones escritas en un lenguaje comprensible para un ordenador, pero es una entidad pasiva, que puede estar almacenada en un disco, mientras que un proceso es una, entidad activa, que necesita ciertos recursos para su desarrollo como son el uso de la CPU, memoria, archivos y dispositivos de E/S, etc. Estos recursos se pueden asignar al proceso en el momento en que se crea o durante su ejecución. El proceso consta de una serie de estructuras como son la sección de código, la sección de datos y la sección de pila que almacena direcciones de retorno de las llamadas a las diferentes funciones, los parámetros con que son llamadas, el contenido de las variables locales, etc. También consta de una serie de estructuras que nos servirán para almacenar el contexto del proceso en cada instante, como son el contador de programa, el contenido de los registros del procesador, etc.
El gestor de procesos del SO se encarga de:
- Crear, ejecutar, suspender, reanudar y eliminar procesos.
- Permitir la ejecución concurrente de procesos, evitando el bloqueo mutuo.
- Proporcionar un entorno en que los procesos se puedan comunicar.
Gestor de la memoria principal
Para poder ejecutar un programa, es necesario tenerlo en memoria. Cuando el programa termina, este espacio se puede utilizar para cargar el siguiente programa, y así sucesivamente. Con la multiprogramación mantenemos varios programas en la memoria, a fin de aumentar la tasa de uso de la CPU.
En la gestión de la memoria el SO se encarga de:
- Asignar memoria a los procesos.
- Elegir de los procesos creados, que procesos se cargaran en memoria.
- Proteger el espacio de direcciones de cada proceso de accesos indebidos de otros procesos.
- Conocer el estado de la memoria, qué zonas están ocupadas y que procesos las ocupan y que zonas permanecen libres.
- Sacar un proceso de memoria y liberar todo el espacio ocupado por él.
Gestor de archivos
La gestión de archivos se encarga de proporcionar un almacenamiento a largo plazo de la información, independiente del dispositivo físico en que se encuentre. Los dispositivos más habituales son en soporte magnético, el disco y la cinta, y en soporte óptico, el CD y el DVD. Cada uno de éstos tiene sus propias características y organización física, sin embargo el SO abstrae esas particularidades y proporciona una visión uniforme de los dispositivos de almacenamiento. Independientemente del dispositivo que almacene la información el usuario accederá a ella de la misma forma, será el SO quien establecerá una correspondencia entre el fichero y su ubicación física.
En la gestión de archivos el sistema operativo se encarga de:
- Crear, abrir, guardar, renombrar y borrar archivos.
- Crear, abrir y borrar directorios.
- Copiar archivos y directorios en otras ubicaciones.
Gestor del Sistema de E/S
La gestión del Sistema de E/S se encarga de controlar los diferentes dispositivos de E/S y proporcionar un mecanismo uniforme de acceso a ellos. La velocidad y la complejidad de los periféricos va a determinar la forma en que van a ser conectados al ordenador y si el SO va a poder manipularlos directamente o mediante controladores específicos.
En la gestión de la E/S el sistema operativo se encarga de:
- Adaptar la velocidad para que puedan comunicarse dispositivos que funcionan a velocidades diferentes, en varios órdenes de magnitud, mediante el uso de buffers.
- Planificar la E/S para determinar el mejor orden posible en que se ejecuten y minimizar el tiempo de espera.
- Gestión de errores.
Gestor del almacenamiento secundario
Los programas para que se ejecuten deben residir en memoria principal. Pero como la memoria principal es de capacidad limitada y volátil (pierde su información cuando deja de recibir corriente eléctrica) el sistema debe contar con algún dispositivo de almacenamiento secundario para respaldar la memoria principal.
Una buena gestión del espacio en disco va a permitir mejorar el rendimiento del sistema informático. Al ser la memoria principal muy cara se intenta optimizar manteniendo varios procesos no completos en ella. En esta técnica, conocida como memoria virtual, cuando un proceso intente acceder a una parte que no esté cargado en memoria principal, la buscará en el disco duro y la cargará en ella.
En la gestión del almacenamiento secundario el SO se encarga de:
- Gestión del espacio libre del disco.
- La planificación de los accesos a disco.
- Asignar y liberar espacio en disco.
Sistema de protección
El sistema de protección es un campo muy amplio y abarca dos conceptos, el de seguridad y el de protección.
- Seguridad: El SO debe articular procedimientos para que un proceso o un usuario no accedan a aquellos recursos sobre los que no tengan autorización.
- Protección: engloba tanto la integridad de los datos almacenados en el sistema informático como la necesidad de proteger el sistema, para que ningún proceso acapare de forma exclusiva los recursos
Sistema de comunicación
En la actualidad los sistemas operativos se diseñan orientados a compartir recursos con otros equipos a través de una red. El SO actual integra el software de red, no es necesario instalar ningún software como había que hacerlo con el MS-DOS o Windows 3.1. El SO debe gestionar los diferentes protocolos de comunicación: TCP/IP, NetBEUI, IPX/SPX, para que las diversas aplicaciones que funcionan sobre ellos puedan funcionar.
Intérprete de órdenes
El intérprete de órdenes o comandos es el interfaz entre el usuario y el SO Su función es obtener una orden del usuario y ejecutarla. Hay, intérpretes en modo texto como la del MS-DOS o el Shell de UNIX, aunque actualmente se construyen interfaces más fáciles de manejar para el usuario, usando el entorno de ventanas y menús. Algunos sistemas operativos incluyen el intérprete de comandos en el núcleo, como el MSDOS, mientras que en otros no es más que un programa que puede cambiarse incluso por uno que haya sido diseñado por el propio usuario, como el Linux.
Arquitectura de los Sistemas Operativos
Estructura Monolítica
Es la estructura de los primeros sistemas operativos, constituidos fundamentalmente por un sólo programa compuesto por un conjunto de rutinas (o módulos) entrelazados de tal forma que cada una puede llamar a cualquier otra. Su estructura consiste en no tener ninguna
Las características fundamentales son:
- Construcción del programa final a partir de módulos compilados separadamente que se unen a través del editor de enlace.
- Carecen de protecciones y privilegios.
- Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión.
A pesar de todo, incluso en los sistemas monolíticos se encuentra una arquitectura básica:
- Un programa principal que invoca al procedimiento de servicio requerido.
- Un conjunto de procedimientos de servicio que implementan las llamadas al sistema.
- Un conjunto de procedimientos auxiliares utilizados por los procedimientos de servicio para realizar funciones varias.
Estructura en capas o Jerárquica
La generalización del modelo anterior conduce a estructurar el sistema operativo como una jerarquía de niveles, estando construido cada uno de ellos sobre el anterior.
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software. Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Veamos los niveles que se pueden distinguir:
- Capa 0. Hardware del sistema.
- Capa 1. Planificación de la CPU. Asigna el procesador y alterna entre los procesos cuando ocurren interrupciones o expiran los cronómetros. Gestiona la multiprogramación.
- Capa 2. Admón. de la memoria. Asigna espacio de memoria principal para los procesos. Cuando no hay espacio gestiona un mecanismo de memoria virtual.
- Capa 3. Gestión de la E/S y archivos. Por encima de esta capa los procesos pueden trabajar con dispositivos abstractos de E/S de características uniformes.
- Capa 4. Interfaz de llamadas al sistema. Los procesos de usuario pueden requerir y recibir los servicios disponibles.
- Capa 5. Programas de usuario.
Cuanto más cerca del nivel 0 se encuentra una capa, mayor privilegio de ejecución tendrán los procesos que allí se ejecuten.
Micronúcleo y Cliente Servidor (C/S)
Se basa en lo mismo que el resto de sistemas operativos: el núcleo y los procesos, pero deja reducido el sistema operativo a su mínima expresión, es decir, a un núcleo mínimo. Esto se lleva a cabo implementando la mayoría de las funciones del sistema operativo como procesos de usuario. Para solicitar cualquier servicio, los procesos de usuario, llamados ahora procesos clientes, envían peticiones al proceso servidor, que realiza la función pedida y devuelve una respuesta.
El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes.
Máquina Virtual
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrándole una máquina que al proceso le parece real. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual, y tiene como misión llevar a cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario.
Interfaz con el usuario
Conjunto de llamadas a los servicios del sistema y el shell (un intérprete extendido).
Interfaz para la programación de aplicaciones (API) y llamadas al sistema
Es un conjunto de bibliotecas de programación que elaboran los fabricantes de dispositivos y SO para poder utilizar servicios de dichos elementos. Estas llamadas liberan a los programas de conocer los detalles de los S.O o de los dispositivos, ya que cualquier cosa que se quiera realizar se hará mediante una llamada con los correspondientes parámetros.
Interfaz para los comandos de usuario (shell)
Es la forma en la que el SO se comunica con los usuarios. Esta puede ser en modo texto o modo gráfico.
Modos de explotación de un SO
Por el número de usuarios simultáneos:
- Monousuario: Sólo puede trabajar un usuario con el ordenador. Los recursos están disponibles en exclusiva.
- Multiusuario: Varios usuarios pueden ejecutar procesos distintos sobre la misma CPU y compartir los recursos disponibles de forma simultánea.
En función del número de procesos simultáneos:
- Monoprogramación o monotarea: Sólo se puede ejecutar un proceso y hasta que no finalice no puede iniciarse el siguiente.
- Multiprogramación o multitarea: Cuando varios procesos se puede ejecutar simultáneamente. Normalmente esta ejecución es en forma de pseudo paralelismo, es decir, en un momento sólo un proceso ocupa la CPU.
En función del número de procesadores en uso simultáneo:
- Monoproceso: Cuando se ha instalado un único procesador.
- Multiproceso: Cuando se han instalado varios procesadores y el SO es capaz de usarlos simultáneamente. Puede ser que un mismo trabajo se distribuya en varios procesadores o que cada procesador ejecute un trabajo distinto. Estos suelen soportar multihilado, es decir, subprocesos que comparten entre sí recursos asignados con distintos hilos de control.
En función de los requerimientos temporales.
Según los requerimientos de tiempo para la obtención de resultados de los procesos un sistema puede trabajar en:
- Tiempo real: El tiempo es un condicionante ineludible. La respuesta debe ser lo suficientemente pequeña como el sistema requiera.
- Interactivos: Velocidad de respuesta al usuario. La interactividad se consigue aplicando multiprogramación (time sharing).
- Procesos por lotes. Un proceso comienza a ejecutarse cuando su anterior ha finalizado. No son interactivos.