Está en la página 1de 27

Sistemas Operativos

Multiproceso

SISTEMAS OPERATIVOS I
Lic. Tania Valladares
Multiprocesador

• Un multiprocesador con memoria


compartida es un sistema de cómputo en el
que dos o más CPUs comparten todo el acceso
a una RAM común. Un programa que se
ejecuta en cualquiera de las CPUs ve un
espacio normal de direcciones virtuales.
• En su mayor parte, los sistemas operativos
multiprocesadores son sólo sistemas
operativos regulares. Manejan las llamadas al
sistema, administran la memoria, proveen un
sistema de archivos y administran los
dispositivos de E/S.
Hardware de multiprocesador

Aunque todos los multiprocesadores tienen la propiedad de que


cada CPU puede direccionar toda la memoria, algunos tienen la
característica adicional de que cada palabra de memoria se puede
leer con la misma velocidad que cualquier otra. Estas máquinas se
conocen como multiprocesadores UMA (Acceso uniforme a la
memoria). Por el contrario, los multiprocesadores NUMA
(Acceso no uniforme a la memoria) no tienen esta propiedad.
Multiprocesadores UMA (Acceso uniforme a la
memoria) con arquitecturas basadas en bus

• Los multiprocesadores más simples se basan en un solo bus, Dos o


más CPUs y uno o más módulos de memoria utilizan el mismo bus
para comunicarse. Cuando una CPU desea leer una palabra de
memoria, primero comprueba si el bus está ocupado. Si está
inactivo, la CPU coloca la dirección de la palabra que desea.
• Si el bus está ocupado cuando una CPU desea leer o escribir en la
memoria, la CPU espera solo hasta que el bus esté inactivo. Aquí
es donde se encuentra el problema con este diseño. El sistema
estará totalmente limitado por el ancho de banda del bus, y la
mayoría de los CPUs estarán inactivas la mayor parte del tiempo.
Multiprocesadores UMA con arquitecturas
basadas en bus

• La solución a este problema es agregar una caché a cada CPU,


la caché puede estar dentro del chip de la CPU, a un lado de
ésta, en el tablero del procesador o puede ser alguna
combinación de las tres opciones anteriores. Como esto permite
satisfacer muchas operaciones de lectura desde la caché local,
habrá mucho menos tráfico en el bus y el sistema podrá
soportar más CPUs.
Multiprocesadores NUMA (Acceso no uniforme a
la memoria)

• En los multiprocesadores NUMA, a diferencia de los UMA,


los accesos a memoria pueden tener tiempos distintos. En
estas máquinas la memoria también está compartida, pero
los módulos de memoria están distribuidos entre los
diferentes procesadores con el objetivo de reducir la
contención de acceso a memoria.
Tipos de sistemas operativos multiprocesador

Cada CPU tiene su propio sistema operativo

• La manera más simple posible de organizar un sistema


operativo multiprocesador es dividir estáticamente la memoria
y su propia copia privada del sistema operativo. En efecto, los
CPUs operan entonces como computadoras independientes.
Una optimización obvia es permitir que todas los CPUs
compartan el código del sistema operativo y obtengan copias
privadas sólo de las estructuras de datos del sistema operativo.
Multiprocesadores maestro-esclavo

• Un segundo modelo; en donde hay una copia del sistema operativo y sus
tablas presente en la CPU 1, y nada más ahí. Todas las llamadas al sistema
se redirigen al CPU 1 para procesarlas ahí. El CPU 1 también puede ejecutar
proceso de usuario si tiene tiempo de sobra. A este modelo se le conoce
como maestro-esclavo, ya que el CPU 1 es el maestro y todas los demás son
los esclavos.
• El modelo maestro-esclavo resuelve la mayoría de los problemas del primer
modelo. Hay una sola estructura de datos (por ejemplo, una lista o un
conjunto de listas con prioridades) que lleva la cuenta de los procesos listos.
Cuando un CPU está inactiva, pide al sistema operativo en el CPU 1 un
proceso para ejecutarlo, y se le asigna uno. Por ende, nunca puede ocurrir
que un CPU esté inactiva mientras que otra esté sobrecargada.
Multiprocesadores simétricos

