Mostrando entradas con la etiqueta UNIDAD 1. Mostrar todas las entradas
Mostrando entradas con la etiqueta UNIDAD 1. Mostrar todas las entradas

jueves, 22 de octubre de 2015

1.6 NUCLEOS

El Núcleo.- Componente que interactúa directamente con el hardware. Contiene un conjunto de rutinas que hacen posible la ejecución de los programas y la comunicación entre ellos y el Hardware, es el que gestiona la entrada y salida del sistema, adaptándolas al hardware del sistema.
Resultado de imagen para tipos de nucleos+SISTEMAS OPERATIVOS
Núcleo (Kernel) y Niveles de un Sistema Operativo
Definición.
Es el software que constituye el núcleo del sistema operativo, dónde se realizan las funcionalidades básicas como la gestión de procesos, la gestión de memoria y de entrada salida.
El “kernel” del sistema operativo controla todas las operaciones que implican procesos y representa sólo una pequeña porción del código de todo el Sistema Operativo pero es de amplio uso.
Niveles del Sistema Operativo 

Concepto de Kernel
Para que una computadora pueda arrancar y funcionar, no es necesario que tenga un núcleo para poder usarse.
Los programas pueden cargarse y ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos Proceso ,Cliente ,Servidor de Archivos ,Servidor de Impresión y Núcleo.

programas se tenía que reiniciar y reconfigurar la computadora cada vez. Con el tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños programas auxiliares, como el cargador y el depurador, o se cargaban desde memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en los fundamentos de lo que llegarían a ser los primeros núcleos de sistema operativo.
El kernel presenta al usuario o los programas de aplicación una interfaz de programación de alto nivel, implementando la mayoría de las facilidades requeridas por éstos. Reúne el manejo de una serie de siguientes conceptos ligados al hardware de nivel más bajo:
Procesos (tiempo compartido, espacios de direccionamiento protegidos);
Señales y Semáforos;
Memoria Virtual ("swapping", paginado);
Sistema de Archivos;
Tubos ("pipes") y Conexiones de red.
Una tubería (pipe) se puede considerar como un canal de comunicación entre dos procesos.
Los mecanismos que se utilizan para manipular tuberías son los mismos que para archivos, con la única diferencia de que la información de la tubería no se almacena en el disco duro, sino en la memoria principal del sistema. Este mecanismo de comunicación consiste en la introducción de información en una tubería por parte de un proceso (similar a la escritura en un archivo de disco).
Posteriormente otro proceso extrae la información de la tubería (similar a la lectura de información almacenada en un archivo de disco) de forma que los primeros datos que se introdujeron en ella
son los primeros en salir. Este modo de funcionamiento se conoce como FIFO (First In, First Out; el primero en entrar es el primero en salir). La comunicación mediante tuberías es de tipo half-duplex,
es decir, en un instante dado, la comunicación solamente puede tener lugar en un sentido. Si se quiere que un proceso A pueda simultáneamente enviar y recibir información de otro B, en general
se debe recurrir a crear dos tuberías, una para enviar información desde A hacia B y otra para enviar desde B hacia A.)
Una parte del kernel es independiente de los dispositivos presentes en el sistema, pero otra contiene los controladores necesarios para manejar partes específicas del hardware. El kernel interpreta los pedidos de los programas y los traduce en secuencias de bits que, presentadas a los registros de los controladores, operan sobre los dispositivos físicos. Por ejemplo el código de un kernel de Linux está escrito casi todo en C, salvo una pequeña parte en lenguaje ensamblador para los procesos de bajo nivel. El tamaño puede ir desde unos 400 KB hasta más de 50 MB de código fuente.

