viernes, 1 de junio de 2018

Reportes

Reportes de las Prácticas 1, 2, 3 y 4.

Reporte #1: Servidor Windows a Clientes Windows


Reporte #1: Servidor Linux a Clientes Linux




Reporte #1: Servidor Linux a Clientes Windows




Reporte #1: Servidor Windows a Clientes Linux

Cuestionario Unidad 2 - 6

CUESTIONARIO UNIDAD 2 - 6


1-. ¿Tipos de procesos que hay en los sistemas operativos?

Nativos, Acumulados, Resultantes e Híbridos.

2-. ¿A qué se le llama atributo en sistemas operativos?

A una especificación que define una propiedad de un objeto, elemento o archivo.

3-. ¿Cuáles son los tipos de operación de memoria?

Overlay  (Superposición o Sobreposición)
Swappin (Intercambio de espacio)
Fragmentación (Dividir la memoria por sectores)
Paginación

4-. ¿Cuáles son los atributos que tienen el procesador, memoria y disco duro?

Dirección
Registro
Espacio
Pila
Velocidad
Sector

5-. ¿Qué es el mapeo de memoria?

Es aquel que contiene información sobre el tamaño total de memoria y las relaciones que existen entre direcciones lógicas y físicas.

6-. ¿A través de que se realiza la planificación y gestión de entrada y salida?

A través de la bios y el planificador.

7-. ¿Cuáles son las partes de un sistema operativo?

Manejo de procesos, memorias, ficheros, dispositivos de E/S, y redes.

8-. ¿Cuántos niveles de protección y seguridad existen y cuáles son?

Son siete, los cuales son:

0-. No hay
1-. ID; usuario, password
2-. Domótica
3-. Ergonómico o bromecánico
4-. Especial
5-. Combinado o mixto
6-. Avance tecnológico

9-. Sistemas operativos más utilizados.

Windows, Linux y Mac OS

10-. ¿Quién desarrolla el mapeo de memoria?

El compilador o traductor.

11-. ¿Cuántos niveles componen la jerarquía de memoria?

Son 4, los cuales son:

Nivel 0: Registros
Nivel 1: Memoria caché
Nivel 2: Memoria principal
Nivel 3: Disco duro (con el mecanismo de memoria virtual)

12-. ¿Para qué sirve  la administración de memoria?

Para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.

13-. ¿Qué son las particiones dinámicas?

Son variables en número y longitud, esto quiere decir que cuando se carga un proceso a memorial principal se le asigna el espacio que necesita en memoria y no más. Esta partición comienza siendo muy buena pero en el trascurso de uso deja un gran número de huecos pequeños en la memoria lo cual se le denomina fragmentación externa.

14-. ¿Qué son los sectores de lotes?

Es la ejecución de una lista de comandos del Sistema Operativo  uno tras otro sin intervención del usuario.

15-. ¿En qué consiste el sistema operativo multitareas?

Se encarga del funcionamiento disponible en algunos sistemas  operativos, mediante el cual  una computadora procesa varias  tareas al mismo tiempo.

16-. Tipos de redes que existen.

Alámbricos e inalámbricos, puntos de acceso, redes (normal, distribuida, paralelas, inteligente, dedicada).

17-. Nombre que recibe cada nivel de protección y seguridad.

0-1-. Estándar
1-2-. Básico
2-3-. Verificación
3-4-. Validación
4-5-. Autentificación
5-6-. Confirmación

18-. ¿Qué es un protocolo en sistemas operativos?
Es la comunicación entre máquinas.

19-. ¿Qué es un controlador?

Es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Es una pieza esencial, sin la cual no se podría usar el hardware.

20-. ¿Cuáles son las funciones que tiene la gestión de la memoria principal?

Conocer qué partes de la memoria están utilizadas y por quién.
Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
Asignar y reclamar espacio de memoria cuando sea necesario.

jueves, 31 de mayo de 2018

Apuntes Unidad 6

Apuntes Unidad 6

Protección y seguridad


Redes, Sistemas distribuidos y Seguridad.




  • Protocolos (comunicación entre maquinas)
  • Tipos de redes
  • Alámbricos e inalámbricos, puntos de acceso, redes (normal, distribuida, paralelas, inteligente, dedicada)
  • Administración de redes
  • Protección y seguridad
  • Políticas, mecanismos y técnicas
  • Administración de la seguridad
  • Sistemas operativos distribuidos
  • Modelos de aplicación
  • Procesos, hilos y maquinas
  • Nombrado y sincronización
  • Tolerancia a fallos


Clases de dispositivos

  • De bloques
  • De caracteres
  • De red


Protección y Seguridad




  • Amenazas y problemas.
  • Virus y malware.
  • Protección al sistema operativo.
  • Políticas, mecanismos y técnicas.


Niveles de Proteccion y Seguridad

0-. No hay
1-. ID; usuario, password
2-. Domótica
3-. Ergonómico o bromecánico
4-. Especial
5-. Combinado o mixto
6-. Avance tecnológico

Nombre por nivel

