Conocer las estructuras/arquitectura de los
sistemas operativos actuales desde el punto de vista de la adaptabilidad
funcional de los mismos a nuevos servicios y hardware.
Necesitamos estructuras (arquitecturas) que
permitan dar soporte a nuevos tipos de aplicaciones y a nuevos dispositivos –
sistemas extensibles/adaptables.
Necesitamos construir sistemas seguros, correctos, y robustos.
La arquitectura puede determinar propiedades no funcionales, por
ejemplo, QoS (Calidad de Servicios).
Arquitecturas en Uso.
En la actualidad, las estructuras más usadas:
Monolítica – Linux, Windows.
Microkernel
Exokernel.
Kernel.
Parte fundamental del sistema operativo, es el
software responsable de facilitar a los distintos programas acceso seguro al
hardware, es el encargado de gestionar recursos a través de servicios de llamada
al sistema, Los núcleos implementan una serie de abstracciones del hardware.
Permitiendo ocultar la complejidad, proporcionando una interfaz limpia y
uniforme al hardware subyacente, lo que facilita su empleo. Es la parte que se
carga primero y permanece en memoria principal.
Es la parte central de los SO. Constituye el puente
entre el software de aplicaciones y el procesado de datos al nivel de
hardware, también se encarga de
gestionar procesos, uso de memoria, acceder al sistema de ficheros, veamos
algunas de esas tareas de forma más detallada:
Kernel: Gestión de interrupciones.
Las distintas componentes del ordenador
(CPU, memoria RAM, disco duro, tarjeta
de red) funcionan a distintas
velocidades; su coordinación requiere hacer
esperar a unos dispositivos, o priorizar a otros. Esto se consigue por medio de
interrupciones Una interrupción es una señal por la que el software o hardware
del ordenador avisa al SO de que ha completado una tarea (p. ej. leer un
fichero) para que éste pueda llevar a cabo su siguiente acción (p. ej. copiarlo
a un USB)Antes de que existieran las interrupciones el SO debía comprobar si
una tarea estaba completa (de forma cíclica), para poder comenzar la siguiente.
La pérdida de tiempo y recursos era considerable
Kernel: Modos.
El kernel gestiona el modo supervisor y el
modo protegido, algunos SO sencillos
(MSDOS) solo incluyen modo supervisor, otros más complejos (Linux, Windows)
incluyen ambos.
Modo supervisor: usado para tareas de bajo
nivel requieren acceso ilimitado al
hardware (lectura y escritura directa a
memoria, comunicación con la tarjeta
gráfica). La BIOS, por ejemplo, se ejecuta en modo supervisor; el SO, en general,
también.
Modo protegido: el kernel, cuando inicia un
proceso, puede decidir que el mismo se ejecute en modo protegido, prohibiendo
el acceso del mismo a las órdenes de la CPU.
Kernel: Gestión de Memoria.
El
kernel debe asegurar que la memoria principal (o RAM) en uso por cada programa
no sea usada simultáneamente por ningún nuevo programa. Modo de funcionamiento
(en breve), la memoria principal se segmenta en fragmentos, cada uno de lo
cuales es accesible sólo por un programa. Si un programa trata de acceder a un
fragmento que no es el suyo, se producirá una “violación de segmentación”, y el
kernel terminará el programa “invasor”.
Kernel: Memoria Virtual.
Además
de segmentar la memoria, el kernel puede elegir zonas de memoria para ser
usadas por varios programas (pero no simultáneamente, recordar la gestión de
memoria), la memoria se “pagina”, y estas páginas, accesibles para diversos
procesos, se conocen como
“memoria
virtual”, si un proceso trata de acceder a una página de memoria virtual usada
por otro proceso se produce una interrupción y el kernel, posiblemente, le
asignará una nueva página.
Kernel: Acceso a discos y sistema de archivos.
El
acceso a datos guardados en dispositivos de entrada o salida (discos duros,
usb’s, discos externos) es una de las misiones centrales de los SO Los ficheros
permiten acceso más rápido (recordad las tablas FAT), mayor fiabilidad, y mejor uso del
espacio libre Los ficheros, además, permiten otras propiedades como asignar nombres, programas de apertura,
compresión, permisos para usuario, esta
forma de organización se la conoce como “sistema de ficheros”, y suele estar
basada en un árbol de directorios.
Kernel: Controlador de Dispositivos.
Los
controladores de dispositivos (drivers) son programas que permiten la
interacción con determinado hardware, Permiten la interacción del kernel con
los dispositivos, y proveen del sistema de interrupciones necesario para la
comunicación.
Kernel: Seguridad.
El
SO, estando conectado a Internet o redes locales, debe ser capaz de distinguir
las peticiones que recibe que deben ser procesadas y las que no; por ejemplo,
por medio del uso de usuarios y contraseñas, del uso de modos de ejecución
(privilegiado o protegido, rings), de la paginación de la RAM, de la
codificación de ficheros.
Arquitectura Monolítica.
Núcleo
grande y complejo, engloba todos los servicios del sistema, programado de forma
no modular, cualquier cambio a realizar en los servicios requiere la recompilación
del núcleo y el reinicio del sistema para
aplicar los nuevos cambios, todo el sistema operativo trabaja en kernel space y en
modo supervisor, define
por si mismo una interfaz virtual de alto nivel (API) sobre el hardware
subyacente, mediante un conjunto de llamadas al sistema para implementar todos los
servicios del sistema operativo. La mayoría de los "sistemas operativos
monolíticos" modernos pueden cargar (y descargar) dinámicamente módulos
ejecutables en runtime, mejor que bootear una nueva imagen de kernel cada vez.
VIDEO DEMOSTRATIVO DEL KERNEL.
No hay comentarios:
Publicar un comentario