Download ESTADOS Y TRANSICIONES DE LOS PROCESOS

Document related concepts

Sistema operativo wikipedia , lookup

Proceso (informática) wikipedia , lookup

Planificador wikipedia , lookup

Núcleo (informática) wikipedia , lookup

Interrupción wikipedia , lookup

Transcript
Universidad Bolivariana de Venezuela
P. F. G en Informática para la Gestión Social
U. C. Sistemas Operativos
Tema 3
Gestión de Procesos
Elaborado por:
Profa: Katiuska Núñez
PROCESOS
DEFINICIONES
1. Un proceso es un programa en ejecución.
2. Un proceso consiste en el conjunto formado por:
•
Las instrucciones de un programa destinadas a ser ejecutadas
por el microprocesador.
•
Su estado de ejecución en un momento dado, esto es, los
valores de los registros de la CPU para dicho programa.
•
Su memoria de trabajo, es decir, la memoria que ha reservado y
sus contenidos (espacio de direcciones propio).
•
Otra información
planificación.
que
permite
al
sistema
operativo
3. Es una instancia de un programa que está siendo ejecutada.
4. Un mismo programa se puede ejecutar varias veces a la vez,
dando lugar a varios procesos.
su
PROCESOS
DEFINICIONES
5. Es la unidad de concurrencia básica.
6. Esta definición varía ligeramente en el caso de sistemas
operativos multihilo, donde un proceso consta de uno o más
hilos (Threads), la memoria de trabajo (compartida por todos los
hilos) y la información de planificación.
Un proceso simple tiene un hilo de ejecución.
Los procesos son creados y destruidos por el sistema operativo
¿Cuál es la diferencia entre un programa y un proceso?
La diferencia es que un proceso es una actividad de cierto tipo que
contiene un programa, entradas salidas y estados.
¿Hay diferencias entre un proceso y un hilo?
ESTADOS Y TRANSICIONES DE LOS PROCESOS
El principal trabajo del procesador es ejecutar las instrucciones de
máquina que se encuentran en memoria principal. Estas
instrucciones se encuentran en forma de programas. Para que un
programa pueda ser ejecutado, el sistema operativo crea un nuevo
proceso, y el procesador ejecuta una tras otra las instrucciones
del mismo.
En un entorno de multiprogramación, el procesador intercalará la
ejecución de instrucciones de varios programas que se
encuentran en memoria. El sistema operativo es el responsable de
determinar las pautas de intercalado y asignación de recursos a
cada proceso.
Memoria
proceso1
proceso2
.
.
proceson