0-1-. Estándar
1-2-. Básico
2-3-. Verificación
3-4-. Validación
4-5-. Autentificación
5-6-. Confirmación

martes, 29 de mayo de 2018

Apuntes Unidad 5

Apuntes Unidad 5
Sistemas de Archivos


ARCHIVOS Y DIRECTORIOS



El Formato de archivo contiene nombre y extensión, el nombre es lo que contiene y la extensión en que fue echo.

Un modo de texto contiene 8 caracteres para el nombre y para la extensión puede tener de tres a cuatro caracteres.  

Un formato de directorios contiene 8 caracteres para nombrarlo y no posee una extensión.

Un atributo se refiere a, fecha, hora, usuario, tamaño.


DIRECTORIOS


  • Estructura lógica.
  • Estructura física.
  • Grafica acíclica.
  • Operaciones con directorios y archivos.
  • Metadatos del sistema de archivos.
  • Métodos de acceso:
  • Secuencial.
  • Aleatorio.
  • Indexado.
  • Hash.
  • En bruta.
  • Listas ligadas.
  • Rastreo de espacio libre.
  • Asignación de archivos:
  • Contigua.
  • Vinculada.
  • Indexada.
  • Por mapeo.
Los visores sirven para ver el tipo de formato.


SISTEMAS DE ARCHIVOS Y DIRECTORIOS

A través de  los comandos se pueden generar:

  • Rutas = path = camino.
  • Atributos = attrib = características.
  • Conjunto = set = config. = configuración.


Los atributos son propiedades.

  • Acceso (creación; secuencial, aleatorio mixto y con código)
  • Oculto
  • Usuario
  • Con contraseña
  • Protegido
  • Solo lectura
  • Lectura/escritura (modificación)



ARCHIVOS Y DIRECTORIOS

  • Métodos de acceso.   secuencial, aleatorio, mixto especial.
  • Meta-datos del sistema de archivos.
  • Estructura física y lógica.
  • Acceso de nivel superior  → indexado, hash, especial.
  • Rastreo de espacio libre. (listas ligadas)
  • Asignación de archivos.
  • Aplicaciones.   FAT, NTFS                      
  • Montajes, redirección y múltiple



La palabra "Indexado" es porque trabaja sobre subíndices y significa ordenado que se hace a través de los índices y atributos. Y la palabra "Hash" significa, tomar valores de mayor a menor y viceversa, de menor a mayor.

Cabe mencionar que un algoritmo varía de acuerdo a la aplicación y que son formulas.

El API crea los archivos y directorios.
Las operaciones son carga y descarga.
La programación en sistemas operativos es basada en comandos (BATCH) en lotes o por pasos.

RASTREO DE ESPACIO LIBRE

  1. Acceso en bruto
  2. Listas ligadas
  3. FAT, NTFS
  4. Montajes
  5. Redirecciones.

lunes, 28 de mayo de 2018

Apuntes Unidad 4

Apuntes Unidad 4

Administración de Entrada / Salida.


Gestión de Entrada y Salida.

Esto representa los intercambios de información desde el procesador o incluso al acceso directo de la memoria. Esta actividad de entrada y salida se realiza gracias a la relación que hay entre el sistema operativo con los diversos periféricos, así administrar y controlar  los estados y recursos que tienen cada uno de estos mediante los controladores de dispositivos.


  1. Características del dispositivo; Accesos secuencial y aleatorio.
  2. Clases
  3. Almacenamiento
  4. Organización física
  5. Organización lógica
  6. RAID, CRC, LRC, EDC, ECC.
  7. Planificación
    • FCFS, PICKUP, SSTF, LOOK, C-LOOK.
  8. Controladores


Planificación y Gestion de Entrada / Salida.

Esto se realiza a través de la BIOS y el planificador.

Los conectores tienen configuración.



Apuntes Unidad 2 y 3

Apuntes Unidad 2 y 3

- Administración de Procesos y del procesador
- Administración de memoria.


  • Los procesos cambian de nombre dependiendo de la capa en donde se encuentren.
  • Los Procesos son igual a una tarea o trabajo.
  • A un proceso se le conoce como ejecución o correr.
  • Existen procesos binarios, cuaternarios, etc.
  • Los procesos trabajan con datos: Bios, Otros procesos, Calculo, Verificación, etc.
  • Los datos manejan solo 0/1 a los cuales se les llama “paridad”.
  • La paridad es igual a un “OK/FAIL”.
  • Los estados del proceso son (la forma que presentan).
  • La diferencia que hay entre un archivo y un proceso es que: El archivo es un espacio y un proceso son programas y archivos con instrucciones. 





  • Procesos: programa ejecutándose “funcionando”.
  • Archivo: contiene datos y su extensión es “.DOC”.
  • Programa: contiene instrucciones, comandos, ordenes, palabras reservadas, sentencias.
  • Instrucciones: acciones a realizar a lo que llamamos lenguaje de programación.
  • Comandos: programas (internas, externas) conocido como proceso en lotes o en batch.


Ordenes: (=, ≥, ≤)
Símbolo (  )= Vinculo.






  • Proceso de usuario y aplicación.


  • Procesos del programa del sistema.


  • Procesos del sistema operativo.


