sábado, 7 de noviembre de 2015

5 unidad. Sistema de Archivos

Unidad 5 << Sistemas de Archivo >>

5.1 Introducción---

Todas las aplicaciones computarizadas necesitan almacenar y recuperar la información:
Superando las limitaciones del almacenamiento real. Trascendiendo a la duración de los procesos que las utilizan o generan. Independizando a la información de los procesos permitiendo el acceso a la misma a través de varios procesos. Las condiciones esenciales para el almacenamiento de la información a largo plazo son:
Debe ser posible almacenar una cantidad muy grande de información. La información debe sobrevivir a la conclusión del proceso que la utiliza. Debe ser posible que varios procesos tengan acceso concurrente a la información. La solución es el almacenamiento de la información en discos y otros medios externos en unidades llamadas archivos: Los archivos deben ser persistentes, es decir que no deben verse afectados por la creación o terminación de un proceso. Los archivos son una colección de datos con nombre. Pueden ser manipulados como una unidad por operaciones como: open, close, create, destroy, copy, rename, list. Los elementos de datos individuales dentro del archivo pueden ser manipulados por operaciones como: read, write, update, insert, delete. El “Sistema de Archivos” es la parte del sistema de administración del almacenamiento responsable, principalmente, de la administración de los archivos del almacenamiento secundario. Es la parte del S. O. responsable de permitir “compartir controladamente” la información de los archivos.

5.2.- Noción de Archivo Real y Virtual.

Los componentes del sistema de archivos y de programación permiten interactuar con los recursos del sistema de archivos y de directorio y provocar eventos en intervalos programados. Las instancias del componente File System Watcher permiten inspeccionar cambios en los directorios y archivos y reaccionar cuando se producen.

El componente Timer permite configurar programaciones simples de producción de eventos y ejecutar el procesamiento asociado.



5.3.- Componentes de un Sistema de Archivos.

Un “Archivo” es un conjunto de registros relacionados.
El “Sistema de Archivos” es un componente importante de un S. O. y suele contener:
“Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
“Administración de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados.
“Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario.
“Integridad del archivo” para garantizar la integridad de la información del archivo.
El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
Una forma de organización de un sistema de archivos puede ser la siguiente:
Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz”.
El “directorio raíz” apunta a los “directorios de usuarios”.
Un “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario.
Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado.



Los nombres de archivos solo necesitan ser únicos dentro de un directorio de usuario dado.
El nombre del sistema para un archivo dado debe ser único para el sistema de archivos.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.
Archivos
Se considerará el punto de vista del usuario.
Nombre de los Archivos
Las reglas exactas para los nombres de archivos varían de sistema a sistema.
Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas, mientras que otros no.
Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:
La parte posterior al punto es la extensión de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.
Estructura de un Archivo
Los archivos se pueden estructurar de varias maneras, las más comunes son:
“Secuencia de bytes”: El archivo es una serie no estructurada de bytes.
Posee máxima flexibilidad.
El S. O. no ayuda pero tampoco estorba. “Secuencia de registros”:
El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna.
“Árbol”:
El archivo consta de un árbol de registros, no necesariamente de la misma longitud.
Cada registro tiene un campo key (llave o clave) en una posición fija del registro.
El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular.
Tipos de Archivos
Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios, archivos especiales de caracteres, archivos especiales de bloques, etc., donde:
Los Archivos Regulares son aquellos que contienen información del usuario.
Los Directorios son archivos de sistema para el mantenimiento de una estructura del sistema de archivos.
Los Archivos Especiales de Caracteres:
Tienen relación con la e / s.
Se utilizan para modelar dispositivos seriales de e / s (terminales, impresoras, redes, etc.).
Los Archivos Especiales de Bloques se utilizan para modelar discos.
Acceso a un Archivo
Los tipos de acceso más conocidos son:
Acceso Secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio, sin poder:
Saltar registros.
Leer en otro orden.
Acceso Aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura:
Cada operación de lectura (read) da la posición en el archivo con la cual iniciar.
Una operación especial (seek) establece la posición de trabajo pudiendo luego leerse el archivo secuencialmente.
Atributos de Archivo
Cada archivo tiene:
Su nombre y datos.
Elementos adicionales llamados atributos, que varían considerablemente de sistema a sistema.


