• No se han encontrado resultados

µkernels y virtualización

N/A
N/A
Protected

Academic year: 2021

Share "µkernels y virtualización"

Copied!
16
0
0

Texto completo

(1)

µ

kernels y virtualizaci´

on

Fernando Schapachnik

1

1(con la colaboraci´on de Jorge Luc´angeli Obes)

Departamento de Computaci´on, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina

(2)

(2)

µ

kernels

La idea de microkernel est´

a basada en contrarrestar algunas

de las desventajas de un

kernel monol´ıtico

buscando lograr:

Mucho menos c´odigo privilegiado. Facilidad de actualizaciones. Mayor flexibilidad y extensibilidad.

Crash de servicios no tira abajo todo el sistema. Diferentes “sabores” de los servicios.

(3)

(3)

µ

kernels (cont.)

Para lograr esto la idea era tener un kernel que hiciera:

Manejo b´asico de memoria. IPC liviano.

Manejo b´asico de E/S.

(4)

(4)

µ

kernels en la pr´

actica

En la pr´

actica esto result´

o mucho m´

as lento que en los kernels

monol´ıticos.

Si bien hubo una segunda generaci´

on de

µ

kernels que trat´

o de

solucionar estos problemas (y en alg´

un punto lo logr´

o), la idea

nunca termin´

o de ser pr´

acticamente exitosa del todo.

Con algunas excepciones notables:

QNX, un Unix RT con arquitecturaµkernel, dise˜nado especialmente para embebidos.

MacOS tiene algo de Mach, un microkernel. En realidad, tiene cosas de Mach antes de que Mach fuera un microkernel. Por ende MacOS no usa un microkernel.

(5)

(5) El legado de los

µ

kernels

De todas maneras algunas ideas s´ı se tomaron:

IPC m´as r´apido. M´odulos de kernel.

Tratar de sacaralgunosservicios del kernel (por ejemplo,

(6)

(6) Virtualizaci´

on

Definici´

on: es la posibilidad de que un conjunto de recursos

f´ısicos se vean como varias copias de recursos l´

ogicos.

La acepci´

on m´

as com´

un es pensar en una computadora

(7)

(7) Algo de historia

Desde hace rato (por lo menos 1960) resulta tentadora la idea

de tener

aquinas virtuales

.

Ie, de mentira.

Los objetivos son variados:

Portabilidad (`a la Java Virtual Machine). Simulaci´on/testing.

Aislamiento (como chroot, jail y c´ıa). Particionamieno de HW.

Agrupamiento de funciones (“consolidation”). Protecci´on ante fallas de HW (migraci´on de HW). Migraci´on entre HW sin p´erdida de servicio.

(8)

(8) Simulaci´

on y emulaci´

on

Una forma posible de lograr esto es mediante la

simulaci´

on

:

En el sistemaafitri´onse construye una variable de estado artificial que representa al sistemahu´esped.

Se lee cada instrucci´on y se modifica el estado como si ´esta se ejecutase realmente.

Sin embargo:

El mecanismo puede ser muy lento.

(9)

(9) Simulaci´

on y emulaci´

on (cont.)

Otra forma es mediante la

emulaci´

on de HW

:

Ac´a el sistema emulado se ejecuta realmente en la CPU del anfitri´on.

Se emulan componentes de HW.

Ie, cuando la m´aquina virtual cree que est´a haciendo E/S de un dispositivo, en realidad lo est´a haciendo contra el

controlador de m´aquina virtuales. ´

Este, a su vez, hace de proxy contra el dispositivo real o la emulaci´on que se est´e usando.

El grueso del c´odigo se corre mediantetraducci´on binaria.

Problemas:

¿C´omo logro separaci´on de privilegios? Toda la m´aquina virtual corre en modo usuario.

(10)

(10) Virtualizaci´

on asistida por HW

En este contexto nace la intenci´

on de lograr virtualizaci´

on

asistida por HW, especialmente para lograr evitar los

siguientes problemas (retengo los nombres de Intel):

Ring aliasing: tengo programas escritos para modo kernel, pero en realidad se est´an ejecutando en modo usuario. Puedo tener problemas de permisos para ejecutar ciertas instrucciones. Address-space compression: ¿c´omo hago para que la m´aquina virtual no pueda pisar memoria del propio emulador?

Recordemos que desde el punto de vista del anfitri´on son un ´

unico proceso.

Non-faulting access to privileged state: algunas instrucciones privilegiadas generan un trap cuando se ejecutan sin permiso. Eso es bueno porque puedo atrapar el trap y simularlas. Pero otras no. ¿C´omo hago?

(11)

(11) Virtualizaci´

on asistida por HW (cont.)

Access to hidden state: hay parte del estado del procesador que no es consultable por software.

Ring compression: como tanto el kernel hu´esped como sus programas corren en realidad en el mismo nivel de privilegio, no hay protecci´on entre kernel y programas de usuario. Frequent access to privileged resources: si bien el controlador de m´aquinas virtuales puede bloquear el acceso a ciertos recursos, haciendo que se genere un trap, esto puede ser un cuello de botella para recursos accedidos frecuentemente.

(12)

(12) Virtualizaci´

on asistida por HW (cont.)

Para solucionar estos problemas los fabricantes agregaron

soporte para la virtualizaci´

on en el HW.

En el caso de Intel, agregaron al procesador las extensiones

VT-x

, que proveen dos modos:

VMX root: Las instrucciones se comportan de manera similar, pero hay algunas extensiones (anfitri´on).

VMX non-root: El mismo set de instrucciones pero con comportamiento restringido (hu´esped).

Se proveen (10) instrucciones para alternar f´

acilmente entre

(13)

(13) Virtualizaci´

on asistida por HW (cont.)

Se agrega la

Virtual Machine Control Structure

(en memoria).

Campos de control: indican qu´e interrupciones recibe el hu´esped, qu´e puertos de E/S, etc.

Estado completo del hu´esped. Estado completo del anfitri´on.

La idea es que el HW sale autom´

aticamente de modo VMX

non-root cuando el hu´

esped realiza alguna acci´

on que est´

a

“prohibida” de acuerdo a la VMCS.

En ese momento, el controlador de la m´

aquina virtual recibe

(14)

(14) Desaf´ıos/problemas

¿Qu´

e pasa con las optimizaciones que ten´ıan el kernel y el FS

para acceder al disco de manera eficiente?

¿Y con picos de carga en m´

as de una CPU?

´

Unico punto de falla: falla una pieza de HW real, caen varias

aquinas virtuales.

(15)

(15) Escenarios de uso de la virtualizaci´

on

Correr sistemas viejos.

Almacenamiento conectado a la red.

Desarrollo/testing/debugging.

¿Abaratar costos?

(16)

(16) Bibliograf´ıa

http://www.cs.cornell.edu/home/ulfar/ukernel/

ukernel.html

“Formal Requirements for Virtualizable Third Generation

Architectures”, de Popek y Goldberg.

“Intel

R

Virtualization Technology: Hardware Support for

Efficient Processor Virtualization”.

http://www.intel.com/technology/itj/2006/v10i3/

1-hardware/1-abstract.htm

“A comparison of software and hardware techniques for x86

virtualization”, de Adams y Agesen.

Referencias

Documento similar