Planificador


  • Interrupción: son switch


  • Registros: (recorel), exte, rec, reg, R, r.


  • Tiempos o plazos: síncrono o asíncrono.


Modo de procesos


  • Supervisor: hablamos de privilegios, derechos o permisos.


  • Núcleo o monitor: cuando queremos checar todos los procesos usados.


  • Modo regular: usuario.



DESCRIPTOR DE PROCESOS

Planificación de procesos: a corto o largo plazo.


  • FCFS: el primero en venir y el primero en irse.
  • FIFO: primero en entrar, primero en salir.
  • POR PRIORIDAD: nivel de importancia.
  • SRTF: busca la mejor ruta para llegar a su meta. Garantiza buen funcionamiento.
  • APROPIACION
  • COLAS: trabaja con tiempos y turnos.
  • HRRN: razón de resultado (el mejor proceso).
  • POR ALGORITMO
  • POR AFINIDAD
  • POR HILOS


Tipos de procesos: Nativos, Acumulados, Resultantes e Híbridos.


  • .exe: es de longitud que sea (M, G, T), se guarda en disco duro.
  • .com: solo es de un mega y se guarda en la memoria RAM y ROM.


PROCESOS

Procesos (modo): lineal, cooperativo, distribuido, bloqueo y semaforo.





ATRIBUTO DE LOS MECANISMOS DE COMUNICACIÓN


  • Proceso por canal, único o múltiple.
  • Conexión unidimensional.
  • Orientados a conexión o sin conexión.
  • Estrategias de nombrado.
  • Multicast, broadcast, unicast.
  • Orientado a flujo o mensajes.
  • Heterogéneas y homogéneas.
  • Síncronos y asíncronos.
  • Persistentes y transitorios.
  • Operaciones.
  • Estrategia en el umbral de memoria.



Un atributo en inglés es “attrib” y en sistemas son: forma, presentación y meta.

Una ruta o camino es el lugar en donde se localiza o donde se encuentra.


OPERACIONES CON PROCESOS


  • Persistentes y transitorios.
  • Colas: turnos que siguen los procesos.
  • Atómicos: procesos únicos.
  • Bloqueos
  • Socket´s: es un programa que divide las tareas para que los demás procesos sean más rápidos.
  • Tuberías: (pipeling) procesos alternativos para llegar al punto final.
  • Algoritmos.


OPERACIONES DE MEMORIA

  • Overlay  (Superpocición o Sobreposición)
  • Swappin (Intercambio de espacio)
  • Fragmentación (Dividir la memoria por sectores)
  • Paginación

En la computadora todo es único en el mismo espacio.

El trabajo de la memoria es ahorrar y buscar espacio.


MEMORIA

  • Segmentación (sección, parte de registros y pilas).
  • Fragmentación.
  • Paginación (MMU)( investidas, por demanda, grandes, sucias).
  • Distribución del tiempo (EAT).
  • Procesos múltiples.
  • Cargas y bibliotecas dinámicas.
  • Accesos (TLB)(CAM).


Los atributos que tienen el procesador, memoria y disco duro son:

  • Dirección
  • Registro
  • Espacio
  • Pila
  • Velocidad
  • Sector

Un Meta-dato es un dato con código.


MAPEO DE MEMORIA

El mapeo tiene direccion de memoria, programa a ejecutar y resultado.

  • El mapeo solo tiene un número.
  • Quien desarrolla el ampeo es el compilador o traductor.

Apuntes Unidad 1

Apuntes Unidad 1

Introducción a los Sistemas Operativos

En sistemas: 

  • Abreviatura  se le conoce como acrónimo.
  • Compatibilidad es igual a algo parecido pero no a algo igual.
  • Configuración: establece los parámetros de origen (fábrica). 
  • Actualización: agrega nuevos archivos, quita, cambia, pone.
  • Ajustes:  agrega algo para que funcione mejor o peor.
  • SepUp: conjunto actualizado.
  • Tipos de Sistemas Operativos: se clasifican en usuario, tarea, aplicación, kernel, tamaño, posición, etc. 


Significados



  • S.O: Sistemas Operativos.
  • D.O.S: Sistema Operativo en Disco por sus siglas en ingles "Disk Operating System”



- El shell es el ambiente o también conocido como entorno lo cual se divide en la parte gráfica y comando que es igual al texto.

- El kernel es el núcleo que constituye una parte fundamental del sistema operativo.

- El  firmware es algo específico como lo son las tarjetas, procesadores, controladores, etc.  

Kernel

El kernel es es la parte central de un sistema operativo y es el que se encarga de realizar toda la comunicación segura entre el software y el hardware del ordenador.
Los tipos que hay son micronúcleos, exonúcleos, monolíticos, híbridos, empotrado.
De un controlador se deriva la entrada, la función y la salida.




Un comando en sistemas es ¿Qué hace? y ¿Cómo lo va a hacer?, del cual se deriva los internos que es la memoria RAM como lo son los programas pequeños y los Externos que se encuentran en el disco duro como son programas grandes.