Algunos de los posibles atributos de archivo son:
“Protección”: quién debe tener acceso y de qué forma.
“Contraseña”: contraseña necesaria para acceder al archivo.
“Creador”: identificador de la persona que creó el archivo.
“Propietario”: propietario actual.
“Bandera exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura exclusivamente.
“Bandera de ocultamiento”: 0 normal, 1 para no exhibirse en listas.
“Bandera de sistema”: 0 archivo normal, 1 archivo de sistema.
“Bandera de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.
“Bandera ASCII / binario”: 0 archivo en ASCII, 1 archivo en binario.
“Bandera de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.
“Bandera temporal”: 0 normal, 1 eliminar al salir del proceso.
“Banderas de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.
“Longitud del registro”: número de bytes en un registro.
“Posición de la llave”: ajuste de la llave dentro de cada registro.
“Longitud de la llave”: número de bytes en el campo llave.
“Tiempo de creación”: fecha y hora de creación del archivo.
“Tiempo del último acceso”: fecha y hora del último acceso al archivo.
“Tiempo de la última modificación”: fecha y hora de la última modificación al archivo.
“Tamaño actual”: número de bytes en el archivo.
“Tamaño máximo”: tamaño máximo al que puede crecer el archivo.
Operaciones con Archivos
Las llamadas más comunes al sistema relacionadas con los archivos son:
Create (crear): el archivo se crea sin datos.
Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan automáticamente un archivo no utilizado durante “n” días.
Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores.
Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.
Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.
Write (escribir): los datos se escriben en el archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado de registros) o no (actualización de registros).
Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al final del archivo.
Seek (buscar): especifica el punto donde posicionarse. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.
Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo.
Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo. La información relativa al modo de protección y la mayoría de las banderas son un ejemplo obvio.
Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.
Archivos Mapeados a Memoria
Algunos S. O. permiten asociar los archivos con un espacio de direcciones de un proceso en ejecución.
Se utilizan las llamadas al sistema “map” y “unmap”:
“Map”: utiliza un nombre de archivo y una dirección virtual y hace que el S. O. asocie al archivo con la dirección virtual en el espacio de direcciones, por lo cual las lecturas o escrituras de las áreas de memoria asociadas al archivo se efectúan también sobre el archivo mapeado.
“Unmap”: elimina los archivos del espacio de direcciones y concluye la operación de asociación.
El mapeo de archivos elimina la necesidad de programar la e / s directamente, facilitando la programación.
Los principales problemas relacionados son:
Imposibilidad de conocer a priori la longitud del archivo de salida, el que podría superar a la memoria.
Dificultad para compartir los archivos mapeados evitando inconsistencias, ya que las modificaciones hechas en las páginas no se verán reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria.

5.4.- Organización Lógica y Física

En esta parte vamos a usar el término organización de archivos para referirnos a la estructura lógica de los registros determinada por la manera en que se accede a ellos. La organización física del archivo en almacenamiento secundario depende de la estrategia de agrupación y de la estrategia de asignación de archivos.
Para seleccionar una organización de archivos hay diversos criterios que son importantes:

-Acceso Rápido para recuperar la información
-Fácil actualización
-Economía de almacenamiento
-Mantenimiento simple
-Fiabilidad para asegurar la confianza de los datos

La prioridad relativa de estos criterios va a depender de las aplicaciones que va a usar el archivo. El número de alternativas de organización de archivos que se han implementado o propuesto es inmanejable, incluso para un libro dedicado a los sistemas de archivos. La mayor parte de las estructuras empleadas en los sistemas reales se encuadran en una de estas categorías o puede implementarse como una combinación de estas:




Pilas
Archivos secuenciales
Archivos Secuenciales indexados
Archivos indexados
Archivos directos o de dispersión.

5.5.- Mecanismos de Acceso a los Archivos.

Tipos:
Método de Acceso Secuencial: El acceso secuencial significa que un grupo de elementos es accedido en un predeterminado orden secuencial. El acceso secuencial es a veces la única forma de acceder a los datos, por ejemplo en una cinta de cassette. También puede ser el método de acceso elegido, para simplemente procesar una secuencia de datos en orden.
Método de Acceso Secuencial Indexado: Método de acceso secuencial indexado. Método común de acceso a disco que almacena datos en forma secuencial, al tiempo que mantiene un índice de campos claves para todos los registros en el archivo para acceso directo. El orden secuencial sería el más comúnmente usado para el procesamiento por lotes y la impresión (número de cuenta, nombre, etc.).
Método de Acceso Indexado: Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable. Para alcanzar esta flexibilidad, se necesita una estructura que utilice múltiples índices, uno para cada tipo de campo que pueda ser objeto de la búsqueda.
Se suelen utilizar dos tipos de índices. Un índice exhaustivo contiene una entrada para cada registro del archivo principal. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. Con registros de longitud variable, algunos registros no contendrán todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la información y donde los datos son rara vez procesados de forma exhaustiva.
Método de Acceso Hashed: Pendiente la definición.