¿Por qué múltiples
procesos?
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Modelo de dos estados
p1
Entrada
Expedir
p2 p3 p4 ... pn
CPU
Salir
Pausar
Es necesario que el sistema operativo pueda seguirle la pista a los
procesos, conociendo su estado y el lugar que ocupa en memoria.
Además los procesos que no se están ejecutando deben
guardarse en algún tipo de cola mientras esperan su turno para
ejecutar.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
La creación de procesos
Un proceso puede crear varios procesos nuevos, a través de una
llamada al sistema de crear proceso, durante el curso de ejecución.
El proceso creador se denomina proceso padre, y los nuevos
procesos son los hijos de ese proceso. Cada uno de estos procesos
nuevos puede a su vez crear otros procesos, formando un árbol de
procesos.
Cuando un proceso crea un proceso nuevo, hay dos posibilidades
en términos de ejecución:
•
El padre sigue ejecutándose de forma concurrente con sus hijos.
•
El padre espera hasta que algunos de sus hijos, o todos, han
terminado.
También hay dos posibilidades en términos del espacio de
direcciones del nuevo proceso:
•
El proceso hijo es un duplicado del proceso padre.
•
Se carga un programa en el proceso hijo.
BLOQUE DE CONTROL DE PROCESOS
La terminación de procesos
Un proceso acaba cuando termina de ejecutar su último enunciado y
le pide al S.O que lo elimine utilizando la llamada al sistema salir (exit
o Halt). En este momento, el proceso podría devolver datos(salidas)
a su proceso padre (por medio de la llamada al sistema esperar). El
S.O liberará los recursos del proceso, incluidos la memoria física y
virtual, archivos abiertos y buffers de E/S.
Hay otras circunstancias por la que un proceso puede terminar, esta
puede ser por la llamada al sistema abortar.
Un padre podría terminar la ejecución de uno de sus hijos por
diversas razones, como:
•
El hijo ha excedido en la utilización de algunos de los recursos que
se le asignaron.
•
•
La tarea que se asignó al hijo ya no es necesaria.
El padre va a salir, y el sistema operativo no permite que un hijo
continúe si su padre termina.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Operaciones con procesos:
Crear un proceso
Destruir un proceso
Suspender un proceso
Reanudar un proceso
Cambiar la prioridad de un proceso
Bloquear un proceso
Despertar un proceso
Despachar un proceso
La creación de un proceso implica varias operaciones, incluyendo:
Dar nombre al proceso
Registrarlo en la lista de sistema de procesos conocidos
Determinar la prioridad inicial del proceso
Crear el PCB
Asignar recursos iniciales
S.O localizar toda la información clave sobre el proceso.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Modelo de cinco estados
El modelo anterior de dos estados funcionaría bien con una cola FIFO
y planificación por turno rotatorio para los procesos que no están en
ejecución, si los procesos estuvieran siempre listos para ejecutar. En
la realidad, los procesos utilizan datos para operar con ellos, y puede
suceder que no se encuentren listos, o que se deba esperar algún
suceso antes de continuar, como una operación de Entrada/Salida.
Es por esto que se necesita un estado donde los procesos
permanezcan bloqueados esperando hasta que puedan proseguir. Se
divide entonces al estado No ejecución en dos estados: Listo y
Bloqueado. Se agregan además un estado Nuevo y otro Terminado.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Modelo de cinco estados
Los cinco estados de este diagrama son los siguientes:
Ejecución: el proceso está actualmente en ejecución.
Listo: el proceso está listo para ser ejecutado, sólo está esperando
que el planificador así lo disponga.
Bloqueado: el proceso no puede ejecutar hasta que no se produzca
cierto suceso, como una operación de Entrada/Salida.
Nuevo: El proceso recién fue creado y todavía no fue admitido por el
sistema operativo. En general los procesos que se encuentran en
este estado todavía no fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos
ejecutables, ya sea porque terminó o por algún fallo, como un error
de protección, aritmético, etc.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Transiciones de estados
Cuando un proceso pasa de un estado a otro se dice que hace una
transición de estado, estas transiciones se describen a continuación.
Tra n s ic ió n
Ad m it ir(Pro c e s o ):
Nu e vo - Lis t o
Exp e d ir(Pro c e s o ): Lis t o Eje c u c ió n
Fin d e l Tie m p o (Pro c e s o ):
Eje c u c ió n - Lis t o
Es p e ra s u c e s o (Pro c e s o ):
Eje c u c ió n -Blo q u e a d o
Oc u rre s u c e s o (Pro c e s o ):
Blo q u e a d o - Lis t o
D e s c rip c ió n
Cu a n d o u n p ro c e s o s e h a c re a d o y s e le p e rm it e c o m p e t ir p o r
la CPU.
La a s ig n a c ió n d e la CPU a l p rim e r p ro c e s o d e la lis t a d e lis t o s
s e a t ie n d e y e s e je c u t a d o p o r e l CPU. Mie n t ra s q u e e l p ro c e s o
t e n g a la CPU s e d ic e q u e e s t a e n e je c u c ió n .
El S.O , c u a n d o a u n p ro c e s o s e le e xp ira e l in t e rva lo d e
t ie m p o a s ig n a d o p a ra e s t a r e n e je c u c ió n (CUANTO o
Qu a n t u m ), h a c e q u e e s t e p ro c e s o q u e s e h a lla b a e n e s t a d o
d e e je c u c ió n p a s e a l e s t a d o d e lis t o e in m e d ia t a m e n t e s e
h a c e q u e e l p rim e r p ro c e s o d e la lis t a d e Lis t o s p a s e a e s t a d o
d e e je c u c ió n .
Si u n p ro c e s o q u e s e e n c u e n t ra e n e s t a d o d e e je c u c ió n in ic ia
u n a o p e ra c ió n d e E/S a n t e s q u e t e rm in e s u c u a n t o , e l
p ro c e s o vo lu n t a ria m e n t e a b a n d o n a la CPU, e s d e c ir, e l
p ro c e s o s e b lo q u e a a s í m is m o .
La ú n ic a t ra n s ic ió n p o s ib le e n n u e s t ro m o d e lo b á s ic o o c u rre
c u a n d o a c a b a u n a o p e ra c ió n d e E/S (o a lg u n a o t ra c a u s a p o r
la q u e e s t é e s p e ra n d o e l p ro c e s o ), y e s t a t e rm in a p a s a a e l
e s t a d o d e lis t o .
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Ocurre
suceso
Modelo de cinco estados
ESTADOS Y TRANSICIONES DE LOS PROCESOS
En este modelo los estados Bloqueado y Listo tienen ambos una
cola de espera. Cuando un nuevo proceso es admitido por el
sistema operativo, se sitúa en la cola de listos. A falta de un
esquema de prioridades ésta puede ser una cola FIFO. Los
procesos suspendidos son mantenidos en una cola de
bloqueados. Cuando se da un suceso se pasan a la cola de listos
los procesos que esperaban por ese suceso.
Si existe un esquema con diferentes niveles de prioridad de
procesos es conveniente mantener varias colas de procesos
listos, una para cada nivel de prioridad, lo que ayuda a determinar
cuál es el proceso que más conviene ejecutar a continuación.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
¿Por qué razón se implementa el estado Bloqueado?
La razón era poder hacer que los procesos se puedan mantener
esperando algún suceso, por ejemplo una Entrada/Salida. Sin
embargo, al ser mucho más lentas estas operaciones, puede
suceder en nuestro modelo de cinco estados que todos los
procesos en memoria estén esperando en el estado Bloqueado y
que no haya más memoria disponible para nuevos procesos.
Una solución es el intercambio. El intercambio se lleva a cabo
moviendo una parte de un proceso o un proceso completo desde
la memoria principal al disco, quedando en el estado Suspendido.
Después del intercambio, se puede aceptar un nuevo proceso o
traer a memoria un proceso suspendido anteriormente.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
El problema que se presenta ahora es que puede ser que si se
decide traer a memoria un proceso que está en el estado
Suspendido, el mismo todavía se encuentre bloqueado. Sólo
convendría traerlo cuando ya está listo para ejecutar, esto implica
que ya aconteció el suceso que estaba esperando cuando se
bloqueó. Para tener esta diferenciación entre procesos
suspendidos, ya sean listos como bloqueados, se utilizan cuatro
estados: Listo, Bloqueado, Bloqueado y suspendido y Listo y
suspendido.
ESTADOS Y TRANSICIONES DE LOS PROCESOS
Suspendido
ESTRUCTURAS DE CONTROL DEL SO
Tablas de memoria:
Se emplean para saber que uso reciben la memoria principal y
secundaria. También para obtener cualquier otro tipo de
información, relacionada con la memoria.
Tablas de archivos:
Almacenan toda la información que contiene un fichero o archivo.
su posición en la memoria secundaria, estado actual y otros
atributos.
Tablas de dispositivos de E/S:
Almacenan toda la información sobre los periféricos o
dispositivos de E/S.
Tablas de procesos:
Se utilizan para gestionar toda la información que utiliza el
Sistema Operativo al manejar los distintos procesos. Estructuras
de Control de Procesos:
Cada proceso del Sistema Operativo esta representado por un
conjunto de estructuras, que forman la llamada “imagen del
proceso”.
ESTRUCTURAS DE CONTROL DEL SO
Tablas de Memoria
Memoria
Dispositivos
Archivos
Procesos
Tablas de E/S
Imagen del
proceso
Proceso 1
Tablas de archivos
Tablas de Pocesos
Proceso 1
Proceso 2
Proceso 3
.
.
.
Proceso n
Imagen del
proceso
Proceso n
Colección
de
programa,
datos, pila y
atributos
(PCB).
BLOQUE DE CONTROL DE PROCESOS
El bloque de control de procesos es la estructura de
datos central y más importante de un sistema
operativo. Cada bloque de control de Proceso contiene
toda la información de un proceso necesaria para el
SO. Los bloques son leidos y/o modificados por casi
todos los módulos de un SO. incluyendo aquellos que
tienen que ver con la planificación, la asignación de
recursos, el tratamiento de interrupciones y el análisis
y supervisión del rendimiento.
BLOQUE DE CONTROL DE PROCESOS
Es la manifestación para el sistema operativo de que existe un
proceso, es decir cada proceso es representado por su PCB. El
PCB es una estructura de datos que contiene cierta información
importante acerca del proceso.
Almacena:
• Estado actual del proceso
• Identificación unívoca del proceso
• Prioridad del proceso
• Apuntadores a la zona de memoria asignada a cada proceso
• Apuntadores a los archivos abiertos
• Apuntadores para asignar recursos
• Área de salvaguarda de registros
• Un apuntador al siguiente PCB
En Linux el PCB se conoce como task_struct
El PCB es un almacenamiento central de información que permite al
S.O localizar toda la información clave sobre el proceso.
CONTROL DE PROCESOS
Modo de Ejecución:
La mayoria de los procesadores dan soporte para dos modos de
ejecución cuando mínimo.
• Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego
restringido de las aplicaciones. Es el modo menos privilegiado. Los
programas de usuario se ejecuta en este modo.
• Modo del sistema (supervisor, control o núcleo): la CPU debe poder
ejecutar el juego completo de instrucciones. Modo con mayor privilegio.
La razón por lo cual se usan los dos modos es para proteger al sistema
operativo y a las tablas importantes del mismo, tales como bloques de
control de procesos, etc.
¿Cómo conoce el procesador en qué modo va a ejecutar?
¿Cómo se cambia de modo?
CONTROL DE PROCESOS
A continuación se mencionan los pasos que entran en juego en la
creación de los procesos:
1. Asignar un único identificador al nuevo proceso.
2. Asignar espacio para el proceso.
3. Debe inicializarse el bloque de control del proceso.
4. Se deben establecer los enlaces apropiados.
5. Puede haber otras estructuras de datos que crear o ampliar.
MANEJO DE INTERRUPCIONES
A nivel físico, una interrupción se solicita activando una señal que
llega a la unidad de control del CPU. El agente generador o
solicitante de la interrupción ha de activar la mencionada señal
cuando necesite que se le atienda, es decir, que se ejecute un
programa que le atienda.
Ante la solicitud de una interrupción, siempre y cuando esté
habilitado ese tipo de interrupción, la unidad de control realiza un
ciclo de aceptación de interrupción. Este ciclo se lleva a cabo en
cuanto termina la ejecución de la instrucción máquina que se esté
ejecutando y consiste en las siguientes operaciones:
• Salva algunos registros del procesador, como son el de estado
(PSW) y el contador de programa (PC).
• Eleva el nivel de ejecución del procesador, pasándolo a núcleo.
• Carga un nuevo valor en el contador de programa, por lo que pasa
a ejecutar otro programa.
MANEJO DE INTERRUPCIONES
El SO ocupa una posición intermedia entre los programas de
aplicación y el hardware. No se limita a utilizar el hardware a
petición de las aplicaciones ya que hay situaciones en las que es
el hardware el que necesita que se ejecute código del SO. En tales
situaciones el hardware debe poder llamar al sistema, pudiendo
deberse estas llamadas a dos condiciones:
•
Algún dispositivo de E/S necesita atención.
•
Se ha producido una situación de error al intentar ejecutar una
instrucción del programa (normalmente de la aplicación).
En ambos casos, la acción realizada no está ordenada por el
programa de aplicación, es decir, no figura en el programa.
Según los dos casos anteriores se pueden distinguir dos clases
de interrrupciones: las interrupciones y la excepciones:
MANEJO DE INTERRUPCIONES
Interrupción: señal que envía un dispositivo de E/S a la CPU para
indicar que la operación de la que se estaba ocupando, ya ha
terminado.
Excepción: una situación de error detectada por la CPU mientras
ejecutaba una instrucción, que requiere tratamiento por parte del
SO.
Tratamiento de las interrupciones
Una interrupción se trata en todo caso, después de terminar la
ejecución de la instrucción en curso.
El tratamiento depende de cuál sea el dispositivo de E/S que ha
causado la interrupción, ante la cual debe poder identificar el
dispositivo que lo ha causado.
MANEJO DE INTERRUPCIONES
Tratamiento de las interrupciones
En una interrupción ordinaria, el control se transfiere primero al
gestor de interrupciones, quien lleva a cabo algunas tareas
básicas y, después, se salta a la rutina del sistema operativo que
se ocupa del tipo de interrupción que se ha producido. Algunos
ejemplos de estas interrupciones son:
- Interrupción de reloj: Un reloj es un dispositivo que genera
interrupciones periódicamente. Ante una interrupción de este tipo,
un sistema operativo de tiempo compartido, entre otras cosas,
determina si el proceso en ejecución ha alcanzado el máximo
tiempo de ejecución que se le concedió. Si es así, el proceso
pasará a estado listo, y se asignará la CPU a otro proceso.
MANEJO DE INTERRUPCIONES
Tratamiento de las interrupciones
- Interrupción de E/S: El sistema operativo determina exactamente
qué acción de E/S ha ocurrido. Si se trata de un evento o suceso
por el que esperaban uno o más procesos, entonces el sistema
operativo traslada todos los procesos bloqueados en dicho evento
al estado listo, y determina si reanuda la ejecución del proceso
interrumpido o pasa a otro de mayor prioridad.
- Falta de memoria: Un proceso hace una referencia a una
dirección que no se encuentra en memoria y que debe traerse de
memoria secundaria (esta posibilidad se estudiará en el módulo de
gestión de la memoria). Después de hacer la solicitud de E/S para
traer esa o esas direcciones de memoria, el sistema operativo
lleva a cabo un cambio de contexto para reanudar la ejecución de
otro proceso; el proceso que cometió la falta de memoria se pasa
al estado bloqueado. Después de que las direcciones aludidas se
carguen en memoria, dicho proceso se pondrá en estado listo.
MANEJO DE INTERRUPCIONES
Ciclo de instrucciones con interrupciones
TRATAMIENTO SIMPLE DE UNA INTERRUPCION
MANEJO DE INTERRUPCIONES
Importancia de las interrupciones
El mecanismo de tratamiento de las interrupciones permite al SO
utilizar la CPU en servicio de una aplicación, mientras otra
permanece a la espera de que concluya una operación en un
dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de
E/S ha terminado y el SO puede intervenir entonces, si es
conveniente, para hacer que el programa que estaba esperando
por el dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales
de interrupción. Por ello las interrupciones pueden inhibirse por
programa (aunque esto no deben poder hacerlo las mismas).
MANEJO DE INTERRUPCIONES
Excepciones
Cuando la CPU intenta ejecutar una instrucción incorrectamente
construida, la unidad de control lanza una excepción para permitir al SO
ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la
instrucción en curso es abortada. Las excepciones al igual que las
interrupciones deben estar identificadas.
Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por
diversas razones:
• El código de operación puede ser incorrecto.
• Se intenta realizar alguna operación no definida, como dividir por cero.
• La instrucción puede no estar permitida en el modo de ejecución actual.
• La dirección de algún operando puede ser incorrecta o se intenta violar
alguno de sus permisos de uso.
MANEJO DE INTERRUPCIONES
Importancia de las excepciones
El mecanismo de tratamiento de las excepciones es esencial para
impedir, junto a los modos de ejecución de la CPU y los
mecanismos de protección de la memoria, que las aplicaciones
realicen operaciones que no les están permitidas. En cualquier
caso, el tratamiento específico de una excepción lo realiza el SO.
Como en el caso de las interrupciones, el hardware se limita a
dejar el control al SO, y éste es el que trata la situación como
convenga.
Es bastante frecuente que el tratamiento de una excepción no
retorne al programa que se estaba ejecutando cuando se produjo
la excepción, sino que el SO aborte la ejecución de ese programa.
Este factor depende de la pericia del programador para controlar
la excepción adecuadamente.
NÚCLEO DEL SISTEMA OPERATIVO
El núcleo del sistema operativo, también llamado kernel (núcleo) es aquella
parte de un sistema operativo que interactúa de forma directa con el
hardware de una máquina. Entre las funciones principales del kernel se
encuentran:
• La gestión de procesos.
- Creación y terminación de los procesos
- Planificación y expedición de los procesos
- Cambios de los procesos
- Sincronización de procesos y soporte para la comunicación entre
procesos
- Gestión de los bloques de control de procesos
• La gestión de memoria
- Asignación de espacio de direcciones a los procesos.
- Intercambio
- Gestión de Páginas y segmentos.
NÚCLEO DEL SISTEMA OPERATIVO
• La administración del sistema de archivos.
• La administración de servicios de entrada/salida.
- Gestión de buffers.
- Asignación de canales de E/S y dispositivos a los procesos
• La asignación de recursos entre los usuarios.
• Tratamiento de interrupciones.
• Supervisión
La manipulación del hardware se realiza por medio de controladores de
dispositivo, que conocen la forma de comunicarse directamente con el
hardware de la máquina.
El software por su parte puede comunicarse con el kernel por medio de
llamadas al sistema, las cuales le indican al kernel que realice tareas como
abrir y escribir un archivo, ejecutar un programa, finalizar un proceso u
obtener la fecha y hora del sistema.
NÚCLEO DEL SISTEMA OPERATIVO
Núcleo monolítico
Estos sistemas tienen un núcleo grande y complejo, que engloba todos los
servicios del sistema. Está programado de forma no modular, y tiene un
rendimiento mayor que un micronúcleo. Sin embargo, cualquier cambio a
realizar en cualquier servicio requiere la recompilación del núcleo y el
reinicio del sistema para aplicar los nuevos cambios. Se ejecutan en el
espacio de memoria del núcleo mismo. No emplea un sistema de mensajes.
NÚCLEO DEL SISTEMA OPERATIVO
Núcleo monolítico
Un sistema operativo con núcleo monolítico concentra todas las
funcionalidades posibles (planificación, sistema de archivos, redes,
controladores de dispositivos, gestión de memoria, etc) dentro de un gran
programa. El mismo puede tener un tamaño considerable. Un error en una
rutina puede propagarse a todo el núcleo. Todos sus componentes se
encuentran integrados en un único programa que ejecuta en un único
espacio de direcciones. En este tipo de sistemas, todas las funciones que
ofrece el sistema operativo se ejecutan en modo supervisor.
Ejemplos: UNIX y Linux
NÚCLEO DEL SISTEMA OPERATIVO
Microkernel (Micronúcleo)
Las partes funcionales están divididas en unidades separadas con
mecanismos de comunicación estrictos entre ellos.
Es un tipo de núcleo de un sistema operativo que provee un conjunto
deprimitivas o llamadas al sistema mínimas, para implementar servicios
básicos como espacios de direcciones, comunicación entre procesos y
planificación básica.
Todos los otros servicios (gestión de memoria, sistema de archivos,
operaciones de E/S, etc.), que en general son provistos por el núcleo, se
ejecutan como procesos servidores en espacio de usuario.
En un principio pretendía ser una solución a la creciente complejidad de los
sistemas operativos.
Las principales ventajas de su utilización son la reducción de la
complejidad, la descentralización de los fallos (un fallo en una parte del
sistema no lo colapsaría por completo) y la facilitación para crear y depurar
controladores de dispositivos.
NÚCLEO DEL SISTEMA OPERATIVO
Microkernel (Micronúcleo)
Por otro lado, sus principales dificultades son la complejidad en la
sincronización de todos los módulos que componen el micronúcleo y su
acceso a la memoria, la Integración con las aplicaciones.
Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas
de hardware, según los defensores de esta tendencia. Sus detractores le
achacan, fundamentalmente, mayor complejidad en el código, menor
rendimiento, o limitaciones en diversas funciones.
Ejemplos: Minix, Hurd