Cuestionario Unidad 1



Cuestionario Unidad 1.


1. ¿Cómo se define un Sistema Operativo?

Conjunto de órdenes y programas que controlan los procesos básicos de una computadora y permiten el funcionamiento de otros programas.


2. ¿Por qué se tiene que aprender todo lo relacionado con el Sistema Operativo?

La importancia del sistema operativo moderno reside en poder controlar una máquina a través de una interfaz visual, sin tener grandes conocimientos técnicos, convirtiendo un hardware complejo en una solución para el hogar o la oficina completamente amigable y accesible a todos los públicos.


3. ¿Por qué un dispositivo requiere de un sistema operativo?

Porque el SO en este caso, despierta a la computadora y hace que reconozca a la CPU, la memoria, el teclado, el sistema de vídeo y las unidades de disco. Además, proporciona la facilidad para que los usuarios se comuniquen con la computadora y sirve de plataforma a partir de la cual se corran programas de aplicación.


4.- ¿Cuándo se utiliza un S.O y cuando no?

Cuando el dispositivo requiere realizar más de una tarea al mismo tiempo.

5.- ¿Cuál es la diferencia más importante entre la vista del usuario y la vista del sistema? 

Los recursos gráficos.

6.- ¿Cuáles son las partes de un sistema operativo? 

Gestión de procesos, Gestión de la memoria principal, Gestión del almacenamiento secundario, Sistema de entrada y salida, Sistema de archivos, Sistemas de protección, Sistema de comunicaciones, Programas del sistema, Gestión de recursos.

7.- ¿Cómo se define un controlador? 

Como un programa que permite que el dispositivo pueda interactuar con un componente.

8.- Escribe los orígenes de los SO. 

El primer Sistema Operativo fue desarrollado en el Centro de Investigación y Desarrollo de la General Motors Company a principio de la década de los cincuenta. Sólo contemplaba la ejecución de una tarea en un método llamado de bloques o batch.
En la siguiente década comenzaron a aparecer los sistemas operativos multi tareas, que eran capaces de procesar varios trabajos en un tiempo dado a base de repartir los tiempos de proceso.
En 1965, los Laboratorios de Telefonía Bell (una división de AT&T) trabajaban en conjunto con General Electric y el Proyecto MAC del MIT en el desarrollo de Multics.

Por diversas razones, Bell se separó del grupo pero al seguir con la necesidad de un sistema operativo con características similares, Ken Thompson y Dennis Ritchie decidieron diseñar un sistema operativo que llenara los requisitos predispuestos. En 1970, Thompson
lo implementó como un ambiente de desarrollo en una PDP-7. A modo de mofa hacia
Multics, Brian Kernighan lo llamó UNIX.

9.- ¿Cuáles son las partes del núcleo de un SO?

Se divide en 5 niveles, los cuales son:

- Nivel 1. Procesador. (Núcleo): Se encarga de activar los cuantum de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.

- Nivel 2. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos.

- Nivel 3. Gestión de procesos: Los procesos preparados para ejecución se encolan en la cola ready de acuerdo a su prioridad, por lo que la rutina del scheduler se limita a coger el primer elemento de la cola, que pasa al dispatcher para que lo cargue en ejecución (cola run, que tendrá un único elemento). Por ortogonalidad, se asume la existencia de un proceso nulo, que siempre estará preparado para ejecución o ejecutándose.

- Nivel 4. Sistema de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria. Da soporte al almacenamiento a largo plazo de los archivos con nombre.

- Nivel 5. Información o Aplicación o Intérprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las órdenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.

10.- ¿Cuál es la diferencia entre un SO y un núcleo? 

Un sistema operativo, como usamos el término, significa una colección de programas que son suficientes para usar la computadora para una realizar una variedad de trabajos.

El núcleo es uno de los programas en un sistema operativo, el programa que distribuye los recursos de la máquina a los otros programas que estén ejecutándose. El núcleo también se encarga de iniciar y parar otros programas.    

11.- ¿Cuáles son algunos de los tipos de recursos que debe gestionar el SO? 

-Realizar el interfaz sistema-usuario.
-Compartir los recursos de Hardware entre los usuarios.
-Permitir a los usuarios compartir sus datos entre ellos.
-Prevenir que las actividades de un usuario no interfieran en las de los demás usuarios.
-Calendarizar los recursos de los usuarios.
-Facilitar el acceso a los dispositivos de E/S.
-Recuperarse de fallas o errores.
-Llevar el control sobre el uso de los recursos.

12.- ¿Cuál es la diferencia entre un programa y un proceso? 

Un proceso es la ejecución de diversas instrucciones por parte del microprocesador de acuerdo al programa, trabaja en modo ejecutivo, utiliza memoria principal y procesador.

Un programa son aplicaciones y recursos que permiten desarrollar diferentes tareas en una computadora (ordenador), un teléfono u otros equipos tecnológicos. Se encuentra en modo pasivo y utiliza únicamente memoria secundaria.

13.- ¿Cuáles son los estados en las que puede encontrarse un proceso? 