Archivos Secuenciales.
La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos.
Un campo particular, generalmente el primero de cada registro se conoce como el campo clave. El campo clave identifica unívocamente al registro. Así, los valores de la clave para registros diferentes son siempre diferentes.
Los archivos secuenciales son típicamente utilizados en aplicaciones de proceso de lotes Y son óptimos para dichas aplicaciones si se procesan todos los registros. La organización secuencias de archivos es la única que es fácil de usar tanto en disco como en cinta.
Para las aplicaciones interactivas que incluyen peticione s o actualizaciones de registros individuales, los archivos secuenciales ofrecen un rendimiento pobre.
Normalmente un archivo secuencial se almacena en bloques, en un orden secuencial simple de los registros. La organización física del archivo en una cinta o disco se corresponde exactamente con la ubicación lógica del archivo. En este caso, el procedimiento para ubicar los nuevos registros en un archivo de pila separado, llamado archivo de registro (log file) o archivo de transacciones. Periódicamente, se realiza una actualización por lotes que mezcla el archivo de registro con el archivo maestro para producir un nuevo archivo en secuencia correcta de claves.
Archivos Secuenciales indexados
Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencias indexado. El archivo secuencial indexado mantiene las características básicas de los archivos secuenciales: los registros están organizados en una secuencia basada en un campo. Dos características se añaden: un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento (overflow). El índice provee una capacidad de búsqueda para llegar rápidamente a las proximidades de un registro deseado. El archivo de desbordamiento (overflow) es similar al archivo de registro usado en un archivo secuencial, pero esta integrado de forma que los registros del archivo de desbordamiento se ubican en la dirección de un puntero desde si registro precedente. En la estructura secuencial indexada más simple, se usa un solo nivel de indexación. El índice, en este caso, es un archivo secuencial simple. Cada registro del archivo índice tiene dos campos: un campo clave, que es el mismo que el campo clave del archivo principal y un puntero al archivo principal. Para encontrar un campo específico se busca en el índice hasta encontrar el valor mayor de la clave que es igual o precede al valor deseado de la clave. La búsqueda continúa en el archivo principal a partir de la posición indicada por el puntero.
Archivos Indexados
Los archivos secuenciales indexados retienen la limitación del archivo secuencial: la eficacia en el procesamiento se limita al basado en un único campo del archivo. Cuando es necesario buscar un registro basándose en algún otro atributo distinto del campo clave ambas formas de archivo secuencial no son adecuadas. En algunas aplicaciones esta flexibilidad es deseable.
Para alcanzar esta flexibilidad, se necesita una estructura que utilice múltiples índices, uno para cada tipo de campo que pueda ser objeto de la búsqueda.
Se suelen utilizar dos tipos de índices. Uno índice exhaustivo contiene una entrada para cada registro del archivo principal. Otro índice parcial contendrá entradas a los registros donde este el campo de interés. Con registros de longitud variable, algunos registros no contendrán todos los campos.
Los archivos indexados son muy utilizados en aplicaciones donde es critica la oportunidad de la información y donde los datos son rara vez procesados de forma exhaustiva.
Archivos Directos o de Dispersión (Hashed)
Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de dirección conocida. Como en los archivos secuenciales y secuenciales indexados, se requiere un campo clave en cada registro. Sin embargo, aquí no hay concepto de ordenamiento secuencial.


5.6.- Manejo de Espacio en Memoria Secundaria.


Manejo de Espacio en Memoria Secundaria.
El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera:
Vector de bits.
Lista ligada (lista libre).
Por conteo (agrupación).
Vector de bits.
El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada sector es representado por un bit y si el sector es libre el bit es cero de lo contrario está asignado.
Lista ligada
Existe una cabecera en la que se tiene la dirección del primer sector vacío, ese sector a su vez, tiene un apuntador al siguiente sector, y así sucesivamente hasta que se encuentre una marca indicando que ya no hay espacio libre.
Por conteo 
Aquí, por cada conjunto de sectores contiguos que estén vacíos, se tiene por cada apuntador, un número de inicio y el tamaño del grupo de sectores vacíos.
Métodos de asignación de espacio en disco
Un método de asignación de espacio en disco determina la manera en que un Sistema Operativo controla los lugares del disco ocupados por cada archivo de datos.
Contigua
Ligada
Indexada
Asignación contigua
Este método consiste en asignar el espacio en disco de tal manera que las direcciones de todos los bloques correspondientes a un archivo definen un orden lineal.
Asignación ligada
En este método, cada archivo es una lista ligada de bloques de disco. En el directorio hay un apuntador al bloque de inicio y un apuntador al bloque final para cada archivo. En cada uno de los bloques donde se encuentra un archivo hay un apuntador al siguiente bloque de la lista.
Asignación indexada
Cada archivo tiene su bloque índice, El cual es un arreglo de direcciones de bloques de disco. La i-ésima entrada en el bloque índice apunta al i-ésimo bloque que conforma el archivo.





5.7.- Modelo Jerárquico.

Sistemas Jerárquicos de Directorios
El directorio contiene un conjunto de datos por cada archivo referenciado.
Una posibilidad es que el directorio contenga por cada archivo referenciado:
El nombre.
Sus atributos.
Las direcciones en disco donde se almacenan los datos.
Otra posibilidad es que cada entrada del directorio contenga:
El nombre del archivo.
Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco.
Al abrir un archivo el S. O.:
Busca en su directorio el nombre del archivo.
Extrae los atributos y direcciones en disco.
Graba esta información en una tabla de memoria real.
Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal.
El número y organización de directorios varía de sistema en sistema:
Directorio único: el sistema tiene un solo directorio con todos los archivos de todos los usuarios (ver Figura 4.1).
Un directorio por usuario: el sistema habilita un solo directorio por cada usuario (ver Figura 4.2).
Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarquía general (ver Figura 4.3).
   