• Nuestro tercer modelo, el SMP (Multiprocesador


simétrico), Hay una copia del sistema operativo en
memoria, pero cualquier CPU puede ejecutarlo.
• Este modelo equilibra los procesos y la memoria en
forma dinámica, ya que sólo hay un conjunto de tablas
del sistema operativo. También elimina el cuello de
botella del CPU, ya que no hay maestro.
 Objetivos de la Administración de Memoria
⚫ Proveer una abstracción simple de programación
⚫ Proveer aislamiento entre procesos
⚫ Asignar memoria (limitada) a procesos que la
requieren maximizando el rendimiento, productividad
y minimizando sobrecarga (overhead)
 Mecanismos
⚫ Memoria física versus virtual
⚫ Administración de tablas de páginas y segmentación
⚫ Algoritmos de reemplazamiento de páginas
▪ Abstracción básica que proporciona SO para la
administración de memoria
▪ Memoria virtual habilita la ejecución de procesos sin
estar contenidos completamente en memoria física
▪ Consecuencia inmediata: un proceso puede requerir más memoria
de la disponible físicamente
▪ Posible porque muchos programas no necesitan todo el
código o datos al mismo tiempo
▪ Por ejemplo, datos en una rama condicional que nunca son
accesados
▪ SO puede asignar memoria física durante tiempo de ejecución
(cuando sea requerido)
▪ Memoria Virtual aisla procesos
▪ Cada proceso tiene su propio espacio de direccionamiento
▪ Sistemas Batch
▪ Programas usaban memoria física directamente
▪ OS cargaba trabajo, lo ejecutaba y lo descargaba

▪ Sistemas Multiprogramados
▪ Múltiples procesos coexistían en memoria al mismo tiempo
▪ Procesos usaban CPU y dispositivos I/O simultáneamente
▪ Requerimientos de administración de memoria
▪ Protección, restringiendo espacios de direccionamiento para evitar
daños entre ellos
▪ Traducción rápida, acceso a la memoria debe ser rápida
▪ Cambio de contexto, debe ser rápido, (protección y traducción)
▪ Swapping
▪ Salvar el estado de programa completo (incluyendo memoria) a
disco para permitir la ejecución de otros
▪ Swap in : de disco a memoria
▪ Swap out : de memoria a disco
▪ Para facilitar el manejo de memoria de múltiples
procesos, procesos manejan memoria virtual
▪ Direcciones virtuales son independientes de las
direcciones de memoria física (donde realmente
código y datos están)
▪ SO determina ubicación de memoria física
▪ Las instrucciones con las cuales trabaja la CPU usan
direcciones virtuales
▪ punteros, argumentos de load/store, PC, etc
▪ Traducción de direcciones virtuales a físicas se
realiza por hardware con ayuda del SO
▪ El conjunto de direcciones virtuales que
un proceso puede direccionar
corresponde a su espacio de
direccionamiento
▪ Existen muchos mecanismos para la
traducción de direcciones virtuales a físicas
▪ Particiones fijas
▪ Particiones variables
▪ Paginación (técnica moderna)
▪ Segmentación (técnica moderna)
▪ Paginación y segmentación
▪ Memoria física se divide en particiones fijas
▪ Todas las particiones son de tamaño fijo y nunca cambian
▪ Pero pueden haber particiones de diferentes tamaños
▪ Hardware requerido: registro base y registro límite
▪ dirección física = dirección virtual + registro base
▪ Registro base es cargado por el SO después de cambio de
contexto, y entonces un proceso se va a ejecutar
▪ Como se asegura la protección?
▪ Si (dirección física > base + limite) entonces error
▪ Ventajas
▪ Sencillo, cambio de contexto rápido
▪ Desventajas
▪ Fragmentación interna
▪ Partición mas grande de lo necesario (sobra memoria que no
puede utilizar otro proceso)
▪ Fragmentación externa
▪ Caso en que dos particiones disponibles pero ambas muy
pequeñas para contener un proceso mas grande
▪ Tamaño de la partición (cuál debería ser?)
▪ Memoria física es dividida en particiones variables
▪ Tamaño de particiones varía dinámicamente no
preestablecidas como en caso de particiones fijas
▪ Requerimientos Hardware: registros base y límite
▪ Dirección física = dirección virtual + registro base
▪ Registro límite se usa para protección
▪ if (dirección física < registro limite) then
▪ dirección física = dirección virtual + registro base
▪ Else
▪ Error de direccionamiento
▪ Registro base : contiene valor de la dirección física menor posible
▪ Registro límite : contiene mayor rango de direcciones virtuales
▪Ventajas
▪ No hay fragmentación interna ( si sabemos cuanto
necesita proceso)
▪ Asignar partición solo lo suficiente para contener
proceso