-Ejecución, es un proceso que está haciendo uso del procesador.
-Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo.
-Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.

14.- ¿Cuántos procesos puede haber en estado de ejecución al mismo tiempo? 

Tantos como la memoria de la computadora puedan soportar.

15.- ¿Qué tipos de eventos pueden originar una transición del estado de ejecución al estado terminal?

-Que el usuario cierre algún programa voluntariamente.
-Que el proceso esté en estado de error suficiente tiempo como para que el so decida que es necesario terminarlo.

16.- Menciona algunas cosas que podrían estar esperando un proceso.

Hay cuatro eventos principales que provocan la creación de procesos:

-El arranque del sistema.
-La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso.
-Una petición de usuario para crear un proceso.
-El inicio de un trabajo por lotes.

17.- Algo de la información almacenada en un VPS no siempre se mantiene actualizada. ¿Cuáles son algunos ejemplos de esta información?

VSP (View Synchrony Protocol) se establece a través del conjunto de miembros de grupo principal que pueden comunicarse entre ellos. Este protocolo proporciona la entrega garantizada de mensajes en orden para las corrientes de mensajes que implican a un remitente y varios destinatarios potenciales. Esta garantía es parecida a las que proporciona TCP/IP para las corrientes de mensajes de punto a punto.

18.- Proporcione ejemplos (dé tres) de los tres tipos de procesos: del usuario, del sistema, del SO.

Micronúcleos
AIX
La familia de micronúcleos L4
El micronúcleo Mach, usado en GNU Hurd y en Mac OS X
BeOS
Minix
MorphOS
QNX
RadiOS
VSTa
Hurd

Núcleos híbridos (micronúcleos modificados)
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

Núcleos monolíticos en contraposición a micronúcleos
 Por ejemplo, XNU, el núcleo de Mac OS X, está basado en el núcleo Mach 3.0 y en FreeBSD

19.- ¿Cómo solicita una aplicación al SO para que haga algo?

Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado (generalmente es el núcleo), previamente especificado. Esto permite al código privilegiado especificar donde va a ser conectado, así como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de bajo nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.

20.- ¿Cuándo un SO obtiene una interrupción desde un dispositivo, que mecanismo suele utilizar para seleccionar el código a fin de manipular la interrupción?

Señal externa al procesador que provoca la detención del programa en curso para que la CPU realice otra actividad. El mecanismo de interrupciones fue motivado por la E/S aunque posteriormente se generalizó a eventos producidos internamente en el procesador
Disponen de dos líneas, una de petición (INT) y otra de reconocimiento (RINT).

¬ El vector de interrupción es generado por el dispositivo que produce la interrupción.
¬ Utiliza un mecanismo de daisy chaining para transmitir la señal de reconocimiento.
¬ El dispositivo de E/S genera la petición de interrupción activando INT.
¬ La CPU la reconoce activando RINT.
¬ Los módulos que reciben RINT y no han interrumpido, la transmiten al siguiente módulo.
¬ El módulo que recibe RINT y realizó petición pone el vector de interrupción n en el bus de datos.
¬ A partir del vector n la CPU bifurca a la rutina de tratamiento correspondiente al dispositivo.

21.- ¿Cuáles son los modos en que funciona un sistema operativo y por qué?

No privilegiado y Privilegiado.

- No privilegiado: también conocido como modo usuario. Se trata del conjunto de instrucciones que puede ejecutar una aplicación. El conjunto de instrucciones que se pueden ejecutar en modo no privilegiado representa un subconjunto del total de las instrucciones que ofrece el procesador.

- Privilegiado: también llamado modo supervisor. Este modo ofrece acceso a todo el juego de instrucciones del procesador y recursos del sistema, por tanto, incluye también el conjunto de instrucciones del modo no privilegiado. Es el modo en el que se ejecuta el núcleo del sistema operativo.

22.- ¿A qué se le llama planificador de procesos de un SO?

El planificador de procesos es la parte del sistema operativo que se encarga de seleccionar a qué proceso se asigna el recurso procesador y durante cuánto tiempo.

23.- ¿Qué interfaces utiliza un SO?

- Interfaz de línea de comando: Estas interfaces permiten dar instrucciones a algún programa informático utilizando simplemente texto ya sea interactivamente por alguna entrada de texto como un teclado o más automatizada como por un archivo de script.

- Interfaz gráfica: Se les denomina GUI (Graphical User Interface) y se encargan de gestionar la interacción con el usuario utilizando recursos y relaciones visuales tales como punteros, iconos y menús. Una GUI facilita el uso de un computador a través de estas metáforas gráficas, por lo que se diferencia notablemente con una CLI, ya que lo que una línea de comando realiza escribiendo una orden, una interfaz gráfica lo ejecuta a través de una acción, por ejemplo: arrastrar un elemento, dar click a un ícono o desplegar un menú.

- Interfaz táctil: También conocida como TUI, es una interfaz que permite la interacción con el Sistema Operativo a través de un dispositivo táctil como pantalla sensible o touchscreen. Las TUIs son un complemento para las antes mencionadas GUI, ya que igualmente implementan un interfaz gráfica GUI para poder interactuar mediante la pantalla táctil.