Nombre de las Rutas de Acceso
Cuando el sistema de archivos está organizado como un árbol de directorios se necesita una forma de determinar los nombres de los archivos.
Los principales métodos para nombres de los archivos son:
Ruta de Acceso Absoluta:
Cada archivo tiene una ruta de acceso absoluta.
Consta de la ruta de acceso desde el directorio raíz hasta el archivo.
Los componentes de la ruta de acceso se separan mediante algún carácter llamado “separador”.
Ruta de Acceso Relativa:
Se utiliza junto con el concepto de directorio de trabajo o directorio activo.
Todos los nombres que no comiencen en el directorio raíz se toman en relación con el directorio de trabajo.
El nombre absoluto de la ruta de acceso siempre funciona, sin importar cual sea el directorio de trabajo.
Operaciones con Directorios
Las llamadas al sistema permitidas para el manejo de los directorios tienen variación de sistema a sistema.
Las más comunes son las siguientes:
Create (crear): se crea un directorio vacío.
Delete (eliminar): se elimina un directorio, que debe estar vacío.
Opendir (abrir directorio): se pueden leer los directorios:
Antes de poder leer un directorio, éste debe ser abierto.
Closedir (cerrar directorio): cuando se ha leído un directorio, éste debe ser cerrado para liberar el espacio correspondiente de la tabla interna.
Readdir (leer directorio): regresa la siguiente entrada en un directorio abierto, sin importar el tipo de estructura de directorios que se utilice.
Rename (cambiar de nombre): cambia el nombre de un directorio de manera similar al cambio para archivos.
Link (ligar): es una técnica que permite que un archivo aparezca en más de un directorio:
Especifica un archivo existente y el nombre de una ruta de acceso.
Crea un enlace del archivo ya existente con el nombre especificado en la ruta de acceso.
Un link (desligar): se elimina una entrada del directorio:
Si el archivo que se desea desligar aparece solo en un directorio (el caso normal):
Se elimina del sistema de archivos.
Si el archivo que se desea desligar, está presente en varios directorios:
Solo se elimina la ruta de acceso especificada.
Las demás rutas permanecen.


5.8.- Mecanismos de Recuperación en Caso de Falla.



Mecanismos de Recuperación en Caso de Fallas.
Debido a que los archivos se mantienen tanto en memoria principal como en el disco, debemos asegurarnos de que un fallo del sistema no de por resultado la perdida de datos o inconsistencia en los mismos.
La destrucción de la información, ya sea accidental o intencional, es una realidad y tiene distintas causas:
Fallas de hardware y de software
Fenómenos meteorológicos atmosféricos
Fallas en el suministro de energía
Incendios e inundaciones
Robos, vandalismo (incluso terrorismo)
Esta posible destrucción de la información debe ser tenida en cuenta por:
Los sistemas operativos en general
Los sistemas de archivos en particular
Una técnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos periódicos:
Hacer con regularidad una o más copias de los archivos y colocarlas en lugar seguro.
Todas las actualizaciones realizadas luego del último respaldo pueden perderse.
Otra técnica es pasar todas las transacciones a un archivo, copiándolas en otro disco:
Genera una redundancia que puede ser costosa
En caso de fallas en el disco principal, puede reconstruirse todo el trabajo perdido si el disco de reserva no se dañó también
También existe la posibilidad del respaldo incremental:
Durante una sesión de trabajo los archivos modificados quedan marcados.
Cuando un usuario se retira del sistema (deja de trabajar), un proceso del sistema efectúa el respaldo de los archivos marcados.
Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los archivos.
El método correcto de manejar fallos consiste básicamente en detectarlos a tiempo y de forma correcta. La inclusión de equipos de test en el sistema es esencial para mantener esta capacidad de monitorización.
En cualquier caso, la caída total o parcial del sistema se puede subsanar en parte si hay puntos de restauración del sistema (chkpt). Esta posibilidad aumenta la disponibilidad de recuperación en caso de fallos.
Mecanismos de Protección
Dominios de Protección
Muchos objetos del sistema necesitan protección, tales como la CPU, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos, etc.


Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre él.
Un dominio es un conjunto de parejas (objeto, derechos):
Cada pareja determina:
Un objeto.
Un subconjunto de las operaciones que se pueden llevar a cabo en él.
Un derecho es el permiso para realizar alguna de las operaciones.
Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio.
Un proceso se ejecuta en alguno de los dominios de protección:
Existe una colección de objetos a los que puede tener acceso.
Cada objeto tiene cierto conjunto de derechos.

Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz:
Los renglones son los dominios.
Las columnas son los objetos.
Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar.
Listas Para Control de Acceso
Las “matrices de protección” son muy grandes y con muchos lugares vacíos Desperdician espacio de almacenamiento.
Existen métodos prácticos que almacenan solo los elementos no vacíos por filas o por columnas.
La lista de control de acceso (ACL: Access control list):
Asocia a cada objeto una lista ordenada con:
Todos los dominios que pueden tener acceso al objeto.
La forma de dicho acceso (ej.: lectura ®, grabación (w), ejecución (x)).
Una forma de implementar las ACL consiste en:
Asignar tres bits (r, w, x) para cada archivo, para:
El propietario, el grupo del propietario y los demás usuarios.
Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier momento:
Permite prohibir accesos antes permitidos.
Posibilidades
La matriz de protección también puede dividirse por renglones.
Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.
Se le indican las operaciones permitidas en cada uno.
Esto define su dominio.
La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades. Cada posibilidad tiene:
Un campo tipo:
Indica el tipo del objeto.

