miércoles, 14 de mayo de 2014

ULTIMA EXPOSICION DEL PARCIAL

EJEMPLOS DE SISTEMAS DE ARCHIVOS


More PowerPoint presentations from Ozkar Dyaz

UNIDAD 5: SISTEMA DE ARCHIVOS

5.2.3 Estructura de directorios
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 computadoras por internet con programas especiales como los de P2P.

• 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
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.1 Fallas de Seguridad 



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.

5.3.3 Virus
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:

5.4 EJEMPLOS DE SISTEMAS DE ARCHIVOS
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:
Este ciclo continúa hasta que se ha impreso toda la cadena. Después el control regresa al proceso de usuario
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

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.

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);

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);