Download Sistemas Operativos Teor0a Anxo...
lOMoARPSD 9 88
Sistemas Operativos Teor°a Anxo
Sistemas Operativos (Universidad Politécnica de Madrid)
StuDocu no está patrocinado ni avalado por ningún colegio o universidad.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl)
lOMoARPSD 9 88
Sistemas Operativos. Tema 1: Introducción a los Sistemas Operativos. 1. ¿Qué es un sistema operativo? Conjunto de programas que sirven de interfaz i nterfaz entre usuario y hardware. Oculta el hardware y administra todos los dispositivos conectados al equipo, creando una interfaz más sencilla de usar a los usuarios. Es un gestor de recursos que permite el acceso ordenado y controlado a recursos, la multiplexacion en tiempo y espacio; y es eficiente y justo entre peticiones conflictivas. (Diferentes usuarios utilizan el mismo recurso compartiéndolo en el tiempo). Es un programa de control, ya que controla la ejecución de los programas para evitar errores o uso impropio del hardware.
2. Objetivos Principal: Facilitar al usuario el uso del Sistema Informático y gestionar los recursos del mismo. Secundarios:
Interfaz amigable.
Eficiencia de los recursos disponibles.
Fiabilidad, evitar errores.
Mantenible y capaz de evolucionar ante nuevas versiones.
3. Arranque de un ordenador. ordenador. 1. Ejecución del POST para inicializar dispositivos. 2. Carga en memoria el MBR del dispositivo de arranque. 3. Ceder control al boot manager. 4. Arranque del SO.
4. Componente Componentess del Sistema Operativo.
Núcleo (kernel): Controla la ejecución de los programas y el acceso a los recursos
hardware, proporciona los servicios que ofrece el sistema y está permanentemente en memoria.
Programas del sistema: Herramientas básicas para utilizar el ordenador. Los usuarios
interaccionan con los programas del sistema y utilizan aplicaciones, que son externas al sistema operativo. Estas aplicaciones interaccionan con el núcleo, con otros programas del sistema y con otras aplicaciones.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl)
lOMoARPSD 9 88
4.1.
Programas del sistema:
Programas proporcionados por el fabricante que facilitan las tareas comunes al usuario. Desde el punto de vista del núcleo son un programa como otro cualquiera. Entre ellos distinguimos los de interfaz con el usuario (escritorio y ventanas) y los de utilidades (manejo de ficheros etc.). Hay 2 tipos de interfaces:
CLI: Mediante comandos y mandatos tanto internos como externos (nombre de un
programa)
GUI: Amigables mediante escritorio y manejado por ratón, teclado etc.
5. Concepto de proceso. Un proceso se trata de un programa en ejecución con un contexto que gestiona el núcleo, este contexto consta de:
CPU: asignada por el núcleo y compartida con otros procesos. Memoria: código, datos y pila. Exclusiva para cada proceso, aunque parte se puede
compartir.
Ficheros: Ficheros abiertos
tuberías… Comunicación con otros procesos: Sockets, tuberías… Otra E/S: terminal, CD, cintas… cintas… estadísticas… Varios: identificador, credenciales, estadísticas…
La información de control sobre el proceso se almacena en un PCB. Cuando un proceso se suspende ha de reiniciarse en el mismo estado en el que se paró. Lo que implica que se debe guardar todos t odos los datos de cada pr proceso, oceso, este almacenamiento se hace en la tabla de procesos, una tabla especifica del SO. Un proceso puede dar lugar a la creación de otros, que serán sus procesos hijos. Cada proceso está identificado mediante un identificador de usuario (UID) que es compartido entre los procesos padres e hijos. Por otra o tra parte, los procesos también pueden ser miembros de grupos, los cuales también tienen un identificador de grupo (GID). Por ultimo dentro de los procesos hay un tipo especial, el superusuario, que tiene privilegios y podría violar muchos de las reglas de protección.
6. Multiprogramación. Técnica que permite mantener varios procesos en memoria y repartir la CPU y otros recursos entre ellos, de f orma orma que todos avancen “simultáneamente”. Cada proceso cree que tiene la máquina para él solo, pero en realidad la está compartiendo. Esta técnica maximiza el aprovechamiento de los recursos, ya que mientras un proceso esta ocioso(esperando a E/S o básicamente realizando cualquier tarea que no tenga que ver con la CPU), algún otro proceso puede usar la CPU u otros recursos.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl)
lOMoARPSD 9 88
Obliga a que el sistema operativo realice una planificación de recursos de como asignar los tiempos de uso de la CPU, que zona de memoria se asigna a cada proceso o cómo se organiza el acceso a los E/S. Esto crea problemas de concurrencia, es decir, que dos procesos quieran modificar el mismo fichero al mismo tiempo, pero también posibilita el trabajo cooperativo entre procesos.
7. Funcionamiento de una CPU.
1. Lee la instrucción que indica el contador de programa. 2. Decodifica la instrucción. 3. Obtiene los operandos. 4. Ejecuta la instrucción. 5. Escribe los resultados en un registro o en memoria. 6. Incrementar el contador de programa. 7. Ver si hay interrupciones.
8. Conmutación de tareas. Para conmutar la CPU de un proceso a otro: 1. Se guarda el valor actual de los registros de la CPU en el PCB del proceso saliente. 2. Se cargan los registros de la CPU con el valor almacenado en el PCB del proceso que entra en la CPU. 3. La conmutación de tareas solo puede producirse si el núcleo del SO obtiene el control del procesador, y solo lo puede obtener mediante llamada al sistema, interrupción hardware, temporizador o excepción. Debido a esto se dice que un sistema operativo es (event driven) dirigido por eventos, ya que el SO se activa únicamente cuando se produce un evento.
9. Modos de funcionamiento de la CPU. Como comentamos previamente existen 2 modos de funcionamiento básicos:
Modo Supervisor o kernel o Superusuario (núcleo) Modo Usuario (procesos de usuario)
Para pasar a modo supervisor se tiene que hacer mediante interrupciones tanto software (Llamadas al sistema), como hardware (dispositivos de E/S) o con excepciones (Situaciones inesperadas), al terminar las interrupciones se vuelve al modo anterior. Las instrucciones privilegiadas solo se pueden ejecutar en modo supervisor y estas pueden comprometer la seguridad del sistema, y son:
Entrada y salida
Cambios en los registros de control
Cambio de vectores de interrupción
Control: des/activación de memoria virtual, modo protegido… protegido…
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
10. Protección. La protección evita que unos procesos o usuarios puedan dañar otros procesos, usuarios o al propio sistema operativo. Es imprescindible contar con el hardware apropiado para implementar mecanismos de protección eficaces. Esta protección es necesaria en CPU, memoria, E/S… E/S…
10.1. Protección de la CPU. La CPU se protege para que un proceso no la acapare para sí mismo. Esta protección se hace mediante un temporizador que genere periódicamente interrupciones, y activan el núcleo para que este decida si retornar la CPU al mismo proceso o a uno diferente.
10.2. Protección de la memoria. La memoria se protege para que no se sobrescriba memoria perteneciente al SO o a otros procesos por parte de otro proceso pro ceso que esté actuando en ese momento. De manera sencilla se puede realizar poniendo un registro base y uno límite para el acceso a memoria. Por parte del hardware la MMU calcula la dirección de memoria física a la que pretende acceder una instrucción y valida el acceso. Las modificaciones del valor del registro base y límite se realizan en modo supervisor. En ciertas máquinas se utiliza una técnica conocida como memoria virtual, en la que el SO mantiene una parte del espacio de direcciones en la memoria principal y otra parte en disco, y transfiere fragmentos de memoria entre ambos según los necesite.
11. Llamadas al sistema. La interfaz entre el SO y los programas de usuario está definida por el conjunto de llamadas al sistema. Estas llamadas al sistema permiten solicitar servicios y comunicarse con el SO, como solicitudes de acceso a E/S o comunicación entre procesos. En general los programas no efectúan las llamadas al sistema directamente, ya que estas normalmente son en lenguaje ensamblador, sino que ejecutan una función de biblioteca definida en algún lenguaje de programación que realice esta llamada al sistema. Dentro de las llamadas al sistema existe una clasificación según a que se dirige esta llamada:
Procesos.
Memoria.
Manejo de ficheros.
Manejo de dispositivos.
Red.
12. Virtualización. La idea es proporcionar un recurso idealizado (virtual) usando recursos reales (físicos). Con la gestión adecuada de un único recurso pueden proporcionarse numerosos recursos virtuales. El ejemplo más claro es una máquina virtual.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
13. Tipos de SO.
Por capacidad de multiprogramación: o Monotarea (DOS) Multitarea (Windows, OS X…) X…) o Por distinción entre usuarios: Monousuario (DOS) o o Multiusuario (Windows, OS X…) X…)
r espuesta Por el tiempo de respuesta o Tiempo Compartido (Windows, OS X) o Lotes (z/OS) Tiempo Real (QNX) o Por la arquitectura de la CPU o Monoprocesador (DOS) o Multiprocesador (Unix, Windows) Por el tamaño del camino de datos 16 bits o 32 bits o o 64 bits Por el uso que se le da
o o o o o
o
Mainframe(z/OS) Supercomputadores (Unix) Servidores (Unix) Personales (Windows) Tiempo real (QNX) Empotrados (Android)
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Tema 2: Gestión del procesador. 2.1. Conceptos de proceso y de PCB Concepto de proceso. Un proceso es una abstracción de un programa en ejecución, proporcionan la capacidad de operar en pseudoconcurrencia incluso cuando hay únicamente una CPU disponible. Un proceso está compuesto por su código, datos y la pila, además de un contexto de proceso asociado dinámicamente (prioridad, registros de CPU, protección, ficheros abiertos…). abiertos…).
Información del proceso. La información de cada proceso se guarda siempre en memoria del núcleo, en el PCB (process control block), el cual contiene:
ID del proceso, parentesco… parentesco…
Estado actual (preparado, en ejecución, bloqueado)
Información para la planificación (prioridad…) (prioridad…)
Contador de programa
Registros de la CPU
Información para la gestión de memoria Información del estado de la E/S o evento por el que se espera
Información estadística
Recursos asignados
Ciclos de ráfagas de CPU-E/S Durante un proceso se alterna el uso de CPU y E/S. Los procesos interactivos son intensivos en E/S, con un gran número de ráfagas de CPU muy cortas y pocas largas. Los procesos de cálculo no interactivos son intensivos en CPU, con un gran número de ráfagas de CPU largas.
Concepto de multitarea con una CPU En concepto un proceso tiene su propia CPU virtual, pero en la realidad la CPU conmuta entre varios procesos, para una mayor comprensión c omprensión podemos pensar en que en realidad se ejecutan en paralelo. Este tipo ejecución se llama multitarea, multiprogramación o multiproceso. Cuando no hay multitarea, el procesador no puede ser utilizado con otro proceso mientras el proceso en ejecución espera a que se complete una operación de E/S. Cuando si se implementa la multitarea se mantienen en memoria varios procesos y solo uno de ellos está en ejecución. Cuando tiene que esperar por la E/S se le expulsa de la CPU y alguno de los que estaban en memoria comienza a usar la CPU, pero no siempre se le expulsa por uso de E/S, también puede ser por otras causas, por ejemplo por tiempo consumido. Así como la espera tampoco es siempre debido al uso de E/S.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Ejemplos de aplicaciones multiproceso. Un programa de cálculo trocea el problema y crea un proceso trabajador por CPU. El trabajador realiza su tarea y comunica los resultados al proceso principal para que se integren.
Servidor Web: Un grupo de procesos trabajadores, cada trabajador acepta una conexión y atiende al cliente hasta que cierra la conexión. El controlador gestiona los trabajadores existentes.
Ventajas de la multitarea:
Aprovecha los tiempos de espera de los procesos.
Aumenta el uso de la CPU
Permite el servicio de varios usuarios de forma ágil.
Permite ejecutar aplicaciones multiproceso, lo que permite aumentar su rendimiento
en sistemas multiprocesador, separar sepa rar responsabilidades… responsabilidades… Para ser efectivos los procesos no deben hacer espera activa.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
2.2. Estados de los procesos. Diagrama Estados básicos:
Ejecución: ejecutándose en el procesador. Bloqueado: esperando a que suceda un evento (ej. Una E/S). Preparado: listo para usar el procesador
Estados suspendidos: Válido para estados preparado y bloqueado, se libera memoria al tener el proceso en disco.
Cambio de contexto. El cambio de contexto se trata de una operación por la que se guarda el estado del proceso actualmente en CPU para que otro pase a ejecutarse en la CPU y poder reanudar la ejecución donde se quedó. Este cambio se usa para implementar la multiprogramación y para atender a interrupciones. Lo que se guarda de estos procesos es el valor de los registros de la CPU, y son guardados en memoria, que puede ser tanto en el PCB o en la pila del proceso. Este cambio de contexto puede ser voluntario, en la que el proceso realiza alguna operación que lo bloquea, o involuntario, en la que el proceso es expulsado.
Cambio de contexto: coste.
Costes inmediatos(aprox 1-5 us), incluyen: Cambiar de modo usuario/supervisor Guardar y cargar los registros de la CPU Ejecutar el código de conmutación Vaciar la TLB usada para memoria virtual. Costes diferidos(aprox 0-1000 us): Rellenar la TLB y las memorias caché.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Cambios de contexto: casos. Menos pesados (pseudocambio de contexto): 1. Cuando un proceso realiza una llamada al sistema no bloqueante y el núcleo decide mantener el proceso.(Involuntario) 2. Cuando se produce una interrupción hardware y el núcleo decide mantener al proceso.(Involuntario) Más pesados: 3. Cuando salta el temporizador y el núcleo cambia de proceso.(Involuntario) 4. Cuando un proceso invoca a una llamada al sistema bloqueante y el núcleo cambia de proceso.(Voluntario)
2.3. Hilos. En una aplicación multiproceso clásica los cambios de contexto entre diferentes procesos son costosos, ya que cada proceso tiene su zona de memoria. Si pensáramos en compartir recursos entre procesos distintos es más difícil difíc il debido a que tienen zonas de memoria separadas y para compartir tendrían que usar solo las zonas de memoria compartidas. Surge el concepto de hilo, que se trata de poder po der tener diferentes secuencias de ejecución dentro de un mismo proceso, una segunda causa por la que los hilos son útiles es que la creación de los mismos es mucho más rápida que la creación de un proceso completo. Una tercera es que no producen un aumento de la velocidad de procesamiento y que en los sistemas con CPUs múltiples sí que se puede llegar a la ejecución completamente en paralelo. Un hilo comparte con los demás el espacio de memoria, las variables globales, los ficheros abiertos y las herramientas de sincronización y comunicación entre procesos. Mientras que cada hilo tiene para si un contador de programa, unos registros, una pila y un estado.
Ventajas del multihilo.
Los hilos comparten información rápida y fácilmente mediante variables globales y
memoria dinámica.
La creación, destrucción y cambio de contexto de los hilos es más rápida que la de los procesos.
Inconvenientes Inconvenientes del multihilo.
No hay protección de la memoria. Un hilo puede usar de forma inapropiada la zona de
memoria de otros hilos del mismo proceso.
Aumenta la necesidad de aplicar mecanismos de sincronización/concurrencia entre
hilos. En particular, todas las bibliotecas que se usen deben estar preparadas para hilos (thread-safe) o bien las llamadas a la biblioteca han de protegerse con un cerrojo global.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Estado de un proceso multihilo. Los mismos que el proceso clásico, pero un proceso completo su estado resulta de la combinación de los estados de sus hilos:
1 hilo en ejecución, 1 o más preparados o bloqueados Proceso en ejecución. 0 hilo en ejecución y 1 o más preparados Proceso preparado Todos los hilos bloqueados Proceso bloqueado
2.4. Planificación del procesador. El objetivo de la multiprogramación es tener en todo momento un proceso en ejecución, para maximizar el rendimiento de la CPU. Cuando hay varios procesos para ejecutarse, el SO debe decidir a cual asigna la CPU en función de un algoritmo determinado. La parte del SO que decide a quien se le asigna la CPU es el planificador a corto plazo y el algoritmo usado se llama algoritmo de planificación. La planificación también decide que trabajos entran al sistema (largo plazo) o que procesos deben esperar en disco (medio plazo). Los dispositivos en los que la multiprogramación es más necesaria son los servidores de red. Ya que tiene que decidir si ejecutar un proceso de medición de las la s estadísticas diarias o uno que atiende las peticiones de los usuarios por ejemplo.
Planificador a largo plazo. Es el que determina que trabajos trabajos se admiten al sistema y cuándo se crean sus proces procesos. os. Los procesos interactivos no son retenidos por este planificador y pasan directamente a la cola de preparados. Tiene en cuenta si un proceso es intensivo en E/S o en CPU para que haya un equilibrio entre ambos tipos. Este planificador no se ejecuta constantemente, ya que únicamente actúa cuando un trabajo sale o entra uno nuevo. Por ultimo este planificador es el que determina el grado de multiprogramación del sistema.
Planificador a medio plazo. Los procesos que esperan en la cola de preparados o bloqueados pueden ser sacados de memoria y almacenados en una zona de disco llamada área de intercambio o swap. Existen 2 razones para llevar a un proceso que se encuentra en estado de espera (bloqueado o preparado) a disco: para reducir el grado de multiprogramación real o porque no hay memoria libre.
Planificador a corto plazo. Selecciona un proceso de la cola de preparados para su ejecución. Se activa cada vez que ocurre un evento o bien por temporizador, es decir muy frecuentemente. El encargado de dar la CPU al proceso es el activador.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
2.5. Algoritmos de planificación a corto plazo. Tipos de planificadores a corto plazo. Expulsor
Puede obligar a los procesos a abandonar la CPU aunque no hayan completado su
ráfaga de CPU.
Se usa en sistemas donde los procesos importantes deben ejecutarse antes que los
menos importantes.
También en los sistemas en tiempo compartido (con procesos interactivos) para
asegurar un buen tiempo de respuesta.
La expulsión tiene un coste de tiempo (por el cambio de contexto) y de memoria(se
mantienen varios procesos en ella para que el cambio sea rápido).
No Expulsor
Los procesos solo abandonan la CPU al finalizar su ráfaga de CPU. Los procesos con mucha E/S tienen que esperar más por culpa de los intensivos en
CPU.
Si el proceso entra en un bucle sin fin deja colgado al sistema. El diseño es más simple que el expulsor.
Objetivos de la planificación.
Imparcialidad: Todos los procesos deben ser tratados igual y ninguno debe sufrir
inanición.
Eficiencia: Que el núcleo dedique poco tiempo (sobrecarga) a gestionar la
planificación.
Minimizar el tiempo de respuesta para los procesos interactivos. Favorecer a los procesos importantes. Responder bien ante situaciones de uso intensivo de CPU.
FIFO/FCFS En este estilo de planificación los procesos son atendidos según el orden en que llegaron a la cola de preparados. Una vez que el proceso tiene la CPU se ejecuta hasta que complete su uso, es No Expulsor. Realiza una planificación imparcial, aunque perjudica a procesos con mucha E/S y a los importantes. Si un proceso entra en un bucle sin fin, el sistema se queda colgado.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
RR(Round Robin) Es un FIFO con planificación expulsora, la CPU se asigna a un proceso durante un tiempo definido llamado CUANTO o cuantum. Es también un planificador imparcial. Cuando un proceso sale, si la ráfaga de CPU es mayor que el cuanto implica que ha sido expulsado, mientras que si es menor implica que ha salido voluntariamente. De esta ma manera nera se consigue una multiplexacion en el tiempo, adecuada para los sistemas de tiempo compartido. Consideraciones sobre el cuanto:
Fijo o variable. Igual para todos los procesos o distinto para ciertas categorías. Grande RR parecido a FIFO, por lo que aumenta la eficiencia pero tiene menor
tiempo de respuesta.
Pequeño Disminuye la eficiencia debido a la sobrecarga del cambio de contexto
pero mejora el tiempo de respuesta ya que el sistema se hace m más ás ágil.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Prioridad Se asocia una prioridad a cada proceso, y se concede la CPU al proceso con prioridad más alta. Estas prioridades pueden definirse de 2 formas:
Internamente: Utilizan valores internos del sistema para definir la prioridad. (Límites
de tiempo y relación de uso de CPU-E/S)
Externamente: Utilizan criterios externos al SO. (Tipo de usuario, Importancia de la
tarea y dinero pagado por el tiempo de CPU) La prioridad puede ser de 2 formas:
Estática: No cambia con el tiempo, se asigna al crear el proceso. Es fácil de implementar y tiene baja sobrecarga. No se adapta al entorno. El tiempo de respuesta puede ser más predecible. Puede dejar colgado al sistema si un proceso de muy alta prioridad entra en un
bucle sin fin.
Dinámica: Se asigna una prioridad inicial al proceso, pero se puede recalcular/reajustar a
lo largo de su ejecución.
Es más compleja de implementar y produce más m ás sobrecarga (menos eficiente). Se adapta a cambios de entorno.
Así como previamente se diferenciaba entre expulsoras ex pulsoras y no expulsoras ahora también:
Planificación con prioridades no expulsora: Un proceso solo abandona la CPU al
finalizar su ráfaga de CPU, incluso aunque otros procesos más prioritarios pasen a estar preparados.
Planificación con prioridades expulsora: Si un proceso más prioritario pasa a estar
preparado, expulsa al proceso en ejecución. Si hay varios procesos de igual prioridad, se reparte la CPU entre ellos usando Round-Robin o algún otro algoritmo similar.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Colas multinivel con realiment realimentación. ación. Aplicable para sistemas que manejan procesos de diferentes tipos, por ejemplo procesos interactivos, procesos intensivos en cálculo y procesos con necesidades de tiempo real. La cola de preparados se divide en varias colas, y cada cola tiene una prioridad. Los procesos van entrando a las colas según su prioridad y el planificador escoge el proceso de la cola de mayor prioridad. Los procesos que llevan mucho tiempo preparados se suben a una cola más prioritaria para evitar la inanición y en caso contrario, si un proceso agota su cuanto se le baja de prioridad para que no monopolice la CPU. Los procesos que finalizan operaciones de E/S se depositan en colas con prioridad alta para acelerar su vuelta a la ejecución. Este algoritmo se define por:
Número de colas Un criterio para determinar en qué cola entra un proceso de nueva creación. Un criterio para determinar cuándo ascender a un proceso a una cola de mayor
prioridad.
Un criterio para determinar a qué cola vuelve un proceso que pasa de ejecución a
preparado
Un criterio para determinar a qué cola vuelve un proceso que pasa de bloqueado a
preparado.
2.6. Gestión del procesador en UNIX. Procesos. Ciclo de vida de los procesos:
Cada proceso se identifica mediante un PID y estos a su vez se agrupan en: grupos de procesos y sesiones.
Tipos de procesos. Procesos del núcleo: Cuyo código está dentro dentro del núcleo, se ejecutan en modo supervisor y realizan tareas básicas del núcleo. Procesos de usuario: Su código esta en ficheros ejecutables, se ejecutan en modo usuario y abarcan tanto programas del sistema como aplicaciones.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Diagrama de estados.
Planificador 4BSD Se trata de un planificador de colas multinivel con realimentación y dentro de las colas se usa un Round-Robin con un cuanto de 10 a 100 ms. Los hilos del núcleo de atención a interrupciones y el código de las llamadas al sistema se ejecutan con la máxima prioridad. Los procesos de usuario se ejecutan con prioridades dinámicas. Penaliza los procesos intensivos en CPU y se permite la interacción del usuario mediante nice. Los procesos en tiempo real y los ociosos utilizan prioridades estáticas.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Tema 3. Gestión de la memoria. 3.1. Generación del ejecutable y carga en memoria. Aplicación: Conjunto de módulos en lenguaje de alto nivel, la generación del ejecutable se hace en dos fases: Compilación y montaje.
Compilación:
Resuelve referencias dentro de cada módulo fuente. Genera módulo objeto.
Montaje (o enlazado): Resuelve referencias entre módulos objeto. Resuelve referencias a símbolos de bibliotecas. Genera el ejecutable.
Formato del ejecutable.
Nº mágico: tipo de ejecutable (S.O.)
Datos: sólo variables globales, se almacenan en el ejecutable.
Datos sin valor inicial: no se almacenan en el ejecutable.
Variables locales y parámetros: dinámicas. Se almacenan en la pila. Se crean al invocar la función y se destruyen al retornar, la dirección se calcula en tiempo de ejecución.
Variables globales: estáticas. Se crean al iniciarse el programa y existen durante toda la
ejecución. Tienen una dirección fija en memoria y en el ejecutable.
Mapa de memoria de un proceso El mapa de memoria de un proceso está compuesto por un conjunto de regiones contiguas y se crea a partir del fichero ejecutable. Cada sección del ejecutable da lugar a una región:
Región de código: A partir de la sección de código. Lectura y ejecución. Región de datos: A partir de las secciones de datos con valor inicial y datos sin valor
inicial. Lectura y escritura.
Región de pila: A partir de la sección de pila. Lectura y escritura. Crece hacia las
direcciones más bajas. Durante la ejecución del proceso se pueden crear nuevas regiones y puede variar el tamaño de las existentes por lo que el mapa puede tener huecos.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Traducción en tiempo de ejecución. El programa se carga en memoria sin modificar, la CPU (MMU) implementa una función de traducción. El núcleo se encarga de: Guardar en el PCB de cada proceso los parámetros de traducción, especificar a la CPU qué parámetros aplicar para el proceso actual y reubicar, si es necesario, el proceso en otra zona de memoria y modificar los parámetros de traducción.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
3.2. Cachés. Principio de localidad de referencia. Los programas de ordenador suelen acceder repetidamente a conjuntos de datos ( e instrucciones) que están relacionados.
Localidad espacial: Si se accede a una cierta posición, es muy probable que en el futuro
cercano se acceda a posiciones cercanas. Por ejemplo, recorrer una tabla secuencialmente.
Localidad temporal: Si se accede a una cierta posición, es muy probable que en el
futuro cercano se vuelva a acceder a esa misma posición. Por ejemplo, ejecutar un bucle repetidamente.
Caché. Aprovechando la localidad de referencias, se puede utilizar una memoria más rápida M1, aunque más cara y de menor capacidad, para almacenar una copia del subconjunto de datos referenciados repetidamente de otra memoria más lenta M2. Tiempo de acceso medio: t=t1*tA + t2*(1-tA) T1,t2 = tiempos de acceso de cada memoria. tA = tasa de aciertos. Coste por MB:
=
1∗1+2∗2 1+2
c1, c2 = coste por MB de cada memoria. m1, m2 = capacidad de cada memoria. El caché solo es eficaz si la parte activa de los datos cabe en él.
Funcionamiento del caché. Los datos se cargan en el cache a medida que se necesitan, por localidad espacial es interesante cargar un bloque de datos consecutivo y no solo el dato necesario. Si hay que cargar otro dato nuevo y la caché está llena se machaca otro dato, por localidad temporal lo más interesante seria eliminar un dato que hace mucho que no se usa. Cuando se escribe algo en la caché hay que actualizarlo también en la memoria inferior, si se actualiza en ese momento se llama write-through, y si se actualiza más adelante write-back.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
3.3. Objetivos de la gestión de memoria. Reubicación: el programa debe poder cargarse en cualquier zona de memoria libre y
debe poder trasladarse a otra zona de memoria en tiempo de ejecución, lo cual además es necesario para el planificador a medio plazo.
Protección: el proceso no puede acceder a zonas de memoria que no le corresponden.
La traducción debe crear espacios disjuntos y es necesario que se validen todas las direcciones que genera el programa. Esta validación la debe realizar el hardware del procesador y el tratamiento hacerlo el SO.
Mejora: que sea posible establecer protección diferenciada para las diferentes
regiones del proceso. Por ejemplo, el código se pude ejecutar pero no se puede modificar, los datos constantes no se pueden modificar, los datos y la pila no se pueden ejecutar… ejecutar…
Crecimiento: la memoria asignada inicialmente debe poder ampliarse y reducirse
dinámicamente.
Los datos pueden crecer y decrecer (memoria dinámica). La pila puede crecer para albergar las direcciones de retorno en llamadas a
funciones, sus parámetros, variables locales y decrecer cuando finaliza la función.
El código puede crecer y decrecer si se cargan o descargan módulos
adicionales en tiempo de ejecución. Una solución fácil sería reservar memoria de más por si se necesita, pero ineficiente, reservar lo necesario e ir reubicando el proceso cada vez que se necesite más memoria sería más eficiente pero a la vez más costoso co stoso en tiempo de ejecución.
Compartición de memoria: Algunas aplicaciones necesitan compartir datos en
memoria entre varios procesos. Si el código es inmutable, podría compartirse entre todos los procesos que ejecuten el mismo programa. Esta compartición se realiza bajo control del núcleo, ya que algunas direcciones lógicas de 2 o más procesos se corresponden con las mismas direcciones físicas. Esto lleva a un mecanismo de comunicación entre procesos muy rápido compartiendo compartie ndo datos. Muchos SO incluyen en el mapa de todos los procesos el propio núcleo, de esta forma las llamadas al sistema son más rápidas y se comparten tablas de páginas.
El mapa de memoria de un proceso no es homogéneo, es decir, se compone
de un conjunto de regiones con distintas características (Código, pila, datos de solo lectura…). lectura…).
El mapa de memoria es dinámico, ya que hay regiones que cambian de
tamaño, se crean y destruyen regiones… regiones… El gestor de memoria debe dar soporte a estas características y detectar accesos no permitidos.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Proporcionar a los procesos espacios de direccionamiento muy grandes: Algunas
aplicaciones necesitan poder manejar espacios de direccionamiento incluso más grandes que la RAM. Lo que lleva a que en cualquier momento la suma de todos los espacios de direccionamiento sea mayor que la RAM, esto se resuelve con la técnica de la memoria virtual.
Memoria virtual: Permite que las aplicaciones puedan usar más memoria RAM de la
que está instalada. Del total del espacio de direccionamiento que necesita el programa, en la memoria física solo hay cargadas el 10%, cuando el proceso quiere acceder a una parte que no está cargada, el núcleo la carga del disco, asimismo cuando una parte deja de usarse activamente el núcleo la lleva a disco para dejar memoria física a otras partes activas u otros procesos. El núcleo con la ayuda de la MMU es el que realiza todos estos cambios. Este método es aplicable porque los procesos solo usan parte de su mapa en cierto intervalo de tiempo, lo que se llama proximidad de referencias. Esto nos lleva a que gracias a la memoria virtual permite aumentar el grado de multiprogramación real, al poder tener más procesos en memoria, y permite la ejecución de programas cuyo mapa no cabría en memoria principal.
3.4. Asignación de espacio contiguo. Asignación de memoria. Se trata de poder asignar a un proceso cualquier cantidad de memoria en las zonas de memoria libre de la RAM para maximizar la flexibilidad y el nivel de multiprogramación. Para ello necesitamos el soporte de la CPU y un seguimiento por parte del núcleo. Las soluciones que se dan son la segmentación y la paginación. Pero antes veremos asignación de memoria continua, co ntinua, por introducir diversos conceptos y utilizarse en algunos casos.
contigua. igua. Asignación cont Se carga el mapa de proceso en una zona contigua de memoria principal. No existen regiones, y solo requiere un registro base y un registro limite. El núcleo mantiene información sobre: la tabla de zonas asignadas y zonas libres de la memoria RAM y una copia del valor de los registros valla de cada proceso en su PCB. Como la la asignación se realiza contigua al cabo de cierto tiempo nos encontramos con una memoria fragmentada con espacios libres pero discontinuos, los cuales son muy difíciles de utilizar. Para solucionar el problema de la fragmentación se trata la compactación, pero se trata de un proceso costoso y que tiene dos problemas principales: consume tiempo desplazar zonas de memoria y es difícil seleccionar una estrategia de compactación óptima.
Políticas de asignación de espacio. El objetivo es asignar espacios libres conjugando: buen aprovechamiento de memoria y algoritmo eficiente. Unas posibles políticas son:
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Mejor ajuste (best-fit): Asignar el espacio libre con tamaño suficiente, se trata de
una política ineficiente ya que se generan espacios libres pequeños.
Peor ajuste (worst-fit): Asignar el mayor espacio libre con tamaño suficiente, con
esta política se generan espacios libres más grandes.
Primer ajuste (first-fit): Asignar el primer espacio libre con tamaño suficiente, con
esta política no pierdes tiempo en la búsqueda de espacios libres.
3.5. Asignación de espacio no contiguo: Paginación.
La paginación se basa en la división del espacio de direcciones virtuales, se divide en unidades de tamaño fijo llamadas páginas. Las unidades correspondientes en la memoria física se llaman marcos de página. Las transferencias entre la RAM y el disco siempre son páginas completas. Para identificar las páginas tenemos las direcciones lógicas: nº página y desplazamiento, y existe una tabla de páginas que relaciona cada página con el marco que la contiene, co ntiene, existe una tabla de páginas para cada proceso y es usada por la MMU para traducir direcciones lógicas a físicas.
Paginación: Traducción de direcciones.
Contenido de la TP.
Numero de marco asociado. Bit de validez (V) Página validada dentro del espacio de direccionamiento del proceso (no es un
hueco)
Si se accede a pág. inválidaExcepción.
Información de protección: EXS E=escribible, X=ejecutable, S=solo modo supervisor Si operación no permitida Excepción Bit de página Presente (P) Usado en memoria virtual para indicar si página cargada en memoria Si se accede a página no presente Excepción
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Bit de página referenciada (Ref o R) MMU lo activa cuando se accede a esta página Bit de página modificada (Mod o M) MMU lo activa cuando se escribe en esta página
Fragmentación interna. A cada proceso se le asigna un número entero de páginas, aunque la última de cada región no la use al completo. El proceso puede desperdiciar parte del último marco de cada región.
Tamaño de página. Condicionado por diversos factores contrapuestos:
Potencia de 2 (arquitectura de memoria) y múltiplo. Mejor pequeño por: Menor fragmentación interna. Se ajusta mejor al conjunto de trabajo (páginas que usa el proceso en un
momento dado).
Mejor grande por: Tablas más pequeñas. Mejor rendimiento en los accesos al área de intercambio (en el disco). Compromiso( entre 2K y 16K)
Gestión del núcleo. El núcleo mantiene una TP por cada proceso, y mantiene la tabla de ocupación de marcos, con el estado de cada marco. Del mismo modo mantiene una tabla de regiones por cada proceso para asociar las páginas que corresponden a una región. Por lo que tenemos un mayor gasto en tablas que con asignación contigua, pero es debido a una mayor funcionalidad.
Protección y memoria virtual. Cada página tiene unas operaciones permitidas indicadas en la TP. El RLTP controla el acceso a páginas que no existen. Las páginas pueden no estar en memoria si no se usan, se almacenan en el área de intercambio y el bit de presencia indica si la página esta en memoria o no.
Translation Look-aside Buffer (TLB) Cada acceso lógico requiere dos accesos a memoria principal, a la tabla de páginas y al propio dato o instrucción al que se quiera acceder. Para solucionarlo se presenta el cache de traducciones TLB, que se trata de una memoria asociativa con información sobre las últimas páginas accedidas.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
3.6. Implementación de memoria virtual con paginación. El objetivo es mantener en memoria la parte del proceso que está activa. Si esto no se cumple se produce un fallo de página, que se trata del acceso a una página que no está en memoria. La CPU provoca una excepción y el SO se encarga de transferir la página de disco a memoria.
Estrategias de paginación.
Paginación por demanda: traer a memoria las paginas a medida que se necesitan.
Prepaginación: Traer paginas por anticipado( aunque todavía no se hayan demandado) En fallo de página se traen, además, otras páginas que se prevé que necesitara
el proceso en el futuro cercano.
Se monitorizan los procesos y se traen a memoria las páginas que
habitualmente usa.
Beneficiosa dependiendo de si hay acierto en la predicción.
Tratamiento del fallo de página. La MMU produce una excepción y se ejecuta la rutina del sistema operativo que procesa los fallos de página. Si no hay ningún marco libre:
Selección de victima (algoritmo de reemplazo): página P en marco M. Marca P como
no presente y M como libre.
Si P modificada (bit Mod de la P activo). Inicia escritura del marco donde está P en
disco. Si hay marco libre, el M se ha liberado o lo había previamente:
Carga la página al marco M. En la TP marcar la entrada de página presente, apuntando a M. Poner M como ocupado en lista de marcos libres si no lo estaba.
El fallo de página puede implicar dos operaciones en disco (liberar marco + cargar nueva página)
Algoritmos de reemplaz reemplazo. o. El objetivo de estos algoritmos es minimizar la tasa de fallos de página. Cada algoritmo tiene ti ene una versión local, criterio que se aplica a las paginas residentes del proceso, y otra global, criterio que se aplica a las paginas residentes de todos los procesos.
Algoritmo óptimo. La victima es la página en memoria que tardará más en volverse a usar, lo cual es imposible de implementar porque necesita conocer el futuro para ser realizado. Este algoritmo tiene interés para analizar otros procesos reales comparando su efectividad con la de este.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Algoritmo FIFO La victima es la página que lleva más tiempo en memoria. Se trata de un algoritmo de fácil implementación ya que se expulsa a la primera de la cola, pero no se trata de una buena estrategia, ya que una página que lleva mucho tiempo residente puede seguir accediéndose ac cediéndose frecuentemente. Su criterio no se basa en el uso de la página.
Algoritmo LRU(L LRU(Last ast Recently Used) Used) La víctima es la página en memoria menos usada recientemente. Por proximidad si una no se ha utilizado recientemente es probable que no se use en un futuro próximo. La implementación de esta es complicada, por lo que se suele implementar vía Hardware:
En cada entra de TP hay un campo llamado contador con valor inicial 0. La MMU tiene un registro contador que se incrementa en 1 con cada acceso a
memoria.
En cada acceso a memoria, la MMU copia el valor del registro contador al campo
contador de la entrada de la TP referenciada.
Se reemplaza la página con el contador más bajo.
oportunidad) Algoritmo NRU (del reloj o 2ª oportunidad) Se trata de un algoritmo FIFO + con el uso del bit de referencia Ref de página accedida. Si la página elegida por FIFO no tiene activo Ref esta es expulsada, en cambio sí lo tiene activo (2ª oportunidad) se desactiva Ref, se pone la página al final de la cola y se aplica el criterio a la siguiente página. Una alternativa a usar cola FIFO es tratar la tabla como una lista circular, con una referencia a la página evaluada en el último reemplazo, se visualiza como un reloj donde la referencia a la última página evaluada es la aguja del reloj.
Políticas de asignación de marcos a proceso. Fija: El número de marcos asignados al proceso (conjunto residente) es constante, pero puede depender de las características del proceso. Esto lleva a un inconveniente, no se adapta a las distintas fases del programa, pero es fácil de implementar. Solo tiene sentido su uso en reemplazo local.
Dinámica: El número de marcos varía dependiendo del comportamiento de los procesos. Si se usa con el reemplazo local un proceso va aumentando o disminuyendo su conjunto dependiendo de su comportamiento. Con la asignación dinámica los procesos se quitan páginas entre ellos.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Hiperpaginación (Trashing). Se trata de una tasa excesiva de fallos de página de un proceso o en el mismo mi smo sistema. Con asignación fija existe hiperpaginación si: |conjunto residente de Pi| < |conjunto de trabajo Pi|, con asignación dinámica si: |nº de marcos del sistema|< Σ |conjuntos de trabajo de todos los procesos|. El grado de uso de la CPU cae drásticamente, ya que los procesos están casi siempre en colas de dispositivo de paginación. La solución a este problema es el control de carga:
Disminuir el grado de multiprogramación en el sistema, impidiendo la entrada de
nuevos procesos Planificador a largo plazo.
Disminuir el grado de multiprogramación real: suspender 1 o más procesos liberando
sus páginas residentes Planificador a medio plazo.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Tema 4. Concurrencia 4.1. Ejecución concurrente. Se dice que dos procesos son concurrentes cuando su ejecución se simultanea en el tiempo. En sistemas monoprocesador, la ejecución concurrente es aparente y se produce al intercalar procesos en los cambios de contexto. c ontexto. En multiprocesador si que se puede dar la verdadera ejecución concurrente al tener varias CPU. Por ser un sistema multiprogramado, ya cabe la posibilidad de ejecución concurrente entre procesos e hilos. Esta ejecución concurrente puede ser intencionada y deseada o no. Para hablar de la concurrencia es muy importante el concepto de recurso compartido, que es aquel recurso que puede ser utilizado concurrentemente por dos o mas procesos o hilos, que puede ser una estructura de datos, un fichero o un periférico.
4.2. Problemática general de la concurrencia. Uso de recursos compartidos: Hay que coordinar el acceso a los recursos, en algunos
casos el sistema se encarga de la coordinación “transparentemente”, en otros los procesos se han de coordinar entre si explícitamente. Por ejemplo: Dos procesos piden memoria a la vez, o renombran el mismo el mismo fichero a la vez… dif erentes tareas concurrentes han de respetar Secuenciación de operaciones: Las diferentes
posibles dependencias temporales entre ellas. Por ejemplo: Un proceso lee pistas de audio y otro las va codificando a medida que se leen.
4.3. Interacción entre procesos concurrentes. Competencia: Los procesos no tienen conocimiento de los lo s demás. Ejemplo: Varios
procesos usan la impresora a la vez.
Cooperación por compartición: Los procesos tienen un conocimiento indirecto de los
otros. Ejemplo: Varios procesos usan el mismo fichero , unos para leer y otros para escribir.
Cooperación por comunicación: Los procesos tienen un conocimiento directo de los
otros. Ejemplo: Procesos que se comunican mediante mensajes.
4.4. Sección critica. La sección critica se trata de una sección del código que accede a unos recursos compartidos y, mientras los usa, otros procesos o hilos no deberían acceder a esos mismos recursos. Para conseguirlo las secciones criticas deberán ejecutarse atómicamente, es decir a tal velocidad que los procesos no ven los estados intermedios de la operación. Para que exista la mayor concurrencia posible hay que identificar adecuadamente estas secciones y que estas sean mínimas. Para solucionar este problema se deben cumplir c umplir alguno de estos requisitos:
Exclusión mutua: Si un proceso esta ejecutando código de la sección critica, ningún
otro proceso lo podrá hacer.
Progresion: Un proceso permanece en la sección critica un tiempo finito.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Espera limitada: Cuando un proceso quiera entrar en una sección critica, se le
autorizara un tiempo finito. La región critica se crea por Brich Hansen como una herramienta de programación para resolver el problema de la sección critica, asi como las regiones criticas condicionales, que son para poder esperar a que se cumpla una condición dentro de una región critica. Por ejemplo, para sacar un elemento de la cola tiene que haber elementos, o para añadirlos debe haber espacio.
4.5. Semáforos. Se trata de un contador interno atomico, que ayuda a la ejecución concurrente y a solucionar el tema de las secciones criticas, c riticas, es decir es una manera de implementar regiones criticas. Junto a los semáforos también existen en java los objetos atómicos, en los cuales todas las operaciones son atomicas, pero antes de usarlas hay que valorar si realmente interesa el uso de estas.
4.6. Monitores. Se trata de una herramienta de sincronización que permite a los hilos:
las operaciones sobre el monitor en exclusión mutua. Ejecutar Esperar de manera inactiva a que se cumpla una condición Avisar a los demás hilos de cuando se ha producido una condición.
4.7. Mutex o cerrojo. Un mutex o cerrojo es una herramienta de sincronización que sirve para implementar regiones criticas. Tiene 2 operaciones atomicas:
Lock() Intenta obtener el cerrojo. Si el cerrojo ya esta asignado el hilo se bloquea. Unlock() Libera el cerrojo. Si existen hilos bloqueados en el cerrojo, se desloquea a
uno. Una variable de condición o cola de eventos, permite dejar bloqueado a un hilo a la espera de que alguien lo despierte, se asocian a cerrojos para crear regiones criticas condicionales con multiples colas de hilos bloqueados. Se puede despertar a los hilos de una cola( variable de condición) sin despertar a los que esperan en otra cola, cuando se despierta a un hilo este vuelve a la cola asociada al cerrojo, y cuando consigue bloquearlo ejecuta la instrucción que evalua la condición.
4.8. Interbloqueo Se trata de un bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o se comunican entre si. Problema dependiente de la velocidad de ejecución de los procesos. Para que se produzca interbloqueo se deben dar:
Exclusión mutua: Los procesos acceden a los recursos en exclusión mutua.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
No apropiación: Un recurso solo puede ser liberado voluntariamente por el proceso
que lo tiene asignado.
Retención y espera: Los procesos retienen los recursos que han conseguido hasta el
momento y esperan para conseguir otros que están siendo usados.
Espera circular: Ha de existir una espera circular de dos o mas procesos, cada uno de
los cuales espera para captar un recurso que esta utilizando el siguiente proceso del circulo.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Tema 5. Sistema de entrada y salida. Lo básico en un ordenador lo constituye la CPU y la memoria, pero no servirá de nada sin dispositivos de almacenamiento secundarios (discos) y terciario (cintas, CD-ROM, CD-ROM, DVD…) y sin dispositivos periféricos, que le permitan interactuar con el usuario. (Teclados, ratones, micrófonos…). Todos estos se pueden agrupar en 3 grupos:
Periféricos: Se llama así a los dispositivos que permiten la comunicación entre los
usuarios y el ordenador. Dentro de este grupo se incluyen todos lo loss dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratón, (ratón , teclado…) como para salida (impresoras, pantalla…) pantalla…)
Dispositivos de almacenamiento: Se usan para proporcionar almacenamiento no
volátil de datos y memoria. Su función primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la CPU. Según su capacidad e inmediatez se pueden dividir en almacenamiento secundario (discos) y terciario (cintas, CD, DVD…). DVD…).
Dispositivos de comunicaciones: Permiten conectar al ordenador con otros
ordenadores a través de una red. Los dos tipos de dispositivos más importantes de esta clase son los MODEM y tarjetas de red. Dentro de un dispositivo de E/S se distinguen 2 elementos:
Periférico o dispositivo de E/S: Elemento electromecánico que proporciona la
funcionalidad final. (Monitor).
Controlador de periférico (controller): Elemento electrónico unido a los buses del
sistema que sabe cómo manejar el dispositivo de E/S. Es el componente electrónico a través del cual se conecta co necta el dispositivo de E/S al sistema, que puede estar integrado en la placa base.
5.1. Controlador de periférico. Los controladores son muy variados, casi tanto como los dispositivos de E/S, muchos pueden controlar múltiples dispositivos. Otros incluyen su propia CPU y memoria para controlar la E/S por programa, y evitar así interrupciones continuas con la CPU del ordenador. Existe un esfuerzo importante de estandarización de los dispositivos, lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. El controlador es el componente más importante desde el punto de vista del núcleo, ya que constituye la interfaz del dispositivo junto con el bus del ordenador y es el componente que se ve desde la CPU. Su programación se lleva a cabo mediante una interfaz de muy bajo nivel que proporciona acceso a una serie de registros del controlador. Las características del controlador son muy importantes, ya que definen el aspecto del periférico para el núcleo, que pueden ser: Dirección de E/S, unidad de transferencia de caracteres, bloques o paquetes; o una interacción ordenador-controlador con E/S programada.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
5.2. Problemática de la E/S: velocidad. Diferencia de velocidad entre la CPU y los dispositivos de E/S, ya que la CPU procesa instrucciones a velocidades aproximadas de 1GHz y la memoria RAM tiene un tiempo de acceso de nanosegundos. La mayoría de los dispositivos de E/S tienen tiempos de acceso de milisegundos (hay excepciones) y velocidades de transferencia muy inferiores a la memoria RAM. Esta diferencia hace que los sistemas de E/S sean el cuello de botella más importante de los sistemas de computación y que todos los SO dediquen un gran esfuerzo a optimizar todos los mecanismos de E/S.
5.3. Problemática general de la E/S. Los dispositivos de E/S son difíciles de manejar y cada uno tiene sus peculiaridades: Máquinas de estados complejas, tamaño de la unidad básica de transferencia, representación de los datos… datos…
5.4. Sistema de E/S Es la parte del núcleo que se ocupa de facilitar el manejo de los dispositivos de E/S ofreciendo una visión lógica simplificada de los mismos que pueda ser usada por otros componentes del núcleo (como el sistema de archivos) o incluso por el usuario. El núcleo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes objetivos:
Facilitar el manejo de los dispositivos periféricos. Para ello debe ofrecer una interfaz
entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar.
Optimizar la E/S del sistema, proporcionando mecanismos de incremento de
prestaciones donde sea necesario.
Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo
físico sin que sea necesario remodelar el sistema de E/S del núcleo.
Permitir la conexión y desconexión de dispositivos nuevos de E/S, solventando de
forma automática su instalación usando mecanismos del tipo plug&play. Dentro de la arquitectura del sistema de E/S tenemos:
Software independiente del dispositivo: Lo forman los niveles superiores del núcleo. Su
función es ejecutar las funciones de E/S que son comunes a todos los dispositivos a través de una interfaz uniforme. Realiza:
Almacenamiento intermedio: usar buffers del núcleo para acomodar los
diferentes tamaños y velocidades de acceso.
Gestión de dispositivos: nombrado, protección y control de acceso. Planificación de E/S: colas de peticiones para cada dispositivo. Se ordenan
según una política de planificación.
Gestión de errores: errores transitorios y permanentes.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
Manejador del dispositivo:
5.5. E/S Bloqueante y no bloqueante. Bloqueante: proceso bloqueado hasta que la E/S termina. Es fácil de usar y
comprender pero es insuficiente para algunos requisitos.
No bloqueante: se encola la E/S y el proceso continúa. Interfaz de usuario más
compleja y realiza operaciones asíncronas: El proceso continúa ejecutándose en paralelo con la realización de sus operaciones de E/S, el proceso utiliza algún mecanismo del núcleo para comprobar el estado y la terminación de sus operaciones de E/S.
5.6. Buffering. Consiste en usar una zona de memoria como almacenamiento intermedio en una transferencia de datos. Tiene como ventajas que permite adaptar velocidades entre productor y consumidor, permite agrupar múltiples transferencias pequeñas en una grande, diferenciar entre la zona de memoria usada para transferencias por el núcleo y por el proceso y permite expulsar al proceso de memoria mientras se realiza la E/S, pues esta se hace sobre la zona de memoria del núcleo. Como caso particular del buffering tenemos el spooling en el que se usa el dispositivo como almacenamiento intermedio porque el dispositivo es mucho más lento que el proceso o porque el volumen de datos de cada transferencia puede ser muy elevado. Los trabajos pendientes se encolan en el área de spool y cabe la posibilidad de aplicar algoritmos de planificación para seleccionar cual será el siguiente que se procese.
Descargado por Andreas Deris (malmsteen@123m (
[email protected]) ail.cl) lOMoARPSD 9 88
5.7. Discos. Se trata de dispositivos básicos para llevar a cabo el almacenamiento masivo y no volátil de datos. Además se usan como plataforma para el sistema de intercambio que usa el gestor de memoria virtual. Un disco duro es un dispositivo de gran capacidad compuesto por varias superficies con material magnético y un bloque de cabezas de lectura/escritura. Las superficies del disco están divididas en cilindros, con dos pistas por plato y un cierto número de sectores por pista. Capacidad=cilindros*pistas*sectores*tamaño Capacidad=cilindros*pistas*sectores*ta maño del sector. Los componentes principales del tiempo de acceso en un disco duro:
Búsqueda (mover la cabeza al cilindro). Típico 5-15ms Latencia rotacional (esperar a que el sector pase bajo la cabeza). Típico 2-8 ms. Lectura/escritura. Típico