▪Problemas
▪ Fragmentación externa
▪ a medida que procesos de distinto tamaño entran y
salen van quedando porciones de memoria sin
posibilidades de ser reutilizada
▪ Procesos ven memoria como un espacio contiguo
de 0 a M
▪ En realidad la memoria física esta desparramada
▪ Cada página virtual se mapea a una página real
(marco de página) que esta en cualquier parte en
memoria física
▪ Mapeo es invisible al programa
▪ Protección esta dada porque un programa no
puede referenciar memoria que esta fuera de su
espacio de direccionamiento virtual
▪ Si dos procesos tienen la misma dirección virtual
su mapeo a memoria física es distinta para cada
proceso.
▪ Traduciendo direcciones virtuales
▪ Una dirección virtual tiene dos partes:
▪ Número de página virtual y offset

▪ Número de página virtual es un índice en tabla


de páginas
▪ Entrada en tabla de página contiene número de
marco de página
▪ Dirección física se traduce a:
▪ Número Marco de página:offset
▪ Manejadas por el SO
▪ Mapea Número de Pagina Virtual a Número de Marco de
Página
▪ Número de Página Virtual es índice en la tabla
▪ Existe una Entrada en la Tabla de Páginas por página
en el espacio de direccionamiento virtual
▪ Normalmente denominada como PTE (Page Table
Entry)
▪ Fácil para asignar memoria física
▪ Memoria física se administra usando una lista de marcos
de páginas libres
▪ Para asignar un marco de página, se saca de la lista
▪ Fragmentación externa no es un problema
▪ Cómo ?

▪ Fácil quitarle páginas a programas


▪ Páginas son del mismo tamaño
▪ Uso de bit válido para saber que páginas ha perdido el
proceso
▪ Tamaño de páginas definido como múltiplos de tamaños
de bloques de disco
▪ Expone Fragmentación interna
▪ Proceso no puede usar memoria de marco de página
que le sobra a otro proceso
▪ Referencia a memoria en 2 pasos
▪ Tabla de página y luego Memoria
▪ Solución, usar hardware como cache para acelerar
referencias : Translation Lookaside buffer (TLBs)
▪ Memoria requerida para mantener tablas de páginas
puede ser grande.
▪ Necesita una entrada en tabla de página por número
de página virtual.
▪ Paginación
▪ Vista de espacio de direccionamiento como arreglo de
bytes (lineal)
▪ Divide espacio en páginas de igual tamaño (ejemplo
4KB)
▪ Usa tabla de página para mapear páginas virtuales a
páginas físicas
▪ Terminología
▪ Página : página virtual
▪ Marco : página física

▪ Segmentación
▪ Dividir el espacio de direccionamiento en unidades
lógicas
▪ Stack, código, heap, datos, procedimientos
▪ Una dirección virtual es [número segmento, offset]
▪ Tabla de segmentos
▪ Múltiple pares de registros base/límite uno
por segmento
▪ Segmentos identificados por número de
segmento
▪ Identificador se usa como índice a tabla de
segmentos
▪ Dirección virtual [num. segmento, offset]
▪ Dirección física se obtiene sumando dirección
base de segmento + offset
▪ Compartir: Más fácil y natural
▪ Problemas con fragmentación
▪ asignación de memoria contigua
▪ cuales deben ser los tamaños de los fragmentos
para los diversos tipos de requerimientos en el
sistema?
▪ Qué hacer?
▪ Quienes
▪ Arquitectura x86 soporta los dos mecanismos

▪ Usar segmentos para manejar unidades


lógicas
▪ Segmentos de diversos tamaños en base a
páginas
▪ Usar páginas para particionar segmentos
▪ Cada segmento tiene propia tabla de páginas ( en
lugar de una tabla de páginas por proceso de usuario)
▪ Luego asignación de memoria se simplifica a
paginación
▪ Dirección virtual [num segmento, num página, offset]

También podría gustarte