Diferencia entre revisiones de «Diseño modular E/S»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Reescrita desde cero incluyendo la información que ya estaba, ampliando con las diapositivas, y estructurando de manera más esquemática.)
Línea 1: Línea 1:
La idea clave de esta arquitectura en capas es hacer independiente al proceso del dispositivo. Por lo general, en ingeniería del software, la independencia del proveedor es una propiedad muy deseable.
+
El diseño de software de lectura/escritura nos plantea las siguientes necesidades:
 +
* Modelar un '''diseño por capas o estratos''', dotando de una abstracción que oculte las peculiaridades de los dispositivos a las capas superiores, que deben ofrecer una interfaz homogénea.  
  
 +
* Hacer a los '''programas independientes de los dispositivos''', que no tienen por qué conocer el soporte que manejan. Esto es deseable en cuanto a que el fabricante del dispositivo podría dejar de fabricar el dispositivo, por tanto, el proceso tendría que ser reescrito para soportar el nuevo dispositivo. De igual manera, si el dispositivo para el que está diseñado el proceso que conoce los detalles de bajo nivel no está disponible en el sistema, nuestro proceso quedaría inservible.
  
[[Archivo:diseño modular.jpg|center|x400px]]
+
* Dar un '''criterio uniforme de denominación''': En sistemas Unix, por ejemplo, se trata a cada dispositivo como a un fichero
 +
 
 +
* '''Tratamiento de errores''' lo más '''próximo''' posible a su '''origen''': si un estrato detecta un error y puede solucionarlo, lo oculta a los niveles superiores. Si no, informa a nivel superior.
 +
 
 +
* Forzar a que un '''proceso tenga que pasar por el sistema operativo''', que es quien garantiza que el reparto de recursos es equitativo. Si un proceso dispone de acceso directo a un dispositivo, podría adoptar un comportamiento ''abusón'' de manera que no permitiera a otros procesos emplearlo.
 +
 
 +
* '''Gestionar el acceso compartido''' a los dispositivos: Por ejemplo, un disco magnético puede ser accedido de forma compartida, mientras que un soporte de cinta, es deseable que no lo sea
  
 
+
La forma de cubrir todas estas necesidades es crear la siguiente abstracción:
Esta abstracción permite:
 
  
* Hacer a los procesos independientes de los dispositivos de E/S. Esto es deseable en cuanto a que el fabricante del dispositivo podría dejar de fabricar el dispositivo, por tanto, el proceso tendría que ser reescrito para soportar el nuevo dispositivo. De igual manera, si el dispositivo para el que está diseñado el proceso que conoce los detalles de bajo nivel no está disponible en el sistema, nuestro proceso quedaría inservible.
+
[[Archivo:diseño modular.jpg|center|x400px]]
* Forzar a que un proceso tenga que pasar por el sistema operativo, que es quien garantiza que el reparto de recursos es equitativo. Si un proceso dispone de acceso directo a un dispositivo, podría adoptar un comportamiento ''abusón'' de manera que no permitiera a otros procesos emplearlo.
 
  
 
'''Nota''': el SSI es una subrutina de manejo de interrupciones.
 
'''Nota''': el SSI es una subrutina de manejo de interrupciones.

Revisión del 00:10 21 ene 2013

El diseño de software de lectura/escritura nos plantea las siguientes necesidades:

  • Modelar un diseño por capas o estratos, dotando de una abstracción que oculte las peculiaridades de los dispositivos a las capas superiores, que deben ofrecer una interfaz homogénea.
  • Hacer a los programas independientes de los dispositivos, que no tienen por qué conocer el soporte que manejan. Esto es deseable en cuanto a que el fabricante del dispositivo podría dejar de fabricar el dispositivo, por tanto, el proceso tendría que ser reescrito para soportar el nuevo dispositivo. De igual manera, si el dispositivo para el que está diseñado el proceso que conoce los detalles de bajo nivel no está disponible en el sistema, nuestro proceso quedaría inservible.
  • Dar un criterio uniforme de denominación: En sistemas Unix, por ejemplo, se trata a cada dispositivo como a un fichero
  • Tratamiento de errores lo más próximo posible a su origen: si un estrato detecta un error y puede solucionarlo, lo oculta a los niveles superiores. Si no, informa a nivel superior.
  • Forzar a que un proceso tenga que pasar por el sistema operativo, que es quien garantiza que el reparto de recursos es equitativo. Si un proceso dispone de acceso directo a un dispositivo, podría adoptar un comportamiento abusón de manera que no permitiera a otros procesos emplearlo.
  • Gestionar el acceso compartido a los dispositivos: Por ejemplo, un disco magnético puede ser accedido de forma compartida, mientras que un soporte de cinta, es deseable que no lo sea

La forma de cubrir todas estas necesidades es crear la siguiente abstracción:

Diseño modular.jpg

Nota: el SSI es una subrutina de manejo de interrupciones.