Resumen Tres temas se tratan en este documento, la
definicin de kernel de un sistema operativo, los tipos de kernel ms frecuentes, y una aproximacin a los kernel de Windows y Linux.
I. INTRODUCCIN EFINICIN DE KERNEL El software de computadora puede dividirse a grandes rasgos en dos tipos: programas de sistema, que controlan la operacin de la computadora misma, y programas de aplicacin, que realizan las tareas reales que el usuario desea. El programa de sistema ms fundamental es el sistema operativo, que controla todos los recursos de la computadora y establece la base sobre la que pueden escribirse los programas de aplicacin. [1]
En relacin a la ciencia de la tecnologa de la informacin podemos decir que: El kernel representa la pieza de software principal del los sistemas operativos, [2] es el encargado de manejar las peticiones de entrada y salida de los aplicativos pues se encarga de traducir las instrucciones o comandos que solicitan a la CPU y otros dispositivos.
El Kernel se encarga de administrar los procesos, la memoria, los dispositivos y todas las llamadas al propio sistema, siendo el responsable de ejecutar los programas y decidir cundo van a ser procesados, asignarles los espacios en memoria que requieren.
Esta estructura se puede observar en la Fig. 1 donde el ncleo o kernel es un mediador entre el hardware y los procesos del sistema operativo para la ejecucin de aplicaciones.
Puede decirse que el kernel es un conjunto de aplicaciones que tienen la capacidad de interactuar o controlar la capa fsica del dispositivo computacional, en otras palabras, es aquel software que se encarga de servir como intermediario entre el dispositivo fsico y todos sus recursos y el sistema operativo para ejecutar una aplicacin o servicio.
Por ejemplo, un Kernel puede aumentar o disminuir la cantidad del voltaje que utiliza el procesador, Tambin puede cambiar los valores de la pantalla haciendo que esta se vea ms brillante o ms definida, tambin puede ajustar diversos
Documento recibido en Agosto 15, 2014. Pavel Valencia Barrenechea; e-mail: neo1484@gmail.com. parmetros de hardware de manera automtica sin la intervencin del usuario.
Fig. 1. Esquema de kernel en relacin al hardware y el sistema operativo
II. TIPOS DE KERNEL [3] Se presentan a continuacin algunos de los tipos de kernel utilizados en la actualidad, relevantes por su difusin y uso casi generalizado. A. Exokernel Un sistema operativo se interpone entre las aplicaciones y la dotacin fsica. Por lo tanto, su estructura tiene un impacto dramtico en el funcionamiento y el alcance de las aplicaciones que se pueden construir en l. Desde su inicio, el campo de sistemas operativos ha estado procurando identificar una estructura apropiada: las tentativas anteriores incluyen los sistemas operativos monolticos y del micro-ncleo as como sistemas operativos de la mquina lenguaje-base y virtual.
Un Exokernel elimina la nocin que un sistema operativo debe proporcionar a las abstracciones en las cuales se construyen las aplicaciones. Se concentra solamente con seguridad la multiplexacin de la dotacin fsica sin procesar: herramientas bsicas primitivas, las bibliotecas y los servidores del nivel aplicacin pueden poner directamente las abstracciones tradicionales del sistema operativo en ejecucin, especializadas para la conveniencia y la velocidad. B. Cache Kernel Es un sistema que propone que el kernel del sistema sea bsicamente una cache de los recursos empleados por las aplicaciones. De este modo, son las aplicaciones las que KERNEL Pavel Valencia Barrenechea, Miembro, Apple Developer Team D 2 poseen los recursos fsicos (aunque de modo virtualizado) y dentro del ncleo se mantienen slo aquellos recursos ms empleados. En la prctica, el cache kernel es un sistema similar al exokernel.
Los objetos de los que hace caching el Cache Kernel son espacios de direcciones y threads. El mecanismo de intercomunicacin de procesos empleado se basa en la implementacin de los espacios de direcciones. Bsicamente se extiende el concepto de traduccin de direcciones para que incluya opcionalmente un thread que deber manejar mensajes relacionados con dicha direccin.
Los clientes pueden sealar dicha direccin y el thread que lo sirve ser notificado. La transferencia de datos entre clientes y servidores se implementa con ayuda del gestor de memoria virtual.
C. Kernel Monoltico La estructura de esta arquitectura es simplemente no tener ninguna. A nivel de ncleo no se produce ninguna abstraccin, es decir, si un procedimiento necesita a otro, es libre de hacerlo en cualquier momento. Fue el primer enfoque en la historia, el resto son evoluciones.
D. Microkernel En este caso, el S.O. se ocupa solo de unas pocas funciones, reduciendo el ncleo a su mnima expresin. El resto de funciones pasan a estar en el espacio de usuario.
El kernel y el SHELL son trminos usados ms con frecuencia en UNIX y algunos otros sistemas operativos que en sistemas de la unidad central de la IBM.
Un kernel puede incluir a un encargado de los espacios de direccionamiento del sistema operativo en memoria o el almacenaje, compartiendo stos entre todos los componentes y otros utilizadores de los servicios del kernel. Los servicios de un kernel son solicitados por otras partes del sistema operativo o por la aplicacin a travs de un conjunto especificado de interfaces del programa sabidos a veces mientras que el sistema llama. Porque el cdigo que hace para subir el kernel se necesita continuamente, se carga generalmente en la memoria interna en un rea de modo que se proteja de que notenga contacto con otras partes menos con frecuencia usadas del sistema operativo. El kernel no debe ser confundido con el sistema bsico de la entrada-salida (BIOS). Algunos kernels se han desarrollado independientemente para el uso en cualquier sistema operativo que desee utilizarlo.
Un ejemplo bien conocido es el kernel de Mach, desarrollado en la universidad de Carnegie-Mellon, y usado actualmente en una versin del sistema operativo de Linux para los ordenadores de PowerMac. III. EL KERNEL DE WINDOWS VISTA [4]
Como base y fundamento de muchas de las nuevas caractersticas de Windows Vista fueron realizadas importantes mejoras al kernel. Con un esfuerzo sin precedentes, expertos trabajaron sobre un objetivo comn, una misma meta y enfoque: entregar un sistema seguro. Resumir algunas de las ms mejoras e inclusiones al kernel de Windows Vista.
El kernel incluido en Vista, proviene de sus antecesores (NT, 2000, XP) y es la base de Windows Server 2008. La versin de kernel liberada con Vista continu en desarrollo y fue sincronizada en su versin final a travs del SP1 de Windows Vista.
Al tratarse de una mejora sobre el modelo NT-Kernel (hbrido) podemos asegurar que contina combinando los conceptos de Kernel-monoltico y Microkernel. Lo cual brinda la garanta de un buen desempeo de un kernel monoltico y la estabilidad del microkernel.
Kernel Transaction Manager (KTM) es un componente del Kernel de Windows Vista y Windows Server 2008 que le permite a las aplicaciones usar atomic transactions sobre los recursos hacindolos disponibles como objetos del kernel.
El transaction engine opera en modo kernel, permite transacciones en modo kernel y modo user as como a travs de recursos distribuidos. El KTM intenta facilitar a los desarrolladores la tarea de recuperacin de errores de forma transparente, actuando como administrador de transacciones sobre el cual los clientes de transacciones puedan conectarse. KTM se utiliza para implementar Transactional NTFS (TxF) y Transactional Registry (TxR).
Kernel Patch Protection (KPP) informalmente conocido como PatchGuard, es una caracterstica de la edicin x64 de Microsoft Windows que previene tener que aplicar parches al kernel. Fue introducida inicialmente en el 2005 con las ediciones x64 de Windows XP y Windows Server 2003 Service Pack 1.
Entre otras importantes mejoras encontramos:
Time Stamp Counter (TSC): hace ms justa la asignacin de procesador a cada subproceso en ejecucin, permitindole ejecutarse al menos una vez por ciclo de reloj.
Multimedia Class Scheduler: permite que los subprocesos se declaren como multimedia obteniendo prioridad sobre otros subprocesos y evitando interrupciones en la reproduccin del contenido.
Mklink.exe command: genera symbolic links para archivos y directorios resolviendo la ruta proporcionada en el cliente. Se requieren permisos de administrador. 3
I/O Cancellation Support: implementa soporte a cancelar subprocesos synchronous I/O, por ejemplo al tratar de acceder a un archivo en un dominio no disponible desde el bloc de notas, tendramos que esperar el timeout para continuar la operacin, con el nuevo soporte a cancelar subprocesos I/O, nos permite presionar CTRL-C desde un command prompt o dar click al botn de cancel a la caja de dialogo.
I/O Prioritization: introduce categoras y niveles a los subprocesos para priorizar la ejecucin segn la relevancia que estas representen en la experiencia general del usuario.
SuperFetch: introduce el concepto de prioridades de memoria que nos permitirn utilizar la memoria de forma adaptiva segn nuestra actividad.
ReadyBoost: utiliza flash drives para crear un write-through cache entre el disco y la memoria.
Hybrid Hard Drive (H-HHD): hace uso del NVCACHE para localizar informacin del superfetch, archivos de hibernacin y lo activa como write-through cache para ahorro de energa en laptops funcionando con batera.
Windows Service Hardening: en Windows Vista, el nmero de capas de seguridad entre el usuario y el kernel se increment. Adicionalmente, el tamao de las capas de alto riesgo se redujo. Esto significa que la cantidad de cdigo a ejecutar en la capa de kernel se redujo significativamente.
Existen otros muy importantes como el Boot Configuration Database (BCD): pre-shutdown services, Volume Shadow Copy, Windows Error Reporting (WER), BitLocker, Protected Processes, User Account Control (UAC).
If you are using Word, use either the Microsoft Equation Editor or the MathType add-on (http://www.mathtype.com) for equations in your paper (Insert | Object | Create New | Microsoft Equation or MathType Equation). Float over text should not be selected. IV. EL KERNEL DE LINUX [5] En 1984, Richard Stallman fund el Proyecto GNU con el objetivo de conseguir un sistema operativo libre y abierto. Esto es, un sistema operativo tal que los usuarios puedan usarlo, leer el cdigo fuente, modificarlo, y redistribuirlo.
A partir de ese momento, un gran nmero de colaboradores se fueron sumando al proyecto, desarrollando software libre para reemplazar cada una de las herramientas del sistema UNIX.
La filosofa GNU apoya el crecimiento de la sociedad como un conjunto, haciendo especial hincapi en la valoracin de las libertades personales, an cuando esto puede estar en conflicto con intereses empresariales.
En 1991, Linus Torvalds complet el sistema con su kernel (que es la aplicacin encargada de comunicar los procesos con el hardware de la computadora). A este kernel lo bautiz Linux.
De esta manera, se form el sistema GNU/Linux. La Universidad de Berkeley estuvo relacionada con el desarrollo de los sistemas operativos UNIX. Recibi de AT&T una versin gratuita de UNIX, y a partir de entonces comenz a promover el desarrollo de aplicaciones para UNIX dentro de la universidad. Ms adelante, desarrollo su propio sistema operativo UNIX, sin utilizar el cdigo fuente de AT&T. El kernel fue creado desde Berkeley, pero las herramientas utilizadas son en su mayora GNU, es decir las mismas que en el sistema GNU/Linux. Existen actualmente 3 sistemas operativos libres, derivado de BSD: FreeBSD, OpenBSD y NetBSD.
El sistema operativo GNU/Linux cuenta con una interfaz grfica, llamada XFree86 o simplemente X. El protocolo X fue desarrollado por el MIT, principalmente como un logro acadmico para proporcionar un entorno grfico a UNIX. La licencia mediante la cual se distribuye permite usarlo, modificarlo, redistribuirlo e incluso re licenciarlo.
El cdigo fuente del sistema GNU y del kernel Linux est accesible a todo el mundo, sin embargo, hacer funcionar un sistema a partir del cdigo fuente es bastante difcil. Por eso, un sistema operativo se distribuye (normalmente) en formato binario, es decir ya compilado.
Poco despus de que apareciera el kernel Linux, comenzaron a aparecer las primeras distribuciones, que agrupaban versiones probadas de varios programas, junto con el kernel, de tal manera que formaban un sistema operativo listo para usar.
A medida que fue pasando el tiempo, algunas distribuciones se fueron haciendo ms sofisticadas, otras desaparecieron, otras se hicieron comerciales y aparecieron mucha ms. Existen distribuciones de muchos tipos: distribuciones que ocupan 1 diskette y distribuciones que llegan a ocupar 10 CDs; distribuciones orientadas a una finalidad en especial (redes, seguridad, etc.) y distribuciones de uso general.
Cada usuario de GNU/Linux suele elegir la distribucin con la que se siente ms cmodo, y no tiene sentido entrar en discusiones acerca de cul es mejor. A menos que aclaremos lo contrario, lo que se ensea en este curso es aplicable a la gran mayora de los sistemas UNIX, y a cualquiera de las distribuciones de GNU/Linux.
El mundo de las computadoras no se restringe a las Computadoras Personales con las que estamos en contacto todos los das. Existen diversas arquitecturas en las que una computadora se puede presentar. A cada una de estas 4 arquitecturas la llamamos plataforma.
Ejemplos de algunas plataformas posibles son: iMac (de Macintosh), Sparc (de Sun), S/390 (de IBM), PlayStation (de Sony), XBox (de Microsoft). En particular, la plataforma que utilizamos comnmente se la denomina x86 y x64, ya que est basada en los procesadores de Intel, a partir de la arquitectura i386 y la de 64 bits. V. CONCLUSIN El kernel es una aplicacin de software, que es el intermediario entre el hardware y el sistema operativo de todo dispositivo enmarcado en una arquitectura de microprocesador x86 y x64, encargado de automatizar los procesos de comunicacin entre estos componentes de un dispositivo computacional.
Existen varios tipos de kernel para satisfacer las necesidades de los distintos tipos de software y hardware existentes.
Los sistemas operativos propietarios y no propietarios, difieren de manera considerable tanto en el diseo de sus kernels como en su forma y funcin, pero sobre todo difieren en el enfoque hacia el desarrollo y uso de este software. REFERENCIAS [1] Andrew S. Tanenbaum, Sistemas Operativos Diseo e Implementacin, 2nd ed. vol. 1, Pablo Eduardo Roig, Ed. Mexico: Prentice Hall, 1997, pp. 1960.
[2] L. G. Snchez, G. A. Osorio, Introduccin a kernel ACP y otros mtodo espectrales aplicados al aprendizaje no supervisado. Revista Colombiana de Estadstica Junio 2008, volumen 31, no. 1, pp. 19 a 40