Un campo derecho:
Mapa de bits que indica las operaciones básicas permitidas en este tipo de objeto.
Un campo objeto:
Apuntador al propio objeto (por ej.: su número de nodo-i).
1.- Fundamentos de sistemas
operativos. Silberschatz galvin gagne. Septima Edición. Mc Graw Hill. Parte No 4: Gestión de Almacenamiento.

martes, 3 de noviembre de 2015

4 unidad Administración de memoria

4. ADMINISTRACIÓN DE MEMORIA
4.1 DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS: DEVICE DRIVERS
4.2 MECANISMOS Y FUNCIONES DE LOS MANJADORES DE DISPOSITIVOS
4.3 ESTRUTURAS DE DATOS PARA MANEJO
4.4 OPEARCIONES ENTRADA SALIDA

Por lo tanto en este tema veremos un funcionamiento básico del sistema operativo, pero a veces no sabemos ni cómo es que se logra hacer.

4.1 Dispositivos y manejadores de dispositivos: Device Drivers


Se denomina periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora.
Se consideran periféricos tanto a las unidades o dispositivos a través de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Se pueden clasificar en dos grandes categorías:

Dispositivos de bloques: dispositivos que almacenan la información en bloques de tamaño fijo (discos)
Dispositivos de caracteres: maneja la información mediante un flujo de caracteres sin estructurarlos en bloques (mouse, teclado, impresora)
Las principales características de los dispositivos de bloque son:
La información se almacena en bloques de tamaño fijo.
Cada bloque tiene su propia dirección.
Los tamaños más comunes de los bloques van desde los 128 bytes hasta los 1.024 bytes.
Se puede leer o escribir en un bloque de forma independiente de los demás, en cualquier momento.
Un ejemplo típico de dispositivos de bloque son los discos.
Las principales características de los dispositivos de carácter son:
La información se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques.
No se pueden utilizar direcciones.
No tienen una operación de búsqueda.
Un ejemplo típico de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:
Dispositivos de interfaz de usuario. Se llama así a los dispositivos que permiten la comunicación entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratón, teclado, etc.) como para salida (impresoras, pantalla, etc.). Existen periféricos menos habituales, pero más sofisticados, tales como un escáner, lectores de huella digital, lectores de cinta magnética, instrumentos musicales digitales (MIDI), etc.
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 UCP. Según su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos, se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas).
Dispositivos de comunicaciones. Permiten conectar a la computadora con otras computadoras a través de una red. Los dos tipos de dispositivos más importantes de esta clase son los módem, para comunicación vía red telefónica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de área local.

En cualquier caso, y sea como sea el controlador, su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:
Adaptadores de audio (tarjetas de sonido).
Dispositivos de comunicación (infrarrojos, módems, etc).
Dispositivos de visualización; pantallas (displays).
Teclados.
Ratón (“mouse” y otros señaladores gráficos).
Dispositivos multimedia.
Dispositivos de Red.
Impresoras.
Almacenamiento
Algunos dispositivos de entrada y salida:

Entrada:
Teclado
Ratón
Joystick
Lápiz óptico
Micrófono
Webcam
Escáner
Escáner de código de barras
Salida:
Monitor
Altavoz
Auriculares
Impresora
Plotter
Proyector
Entrada/salida (mixtos):
Unidades de almacenamiento: CD, DVD, Blu-ray, Memory cards, Disco Duro Externo, Disco duro, Pendrive USB.
Módem
Router
Pantalla táctil
Tarjeta de red




Controladores de dispositivos
Un controlador (instaladores) de dispositivos, normalmente llamado controlador en inglés (device driver) es un programa que informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware del dispositivo y proporcionando una interfaz - posiblemente estandarizada - para usarlo. Se puede esquematizar como un manual de instrucciones que se indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por lo tanto es una pieza esencial, sin el cual,  no se podría usar el hardware. Los controladores de dispositivos son programas añadidos al núcleo del sistema para gestionar periféricos y dispositivos oficiales.
Existen tantos tipos de controladores como tipos de periféricos y es común más de un tipo de controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante se pueden encontrar también los proporcionados por el sistema operativo o también versiones no oficiales hechas por terceros.

Las unidades de e / s generalmente constan de:
Un componente mecánico.
Un componente electrónico, el controlador del dispositivo o adaptador.
Muchos controladores pueden manejar más de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo.
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:
La comunicación es mediante un flujo de bits en serie que:
o Comienza con un preámbulo.
o Sigue con una serie de bits (de un sector de disco, por ej.).
o Concluye con una suma para verificación o un código corrector de errores.
El preámbulo:
o Se escribe al dar formato al disco.
o Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
El controlador debe:
Convertir el flujo de bits en serie en un bloque de bytes.
Efectuar cualquier corrección de errores necesaria.
Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la CPU:
Pueden ser parte del espacio normal de direcciones de la memoria: e / s mapeada a memoria.
Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.
El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.
Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
Obtenga el control de la CPU.
Verifique los resultados de la operación.

