ESTRUCTURA BASICA DE UN SISTEMA SISTEM A OPERATIVO
A) CARGADOR Cualquier programa que requiere ser ejecutado en la computadora, deberá ser transferido desde su lugar de residencia a la memoria principal. B) CARGADOR PARA EL SISTEMA OPERATIVO Este programa se encarga de transferir desde algún medio de almacenamiento externo (disco, cinta o tambor) a la memoria principal, los programas del sistema operativo que tienen como finalidad establecer el ambiente de trabajo del equipo de cómputo. Existe un programa especial almacenado en memoria ROM que se encarga de accesar a este programa cargador. Cuando el sistema operativo esta cargado en memoria toma el control absoluto de las operaciones del sistema. C) CARGADOR INCLUIDO EN EL SISTEMA OPERATIVO Su función es cargar a memoria todos los archivos necesarios para la ejecución de un proceso. SUPERVISOR (EJECUTIVO O MONITOR) Es el administrador del sistema que controla todo el proceso de la información por medio de un gran número de rutinas que entran en acción cuando son requeridos. Funge como enlace entre los programas del usuario y todas las rutinas que controlan los recursos requeridos por el programa para posteriormente continuar con su ejecución. El supervisor también realiza otras funciones como son: - Administra la memoria. - Administración de las rutinas que controlan el funcionamiento de los recursos de la computadora. - Manejo de Archivos - Administración y control de la ejecución de los programas. LENGUAJE DE COMUNICACION Es el medio a través del cual el usuario interactúa directamente con el sistema operativo y esta formado por comandos que son introducidos a través de algún dispositivo. Generalmente un comando consta de dos partes, la primera formada por una palabra que
identifica el comando y la acción a realizar y la segunda parte por un conjunto de valores o parámetros que permiten seleccionar diversas operaciones de entre los que dispone el comando. UTILERIA DE SISTEMA Son programas o rutinas del sistema operativo que realizan diversas funciones de uso común o aplicación frecuente como son: clasificar, copiar e imprimir información.
Texto Completo Estructura de los Sistemas Operativos Los Sistemas Operativos pueden organizarse de maneras diferentes, una de ellas, la más común quizá, son los sistemas Monolíticos, que a decir verdad no exhiben una estructura bien definida, sino que todos sus componentes se encuentran agrupados en un único programa (el Sistema Operativo), el cual se ejecuta en un único espacio de direcciones. El sistema operativo se escribe como un conjunto de procedimientos, cada uno de los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea este esquema, cada procedimiento tiene una interfaz bien definida en términos de parámetros y resultados, y cada una puede llamar a cualquier otra, si la última ofrece algún cálculo que la primera necesite. Los servicios o llamadas al sistema proporcionadas por el Sistema Operativo se solicitan colocando parámetros en lugares bien definidos, como el registro o la pila y luego se ejecuta un llamado al núcleo o supervisor. Esta instrucción cambia la máquina de modo usuario a modo supervisor y transfiere el control al Sistema Operativo, este examina los parámetro de la llamada para determinar cuál llamada al sistema se efectuará. Después, el Sistema Operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realizará la llamada k. Esta operación, identifica el procedimiento de servicio que después es llamado. Por último, se termina la llamada al sistema y el control se devuelve al programa de usuario. Pese a que todos los componentes se encuentran en un solo módulo, puede sugerirse una pequeña estructura como la siguiente: 1. Un programa central que invoque el procedimiento de servicio solicitado. 2. Un conjunto de procedimientos que llevan a cabo las llamadas al sistemas. 3. Un conjunto de procedimientos utilitarios que ayude a los procedimientos de servicio. En este modelo, para cada llamada al sistema hay un procedimiento de servicio que se encarga
de ella. Los procedimientos utilitarios hacen cosas que se necesitan para varios procedimientos de servicio, como buscar o traer datos de los programas del usuario. En un sistema monolítico una llamada al sistema se realiza de la siguiente forma: 1. El programa de usuario es atraído hacia el núcleo o kernel. 2. El Sistema Operativo determina en número de servicio solicitado. 3. El Sistema Operativo localiza y llama al procedimiento correspondiente al servicio. 4. El control se devuelve al programa de usuario.
En un sistema por capas, el sistema operativo se organiza como una jerarquía de capas, donde cada capa ofrece una interfaz clara y bien definida a la capa superior y solamente utiliza los servicios que le ofrece la capa inferior. La principal ventaja que ofrece este modelo es la modulación y la ocultación de la información, ya que una capa no necesita saber cómo fue implementada la capa sobre la que se construye, sino la interfaz que esta le ofrece. En cada capa se encapsulan funciones especificas, así cada capa se encarga de una parte específica del sistema operativo. En general en un sistema operativo puede encontrarse la siguiente estructura, aunque esta puede variar de acuerdo al sistema operativo que se estudie.
ADMINISTRADOR DE MEMORIA: Se encarga de las operaciones de asignación, liberación y protección de memoria. ADMINISTRADOR DE PROCESOS: Se encarga de las operaciones básicas sobre procesos: crear, modificar y destruir. Crear: Cuando se añade un proceso al sistema, es necesario crea su descriptor o PCB y asignarle el espacio de direcciones que este utilizará. Estas acciones constituyen la creación de un nuevo proceso. Modificar: Un proceso es cambiar algún o algunos valores de los registros de la PEP. Destruir: La destrucción de un proceso implica, borrarlo del sistema destruyendo su descriptor y liberando los recursos que tenga asignados.
COORDINACIÓN ENTRE PROCESOS: Se encarga de la sincronización entre procesos por
medio de semáforos.
COMUNICACIÓN ENTRE PROCESOS: Corresponde a la comunicación entre proceso, por medio del envío y la recepción de mensajes. ADMINISTRADOR DE RELOJ FÍSICO: Convierte las oscilaciones del reloj físico en tiempo. ADMINISTRACIÓN DE ENTRADA/SALIDA: Se encarga de las operaciones de Entrada/Salida. COMUNICACIÓN ENTRE COMPUTADORAS: Implanta las funciones básicas de comunicación con otras computadoras. SISTEMA DE ARCHIVOS: Maneja el sistema de archivos, estableciendo políticas para asignar espacio en disco y mecanismos para de accesos a los archivos. Otra manera de ver el sistema operativo por capas es el caso de una microcomputadora. Sobre el hardware se tienen inicialmente dos componentes: El Administrador de Entradas/Salidas por Bytes: Son procedimientos de bajo nivel que se encargan de realizar la comunicación entre la computadora y aquellos periféricos que manejan bytes, como por ejemplo, la impresora, la consola, entre otros. El Administrador de Entradas/Salidas por Lotes: Este es el encargado de controlar el funcionamiento de los discos.. Una capa más arriba se encuentra el núcleo del sistema o kernel que es el encargado de la administración de la memoria, el procesador y los archivos. Finalmente, sobre el núcleo se encuentra el Shell o Intérprete de Comandos o el Programa de Usuario, de manera excluyente.
Máquinas virtuales. En toda computadora podemos definir dos máquinas abstractas: La máquina desnuda o simple, que es definida por el hardware. Todas las operaciones en ellas son las instrucciones de máquina. La máquina extendida, definida por el hardware y el núcleo del sistema operativo; esta es la que generalmente utiliza el usuario.
Los programas de los usuarios corren bajo la máquina extendida lo que representa algunos inconvenientes como son la portabilidad de los programas y es imposible correr dos sistemas operativos simultáneamente, pues estos se ejecutan directamente sobre la máquina desnuda y solo se dispone de una. Como solución a los problemas anteriores se puede crear más de una interfaz de máquina desnuda, no soportada directamente por el hardware sino por el software. Para llevar a cabo esta función se cuenta con el SGMV Sistema Generador de Máquina Virtual y a las interfases generadas se les llama Máquina Virtual. El corazón del sistema, denominado Monitor de la Máquina Virtual, se ejecuta sobre el hardware y realiza la multiprogramación, proporciona no solo una sino varias máquinas virtuales a la capa superior. Estas máquinas son duplicados exactos de la máquina desnuda realizados mediante el hardware y el software en las cuales un conjunto dominante de las instrucciones del procesador virtual se ejecutan en el procesador real, estas copias tienen su modo usuario y núcleo, E/S, interrupciones, etc. Cada máquina virtual es igual a la máquina real, por tanto sobre ellas se puede ejecutar cualquier sistema operativo que pueda ejecutarse en forma directa sobre el hardware. Las máquinas virtuales pueden ejecutar diferentes sistemas operativos. Algunas de ellas ejecutan CMS (Conversational Monitor SYstem). El CMS es el sistema supervisor de la conversación, es un sistema de usuario único que ofrece potente funciones para el desarrollo de programas. Un usuario CMS percibe una máquina virtual dedicada. CMS es un sistema de aplicaciones con potentes características para el desarrollo de programas. Contiene editores, traductores de lenguajes, diversos paquetes de aplicaciones e instrumentos de depuración. Cuando un sistema ejecuta una llamada al sistema (SVC), el sistema operativo lo atrapa en su propia máquina virtual, este entonces proporciona las instrucciones de E/S en hardware para la lectura del disco virtual o lo necesario para llevar a cabo la llamada. estas instrucciones son entonces atrapadas por el SGMV, que las lleva a cabo como parte de la simulación del hardware verdadero.
En el modelo Cliente-Servidor se definen dos tipos de procesos: Procesos Clientes y procesos Servidores.
Una tendencia de los Sistema Operativos modernos consiste en mover código del sistema operativo a las capas superiores y mantener el núcleo mínimo, esto lo logran tratando de implantar la mayoría de las funciones en los procesos del usuario. Para solicitar un servicio, como la lectura de un archivo, un proceso cliente debe enviar ala solicitud al proceso servidor, quien realiza el trabajo y luego devuelve una respuesta. La función del kernel se reduce a funciones básicas como controlar, supervisar y coordinar la comunicación entre los procesos clientes y servidores. Al dividir el Sistema Operativo en partes, cada una de las cuales se encarga del manejo de una facetas del sistema, como el servicio de archivo, el servicio de proceso, el servicio de memoria, entre otros, cada parte se vuelve pequeña y fácil de manejar. Además como todos los servidores corren en modo usuario y no en modo núcleo, no tienen acceso al hardware. Esto trae como beneficio que si se activa un error oculto en el servidor de archivo por ejemplo, esto hará fallar el servicio de archivos pero por lo general no hará fallar la máquina. A pesar de que los procesos servidores no tienen acceso al hardware, algunas tareas no pueden ejecutarse en mod usuario por lo que se les permite a los procesos servidores algunas veces ejecutarse en modo núcleo con acceso total al hardware, usando un mecanismo normal de mensajes para la comunicación entre procesos. Otra de las ventajas de este modelo es su adaptabilidad a sistemas distribuidos. Si un cliente se comunica con su servidor por medio de mensajes, no es relevante para el si el mensaje se maneja en forma local o en su máquina, o si bien se envío de una red a un servidor en una máquina remota.
Por su estructura De Wikilibros, la colección de libros de texto de contenido libre. Sistemas operativos/Por su estructura Saltar a navegación, buscar
[editar] Estructura Monolítica Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las características: y
y
y
Construcción del programa final a base de módulos compilados separadamente que se unen a
través del ligador. Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento. Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc.
[editar] Estructura Jerárquica A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas. Se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles. Ejemplos: Multics y Unix.
[editar] Máquina Virtual Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso, mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias máquinas diferentes.
1.5 Estructura de los sistemas operativos [TANE93] [BIC88] En el apartado 3 se ha visto el aspecto externo de los sistemas operativos (es decir, la interfaz con el programador y con el usuario), en este apartado se echará un vistazo al interior del sistema operativo. En las subsecciones siguientes se examinarán algunas de las formas posibles de estructurar el código de un sistema
operativo. Los diseños estudiados no son exhaustivos, pero dan una idea de las posibilidades.
1.5.1 Sistemas monolíticos Este tipo de organización es, con diferencia, la más común. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada uno de ellos es libre de llamar a cualquier otro, si éste último proporciona un cálculo útil para el primero. Para construir el programa objeto real del sistema operativo siguiendo este punto de vista, se compilan de forma individual los procedimientos, o los ficheros que contienen los procedimientos, y después se enlazan en un sólo fichero objeto con el enlazador. En términos de ocultación de la información, ésta es prácticamente nula: cada procedimiento es visible a los demás (en contraste con una estructura con módulos o paquetes, en la que la mayoría de la información es local a un módulo, y donde sólo los datos señalados de forma expresa pueden ser llamados desde el exterior del módulo). Los servicios (mediante llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como los registros o la pila, para después ejecutar una instrucción especial de trampa, a veces referida como llamada al núcleo o llamada al supervisor. Esta instrucción cambia la máquina del modo usuario al modo núcleo (también conocido como modo supervisor), y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 5.1. El sistema operativo examina entonces los parámetros de la llamada para determinar cual de ellas se desea realizar, como se muestra en (2) de la figura 5.1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que implementa la k -ésima llamada al sistema. Esta operación, que se muestra en (3) de la figura 5.1, identifica el procedimiento de servicio, al cual se llama. Por último, la llamada al sistema termina y el control vuelve al programa del usuario.
Esta organización sugiere una estructura básica del sistema operativo: Un programa principal que llama al procedimiento del servicio solicitado. Un conjunto de procedimientos de servicio que lleva a cabo las llamadas al sistema. Un conjunto de procedimientos de utilidades que ayudan a los procedimientos de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas necesarias para varios procedimientos de servicio, como por ejemplo, buscar los datos del programa del usuario. Esta división de los procedimientos en tres capas se muestra en la figura 5.2.
1.5.2 Modelo cliente-servidor Una tendencia de los sistema operativos modernos es la de trasladar el código a capas superiores, y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el implantar la mayoría de las funciones del sistema operativo como procesos de usuario. Para solicitar un servicio, como la lectura de un bloque de cierto fichero, un proceso de usuario (denominado en este caso proceso cliente) envía la solicitud a un proceso servidor, que realiza el trabajo y devuelve la respuesta.
En este modelo, que se muestra en la figura 5.3, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequeña y controlable. Además, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de ficheros éste puede fallar, pero esto no afectará en general a toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en sistemas distribuidos (véase la figura 5.4). Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.
La idea anterior de un núcleo que sólo controla el transporte de mensajes de clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo (como la introducción de órdenes en los registros físicos de los controladores de E/S) son difíciles, si no es que imposible de realizar, a partir de programas de usuario. Existen dos formas de afrontar este problema. Una es hacer que algunos procesos de servidores críticos (por ejemplo, los gestores de los dispositivos de E/S) se ejecuten en realidad en modo núcleo, con acceso total al hardware, pero de forma que se comuniquen con los demás procesos mediante el mecanismo normal de mensajes. La otra forma es construir una cantidad mínima de mecanismos dentro del núcleo, pero manteniendo las decisiones de política relativos a los usuarios dentro del espacio de los usuarios. Por ejemplo, el núcleo podría reconocer que cierto mensaje enviado a una dirección especial indica que se tome el contenido de ese mensaje y se cargue en los registros del controlador de algún disco, para iniciar la lectura del disco. En este ejemplo, el núcleo ni siquiera inspeccionaría los bytes del mensaje para ver si son válidos o tienen algún sentido; sólo los copiaría ciegamente en los registros del controlador del disco. Es evidente que debe utilizarse cierto esquema para limitar tales mensajes sólo a los procesos autorizados. La separación entre mecanismos y política es un concepto importante, aparece una y otra vez en diversos contextos de los sistemas operativos.
Núcleo (informática) De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Para otros usos de este término, véase Núcleo.
En informática, un núcleo o kernel (de la raíz germánica K ern) es un software que constituye la parte más importante del sistema operativo.[1] Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador .
Contenido [ocultar]
y y
y
y y y
1 Técnica 2 Generalidades o 2.1 Funciones generalmente ejercidas por un núcleo o 2.2 Unix 3 Tipos de núcleo o 3.1 Micronúcleos o 3.2 Núcleos monolíticos en contraposición a micronúcleos o 3.3 Núcleos híbridos (micronúcleos modificados) o 3.4 Exonúcleos
4 Referencias 5 Véase también 6 Enlaces externos
[editar] Técnica Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la memoria ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque ( startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main()) del software de la aplicación.[2]
[editar] Generalidades
Una visión típica de la arquitectura de computadores como una serie de capas de abstracción: hardware, firmware, lenguaje de máquina, núcleo, software de sistema y aplicaciones
[3]
En informática, el núcleo es el programa informático que se asegura de: y y y
La comunicación entre los programas que solicitan recursos y el hardware.
Gestión de los distintos programas informáticos (tareas) de una máquina. Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)
La mayoría de las interfaces de usuario se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria. [editar] Funciones generalmente ejercidas por un n úcleo
Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario. Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionados por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados. [editar] Unix
Un núcleo Unix es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en ellenguaje ensamblador del procesador en el que opera. Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual. El núcleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo. y y
Creación de procesos, asignación de tiempos de atención y sincronización. Asignación de la atención del procesador a los procesos que lo requieren.
y
Administración de espacio en el sistema de archivos, que incluye: acceso, protección y
y
administración de usuarios; comunicación entre usuarios y entre procesos, y manipulación de E/S y administración de periféricos. Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.
Reside siempre en la memoria principal y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al núcleo mediante módulos especiales conocidos como llamadas al sistema. Consta de dos partes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos del ordenador. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia. Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en el disco magnético (operación denominada bootstrap). Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El núcleo también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal. A continuación, el núcleo inicializa un proceso especial, llamado proceso 0. En Unix, los procesos se crean mediante una llamada a una rutina del sistema (fork), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el núcleo asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema. Después de haber creado el proceso 0, se hace una copia del mismo, con lo que se crea el proceso 1; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o planificador, que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, init. El proceso init es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control Shell de Unix en la terminal principal, o consola del sistema, proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta
modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora. Init crea otro proceso, que espera a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si el nombre de usuario y la contraseña proporcionadas son correctos, entonces entra en operación el programa Shell, que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal. A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete Shell. Cuando se desea terminar la sesión hay que desconectarse de Shell (y, por lo tanto, de Unix), mediante una secuencia especial de teclas (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.
[editar]
Tipos de núcleo
No necesariamente se necesita un núcleo para usar una computadora. Los programas pueden cargarse y ejecutarse directamente en una computadora «vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna abstracción (informatica) del hardware ni ninguna ayuda del sistema operativo. Ésta era la forma normal de usar muchas de las primeras computadoras: para usar distintos 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. Hay cuatro grandes tipos de núcleos: y
y
y
y
Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y
variadas. Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor [4] funcionalidad. Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente. Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.
[editar] Micronúcleos
Esquema del funcionamiento de un micronúcleo. Artículo
principal: Micronúcleo
El enfoque micronúcleo consiste en definir una abstracción muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mínimos, como la gestión de hilos, el espacio de direccionamiento y la comunicación entre procesos. El objetivo principal es la separación de la implementación de los servicios básicos y de la política de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servidor en espacio de usuario ejecutándose encima del micronúcleo. Estos servidores de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseño del núcleo. Si falla uno de estos servidores, no se colgará el sistema entero, y se podrá reiniciar este módulo independientemente del resto. Sin embargo, la existencia de diferentes módulos independientes origina retardos en la comunicación debido a la copia de variables que se realiza en la comunicación entre módulos. Algunos ejemplos de micronúcleos: y y y y y y y y y y
AIX La familia de micronúcleos L4
El micronúcleo Mach, usado en GNU Hurd y en Mac OS X BeOS Minix MorphOS Q NX RadiOS VSTa Hurd
[editar] Núcleos monolíticos en contraposición a micron úcleos Artículos
principales: Núcleo monolítico y Micronúcleo
Frecuentemente se prefieren los núcleos monolíticos frente a los micronúcleos debido al menor nivel de complejidad que comporta el tratar con todo el código de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el núcleo de Mac OS X, está basado en el núcleo Mach 3.0 y en FreeBSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseño de micronúcleo convencional. A principios de los años 90, los núcleos monolíticos se consideraban obsoletos. El diseño de Linux como un núcleo monolítico en lugar de como un micronúcleo fue el tema de una famosa disputa[5] entre Linus Torvalds y Andrew Tanenbaum. Los argumentos de ambas partes en esta discusión presentan algunas motivaciones interesantes. Los núcleos monolíticos suelen ser más fáciles de diseñar correctamente, y por lo tanto pueden crecer más rápidamente que un sistema basado en micronúcleo, pero hay casos de éxito en ambos bandos. Los micronúcleos suelen usarse en robótica embebida o computadoras médicas, ya que la mayoría de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sería posible con los núcleos monolíticos, ni siquiera con los modernos que permiten cargar módulos del núcleo. Aunque Mach es el micronúcleo generalista más conocido, se han desarrollado otros micronúcleos con propósitos más específicos. L3 fue creado para demostrar que los micronúcleos no son necesariamente lentos. La familia de micronúcleos L4 es la descendiente de L3, y una de sus últimas implementaciones, llamada Pistachio, permite ejecutar Linux simultáneamente con otros procesos, en espacios de direccionamiento separados. QNX es un sistema operativo que ha estado disponible desde principios de los años 80, y tiene un diseño de micronúcleo muy minimalista. Este sistema ha conseguido llegar a las metas del paradigma del micronúcleo con mucho más éxito que Mach. Se usa en situaciones en que no se puede permitir que haya fallos de software, lo que incluye desde brazos robóticos en naves espaciales, hasta máquinas que pulen cristal donde un pequeño error podría costar mucho dinero. Mucha gente cree que como Mach básicamente falló en el intento de resolver el conjunto de problemas que los micronúcleos intentaban subsanar, toda la tecnología de micronúcleos es inútil. Los partidarios de Mach afirman que ésta es una actitud estrecha de miras que ha llegado a ser lo suficientemente popular para que mucha gente la acepte como verdad. [editar] Núcleos híbridos (micron úcleos modificados) Artículo
principal: Núcleo híbrido
Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial» en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario. Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en micronúcleo adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del
núcleo de FreeBSD en el núcleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach. Algunos ejemplos de núcleos híbridos: y y y y
Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT XNU (usado en Mac OS X) DragonFlyBSD ReactOS
Hay gente que confunde el término «núcleo híbrido» con los núcleos monolíticos que pueden cargar módulos después del arranque, lo que es un error. «Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la migración de código «no esencial» hacia el espacio de usuario, pero manteniendo cierto código «no esencial» en el propio núcleo por razones de rendimiento. [editar] Exonúcleos Artículo principal: Exonúcleo
Esquema básico de la interacción entre un Exonúcleo (Exokernel) con el Software a través de bibliotecas.
Los exonúcleos, también conocidos como sistemas operativos verticalmente estructurados, representan una aproximación radicalmente nueva al diseño de sistemas operativos. La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exonúcleos son extremadamente pequeños, ya que limitan expresamente su funcionalidad a la protección y el multiplexado de los recursos. Se llaman así porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinámicas. Los diseños de núcleos clásicos (tanto el monolítico como el micronúcleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstracción del hardware, o detrás de los controladores de dispositivo. En los sistemas clásicos, si se asigna memoria física, nadie puede estar seguro de cuál es su localización real, por ejemplo.
La finalidad de un exonúcleo es permitir a una aplicación que solicite una región específica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos están disponibles, y que el programa tiene derecho a acceder a ellos. Debido a que el exonúcleo sólo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, éste es complementado por una «biblioteca de sistema operativo». Esta biblioteca se comunica con el exonúcleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos. Algunas de las implicaciones teóricas de un sistema exonúcleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutándose en un solo exonúcleo, y que los desarrolladores pueden elegir prescindir de o incrementar funcionalidades por motivos de rendimiento. Actualmente, los diseños exonúcleo están fundamentalmente en fase de estudio y no se usan en ningún sistema popular. Un concepto de sistema operativo es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informática. El MIT también ha diseñado algunos sistemas basados en exonúcleos. Los exonúcleos se manejan en diferente estructura dado que también cumplen funciones distintas