- Interfaz Natural: La interfaz natural de usuario conocida como NUI, es aquella interfaz de Sistemas Operativos que emplea GUIs, pero sin la utilización de dispositivos de entrada tales como mouse y teclado, basándose en movimientos corporales y gestuales donde el cuerpo pasa a ser el mando de control. También pueden denominarse NUIs los sistemas que emplean reconocimiento de voz.

24.- ¿Cómo se comunican los procesos entre sí?

A través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC.  Se establece siguiendo una serie de reglas (protocolos de comunicación). Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red), protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos, protocolo de transferencia de hipertexto (capa de aplicación).

25.- Para el caso de Linux y Windows, ¿cómo está estructurado su núcleo, como es su planificador de procesos?

Linux

La estructura de Unix se asemeja a un típico modelo de capas, donde cada capa puede comunicarse únicamente con las capas que se hallan en los niveles inmediatamente inferior y superior. En Linux, existen dos versiones del kernel:

Versión de producción:

La versión de producción, es la versión estable hasta el momento. Esta versión es el resultado final de las versiones de desarrollo o experimentales. Cuando el equipo de desarrollo del núcleo experimental, decide que ha conseguido un núcleo estable y con la suficiente calidad, se lanza una nueva versión de producción o estable. Esta versión es la que se debería utilizar para un uso normal del sistema, ya que son las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento.

Versión de desarrollo:

Esta versión es experimental y es la que utilizan los desarrolladores para programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos suelen ser inestables y no se deberían usar, a no ser que sepas lo que haces.
Las versiones del núcleo se numeran con 3 números, de la siguiente forma: XX.YY.ZZ
XX: Indica la serie principal del núcleo. Hasta el momento solo existen la 1 y 2. Este número cambia cuando la manera de funcionamiento del núcleo ha sufrido un cambio muy importante.
YY: Indica si la versión es de desarrollo o de producción. Un número impar, significa que es de desarrollo, uno par, que es de producción.
ZZ: Indica nuevas versiones dentro de una versión, en las que lo único que se ha modificado son fallos de programación o bugs.

NÚCLEO DE WINDOWS

El modo núcleo de la línea de Windows NT está compuesto por subsistemas capaces de pasar peticiones de E/S a los controladores apropiados usando el gestor de E/S. Dos subsistemas crean la capa del modo usuario de Windows 2000: el subsistema de Entorno (ejecuta aplicaciones escritas para distintos tipos de sistemas operativos), y el subsistema Integral (maneja funciones específicas de sistema de parte del subsistema de Entorno). El modo núcleo en Windows 2000 tiene acceso total al hardware y a los recursos del sistema de la computadora. El modo núcleo impide a los servicios del modo usuario y las aplicaciones acceder a áreas críticas del sistema operativo a las que no deberían tener acceso.
El núcleo también es responsable de la inicialización de los controladores de dispositivos al arrancar. Hay tres niveles de controladores en el modo núcleo: controladores de alto nivel, controladores intermedios y controladores de bajo nivel. El Modelo de controladores de Windows (en inglés Windows Driver Model, WDM) se encuentra en la capa intermedia y fue diseñado principalmente para mantener la compatibilidad en binario y en código fuente entre Windows 98 y Windows 2000. Los controladores de más bajo nivel también son un legado de los controladores de dispositivos de Windows NT que controlan directamente un dispositivo o puede ser un bus hardware.

martes, 27 de febrero de 2018

Investigacion Unidad 1

Sistemas Operativos

Unidad 1: Introducción a los Sistemas Operativos.


Índice:

  1. Definición y concepto.
  2. Funciones y características.
  3. Evolución histórica.
  4. Clasificación.
  5. Estructura: niveles o estratos de diseño.
  6. Núcleo.


1. Definición y concepto.

El sistema operativo es el principal programa que se ejecuta en toda computadora de propósito general. Los hay de todo tipo, desde muy simples hasta terriblemente complejos, y entre más casos de uso hay para el cómputo en la vida diaria, más variedad habrá en ellos. 



A lo largo del presente texto, no se hace referencia al sistema operativo como lo ve o usa el usuario final, o como lo vende la mercadotecnia — el ambiente gráfico, los programas que se ejecutan en éste, los lenguajes de programación en los cuales están desarrollados y en que más fácilmente se puede desarrollar para ellos, e incluso el conjunto básico de funciones que las bibliotecas base ofrecen son principalmente clientes del sistema operativo — se ejecutan sobre él, y ofrecen sus interfaces a los usuarios (incluidos, claro, los desarrolladores). La diferencia en el uso son sólo –cuando mucho– consecuencias del diseño de un sistema operativo. Más aún, con el mismo sistema operativo –como pueden constatarlo comparando dos distribuciones de Linux, o incluso la forma de trabajo de dos usuarios en la misma computadora– es posible tener entorno operativos completamente disímiles.




2. Funciones y características.

