Upload
others
View
23
Download
0
Embed Size (px)
Citation preview
MODULO II. PROCESOS2.2 Hilos y Micronucleos
5/10/07
Sistemas OperativosINF - 151
Resumen preparado por Miguel Cotaña
2
El concepto de proceso es más complejo y
sutil de lo que se ha visto hasta este
momento y, de hecho, contiene dos
conceptos diferentes y potencialmente
independientes:
Relativo a la propiedad de recursos
Relativo a la planificación/ejecución
En muchos SO esta distinción ha llevado al
desarrollo de estructuras conocidas como
hilos (threads)
Procesos e hilosProcesos e hilos
3
Kernel
WebSvr
Browser
Usuario
Browser
Usuario
Browser
Usuario
Browser
Usuario
Browser
Usuario
Proceso principal controla la actividad
de cada hebra
Se instancia un hilo por cada usuario
conectado, además de tener hilos
disponibles para nuevas conexiones
4
Se refiere a la capacidad de un SO de dar
soporte a múltiples hilos de ejecución en un
solo proceso. Podemos mencionar:
Monohilo: un proceso, un hilo (por
ejemplo: MS-DOS)
Multiproceso con un solo hilo: soportan
múltiples proceso de usuario, pero sólo un
hilo por proceso (por ejemplo, algunos
UNIX)
MultihiloMultihilo
5
Multihilo con un solo proceso:
soporta un único proceso de usuario,
y múltiples hilos (por ejemplo,
algunos JAVA)
Multihilo con varios procesos:
hace uso de múltiples procesos, cada
uno de los cuales soporta múltiples
hilos (por ejemplo, WINDOWS,
SOLARIS, Mach, OS/2)
6
Un proceso un hilo Un proceso múltiples hilos
Múltiples procesos, un hilo por proceso Múltiples procesos, múltiples hilos por proceso
7
En un entorno multihilo, un proceso se
define como la unidad de asignación de
recursos y una unidad de protección. Se
asocian con procesos los siguientes:
Un espacio de direcciones virtuales que
soportan la imagen del proceso
Acceso protegido a procesadores, otros
procesos (comunicación entre procesos),
archivos y recursos de E/S.
8
Dentro de un proceso puede existir 1 o más
hilos, cada uno con:
Un estado de ejecución por hilo
(ejecutando, listo, etc)
Un contexto de hilo que se almacena
cuando no está en ejecución
Una pila de ejecución
Por cada hilo, espacio de almacenamiento
para variables locales
Acceso a la memoria y recursos de su
proceso, compartido con todos los hilos de
su mismo proceso.
9
Modelo de proceso con un único hilo y multihiloModelo de proceso con un único hilo y multihilo
Bloque decontrol delproceso
Espacio dedireccionesde usuario
Pila deusuario
Pila denúcleo
Modelo de proceso conun único hilo
Bloque decontrol delproceso
Espacio dedireccionesde usuario
Bloque decontrol del
hilo
Pila delusuario
Pila denúcleo
Bloque decontrol del
hilo
Pila delusuario
Pila delusuario
Bloque decontrol del
hilo
Pila denúcleo
Pila denúcleo
hilohilo hilo
Modelo de procesomultihilo
10
Los hilos, al igual que los procesos, tienen:
Estados de ejecución. los estados son:
Ejecutando, Listo y Bloqueado. Si se expulsa
un proceso, todos sus hilos se deben
expulsar porque comparten el espacio de
direcciones del proceso. Tiene 4 operaciones
asociadas (creación, bloqueo, desbloqueo,
finalización) con cambios:
Sincronizar entre hilos: interrelaciona las actividades de los hilos, para que no
interfieran entre ellos.
Funcionalidades de los hilosFuncionalidades de los hilos
11
Hilos de nivel de usuario (user-levelthread, ULT). En un entorno ULT puro, la aplicación gestiona todo el trabajo de los
hilos y el núcleo no es consciente de la
existencia de los mismos.
Hilos a nivel de núcleo (kernel-supported threads, KLT): También
llamado procesos ligeros (lightweight
processes). En este entorno, el núcleo
gestiona todo el trabajo de gestión de hilos.
Categorias de implementación de hilosCategorias de implementación de hilos
12
Biblioteca de hilos
P
Espaciode
usuario
Espaciode
núcleo
Espaciode
núcleo
Espaciode
núcleo
PPP
Bibliotecade hilos
Espaciode
usuario
Espaciode
usuario
Nivel de usuario puro
Nivel de núcleo puro combinado
13
Tradicionalmente, se ha visto a un ordenador
como una máquina secuencial. Los lenguajes de
programación requieren que el programador
especifique algoritmos como una secuencia de
instrucciones. Un procesador ejecuta programas
a través de la ejecución de instrucciones
máquina en secuencia y de una en una. Cada
instrucción se ejecuta como una secuencia de
operaciones (ir a buscar la instrucción, ir a
buscar los operandos, realizar operación,
almacenar resultados)
Multiprocesamiento simétricoMultiprocesamiento simétrico
14
A medida que a evolucionado la tecnología,
se tiene oportunidades para el paralelismo,
normalmente para mejorar el rendimiento y,
en algunos casos, para mejorar la fiabilidad.
Flyn, propone las siguientes categorías:
Única instrucción, único flujo de datos –Single instruction single data (SISD) stream. Un solo procesador ejecuta una única instrucción que opera sobre datos
almacenados en una sola memoria.
Arquitectura Multiprocesamiento simétrico (SMP)Arquitectura Multiprocesamiento simétrico (SMP)
15
Única instrucción, múltiples flujos de datos – Single instruction multiple data (SIMD) stream. Una única instrucción de máquina controla la ejecución simultánea de
un número de elementos de proceso.
Múltiples instrucciones, único flujo de datos – Multiple instruction single data (MISD) stream. Se transmite una
secuencia de datos a un conjunto de
procesadores, cada uno de los cuales
ejecuta instrucciones diferentes.
16
Múltiples instrucciones, múltiples flujos de datos – Multiple instruction multipledata (MIMD) stream. Un conjunto de
procesadores ejecuta simultáneamente
diferentes secuencias de instrucciones en
diferentes conjuntos de datos.
Con la organización MIMD, los procesadores
son de propósito general, porque deben ser
capaces de procesar todas las instrucciones
necesarias para realizar las
transformaciones de datos apropiadas.
17
MIMD se puede subdividir por la forma en
que se comunican los procesadores. Si cada
procesador tiene una memoria dedicada,
cada elemento de proceso es en sí un
computador. La comunicación entre los
computadores se puede realizar a través de
rutas prefijadas o bien a través de redes.
18
Este sistema es conocido como un cluster, o multicomputador. Si los procesadores
comparten una memoria común, entonces
cada procesador accede a los programas y
datos almacenados en la memoria
compartida, y los procesadores se
comunican entre sí a través de dicha
memoria; este sistema se conoce como
multiprocesador de memoria compartida.
19
Procesadores paralelos
SIMD(única instrucción
múltiples flujos de datos)
MIMD(múltiples instruccionesmúltiples flujos de datos)
Memoria compartida(fuertemente acoplados)
Memoria distribuida(débilmente acoplados)
Maestro/esclavo Multiprocesadoressimétricos(SMP)
clusters
Arquitectura de procesos paralelosArquitectura de procesos paralelos
20
En un multiprocesador simétrico (Symmetric Multiprocessor, SMP), el
núcleo puede ejecutar en cualquier
procesador, y normalmente cada procesador
realiza su propia planificación del conjunto
disponible de procesos e hilos. El núcleo
puede construirse como múltiples procesos o
múltiples hilos, permitiéndose la ejecución
de partes del núcleo en paralelo
21
El enfoque SMP complica al SO, ya que debe
asegurar que dos procesadores no
seleccionan un mismo proceso y que no se
pierde ningún proceso de la cola. Se deben
emplear técnicas para resolver y sincronizar
el uso de los recursos.
El diseño de SMP y clusters es complejo, e
involucra temas relativos a la organización
física, estructuras de interconexión,
comunicación entre procesadores, diseño del
SO y técnicas de aplicaciones software.
22
Organización SMPOrganización SMP
Procesador
L1 cache
L2 cache
Procesador
L1 cache
L2 cache
Procesador
L1 cache
L2 cache
AdaptadorDe E/S
AdaptadorDe E/S
AdaptadorDe E/S
Memoriaprincipal
SubsistemaDe E/S
Bus del sistema
23
Un SO SMP gestiona los procesadores y
otros recursos, de manera que el usuario
vea como si fuera un sistema uniprocesador
multiprogramado. Las claves de diseño son:
Procesos o hilos simultáneos concurrentes. Múltiples procesadores
pueden ejecutar la misma o diferentes
partes del código del núcleo, las tablas y la
gestión de las estructuras del núcleo deben
ser gestionadas apropiadamente para
impedir interbloqueos.
Consideraciones de diseño de SO MultiprocesadorConsideraciones de diseño de SO Multiprocesador
24
Planificación. Se puede realizar por
cualquier procesador, por lo que se deben
evitar conflictos. Si se utiliza multihilo a nivel
de núcleo, existe la posibilidad de planificar
múltiples hilos del mismo proceso
simultáneamente en múltiples procesadores.
Sincronización. Con múltiples procesos
activos, que pueden acceder a espacios de
direcciones compartidas o recursos
compartidos de E/S, se debe tener cuidado
en proporcionar una sincronización eficaz.
25
Gestión de memoria. Es un
multiprocesador debe tratar con los aspectos
encontrados en las máquinas uniprocesador.
Fiabilidad y tolerancia a fallos. El SO no se debe degradar en caso de fallo de un
procesador. El planificador y otras partes del
SO deben darse cuenta de la pérdida de un
procesador y reestructurar las tablas de
gestión apropiadamente.
26
Es la pequeña parte central de un SO que
proporciona las bases para extensiones
modulares.
Surgen algunos cuestionamientos, por ejemplo,
cómo de pequeño debe ser un núcleo para
denominarse micronúcleo, cómo diseñar
manejadores de dispositivos para obtener el
mejor rendimiento a la vez que se abstraen sus
funciones del hardware.
En teoría este enfoque proporciona un alto
grado de flexibilidad y modularidad.
MicronúcleosMicronúcleos
27
Arquitectura del núcleoArquitectura del núcleo
Gestión de primitivas de proceso
Memoria virtual
Gestión de E/S y de dispositivo
Comunicación entre procesos
Sistema de ficheros
usuarios
HARDWARE
Núcleo por capas
28
Micronúcleo
Proceso cliente
HARDWARE
Micro Núcleo
Manejador de dispositivos
Servidor de ficheros
Servidor de procesos
Memoria virtual
Modo
usuario
Modo
núcleo
29
Entre las ventajas, podemos mencionar:
Interfaces uniformes
Extensibilidad
Flexibilidad
Portabilidad
Fiabilidad
Soporte de sistemas distribuidos
Soporte de SO OO
Beneficios de una organización micronúcleoBeneficios de una organización micronúcleo
30
Una desventaja citada a menudo es el
rendimiento. Lleva más tiempo construir y
enviar y enviar mensajes a través del
micronúcleo, y aceptar y decodificar la
respuesta, que hacer una simple llamada a
un servicio.
Una respuesta es hacer el micronúcleo, no
más grande, sino más pequeño, que elimina
pérdidas de rendimiento y mejora la
flexibilidad y la fiabilidad
Rendimiento del microúcleoRendimiento del microúcleo
31
El micronúcleo de 1ra. Generación tenía 300
Kbytes de código y 140 interfaces de
llamadas al sistema
Un ejemplo de micronúcleo pequeño de 2da.
Generación es el L4, que consiste en 12 Kbytes de código y 7 llamadas al sistema.
Las experimentaciones realizadas en estos
sistemas indican que pueden funcionar tan
bien o mejor que SO por capas como por
ejemplo, UNIX
32
Lamentablemente, debido a los tamaños de
los micronúcleos, no se pueden facilitar
reglas concernientes a qué funcionalidades y
estructuras a implementarse. Un conjunto
mínimo de funciones y servicios:
Gestión de memoria a bajo nivel. El micronúcleo tiene que controlar el concepto
hardware de espacio de direcciones para
hacer posible la implementación de
protección a nivel de proceso
Diseño del micronúcleoDiseño del micronúcleo
33
Con tal de que el micronúcleo se
responsabilice de la asignación de cada
página virtual a un marco físico, la parte
principal de gestión de memoria, incluyendo
la protección del espacio de memoria entre
procesos, el algoritmo de reemplazo de
página y otra lógica de paginación, pueden
implementarse fuera del núcleo. Por
ejemplo, un módulo de MV fuera del
micronúcleo decide cuándo traer una página
a memoria y qué página presente en
memoria debe reemplazarse.
34
Funcionamiento del paginador externoFuncionamiento del paginador externo
micronúcleo
aplicación paginador
Llanada afunciónespacio-direcciones
reanudar
Fallo depágina
Procesamiento de fallo de página
35
Liedtke, recomienda 3 operaciones de
micronúcleo que pueden dar soporte a la
paginación externa y a la gestión de MV:
Conceder (Grant). El propietario de un
espacio de direcciones ( un proceso puede
conceder alguna de sus páginas a otro
proceso). El núcleo borra estas páginas del
espacio de memoria del otorgante y se las
asigna al proceso especificado.
36
Proyectar (Map). Un proceso puede
proyectar cualquiera de sus páginas en el
espacio de direcciones de otro proceso, de
forma que ambos procesos tienen acceso a
las páginas. Esto genera memoria
compartida entre dos procesos
Limpiar (Flush). Un proceso puede
reclamar cualquier página que fue concedida
o asociada a otro proceso.
37
La forma básica de comunicarse entre 2
procesos o hilos en un SO con micronúcleo
son los mensajes.Un mensaje incluye una cabecera que
identifica a los procesos remitente y receptor
y un cuerpo que contiene directamente los
datos, un puntero a un bloque de datos, o
alguna información de control del proceso
Comunicación entre procesosComunicación entre procesos
38
Un puerto es, en esencia una cola de
mensajes destinada a un proceso particular,
un proceso puede tener múltiples puertos.
Asociada a cada puerto existe una lista que
indica qué procesos se pueden comunicar
con éste. Las identidades y funcionalidades
de cada puerto se mantienen en el núcleo.
Un proceso puede conceder nuevas
funcionalidades mandando un mensaje al
núcleo con las nuevas funcionalidades del
puerto.
39
Con una arquitectura micronúcleo es posible
manejar las interrupciones hardware como
mensajes e incluir los puertos de E/S en los
espacios de direcciones. El micronúcleo
puede reconocer las interrupciones, pero no
las puede manejar. Más bien, genera un
mensaje para el proceso a nivel de usuario
que está actualmente asociado con esa
interrupción
Gestión de E/S e interrupcionesGestión de E/S e interrupciones
40
De esta forma, cuando se habilita una
interrupción, se asigna un proceso de nivel
de usuario a esa interrupción y el núcleo
mantiene las asociaciones. La
transformación de las interrupciones en
mensajes las debe realizar el micronúcleo,
pero el micronúcleo no está relacionado con
el manejo de interrupciones específico de los
dispositivos.
41
Liedtke, sugiere ver hardware como un
conjunto de hilos que tienen identificadores
de hilo único y que mandan mensajes
(únicamente con el identificador de hilo) a
hilos asociados en el espacio usuario. El hilo
receptor determina si el mensaje proviene
de una interrupción y determina la
interrupción específica.
42
La estructura del código a nivel de usuario:
hilo del dispositivo:
do
waitFor(msg, remitente);
if (remitente==mi_interrupción_hardware)
{
leer/escribir puertos E/S;
reanudar interrupción hardware;
}
else……….
while(true);
43
Las estructuras de los procesos y los servicios
proporcionada por el núcleo de Windows son de
propósito general, permitiendo a cada
subsistema del SO que emule una estructura y
funcionalidad particular del proceso. Algunas
características de los procesos de Windows:
Los procesos Windows están
implementados como objetos
Un proceso ejecutable puede contener uno
o más hilos
Tanto el objeto proceso como el objeto
hilo, tienen sincronización preconstruidas.
Gestión de hilos y SMP en WindowsGestión de hilos y SMP en Windows
44
Objeto deproceso
Ficha deacceso
Hilo x
Hilo y
Hilo z
Descriptores de direcciones virtuales
Objetos disponibles
Manejador 1
Manejador 2
Manejador 3
Un proceso Windows y sus recursos
Tabla demanejadores
45
La estructura OO de Windows facilita el
desarrollo de un proceso de propósito
general. Windows hace uso de 2 tipos de
objetos relacionados con los procesos:
procesos e hilos.
Cada proceso Windows se representa por un
objeto. Un proceso se define por una serie
de atrinutos y encapsula una serie de
acciones, o servicios, que puede realizar
Objeto proceso y objeto hiloObjeto proceso y objeto hilo
46
Crear proceso
Abrir proceso
Solicitar información
Proceso actual
Terminar proceso
Id proceso
Descriptor de seguridad
Prioridad base
Afinidad de procesador
Límite de cuota
Tiempo de ejecución
Contadores de E/S
Puertos de excepción
Estado de salida
Proceso
Crear hilo
Abrir hilo
Solicitar información
Hilo actual
Terminar hilo
Suspender
reanudar
Id hilo
Contexto
Prioridad
Afinidad
Tiempo de ejecución
Estado de alerta
Testigo de personificación
Estado de salida
hiloTipo deobjeto
atributos
servicios
47
Un hilo de Windows se encuentra en uno de
los siguientes 6 estados:
Listo (ready)
Substituto (standby)
Ejecutando (running)
Esperando (waiting)
Transición (transition)
Terminado (terminated)
Estado de los hilosEstado de los hilos
48
Windows soporta una configuración
hardware SMP. Los hilos de cualquier
proceso, incluyendo los del ejecutivo,
pueden ejecutar en cualquier procesador.
Por defecto, el micronúcleo utiliza la política
afinidad débil (soft affinity) para asignar
procesadores a los hilos: el planificador
intenta asignar un proceso listo al mismo
procesador que lo ejecutó la última vez. Es
posible restringir la ejecución de sus hilos a
algunos procesadores afinidad fuerte
Soporte para SMPSoporte para SMP
49
Gestión de hilos y SMP en SolarisGestión de hilos y SMP en Solaris
Arquitectura multihiloArquitectura multihilo
Utiliza 4 conceptos relacionados con hilos:
Procesos. incluye el espacio de direcciones del usuario, la pila y el BCP
Hilos de nivel de usuario. Son la interfaz para las aplicaciones paralelas
Procesos ligeros. Se planifican de forma
independiente por el núcleo.
Hilos de núcleo. Ejecutan en cualquier procesador del sistema
50
Id usuario
Id proceso
Registros
Pila
…………..
Mascara de
Señales
Prioridad
Id LWP
Tabla de activación de señales
Descriptores de archivos
Mapa de memoria
Registros
Pila
…………..
Mascara de
Señales
Prioridad
Id LWP
Estado del procesador
LWP 1
LWP 2
Estructura de 1 proceso en SolarisEstructura de 1 proceso en Solaris
51
La ejecución de los hilos a nivel de usuario
se gestiona por la biblioteca de los hilos.
Pueden ocurrir los siguientes sucesos:
Sincronización
Suspensión
Expulsión
Ceder paso
Ejecución de hilosEjecución de hilos
52
Un proceso, o tarea, en Linux se representa por
una estructura de datos task_struct, que
contiene información de diversas categorías:
Estado
Información de planificación
Identificadores
Comunicación entre procesos
Enlaces
Tiempos y temporizadores
Sistema de archivos
Gestión de procesos e hilos en LinuxGestión de procesos e hilos en Linux
53
Espacio de direcciones
Contexto específico del procesador
Ejecutando
Interrumpible
Ininterrumpible
Detenido
Zombie