Tipos de Núcleos.
En función del tamaño y de las funcionalidades que posea el kernel podemos clasificarlo. Realmente, y pese a seguidores incondicionales en un modelo u otro, existe una tendencia básica a reducir el tamaño del núcleo proporcionando menos funcionalidades, que son desplazadas a módulos que se cargan en tiempo de ejecución. En función a esta idea tenemos tres tipos fundamentales de kernel:
Kernel monolítico
Todas las funcionalidades posibles están integradas en el sistema. Se trata de un programa de tamaño
considerable que deberemos recompilar al completo cada vez que se quiera añadir una nueva posibilidad. Estaes la estructura original de Linux. Por tratarse de una técnica clásica y desfasada el creador de Linux fue muy criticado. Ejemplos: los primeros kernels de Linux, UNIX y DOS
Kernel modular
Se trata de la tendencia actual de desarrollo. En el kernel se centran las funcionalidades esenciales como la administración de memoria, la planificación de procesos, etc. Sin embargo no tiene sentido que el núcleo de un sistema operativo englobe toda la parafernalia para comunicarse con todas las posibles de tarjetas de vídeo o de sonido. En otros sistemas operativos esto se soluciona con unos archivos proporcionados por el fabricante llamados drivers. En Linux se creó una interfaz adecuada para posibilitar el desarrollo de módulos que cumplieran esas funcionalidades. Esos módulos pueden ser compilados por separado y añadidos al kernel en tiempo de ejecución. Ejemplo: Actualmente el kernel de linux.
Estructura de Microkernel
Esta técnica pretende reducir a su mínima expresión el kernel, dejando a los niveles superiores el resto de las funcionalidades. Existen algunos kernels que lo utilizan, si bien el que centra nuestra atención es Hurd. Se trata del último kernel GNU llamado a sustituir a Linux como núcleo del sistema operativo. Aunque esta estrategia de diseño es tan antigua como la modular, no ha sido tenida en cuenta hasta ahora debido a las limitaciones de rendimiento que tenía. Ejemplos: AIX, La familia de micronúcleos L4, El micronúcleo Mach (usado en GNU Hurd y en Mac OS X), Minix, MorphOS, QNX, RadiOS, VSTa

1.5 ESTRUCTURA

Estructura monolítica.
Resultado de imagen para ESTRUCTURA MONOLÍTICAPrimeros sistemas operativos constituidos fundamentalmente por un sólo programa compuesto de un
conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.

Características:
1 Construcción del programa final a base de módulos compilados separadamente que se unen a través del encadenador (linker)
2 Buena definición de parámetros de enlace entre las distintas rutinas existentes
3 Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora.
4 Generalmente hechos a la medida, eficientes y rápidos en ejecución y gestión
5 Poco flexibles para soportar diferentes ambientes de trabajo o aplicaciones.
Estructura jerárquica.
Mayores necesidades de los usuarios, mayor organización del software. Se dividió el sistema operativo en pequeñas partes, cada una bien definida y con una clara interfase con el resto de elementos.
Se constituyó una estructura jerárquica, el primero de los cuales fue denominado THE (Technische
Hogeschool, Eindhoven)
Capa 5 – Control de programas de usuario
Capa 4 – Gestión de Archivos
Capa 3 – Control de operaciones entrada/salida
Capa 2 – Control de la Consola de operación
Capa 1 – Gestión de memoria
Capa 0 – Planificación de CPU
Capa -1 – Hardware
En esta estructura se basan la mayoría de los sistemas operativos actuales. Otra forma es la de anillos.
Cada uno tiene una apertura por donde pueden entrar las llamadas de las capas inferiores. Las zonas más internas del sistema operativo o núcleo estarán más protegidas de accesos indeseados desde las capas más externas.
 Las internas serán más privilegiadas que las externas.
Cliente-servidor
El más reciente, puede ser ejecutado en la mayoría de las computadoras, para toda clase de aplicaciones, es de propósito general.
El núcleo establece la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto
servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al
servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro.

1.4 CLASIFICACION

 Sistemas Operativos por Servicios
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario final.
Monousuarios: un usuario a la vez, no importa el número de cpu’s, número de procesos que pueda ejecutar en un mismo instante de tiempo. PC’s.

Multiusuarios: más de un usuario a la vez, por varias terminales conectadas a la computadora o por sesiones remotas en una red de comunicaciones. No importa el número de cpu’s ni el número de procesos que cada usuario puede ejecutar simultáneamente.
Monotareas: sólo una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea,
varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.
Multitareas: realiza varias labores al mismo tiempo. interfases gráficas orientadas al uso lo cual permite un rápido intercambio entre las tareas para el usuario,
Monoprocesador: solamente un CPU, de manera que si la computadora tuviese más de uno le sería inútil.
MS-DOS y MacOS.
Multiprocesador: más de un cpu y es capaz de usarlos todos para distribuir su carga de trabajo.
Trabajan de dos formas: simétrica o asimétricamente.
Asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el papel de
procesador maestro y servirá como pivote para distribuir la carga a los demás procesadores, que reciben el nombre de esclavos.
Simétrica, los procesos o partes de ellos son enviados indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.
Considerar la forma de crear aplicaciones para aprovechar los varios procesadores. Existen aplicaciones que fueron hechas para correr en sistemas monoprocesador que no toman ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores diferentes. El programador puede modificar sus algoritmos y aprovechar por sí mismo esta facilidad, es costoso en horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a la paralelización que a elaborar el algoritmo inicial.