El sistema operativo es el único programa que interactúa directamente con el hardware de la computadora. Sus funciones primarias son:

  • Abstracción: Los programas no deben tener que preocuparse de los detalles de acceso a hardware, o de la configuración particular de una computadora. El sistema operativo se encarga de proporcionar una serie de abstracciones para que los programadores puedan enfocarse en resolver las necesidades particulares de sus usuarios. Un ejemplo de tales abstracciones es que la información está organizada en archivos y directorios (en uno o muchos dispositivos de almacenamiento).
  • Administración de recursos: Una sistema de cómputo puede tener a su disposición una gran cantidad de recursos (memoria, espacio de almacenamiento, tiempo de procesamiento, etc.), y los diferentes procesos que se ejecuten en él compiten por ellos. Al gestionar toda la asignación de recursos, el sistema operativo puede implementar políticas que los asignen de forma efectiva y acorde a las necesidades establecidas para dicho sistema.
  • Aislamiento: En un sistema multiusuario y multitarea cada proceso y cada usuario no tendrá que preocuparse por otros que estén usando el mismo sistema —Idealmente, su experiencia será la misma que si el sistema estuviera exclusivamente dedicado a su atención (aunque fuera un sistema menos poderoso).  Para implementar correctamente las funciones de aislamiento hace falta que el sistema operativo utilice hardware específico para dicha protección.

3. Evolución histórica.

No se puede comenzar a abordar el tema de los sistemas operativos sin revisar brevemente su desarrollo histórico. Esto no sólo permitirá comprender por qué fueron apareciendo determinadas características y patrones de diseño que se siguen empleando décadas más tarde, sino, adecuar un sistema a un entorno cambiante, por mejor diseñado que éste estuviera, lleva casi inevitablemente a abrir espacios de comportamiento no previsto el espacio más propicio para que florezcan los fallos. Conocer los factores que motivaron a los distintos desarrollos puede ayudar a prever y prevenir problemas.

  • Proceso por lotes (batch processing): Los antecedentes a lo que hoy se conoce como sistema operativo pueden encontrarse en la automatización inicial del procesamiento de diferentes programas, surgida en los primeros centros de cómputo: cuando en los años cincuenta aparecieron los dispositivos perforadores/lectores de tarjetas de papel, el tiempo que una computadora estaba improductiva esperando a que estuviera lista una tarea (como se designaba a una ejecución de cada determinado programa) para poder ejecutarla disminuyó fuertemente ya que los programadores entregaban su lote de tarjetas perforadas (en inglés, batches) a los operadores, quienes las alimentaban a los dispositivos lectores, que lo cargaban en memoria en un tiempo razonable, iniciaban y monitoreaban la ejecución, y producían los resultados.
  • Sistemas en lotes con dispositivos de carga (spool): Una mejora natural a este último punto fue la invención del spool: un mecanismo de entrada/salida que permitía que una computadora de propósito específico, mucho más económica y limitada, leyera las tarjetas y las fuera convirtiendo a cinta magnética, un medio mucho más rápido, teniéndola lista para que la computadora central la cargara cuando terminara con el trabajo anterior. Del mismo modo, la computadora central guardarba sus resultados en cinta para que equipos especializados la leyeran e imprimieran para el usuario solicitante. La palabra spool (bobina) se tomó como acrónimo inverso hacia Simultaneous Peripherial Operations On-Line, operación simultánea de periféricos en línea.
  • Sistemas multiprogramados: A lo largo de su ejecución, un programa normalmente pasa por etapas con muy distintas características: durante un ciclo fuertemente dedicado al cálculo numérico, el sistema opera limitado por el CPU (CPU-bound), mientras que al leer o escribir resultados a medios externos (incluso mediante spools) el límite es impuesto por los dispositivos, esto es, opera limitado por entrada-salida (I-O bound). La programación multitareas o los sistemas multiprogramados buscaban maximizar el tiempo de uso efectivo del procesador ejecutando varios procesos al mismo tiempo. El hardware requerido cambió fuertemente. Si bien se esperaba que cada usuario fuera responsable con el uso de recursos, resultó necesario que apareciera la infraestructura de protección de recursos: un proceso no debe sobreescribir el espacio de memoria de otro (ni el código, ni los datos), mucho menos el espacio del monitor. Esta protección se encuentra en la Unidad de Manejo de Memoria (MMU), presente en todas las computadoras de uso genérico desde los años noventa. Ciertos dispositivos requieren bloqueo para ofrecer acceso exclusivo/único: cintas e impresoras, por ejemplo, son de acceso estrictamente secuencial, y si dos usuarios intentaran usarlas al mismo tiempo, el resultado para ambos se corrompería. Para estos dispositivos, el sistema debe implementar otros spools y mecanismos de bloqueo.
  • Sistemas de tiempo compartido: El modo de interactuar con las computadoras se modificó drásticamente durante los años sesenta, al extenderse la multitarea para convertirse en sistemas interactivos y multiusuarios, en buena medida diferenciados de los anteriores por la aparición de las terminales (primero teletipos seriales, posteriormente equipos con una pantalla completa como se conocen hasta hoy). En primer término, la tarea de programación y depuración del código se simplificó fuertemente al poder hacer el programador directamente cambios y someter el programa a la ejecución inmediata. En segundo término, la computadora nunca más estaría simplemente esperando a que esté listo un progama: mientras un programador editaba o compilaba su programa, la computadora seguía calculando lo que otros procesos requirieran. Un cambio fundamental entre el modelo de multiprogramación y de tiempo compartido es el tipo de control sobre la multitarea.