Manejadores de dispositivos
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. 
Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores.
El manejador explora la lista de peticiones, extrae una petición pendiente y ordena su ejecución. 
La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO. 
Una vez enviada la petición al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde inmediatamente. 
Después de recibir el fin de operación, controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar después de la operación de E/S. En caso contrario se bloquea.


Cada controlador posee uno o más registros de dispositivos:
Se utilizan para darle los comandos.
Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.
La labor de un manejador de dispositivos es la de:
Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.
Verificar la ejecución de dichas solicitudes.
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregara la nueva solicitud a una cola de solicitudes pendientes. 
La solicitud de e / s, por ej. Para un disco, se debe traducir de términos abstractos a términos concretos:
Estimar el lugar donde se encuentra en realidad el bloque solicitado.
Verificar si el motor de la unidad funciona.
Verificar si el brazo está colocado en el cilindro adecuado, etc.
Resumiendo: debe decidir cuáles son las operaciones necesarias del controlador y su orden.
Envía los comandos al controlador al escribir en los registros de dispositivo del mismo.
Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupción lo libera de este bloqueo.
Al finalizar la operación debe verificar los errores.
Si todo está bien transferirá los datos al software independiente del dispositivo.
Regresa información de estado sobre los errores a quien lo llamo.
Inicia otra solicitud pendiente o queda en espera.



4.2 Mecanismos y funciones de los manejadores de dispositivos: Device Drivers

El controlador es el componente más importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la CPU. El Sistema Operativo generalmente trabaja con el controlador y no con el dispositivo.
Técnicas de E/S
E/S programada: El procesador emite una orden de E/S de parte de un proceso a un módulo de E/S; el proceso espera entonces a que termine la operación, antes de seguir.
E/S dirigida por interrupciones: El procesador emite una orden de E/S de parte de un proceso, continua la ejecución de las instrucciones siguientes y el módulo de E/S lo interrumpe cuan do completa su trabajo. Las instrucciones siguientes pueden ser del mismo proceso, si no es necesario para este esperar la terminación de E/S. en otro caso, el proceso se suspende a la espera de la interrupción, mientras se realiza otro trabajo.
Acceso Directo a la Memoria (DMA): un módulo de DMA controla el intercambio de datos entre la memoria principal y un módulo de E/S. El procesador envía una petición de transferencia de un bloque de datos al módulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.
En la mayoría de los sistemas informáticos, el DMA es la forma dominante de transferencia ofrecida por el sistema operativo.







 Sin interrupciones Con interrupciones

Transferencia de E/S a memoria a través del procesador E/S programada E/S dirigida por interrupciones
Transferencia de E/S directa a memoria Acceso directo a memoria (DMA)


Hay que recalcar que el controlador al ser una parte crítica del sistema operativo, el fallo de un controlador puede ser más grave que otros errores de software, pudiendo bloquear el ordenador o incluso dañar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa, sino también el propio dispositivo.
Funciones generalmente realizadas por el software independiente del dispositivo:
Interfaz uniforme para los manejadores de dispositivos.
Nombres de los dispositivos.
Protección del dispositivo.
Proporcionar un tamaño de bloque independiente del dispositivo.
Uso de buffer.
Asignación de espacio en los dispositivos por bloques.
Asignación y liberación de los dispositivos de uso exclusivo.
Informe de errores.

Las funciones básicas del software independiente del dispositivo son:
Efectuar las funciones de e / s comunes a todos los dispositivos.
Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado. 
Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.
El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.

El software independiente del dispositivo debe:
Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.
Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.


4.3 Mecanismos y funciones de los manejadores de dispositivos: Device Drivers

Estructura simple o sistema monolítico

           El sistema MS-DOS es, sin duda, el mejor sistema operativo para microcomputadoras. Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos. Los programas de aplicación pueden acceder a operaciones básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre acceso, hace que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar por completo un disco rígido por alguna falla. Además este sistema, también está limitado al hardware sobre el que corre.
        Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste de dos partes separadas, el kernel y los programas de sistemas. El kernel fue posteriormente separado en manejadores (drivers) de dispositivos y una serie de interfaces. El kernel provee el sistema de archivos, la programación de CPU, el administrador de memoria y otras funciones del sistema operativo que responden a las llamadas del sistema enunciadas anteriormente. 




 Es una forma  de relación entre el kernel y el software los sistemas operativos que usaron este sistema fueron freedbsd, unix y linux.

Estructura por capas (layers)
        Las nuevas versiones de UNIX se diseñaron para hardware más avanzado. Para dar mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas partes. Ahora los sistemas operativos tienen mayor control sobre el hardware y las aplicaciones que se ejecutan sobre este.
        La modularizacion de un sistema se puede presentar de varias formas, la más utilizada es la de capas, la cual consiste en dividir al sistema operativo en un número de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz con el usuario.
        La principal ventaja es que cada capa cumple con una serie de funciones y servicios que brinda a las otras capas, esto permite una mejor organización del sistema operativo y una depuración más fácil de este. 
 Es una estructura organizada jerárquicamente cada una construidas de menor a mayor.

