miércoles, 14 de mayo de 2014
UNIDAD 5: SISTEMA DE ARCHIVOS
5.2.3 Estructura de directorios
5.2.4 Archivos Compartidos
5.3.2 Principios de diseño para seguridad
5.3.3 Virus
5.4 EJEMPLOS DE SISTEMAS DE ARCHIVOS
La jerarquía del sistema de
ficheros es fundamental para obtener una compresión completa del
sistema.
El concepto más importante a
entender es el del directorio raíz, «/». Este directorio es el primero en ser
montado en el arranque y contiene el sistema básico necesario para preparar el
sistema operativo para su funcionamiento en modo
multi-usuario.
El directorio raíz también
contiene puntos de montaje para cualquier otro sistema de ficheros que se
pretenda montar.Un punto
de montaje es un directorio del que se pueden colgar sistemas de ficheros
adicionales en un sistema padre (que suele ser el directorio
raíz).
5.2.4 Archivos Compartidos
Un archivo compartido es una propiedad de un archivo informático que tiene la característica
de poder ser accedido o manipulado por múltiples
personas, computadoras, sesiones o programas.
Un grupo de archivos puede compartirse:
• Entre distintas computadoras de una red, con diferentes permisos para cada una de
ellas.
• Entre distintas sesiones de usuarios de un sistema
operativo.
• Entre distintos programas que utilizan iguales archivos. Por ejemplo,
muchos archivos DLL son compartidos por múltiples aplicaciones.
5.2.5 Rendimiento del Sistema de archivos
- Si tienes múltiples particiones, necesitas controlar el porcentaje de espacio utilizado en cada partición montada.
- Si, por ejemplo, se agota el espacio de un sistema de ficheros /var independiente, los programas que necesitan poner datos en cola (como por ejemplo, correo y utilidades de impresión), escribir en /var/tmp, pueden fallar.
- Si tienes disponible mucho espacio en el sistema de ficheros de root u otra partición, pero la partición asignada con la que estes trabajando se queda sin espacio, no lo sacará de otras particiones.
5.3 SEGURIDAD
Al hablar de seguridad debemos verificar el correcto funcionamiento de los diferentes niveles de seguridad que constituyen al sistema operativo, como lo muestra la siguiente figura:
5.3.1 Fallas de Seguridad
Dado que los sistemas de computo se han venido haciendo cada vez más
sofisticados en sus aplicaciones, la necesidad de proteger su integridad,
también ha crecido. Los aspectos principales de protección en un Sistema
Operativo son:
1. Protección de los procesos del sistema contra los procesos de
usuario.
2. Protección de los procesos de usuario contra los de otros procesos de
usuario.
3. Protección de Memoria.
4. Protección de los dispositivos.
Al hablar de seguridad debemos verificar el correcto funcionamiento de los diferentes niveles de seguridad que constituyen al sistema operativo, como lo muestra la siguiente figura:
5.3.2 Principios de diseño para seguridad
1. Privilegios mínimos. Se les debe conceder únicamente la prioridad
necesaria para llevar a cabo su tarea. Este principio permite limitar los daños
en casos de ataques maliciosos.
2. Mecanismos económicos. Los mecanismos de protección deberían de ser
sencillos, regulares y pequeños. Un sistema así se puede analizar, verificar,
probar y diseñar fácilmente.
3. Intermediación completa. Cada intento de acceso al sistema debe ser
comprobado, tanto los directos como los indirectos. Si se relaja este principio
de diseño de forma que no se comprueben todos los accesos a un objeto, es
necesario comprobar los permisos de los usuarios de forma periódica y no sólo
cuando se accede al recurso por primera vez.
4. Fácil de usar y aceptable. El esquema de protección debe ser
aceptado por los usuarios y fácil de usar. Si un mecanismo es sencillo, y no es
desagradable, existen menos posibilidades de que los usuarios traten de
evitarlo.
5. Separación de privilegios. Si se quiere diseñar un sistema seguro,
los accesos a cada objeto deben depender de más de un mecanismo de
protección.
Existen diversos tipos de virus, varían según su
función o la manera en que éste se ejecuta en nuestra computadora alterando la
actividad de la misma, entre los más comunes están:
Para prevenirse contra los virus, es fundamental
que mantenga el equipo actualizado y herramientas antivirus más recientes, que
esté informado acerca de las últimas amenazas y que siga unas reglas básicas
cuando explore la Web, descargue archivos o abra archivos
adjuntos.
5.3.4 Mecanismos de
Protección
Contamos con 5 niveles de protección para un
sistema informático:
Un sistema de archivos es el componente del sistema operativo encargado de
administrar y facilitar el uso de las memorias secundarias (discos duros) o
terciarias (almacenamiento en red).
Sus principales funciones son la asignación de espacio a los archivos, la
administración del espacio libre y la administración del acceso a los datos
guardados.
Trabajan de manera que estructuran la información guardada en una unidad de
almacenamiento (normalmente un disco duro), que
luego será representada ya sea textual o gráficamente utilizando un gestor de archivos.
Aquí tenemos el ejemplo de una 'ruta' en un sistema de archivos de
Windows:
C:\Users\Oscar\Music\canción.mp3
Donde:
'C:' es la unidad de almacenamiento en la que se encuentra el
archivo.
'\Users\Oscar\Music\' es la ruta del archivo.
'canción' es el nombre del archivo.
'.mp3' es la extensión del archivo y sirve para identificar qué tipo
de archivo es y la aplicación que está asociada con el archivo en cuestión, es
decir, con qué programa se puede editar o reproducir el
archivo.
5.4.1 CP/M
Su funcionalidad en cuanto a los sistemas de archivos se refiere era de la
siguiente manera:
·
Los nombres de
archivo se especificaban como una cadena de hasta ocho caracteres, seguido de un
punto y seguido de una extensión de nombre de archivo de hasta tres caracteres.
En la extensión generalmente se identificaba el tipo de archivo. Por ejemplo:
.COM indica un archivo de programa ejecutable binario y
.TXT indica un archivo que contiene el texto ASCII.
· Cada unidad de disco se
identificaba mediante una letra de unidad, por ejemplo, la unidad A y la unidad
B.
Para hacer referencia a un archivo en una unidad específica, la letra de
unidad se antepone al nombre de archivo, separados por dos puntos, por ejemplo
A: FILE.TXT.
El tamaño de archivo se especificaba como el número de registros que eran
ocupados por el archivo dentro del disco duro.
5.4.2 Ms-DOS
Para leer un archivo, un programa de MS-DOS primero debe realizar una llamada
al sistema open para obtener un manejador para el archivo. La llamada al sistema
open especifica una ruta, que puede ser absoluta o relativa al directorio de
trabajo actual.
Se realiza una búsqueda de la ruta, componente por componente, hasta que se
localiza el directorio final y se lee en la memoria. Después se busca el archivo
que se desea abrir.
Mientras que los directorios de MS-DOS tienen tamaños variables
y utilizan una entrada de directorio de tamaño fijo de 32
bytes.
El formato de una entrada de directorio de MS-DOS se muestra en la siguiente
figura:
5.4.3 Win 98
Al ser la versión mejorada y sucesora de Ms-DOS el funcionamiento en el
sistema de archivos es muy parecido a su antecesor, solamente que se añaden 5
secciones más en donde solía estar el espacio reservado en el formato de
directorios:
5.4. 4 Unix V7
Una entrada de directorio de UNIX contiene
una entrada para cada archivo en ese directorio.
• Nombres de
archivos hasta con 14 caracteres y pueden contener cualquier carácter ASCII
excepto “/” (separador entre los componentes en una ruta) y “NUL”
(se utiliza para rellenar los nombres menores de 14 caracteres). NUL tiene el
valor numérico de 0.
• Una entrada de
directorio sólo contiene dos campos: el nombre del archivo (14 bytes) y el
número del nodo-i para ese archivo (2 bytes).
Estos parámetros limitan el número de archivos por cada sistema de archivos a
64 K.
UNIDAD 4: DISPOSITIVOS DE ENTRADA / SALIDA
4.1 Dispositivos de entrada y salida
Los dispositivos de entrada y salida básicamente están contempladas en dos
categorías: dispositivos de bloque y dispositivos de
carácter
Dispositivo de bloque: almacena información en bloques de tamaño fijo, cada
uno con su propia dirección. Los tamaños de bloque comunes varían desde 512
bytes hasta 32,768 bytes. Todas las transferencias se realizan en unidades de
uno o más bloques completos (consecutivos). La propiedad esencial de un
dispositivo de bloque es que es posible leer o escribir cada bloque de manera
independiente de los demás. Los discos duros, CD-ROMs y memorias USBs son
dispositivos de bloque comunes. Cabe recalcar que los dispositivos de bloque que
no está bien definido el límite entre estos mismos
Dispositivo de carácter: Un dispositivo de carácter envía o
acepta un flujo de caracteres, sin importar la estructura del bloque. No es
direccionable y no tiene ninguna operación de búsqueda. Las impresoras, las
interfaces de red, los ratones (para señalar)y la mayoría de los demás
dispositivos que no son parecidos al disco se pueden considerar como
dispo
sitivos de carácter.
4.1.1 Interrupción del CPU
En un sistema de computadora personal común, la estructura de las
interrupciones es como se muestra en la siguiente figura.
4.1.2 Definición y manejo de interrupciones.
Funcionamiento de las interrupciones a nivel de hardware
Cuando un dispositivo de E/S ha terminado el trabajo que se le asignó,
produce una interrupción (suponiendo que el sistema operativo haya habilitado
las interrupciones). Para ello, impone una señal en una línea de bus que se le
haya asignado. Esta señal es detectada por el chip controlador de interrupciones
en la tarjeta principal, que después decide lo que debe
hacer.
Si no hay otras interrupciones pendientes, el controlador de interrupciones
procesa la interrupción de inmediato. Si hay otra en progreso, o si otro
dispositivo ha realizado una petición simultánea en una línea de petición de
interrupción de mayor prioridad en el bus, el dispositivo sólo se ignora por el
momento. En este caso, continúa imponiendo una señal de interrupción en el bus
hasta que la CPU la atiende. Para manejar la interrupción, el controlador coloca
un número en las líneas de dirección que especifican cuál dispositivo desea
atención e impone una señal para interrumpir a la CPU. La señal de interrupción
hace que la CPU deje lo que está haciendo y empiece a hacer otra
cosa.
4.1.3 E/S programada.
Es la forma más simple de E/S es cuando la CPU hace todo el trabajo. Por
ejemplo. Considere un proceso de usuario que desea imprimir la cadena de ocho
caracteres “ABCDEFGH” en la impresora. Primero ensambla la cadena en un búfer en
espacio de usuario, como se muestra en la figura :
Después el proceso de usuario adquiere la impresora para escribir, haciendo
una llamada al sistema para abrirla. Si la impresora está actualmente siendo
utilizada por otro proceso, esta llamada
fallará y devolverá un código de error o se bloqueará hasta que la
impresora esté disponible, dependiendo del sistema operativo y los parámetros de
la llamada. Una vez que obtiene la impresora, el proceso de usuario hace una
llamada al sistema para indicar al sistema operativo que imprima la cadena en la
impresora.
Después, el sistema operativo por lo general copia el búfer con la cadena a
un arreglo, por ejemplo, p en espacio de kernel, donde se puede utilizar
con más facilidad (debido a que el kernel tal vez tenga que modificar el mapa de
memoria para tener acceso al espacio de usuario). Después comprueba si la
impresora está disponible en ese momento. Si no lo está, espera hasta que lo
esté. Tan pronto como la impresora está disponible, el sistema operativo copia
el primer carácter al registro de datos de la impresora, en este ejemplo
mediante el uso de E/S por asignación de memoria.Esta acción activa la
impresora. Mostrando lo siguiente:
Tan pronto como copia el primer carácter a la impresora, el sistema operativo
comprueba si la impresora está lista para aceptar otro. En general la impresora
tiene un segundo registro, que proporciona su estado. El acto de escribir en el
registro de datos hace que el estado se convierta en “no está lista”. Cuando el
controlador de la impresora ha procesado el carácter actual, indica su
disponibilidad estableciendo cierto bit en su registro de estado, o colocando
algún valor en él.
En este punto el sistema operativo espera a que la impresora vuelva a estar
lista. Cuando eso ocurre, imprime el siguiente carácter, como se
muestra:
La E/S programada es simple, pero tiene la desventaja de ocupar la CPU tiempo
completo hasta que se completen todas las operaciones de E/S. Si el tiempo para
“imprimir” un carácter es muy corto (debido a que todo lo que hace la impresora
es copiar el nuevo carácter a un búfer interno), entonces está bien usar ocupado
en espera. Además, en un sistema incrustado o embebido, donde la CPU no tiene
nada más que hacer, ocupado en espera es razonable. Sin embargo, en sistemas más
complejos en donde la CPU tiene otros trabajos que realizar, ocupado en espera
es ineficiente. Se necesita un mejor método de E/S.
4.1.4 E/S controlada por interrupciones
4.1.4 E/S controlada por interrupciones
Ahora vamos a considerar el caso de imprimir en una impresora que no coloca
los caracteres en un
búfer, sino que imprime cada uno a medida que va llegando. Si la impresora
puede imprimir (por
ejemplo,) 100 caracteres/seg, cada carácter requiere 10 mseg para imprimirse.
Esto significa que
después de escribir cada carácter en el registro de datos de la impresora, la
CPU estará en un ciclo
de inactividad durante 10 mseg, esperando a que se le permita imprimir el
siguiente carácter. Este
tiempo es más que suficiente para realizar un cambio de contexto y ejecutar
algún otro proceso durante
los 10 mseg que, de otra manera, se desperdiciarían.
La forma de permitir que la CPU haga algo más mientras espera a que la
impresora esté lista es
utilizar interrupciones. Cuando se realiza la llamada al sistema para
imprimir la cadena, el búfer se
copia en espacio de kernel (como vimos antes) y el primer carácter se copia a
la impresora, tan pronto
como esté dispuesta para aceptar un carácter. En ese momento, la CPU llama al
planificador y se
ejecuta algún otro proceso. El proceso que pidió imprimir la cadena se
bloquea hasta que se haya impreso
toda la cadena.
Cuando la impresora ha impreso el carácter, y está preparada para aceptar el
siguiente, genera
una interrupción. Esta interrupción detiene el proceso actual y guarda su
estado. Después se ejecuta
el procedimiento de servicio de interrupciones de la impresora.Si no hay más
caracteres por imprimir, el manejador de interrupciones realiza cierta acción
para desbloquear al usuario. En caso contrario, imprime el siguiente carácter,
reconoce la interrupción y regresa al proceso que se estaba ejecutando justo
antes de la interrupción, que
continúa desde donde se quedó.
4.1.5 Clasificacion
Interrupciones precisas e imprecisas
Interrupciones precisa:
Una interrupción que deja al equipo en un estado bien definido se conoce como
interrupción
precisa (Walker y Cragon, 1995). Dicha interrupción tiene cuatro
propiedades:
1. El contador del programa (PC) se guarda en un lugar conocido.
2. Todas las instrucciones antes de la instrucción a la que apunta el PC se
han ejecutado por
completo.
3. Ninguna instrucción más allá de la instrucción a la que apunta el PC se ha
ejecutado.
4. Se conoce el estado de ejecución de la instrucción a la que apunta el
PC.
Interrupciones imprecisa
Una interrupción que no cumple con los requerimientos anteriores se conoce
como interrupción imprecisa
4.1.6 Manejador de interrupciones.
Deben ocultarse en la profundidad de las entrañas del sistema operativo, de manera que éste sepa lo menos posible de ellas.
La mejor manera de ocultarlas es hacer que el controlador que inicia una operación de E/S se bloquee
hasta que se haya completado la E/S y ocurra la interrupción.
a continuación tal vez no sean necesarios en una máquina específica, y tal vez se requieran otros
que no estén listados. Además, los pasos que se llevan a cabo pueden estar en distinto orden en algunas
máquinas.
1. Guardar los registros (incluyendo el PSW) que no han sido guardados por el hardware de
la interrupción.
2. Establecer un contexto para el procedimiento de servicio de interrupciones. Para ello tal
vez sea necesario establecer el TLB, la MMU y una tabla de páginas.
3. Establecer una pila para el procedimiento de servicio de interrupciones.
4. Reconocer el controlador de interrupciones. Si no hay un controlador de interrupciones
centralizado, rehabilitar las interrupciones.
5. Copiar los registros desde donde se guardaron (posiblemente en alguna pila) a la tabla de
procesos.
6. Ejecutar el procedimiento de servicio de interrupciones. Éste extraerá información de los
registros del controlador de dispositivos que provocó la interrupción.
7. Elegir cuál proceso ejecutar a continuación. Si la interrupción ha ocasionado que cierto
proceso de alta prioridad que estaba bloqueado cambie al estado listo, puede elegirse para
ejecutarlo en ese momento.
8. Establecer el contexto de la MMU para el proceso que se va a ejecutar a continuación.
También puede ser necesario establecer un TLB.
9. Cargar los registros del nuevo proceso, incluyendo su PSW.
10. Empezar a ejecutar el nuevo proceso.
Como se puede ver, el procesamiento de interrupciones no carece de importancia. También ocupa
un considerable número de instrucciones de la CPU, en especial en máquinas en las que hay memoria
virtual y es necesario establecer tablas de páginas, o se tiene que guardar el estado de la
MMU (por ejemplo, los bits R y M). En algunas máquinas, el TLB y la caché de la CPU tal vez
también tengan que manejarse al cambiar entre los modos de usuario y de kernel, lo cual requiere
ciclos de máquina adicionales.
4.1.7 Vector de interrupciones
El vector de interrupciones es un vector que contiene el valor que apunta a la dirección en memoria del gestor de una interrupción. En muchas arquitecturas de computación típicas, los vectores de interrupción se almacenan en una tabla en una zona de memoria, la llamada tabla de vectores de interrupción, de modo que cuando se atiende una petición de interrupción de número n, el sistema, tras realizar eventualmente algunas tareas previas (tales como salvar el valor de ciertos registros) transfiere el control a la dirección indicada por el elemento n-ésimo de dicha tabla.
Usualmente, en las arquitecturas más típicas, la transferencia de control se efectuará de modo análogo a una llamada a función a nivel de máquina, almacenándose en una pila el estado actual del registro contador de programa, que será recuperado por una instrucción máquina de retorno de interrupción, que restaurará el estado correspondiente a la ejecución normal de programa forzando la ejecución de la siguiente instrucción.
Los dispositivos de E/S son cada vez más sofisticados
4.2.3 Controladores
Los buffers son áreas de almacenamiento temporal que residen en la memoria principal, en los canales y en las unidades de control. Sirven para almacenar datos leídos de un dispositivo de entrada antes que los necesite el procesador y para almacenar datos que se escribirán en un dispositivo de salida.
4.3.1 TIPOS DE MEMORIAS TRANSITORIAS
Buffers de una única fila
Un buffer de una única fila no es en realidad un cursor, aunque aquí se apliquen las mismas reglas de pertenencia que se aplican a un cursor de conjunto de claves de sólo avance. Con un buffer de una única fila sólo es posible examinar los datos de la fila del conjunto de resultados. Las filas anteriores no están disponibles y la fila actual no estará accesible después de pasar a la siguiente fila del conjunto de resultados.
Buffers de n filas
Un buffer de n filas amplía el ámbito y la capacidad de desplazamiento del buffer de una única fila. En este caso, a la estación de trabajo se le expone un número determinado de filas del conjunto de resultados y a la aplicación se le permite que se desplace libremente por esas filas.
4.3.2 MANEJO DE MEMORIAS TRANSITORIAS
El uso de búferes también es un problema, tanto para los dispositivos de caracteres como para los de bloques. Para entender mejor el problema, consideremos un proceso que quiere leer datos de un módem, una posible estrategia para manejar los caracteres que llegan es hacer que el proceso de usuario emita una llamada al sistema read y se bloquee en espera de un carácter. La llegada de cada carácter causa una interrupción, el procedimiento de servicio de interrupciones entrega el carácter al proceso de usuario y lo desbloquea; después de colocar el carácter en algún lado, el proceso lee otro carácter y vuelve a bloquearse. Esta posible solución no es recomendable debido a que un proceso se ejecutara muchas veces durante lapsos de tiempo muy cortos.
4.3.3 IMPLEMENTACION
La implementación mas adecuada para el uso de memorias transitorias es que el kernel copie los datos en un búfer kernel y desbloqueando de inmediato el invocador. Ahora no importa cuando termine la E/S real; el usuario podrá volver a utilizar el búfer en el instante en que se le desbloquee.
4.3.4 TERMINALES DE RED
Se denominan dispositivos de comunicación y son aquellos que permiten conectar a la computadora con otras a través de una red, los dos tipos de dispositivos mas importantes son: Tarjeta red y el módem.
El administrador de red proporciona una forma conveniente para los usuarios de compartir recursos y al mismo tiempo controlar sus acceso a los mismos, mediante la implementación de protocolos y comunicaciones de red; estos recursos incluyen hardware como la CPU, áreas de memoria, impresoras, unidades de almacenamiento secundario, módem; y recursos de software como compiladores, programas de aplicación y archivos de datos.
4.3.5 INTERFACES GRAFICAS DE USUARIO
Una interfaz gráfica de usuario, definida por sus siglas en inglés GUI, es la interfaz de usuario que le permite activar los comandos de sistema operativo con un clic sobre un icono de escritorio mediante un dispositivo apuntador como un ratón o una pantalla táctil. El GUI evolucionó a partir de las interfaces de usuario impulsadas por comandos.
Muchas interfaces gráficas de usuario comparten muchas similitudes, tanto en apariencia como en operación. Ejemplo de ello, se puede mencionar a sistemas operativos populares como Windows (todas sus versiones hasta las actuales), UNIX, Macintosh (diferentes versiones) y Linux.
4.4 SERVICIOS DE E/S: GENERICOS PARA POSIX Y WIN32
Debido al tratamiento diferenciado que se da el reloj, se presentan separadamente los servicios relacionados con el mismo de los correspondientes a los dispositivos de entrada/salida convencionales.
En cuanto a los servicios del reloj, se van a especificar de acuerdo a las tres categorías: fecha y hora, temporizaciones y contabilidad.
SERVICIO DE TEMPORIZACION: El servicio esta definido por alarm, y su prototipo es:
unsigned int alarm (unsigned int segundos);
SERVICIO DE CONTABILIDAD: Existen diversas funciones que se pueden englobar en esta categoria, por ejemplo la mas usada times, que devuelve información sobre el tiempo de ejecución de un proceso y sus hijos.
clock_t times (struct tms *info);
Deben ocultarse en la profundidad de las entrañas del sistema operativo, de manera que éste sepa lo menos posible de ellas.
La mejor manera de ocultarlas es hacer que el controlador que inicia una operación de E/S se bloquee
hasta que se haya completado la E/S y ocurra la interrupción.
a continuación tal vez no sean necesarios en una máquina específica, y tal vez se requieran otros
que no estén listados. Además, los pasos que se llevan a cabo pueden estar en distinto orden en algunas
máquinas.
1. Guardar los registros (incluyendo el PSW) que no han sido guardados por el hardware de
la interrupción.
2. Establecer un contexto para el procedimiento de servicio de interrupciones. Para ello tal
vez sea necesario establecer el TLB, la MMU y una tabla de páginas.
3. Establecer una pila para el procedimiento de servicio de interrupciones.
4. Reconocer el controlador de interrupciones. Si no hay un controlador de interrupciones
centralizado, rehabilitar las interrupciones.
5. Copiar los registros desde donde se guardaron (posiblemente en alguna pila) a la tabla de
procesos.
6. Ejecutar el procedimiento de servicio de interrupciones. Éste extraerá información de los
registros del controlador de dispositivos que provocó la interrupción.
7. Elegir cuál proceso ejecutar a continuación. Si la interrupción ha ocasionado que cierto
proceso de alta prioridad que estaba bloqueado cambie al estado listo, puede elegirse para
ejecutarlo en ese momento.
8. Establecer el contexto de la MMU para el proceso que se va a ejecutar a continuación.
También puede ser necesario establecer un TLB.
9. Cargar los registros del nuevo proceso, incluyendo su PSW.
10. Empezar a ejecutar el nuevo proceso.
Como se puede ver, el procesamiento de interrupciones no carece de importancia. También ocupa
un considerable número de instrucciones de la CPU, en especial en máquinas en las que hay memoria
virtual y es necesario establecer tablas de páginas, o se tiene que guardar el estado de la
MMU (por ejemplo, los bits R y M). En algunas máquinas, el TLB y la caché de la CPU tal vez
también tengan que manejarse al cambiar entre los modos de usuario y de kernel, lo cual requiere
ciclos de máquina adicionales.
4.1.7 Vector de interrupciones
El vector de interrupciones es un vector que contiene el valor que apunta a la dirección en memoria del gestor de una interrupción. En muchas arquitecturas de computación típicas, los vectores de interrupción se almacenan en una tabla en una zona de memoria, la llamada tabla de vectores de interrupción, de modo que cuando se atiende una petición de interrupción de número n, el sistema, tras realizar eventualmente algunas tareas previas (tales como salvar el valor de ciertos registros) transfiere el control a la dirección indicada por el elemento n-ésimo de dicha tabla.
Usualmente, en las arquitecturas más típicas, la transferencia de control se efectuará de modo análogo a una llamada a función a nivel de máquina, almacenándose en una pila el estado actual del registro contador de programa, que será recuperado por una instrucción máquina de retorno de interrupción, que restaurará el estado correspondiente a la ejecución normal de programa forzando la ejecución de la siguiente instrucción.
4.2 Canales de E/S
Los dispositivos de E/S son cada vez más sofisticados
• Ej: tarjetas gráficas 3D.
• Evolución:
1. La CPU controla directamente los periféricos.
2. Se agrega un módulo de E/S o controlador.
3. Idem 2 más llamado de interrupción.
4. El módulo de E/S provee el acceso directo a memoria (DMA).
5. El módulo de E/S tiene su propio procesador con su pequeño
conjunto de instrucciones.
6. El módulo además tiene su memoria local o sea se convierte
en una computadora en sí mismo.
4.2.1 Tipos de canales de E/S
Selector
• Controla varios dispositivos de alta velocidad y uno
por vez, por lo tanto el canal se dedica para la
transferencia de datos de ese dispositivo.
• El canal selecciona un dispositivo y efectúa la
transferencia.
• Los dispositivos son manejados por un controlador o
módulo de E/S
• Por lo tanto el canal de E/S ocupa el lugar de la CPU
en el control de esos controladores.
Multiplexor
• Puede manejar E/S con varios dispositivos a la vez.
• Multiplexor de bytes:
• Acepta y transmite caracteres.
• Multiplexor de bloques:
• Intercala bloques de datos desde distintos dispositivos.
4.2.2 Interfaces.
La interfaz externa
• Provista para un periférico desde un módulo de E/S.
• ¿Serial ó paralelo?
• Paralela: tape, disco (dispositivo de alta velocidad).
• Serial: terminales, mouse.
• Existe un módulo que dialoga con el dispositivo. Los
pasos son:
• El módulo envía señal de control pidiendo permiso para enviar
datos al dispositivo.
• Este confirma el pedido.
• El módulo transfiere los datos.
• El periférico confirma la recepción de los mismos.
• Uso de buffers internos en el módulo para compensación
de velocidades.
Tipos de interfaces
• La conexión entre un módulo de E/S y los
dispositivos externos puede ser:
• Punto a punto: línea dedicada.
• Ej: teclado, impresora, modem ...etc.
• Multipunto: idem a un bus externo.
• Ej: dispositivos de almacenamiento en masa externos (discos
SCSI).
4.2.3 Controladores
Por lo general, las unidades de E/S consisten en un componente mecánico y un componente electrónico. A menudo es posible separar las dos porciones para proveer un diseño más modular y general. El componente electrónico se llama controlador de dispositivo o adaptador. En las computadoras personales, comúnmente tiene la forma de un chip en la tarjeta principal o una tarjeta de circuito integrado que se puede insertar en una ranura de expansión (PCI).
El componente mecánico es el dispositivo en sí.
La tarjeta controladora por lo general contiene un conector, en el que se puede conectar un cable que conduce al dispositivo en sí. Muchos controladores pueden manejar dos, cuatro o inclusive ocho dispositivos idénticos. Si la interfaz entre el controlador y el dispositivo es estándar, ya sea un estándar oficial ANSI, IEEE o ISO, o un estándar de facto a interfaz entre el controlador y el dispositivo es a menudo de muy bajo nivel.
Por ejemplo, se podría dar formato a un disco con 10,000 sectores de 512 bytes por pista. Sin embargo, lo que en realidad sale del disco es un flujo serial de bits, empezando con un preámbulo , después los 4096 bits en un sector y por último una suma de comprobación, también conocida como Código de Corrección de Errores (ECC). El preámbulo se escribe cuando se da formato al disco y contiene el cilindro y número de sector, el tamaño del sector y datos similares, así como información de sincronización.
El trabajo del controlador es convertir el flujo de bits serial en un bloque de bytes y realizar cualquier corrección de errores necesaria. Por lo general, primero se ensambla el bloque de bytes, bit por bit, en un búfer dentro del controlador. Después de haber verificado su suma de comprobación y de que el bloque se haya declarado libre de errores, puede copiarse a la memoria principal.
El controlador para un monitor también funciona como un dispositivo de bits en serie a un nivel igual de bajo. Lee los bytes que contienen los caracteres a mostrar de la memoria y genera las señales utilizadas para modular el haz del CRT para hacer que escriba en la pantalla. El controlador también genera las señales para que el haz del CRT realice un retrazado horizontal después de haber terminado una línea de exploración, así como las señales para hacer que realice un retrazado vertical después de haber explorado toda la pantalla. Si no fuera por el controlador del CRT, el programador del sistema operativo tendría que programar de manera explícita la exploración análoga del tubo. Con el controlador, el sistema operativo inicializa el controlador con unos cuantos parámetros, como el número de caracteres o píxeles por línea y el número de líneas por pantalla, y deja que el controlador se encargue de manejar el haz. Las pantallas TFT planas funcionan de manera diferente, pero son igualmente complicadas.
4.3 MEMORIAS TRANSITORIAS (BUFFERS)
Los buffers son áreas de almacenamiento temporal que residen en la memoria principal, en los canales y en las unidades de control. Sirven para almacenar datos leídos de un dispositivo de entrada antes que los necesite el procesador y para almacenar datos que se escribirán en un dispositivo de salida.
4.3.1 TIPOS DE MEMORIAS TRANSITORIAS
Buffers de una única fila
Un buffer de una única fila no es en realidad un cursor, aunque aquí se apliquen las mismas reglas de pertenencia que se aplican a un cursor de conjunto de claves de sólo avance. Con un buffer de una única fila sólo es posible examinar los datos de la fila del conjunto de resultados. Las filas anteriores no están disponibles y la fila actual no estará accesible después de pasar a la siguiente fila del conjunto de resultados.
Buffers de n filas
Un buffer de n filas amplía el ámbito y la capacidad de desplazamiento del buffer de una única fila. En este caso, a la estación de trabajo se le expone un número determinado de filas del conjunto de resultados y a la aplicación se le permite que se desplace libremente por esas filas.
4.3.2 MANEJO DE MEMORIAS TRANSITORIAS
El uso de búferes también es un problema, tanto para los dispositivos de caracteres como para los de bloques. Para entender mejor el problema, consideremos un proceso que quiere leer datos de un módem, una posible estrategia para manejar los caracteres que llegan es hacer que el proceso de usuario emita una llamada al sistema read y se bloquee en espera de un carácter. La llegada de cada carácter causa una interrupción, el procedimiento de servicio de interrupciones entrega el carácter al proceso de usuario y lo desbloquea; después de colocar el carácter en algún lado, el proceso lee otro carácter y vuelve a bloquearse. Esta posible solución no es recomendable debido a que un proceso se ejecutara muchas veces durante lapsos de tiempo muy cortos.
Los búferes son muy importantes en las operaciones de salida. Por ejemplo, considere la forma en que se envían salidas al módem siguiendo el modelo descrito anteriormente, el proceso de usuario ejecuta una llamada write al sistema para enviar a la salida n caracteres.
4.3.3 IMPLEMENTACION
La implementación mas adecuada para el uso de memorias transitorias es que el kernel copie los datos en un búfer kernel y desbloqueando de inmediato el invocador. Ahora no importa cuando termine la E/S real; el usuario podrá volver a utilizar el búfer en el instante en que se le desbloquee.
El uso de búferes es una técnica ampliamente utilizada, pero tiene sus desventajas, si los datos se colocan en demasiados búferes sucesivos, hay una merma en el desempeño.
4.3.4 TERMINALES DE RED
Se denominan dispositivos de comunicación y son aquellos que permiten conectar a la computadora con otras a través de una red, los dos tipos de dispositivos mas importantes son: Tarjeta red y el módem.
El administrador de red proporciona una forma conveniente para los usuarios de compartir recursos y al mismo tiempo controlar sus acceso a los mismos, mediante la implementación de protocolos y comunicaciones de red; estos recursos incluyen hardware como la CPU, áreas de memoria, impresoras, unidades de almacenamiento secundario, módem; y recursos de software como compiladores, programas de aplicación y archivos de datos.
4.3.5 INTERFACES GRAFICAS DE USUARIO
Una interfaz gráfica de usuario, definida por sus siglas en inglés GUI, es la interfaz de usuario que le permite activar los comandos de sistema operativo con un clic sobre un icono de escritorio mediante un dispositivo apuntador como un ratón o una pantalla táctil. El GUI evolucionó a partir de las interfaces de usuario impulsadas por comandos.
Muchas interfaces gráficas de usuario comparten muchas similitudes, tanto en apariencia como en operación. Ejemplo de ello, se puede mencionar a sistemas operativos populares como Windows (todas sus versiones hasta las actuales), UNIX, Macintosh (diferentes versiones) y Linux.
4.4 SERVICIOS DE E/S: GENERICOS PARA POSIX Y WIN32
Debido al tratamiento diferenciado que se da el reloj, se presentan separadamente los servicios relacionados con el mismo de los correspondientes a los dispositivos de entrada/salida convencionales.
En cuanto a los servicios del reloj, se van a especificar de acuerdo a las tres categorías: fecha y hora, temporizaciones y contabilidad.
SERVICIO DE FECHA Y HORA: El servicio para obtener fecha y hora es time, y su prototipo es:
time_t time(time_t *t);
time_t time(time_t *t);
SERVICIO DE TEMPORIZACION: El servicio esta definido por alarm, y su prototipo es:
unsigned int alarm (unsigned int segundos);
SERVICIO DE CONTABILIDAD: Existen diversas funciones que se pueden englobar en esta categoria, por ejemplo la mas usada times, que devuelve información sobre el tiempo de ejecución de un proceso y sus hijos.
clock_t times (struct tms *info);
Suscribirse a:
Entradas (Atom)