La pre-obtención es una actividad basada en el modo usuario, mientras que el spooling es una actividad basada en el sistema. El Spooling es una manera mucho más eficaz de la superposición de operaciones de E/S y de la CPU.
Mediante el establecimiento de un conjunto de instrucciones privilegiadas que se pueden ejecutar sólo en el modo monitor, el sistema operativo se asegura de controlar todo el sistema en todo momento.
Una interrupción es un cambio de flujo de hardware generado dentro del sistema. Un controlador de interrupción es convocado para hacer frente al motivo de la interrupción, el control se devuelve al contexto interrumpido y a la instrucción. Una trampa es una interrupción generada de software. Una interrupción puede ser utilizada para señalar la culminación de una E/S y obviar la necesidad de un sondeo de dispositivo. Una trampa se puede utilizar para llamar a las rutinas del sistema operativo, o para detectar errores aritméticos.
El DMA es útil para la transferencia de grandes cantidades de datos entre la memoria y los dispositivos. Elimina la necesidad de que la CPU participe en la
Página |2
transferencia, lo que permite la transferencia se complete con mayor rapidez y la CPU pueda realizar otras tareas al mismo tiempo.
Las siguientes instrucciones deben ser privilegiadas: a. Establecer el valor de un temporizador. b. Borrar la memoria. c. Desactivar las interrupciones. d. Cambiar de usuario a modo monitor
a. El software de interpretación para todos los programas de usuario (como BASIC, APL y LISP). El intérprete de software que proporciona, en software, haría lo que el hardware no proporciona. b. Requerir que todos los programas sean escritos en lenguajes de alto nivel para que todo el código objeto sea producido por el compilador. El compilador generaría (ya sea en línea o en las llamadas a funciones) los controles de protección que el hardware no encuentra.
Los datos requeridos por el sistema operativo (contraseñas, controles de acceso, la información contable, etc.) tendrían que ser almacenados o pasar a través de la memoria sin protección y por lo tanto serían accesibles a usuarios no autorizados.
Sistemas Operativos
Página |3
El conjunto mínimo de instrucciones que deben ser protegidas son: a. Cambio al modo monitor b. Lectura de la memoria del monitor c. Escritura en la memoria del monitor d. Activar las interrupciones del temporizador
Las cachés son útiles cuando dos o más componentes necesitan intercambiar datos, y los componentes transfieren a velocidades diferentes. Las cachés resuelven el problema de transferencia, proporcionando un búfer de velocidad intermedia entre componentes. Si el dispositivo rápido encuentra los datos que necesita en la caché, no es necesario esperar al dispositivo más lento. Los datos de la caché deben mantener coherencia con los datos de los componentes. Si un componente tiene un cambio de valor en sus datos, y el dato también se encuentra en la caché, la memoria caché también se debe actualizar. Esto es un problema en sistemas multiprocesador, donde más de un proceso puede tener acceso a un dato. Un componente puede ser eliminado por una caché de igual tamaño, pero sólo si: a) la caché y el componente tienen una capacidad de almacenamiento equivalente (es decir, si el componente retiene sus datos cuando se quita la electricidad, el cache debe retener los datos), y b) la memoria caché es asequible, ya que la velocidad de almacenamiento tiende a ser más cara.
a. Monitor / Modo de usuario b. Instrucciones privilegiadas Sistemas Operativos
Página |4 c. Temporizador d. Protección de memoria
La creación y supresión de los procesos de usuario y del sistema La suspensión y la reanudación de los procesos La provisión de mecanismos de sincronización de procesos La provisión de mecanismos para el proceso de comunicación El establecimiento de mecanismos para el manejo de estancamientos.
Llevar un registro de qué partes de la memoria están siendo utilizados y por quién. Decidir cuáles son los procesos que se cargan en la memoria cuando el espacio de memoria disponible. Asignar y liberar espacio de memoria según sea necesario.
Gestión del espacio libre. Asignación de almacenamiento Programación del Disco (Disk Sheduling)
La creación y eliminación de ficheros La creación y eliminación de directorios El soporte de directivas para manipular archivos y directorios El mapeado de los archivos en dispositivos de almacenamiento secundario Las copia de seguridad de archivos importantes. Sistemas Operativos
Página |5
Lee los comandos del usuario o desde un archivo de comandos y los ejecuta, por lo general, para convertirlos en una o más llamadas al sistema. Generalmente no es parte del núcleo.
El sistema operativo carga el contenido (o secciones) de un archivo en la memoria y comienza su ejecución. Un programa a nivel de usuario no podía ser confiable para localizarlo en tiempo de CPU. Discos, cintas, y otros dispositivos deben ser comunicados con un nivel muy bajo. El usuario sólo necesita especificar el dispositivo y la operación a realizar en la misma, mientras que el sistema convierte esa petición en los comandos del dispositivo o controlador específico. Los programas a nivel de usuario no son confiables para acceder a los dispositivos, y sólo tener acceso a ellos cuando son, de otra manera, no utilizados. Hay muchos detalles en la creación de archivos, asignación, eliminación, y nomenclatura que los usuarios no deberían tener que realizar. Los bloques de espacio en disco son utilizados por los archivos y deben ser rastreados. Eliminar un archivo requiere eliminar la información de nombre de archivo y liberar los bloques asignados. Las protecciones también deben ser revisadas para asegurar el acceso de archivo correcto. Los programas de usuario no pueden garantizar los métodos de protección, ni son de confianza para asignar/cancelar la eliminación de archivos, de esto se encarga el sistema operativo. El paso de mensajes entre sistemas requiere que dichos mensajes se conviertan en paquetes de información, ser enviados a la controladora de red, y ser transmitidos a través de un medio de comunicación, y vuelto a leer en el sistema de destino. La ordenación y corrección de paquetes debe llevarse a cabo. Una vez más, los programas de usuario no pueden tener el acceso a los dispositivos de red, o poder recibir los paquetes destinados a otros procesos. La detección de errores se produce tanto a nivel de hardware y software. A nivel de hardware, todas las transferencias de datos deben ser inspeccionadas para asegurar que los datos no han sido dañados durante la transferencia. Todos los datos sobre medios deben ser revisados para asegurarse de que no han cambiado desde que fueron escritos. A nivel de software, los medios deben comprobar la consistencia de datos, por ejemplo, si el número de bloques asignados y no asignados de almacenamiento coinciden con el número total en el dispositivo. Aquí, los errores son frecuentes en procesos independientes (por ejemplo, la corrupción de datos en un disco), así que debe haber un programa global (sistema operativo) que se encargue de todos estos tipos de errores. Además, al Sistemas Operativos
Página |6 tener, el sistema operativo, errores procesados, los procesos no necesitan tener código para detectar y corregir todos los errores posibles en un sistema.
Las llamadas al sistema permiten a los programas de usuario, solicitar servicios del sistema operativo.
Los programas del sistema pueden considerarse como útiles paquetes de llamadas al sistema. Estos proporcionan la funcionalidad básica para los usuarios no tengan que escribir sus propios programas para resolver problemas comunes.
Al igual que en todos los casos de diseño modular, el diseño de un sistema operativo de forma modular tiene varias ventajas. El sistema es más fácil de depurar y modificar, ya que los cambios sólo afectan a sectores limitados del sistema en lugar de tocar todas las secciones del sistema operativo. La información se mantiene sólo donde se necesita y es accesible sólo dentro de un área definida y limitada, por lo que cualquier error que afecte a los datos debe limitarse a un módulo específico o una capa.
El sistema es fácil de depurar, y los problemas de seguridad son fáciles de resolver. Las máquinas virtuales también proporcionan una buena plataforma para la investigación del sistema operativo, ya que muchos sistemas operativos diferentes se pueden ejecutar en un sistema físico.
El mecanismo y la política deben estar separados para garantizar que los sistemas sean fáciles de modificar. Ninguna de las dos instalaciones del sistema son las mismas, porque cada instalación puede querer ajustar el sistema operativo para adaptarlo a sus necesidades. Con los mecanismos y la política separados, la política se puede cambiar a voluntad, mientras que el mecanismo se mantiene sin cambios. Este acuerdo establece un sistema más flexible.
Sistemas Operativos
Página |7
Synthesis es impresionante debido a la compilación “al vuelo” (on the fly). Desafortunadamente, es difícil depurar problemas en el núcleo debido a la fluidez del código. Además, dicha compilación es específica para ese sistema, haciendo de “Synthesis” no portable (Una nueva compilación sería necesaria para cada arquitectura.
Un método de tiempo compartido debe ser implementado para permitir a cada uno de los procesos tener acceso al sistema. Este método implica el sobreseimiento de los procesos que no renuncian voluntariamente a la CPU (mediante una llamada al sistema, por ejemplo) y el núcleo se ralentiza (pues más de un proceso puede estar ejecutando código del núcleo al mismo tiempo). Los procesos y los recursos del sistema deben tener las protecciones y se deben proteger el uno del otro. Cualquier proceso debe ser limitado en la cantidad de memoria que puede utilizar y las operaciones que puede realizar en dispositivos como los discos. Se debe tener cuidado en el núcleo para evitar puntos muertos entre procesos, para o que los procesos no están a la espera de los demás recursos asignados.
Selecciona trabajos en memoria, dichos trabajos deben estar listos para ejecutarse, y, entonces se asigna la CPU a éstos. Utilizados especialmente en sistemas de tiempo compartido como un nivel intermedio de programación. Un esquema de intercambio se lleva a cabo para eliminar los programas de ejecución parcial de la memoria y restablecer más tarde para continuar donde se quedaron. Determina qué trabajos se ponen en la memoria para su procesamiento. La principal diferencia está en la frecuencia de su ejecución. El corto plazo debe seleccionar un nuevo proceso con bastante frecuencia. A largo plazo se utiliza con menos frecuencia, ya que se encarga de colocar trabajos en el sistema, y podría esperar un tiempo por un trabajo, antes de que se admita a otro.
Sistemas Operativos
Página |8
El puntero actual registro de la CPU se cambia al puntero que contiene el nuevo contexto, que lleva muy poco tiempo. Si el contexto está en la memoria, uno de los contextos en un conjunto de registro debe ser elegido y ser trasladado a la memoria, y el nuevo contexto se debe cargar de la memoria en el sistema. Este proceso toma un poco más de tiempo que en sistemas con un conjunto de registros.
Los hilos son muy baratos al crearlos y destruirlos, y utilizan muy pocos recursos, mientras existen. Tienen tiempo de uso de CPU por instantes, pero no tienen espacios de memoria separados. Desafortunadamente, los hilos deben sincronizarse entre sí para no dañar los datos compartidos. Cualquier programa que pueda hacer más de una tarea a la vez, podría beneficiarse de la multitarea. Por ejemplo, un programa que lee la entrada, la procesa, y la presenta tiene tres hilos, uno para cada tarea.
Un contexto debe ser creado, incluyendo un conjunto de registros de instrucciones para el almacenamiento durante el intercambio de contexto, una pila local para registrar los argumentos de llamada al procedimiento, los valores de retorno, las direcciones de retorno, y el almacenamiento local de subprocesos. La creación de un proceso resulta en que la memoria es asignada para las instrucciones de programa y datos, así como el almacenamiento en forma de hilo. El código también se puede cargar en la memoria asignada.
a. El contexto del hilo ha de ser guardado (registros y cuentas si se da el caso), y el contexto de otro subproceso debe ser cargado. b. Lo mismo que (a), más el contexto de memoria se deben almacenar, y el del siguiente proceso se debe cargar.
Sistemas Operativos
Página |9 Los hilos a nivel de usuario no tienen el soporte del núcleo, por lo que son muy fáciles de crear, destruir y cambiar entre sí. Sin embargo, si uno se bloquea, todos los hilos lo harán. Los hilos del núcleo son más caros porque las llamadas al sistema son necesarias para crear y destruir, entonces el núcleo debe programarse. Estos hilos son más poderosos, porque son programados de forma independiente y pueden bloquearse de forma individual.
Sistemas Operativos