Cada capa se implementa solo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no necesita saber cómo se implementan estas funciones, solo necesita saber que operaciones puede realizar. 

Los procesos de usuario emiten peticiones de E/S al sistema operativo. Cuando un proceso solicita una operación de E/S, el sistema operativo prepara dicha operación y bloquea al proceso hasta que se recibe una interrupción del controlador del dispositivo indicando que la operación está completa.

En el manejo de los dispositivos de E/S es necesario, introducir dos nuevos términos:

BUFFERING (uso de memoria interna)

Trata de mantener ocupados tanto la CPU como los dispositivos de E/S. Los datos se leen y se almacenan en un buffer, una vez que los datos se han leído y la CPU va a iniciar inmediatamente la operación con ellos, el dispositivo de entrada es introducido para iniciar inmediatamente la siguiente lectura.

La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU este libre para el siguiente grupo de datos, el dispositivo de entrada habrá terminado de leerlos. La CPU podrá empezar el proceso de los últimos datos leídos, mientras el dispositivo de entrada iniciara la lectura de los datos siguientes.

SPOOLING

Esta forma de procesamiento de denomina spooling, utiliza el disco como un buffer muy grade para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los ficheros hasta que los dispositivos de salida sean capaces de aceptarlos.

Es una característica utilizada en la mayoría de los sistemas operativos.

Manejadores de interrupción

Los manejadores de interrupción se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que éstos están listos para la transferencia de datos o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido).

4.4 Operaciones de entrada y salida

Tanto en la E/S programada como la basada en interrupciones, la CPU debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo a la UCP, e interrumpir a la UCP sólo cuando haya terminado la operación completa de E/S. Esta técnica se denomina acceso directo a memoria (DMA, Direct Memory Access).


Cuando se utiliza acceso directo a memoria, es el controlador el que se encarga directamente de transferir los datos entre el periférico y la memoria principal, sin requerir intervención alguna por parte del procesador. Esta técnica funciona de la siguiente manera: cuando el procesador desea que se imprima un bloque de datos, envía una orden al controlador indicándole la siguiente información:
Tipo de operación: lectura o escritura.
Periférico involucrado en la operación.
La dirección de memoria desde la que se va a leer o a la que va a escribir directamente con el controlador de dispositivo (dirección).
El número de bytes a transferir (contador).
Donde el campo Operación corresponde al código de operación de las instrucciones máquina normal. Especifica la operación que debe realizar la CCW. La unidad de control decodifica este campo y envía las señales adecuadas de control al dispositivo. Existen varias operaciones, las más importantes son las siguientes:
Lectura: el canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo nº de palabras, en orden ascendente de direcciones, empezando en la dirección especificada en el campo dirección del dato.
Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura.
Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S, como rebobinar una cinta magnética, etc.
Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo dirección del dato como la dirección de la siguiente CCW a ejecutar.
Los pasos a seguir en una operación de E/S con DMA son los siguientes:
1. Programación de la operación de E/S. Se indica al controlador la operación, los datos a transferir y la dirección de memoria sobre la que se efectuará la operación.
2. El controlador contesta aceptando la petición de E/S.
3. El controlador le ordena al dispositivo que lea (para operación de lectura) una cierta cantidad de datos desde una posición determinada del dispositivo a su memoria interna.
4. Cuando los datos están listos, el controlador los copia a la posición de memoria que tiene en sus registros, incrementa dicha posición de memoria y decremento el contador de datos pendientes de transferir.
5. Los pasos 3 y 4 se repiten hasta que no quedan más datos por leer.
6. Cuando el registro de contador está a cero, el controlador interrumpe a la UCP para in dicar que la operación de DMA ha terminado.
Inicio y control de los programas de canal
Hemos visto cómo se utilizan los programas de canal para realizar operaciones de E/S. Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro instrucciones máquina que la CPU puede utilizar para estos fines. Son las siguientes:
START I/O Inicia una operación de E/S. El campo de dirección de la instrucción se emplea para especificar el canal y el dispositivo de E/S que participa en la operación.
HALT I/O Finaliza la operación del canal.
TEST CHANNEL Prueba el estado del canal.
TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.
Una operación de E/S se inicia con la instrucción START I/O. La ubicación del programa de canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel Address word), que siempre está almacenada en la posición 72 de la memoria principal.
Funciones implicadas en las operaciones de entrada/salida
 Para que un computador pueda ejecutar un programa debe ser ubicado previamente en la memoria, junto con los datos sobre los que opera, y para ello debe existir una unidad funcional de entrada de información capaz de escribir en la memoria desde el exterior. Análogamente, para conocer los resultados de la ejecución de los programas, los usuarios deberán poder leer el contenido de la memoria a través de otra unidad de salida de datos. La unidad de Entrada/Salida  (E/S) soporta estas funciones, realizando las comunicaciones del computador (memoria) con el mundo exterior (periféricos). Los dispositivos periféricos que se pueden conectar a un computador se suelen clasificar en tres grandes grupos:
  Dispositivos de presentación de datos. Son dispositivos con los que interactúan los usuarios, portando datos entre éstos y la máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc.