a. Multitarea cooperativa o no apropiativa (Cooperative multitasking). La implementaron los sistemas multiprogramados: cada proceso tenía control del CPU hasta que éste hacía una llamada al sistema (o indicara su disposición a cooperar por medio de la llamada yield: ceder el paso). Un cálculo largo no era interrumpido por el sistema operativo, en consecuencia un error de programador podía congelar la computadora completa.

b. Multitarea preventiva o apropiativa (Preemptive multitasking). En los sistemas de tiempo compartido, el reloj del sistema interrumpe periódicamente a los diversos procesos, transfiriendo forzosamente el control nuevamente al sistema operativo. Éste puede entonces elegir otro proceso para continuar la ejecución.


4. Clasificación.

Existen diversas clasificaciones de los sistemas operativos, la más común es por lo servicios que ofrecen al usuario final:


  • Sistemas operativos monousuarios.

Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón.


  • Sistemas operativos multiusuarios.

Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente.


  • Sistemas operativos monotareas.

Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez.


  • Sistemas operativos multitareas.

Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa durante su depuración mientras compila otro programa, a la vez que está recibiendo correo electrónico. Es común encontrar en ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas para el usuario, mejorando su productividad.


  • Sistemas operativos uniproceso.

Un sistema operativo uniproceso es aquél capaz de manejar solamente un procesador de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS.


  • Sistemas operativos multiproceso.

Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de manera 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. Cuando se trabaja de manera 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.


5. Estructura: niveles o estratos de diseño.

Se considera la organización interna del sistema operativo y para ello debemos observar dos tipos de requisitos:

Requisitos del usuario:

-    Sistema fácil de usar y aprender
-    Seguro
-    Rápido
-    Adecuado al uso al que se quiere destinar

Requisitos de software:

-    Mantenimiento
-    Forma de operación
-    Restricciones de uso
-    Eficiencia
-    Tolerancia frente a errores
-    Flexibilidad

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.

Es una estructura jerárquica, con mayor organización del software del sistema operativo.

El sistema operativo se divide en partes o niveles, cada uno perfectamente definido y con un claro interface (comunicación) con el resto de los elementos.

La 1ª estructura jerárquica o de niveles, la desarrolló Djikstra, utilizándose para fines didácticos, denominada THE (Technische Hogeschool, Eindhoven).  Una forma de ver este tipo de sistema es la denominada de anillos concéntricos o “rings”:


 Estructura de Sistema Operativo

De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.

A continuación definiremos de manera breve cada uno de estos niveles que conforman el sistema operativo (nota: en el gráfico la quinta y última capa de “intérprete de comandos” está representada por un círculo aparte de los niveles, pero está interrelacionado con los demás).
  • Núcleo (Kernell): Es la parte primordial del sistema operativo.  El núcleo o centro del sistema operativo administra todo el sistema, sincroniza todos los procesos.  A nivel de núcleo solo se trabaja con procesos.
  • Gestión de entrada/salida: El sistema operativo administra los dispositivos externos a través de sus controladores.
  • Gestión de memoria: El sistema operativo administra todos los aspectos relativos a memoria real y memoria virtual.
  • Sistemas de archivos: El sistema operativo se ocupa de administrar los archivos del usuario a través de una estructura de directorios con algún tipo de organización.
  • Intérprete de comandos: Es un mecanismo de comunicación entre los usuarios y el sistema.  Lee las instrucciones del usuario y hace que se ejecuten las funciones del sistema solicitadas.


6. Núcleo.

Es un software que constituye una parte fundamental del sistema operativo, y se define como la parte que se ejecuta en modo privilegiado (conocido también como modo núcleo).​ Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma 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á usar 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 proporcionar una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

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 del hardware ni ninguna ayuda del sistema operativo. Esta 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:
  • 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 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.


Micronúcleos

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:

AIX
La familia de micronúcleos L4
El micronúcleo Mach, usado en GNU Hurd y en Mac OS X
BeOS
Minix
MorphOS
QNX
RadiOS
VSTa
Hurd


Núcleos monolíticos en contraposición a micronúcleos

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 disputa4​ 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.

Núcleos híbridos (micronúcleos modificados)

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. Este 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:

  1. Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT
  2. XNU (usado en Mac OS X)
  3. DragonFlyBSD
  4. 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.

Exonúcleos

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 ó 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.



Fuentes consultadas:
  • https://sistop.org/pdf/sistemas_operativos.pdf
  • http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro26/clasificacin_de_los_sistemas_operativos.html
  • http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro26/estructura_del_sistema_operativo_niveles_o_estratos_de_diseo.html
  • https://es.wikipedia.org/wiki/Núcleo_(informática)