Dispositivos de almacenamiento de datos. Son dispositivos que forman parte de la jerarquía de memoria del computador. Interactúan de forma autónoma con la máquina, aunque también sirven para el intercambio de datos con el usuario, por ejemplo, los discos magnéticos.
Dispositivos de comunicación con otros procesadores. Permiten la comunicación con procesadores remotos a través de redes, por ejemplo, las redes de área local o global.
Dispositivos de adquisición de datos. Permiten la comunicación con sensores y actuadores que operan de forma autónoma en el entorno del computador. Se utilizan en sistemas de control automático de procesos por computador y suelen incorporar conversores de señales A/D y D/A.

Los dispositivos de transporte y presentación de datos representan una carga muy baja de  trabajo para el procesador comparados con los dispositivos de almacenamiento. La siguiente tabla muestra las velocidades de transferencia típicas para diferentes dispositivos.

Aunque la velocidad de transferencia de los dispositivos de presentación de datos ha sido  tradicionalmente lenta comparada con la de los dispositivos de almacenamiento, en los últimos tiempos la situación está cambiando. Cada vez más, los computadores se utilizan para manejar documentos multimedia que constan de gráficos, vídeos y voz. La siguiente tabla presenta algunos parámetros de transferencia para los dispositivos modernos de E/S multimedia.
Los gráficos requieren una gran capacidad de procesamiento de datos, hasta el punto que se han diseñado procesadores de propósito especial para manejar de forma eficiente las  representaciones gráficas (GPU: Graphic Processor Unit).
El problema del vídeo es simplemente la animación de los problemas gráficos, ya que debe crearse una nueva imagen cada 1/30 de segundo (33 milisegundos).
El procesamiento de la voz es también elevado porque exige la creación o el reconocimiento de varios fonemas en tiempo real. De hecho es el medio que más capacidad de procesamiento requiere debido a que presenta el mayor grado de intolerancia por retrasos en el usuario.
Los dispositivos periféricos que pueden conectarse a un computador para realizar entrada y salida de información presentan, pues, las siguientes características:
Tienen formas de funcionamiento muy diferentes entre sí, debido a las diferentes funciones que realizan y a los principios físicos en los que se basan.
La velocidad de transferencia de datos es también diferente entre sí y diferente de la presentada por la CPU y la memoria.
Suelen utilizar datos con formatos y longitudes de palabra diferentes
No obstante estas diferencias, existen una serie de funciones básicas comunes a todo dispositivo de E/S:
Identificación única del dispositivo por parte de la CPU
Capacidad de envío y recepción de datos
Sincronización de la transmisión, exigida por la diferencia de velocidad de los dispositivos  de E/S con la CPU
 La identificación del dispositivo se realiza con un decodificador de direcciones. El envío y la  recepción de datos tienen lugar a través de registros de entrada y salida de datos. Los circuitos de sincronización se manipulan por medio de registros de estado y control. El siguiente esquema  representa gráficamente estas funciones:

 Las tres funciones básicas se pueden realizar a través del bus del sistema que conecta la  memoria y la CPU, o bien se puede utilizar un bus específico para las operaciones de E/S. Estas alternativas se traducen en dos formas de organización de los espacios de direcciones:
Espacios de direcciones unificados
Las unidades de E/S se ubican en el espacio único de direcciones como si fuesen elementos de Memoria.
A cada unidad de E/S se le asigna un conjunto de direcciones (suficiente para diferenciar todos sus registros internos). 
La interacción entre CPU y unidad de E/S se realiza a través de instrucciones de referencia a memoria. El bus del sistema es único.                         

Espacios de direcciones independientes (Memoria y E/S)
Las unidades de E/S se ubican en un espacio de direcciones diferente al de memoria.
La interacción entre CPU y unidad de E/S se realiza a través de instrucciones específicas de E/S. La separación de espacios de direcciones puede soportarse con un bus único de uso compartido entre Memoria y E/S en función del estado de una línea de control MEM/IO:



 Pero el desdoblamiento de espacios de direcciones puede responder a la existencia de dos buses independientes, uno para memoria (bus del sistema) y otro para E/S:


Funcionalmente son equivalentes, pero desde el punto de vista de la codificación de programas difieren en el uso de las instrucciones. En el caso de E/S asignada en memoria se utilizan instrucciones de referencia a memoria, mientras que para E/S aislada existe un grupo particular de instrucciones para realizar esta función.

 

Conclusión:

En este tema pudimos ver algo que conocemos, que usamos a diario pero que tal vez no sabíamos completamente su funcionamiento como lo son los controladores, como funciona, en que sirven, e indiferentemente de eso, como es que funciona la comunicación de estos artefactos, como se logra comunicar una computadora con el ratón o con el teclado, y como es que realmente hace eso.

También pudimos ver cómo es que actúan los softwares, que caminos usan, cuales son los diferentes métodos y procesos que utiliza para hacer que funciones.

Pareciera no ser un tema extenso pero lo es, ya que conlleva un sinfín de métodos, orden, y formas en lograr comunicarse los diferentes periféricos.