jueves, 9 de diciembre de 2010

Buffer de datos


Un buffer (o búfer) en informática es un espacio de memoria, en el que se almacenan datos para evitar que el programa o recurso que los requiere, ya sea hardware o software, se quede en algún momento sin datos.
Algunos ejemplos de aplicaciones de buffers son:
El buffer de teclado es una memoria intermedia en la que se van almacenando los caracteres que un usuario teclea, los cuales son tratados por el computador a penas se libere un recurso.
En Audio o video en streaming por Internet. Se tiene un buffer para que haya menos posibilidades de que se corte la reproducción cuando se reduzca o corte el ancho de banda.
Un buffer adecuado permite que en el salto entre dos canciones no haya una pausa molesta.
Las grabadoras de CD o DVD, tienen un buffer para que no se pare la grabación. Hoy en día hay sistemas para retomar la grabación pero antes suponía que el CD no quedaba bien grabado y muchas veces era inservible.

El concepto del buffer es similar al de caché. Pero en el caso del buffer, los datos que se introducen siempre van a ser utilizados. En la caché sin embargo, no hay seguridad, sino una mayor probabilidad de utilización.
Para explicar la acepción informática a gente no técnica, se puede usar esta metáfora: Un buffer es como tener dinero en el banco (buffer), un trabajo (entrada) y unos gastos fijos (salida). Si tienes un trabajo inestable, mientras tengas ciertos ahorros, puedes mantener tus gastos fijos sin problemas, e ir ingresando dinero cuando puedas según vas trabajando. Si los ahorros son pequeños, en seguida que no tengas trabajo, no vas a poder acometer los gastos fijos. De la misma forma si escuchas música en Internet y tu programa de audio usa un buffer pequeño, en cuanto que haya alguna interrupción en la descarga (porque las descargas nunca tienen una velocidad constante), notarás cortes de sonido, ya que faltará información.
Los buffers se pueden usar en cualquier sistema digital, no solo en los informáticos, por ejemplo se utilizan en reproductores de música y vídeo
Sistema de archivo
 
Los sistemas de archivos o ficheros (filesystem en inglés), estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.
Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud. El software del sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. En la práctica, un sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente, como los recibidos a través de una conexión de red (sin la intervención de un dispositivo de almacenamiento).
 
Los sistemas de archivos tradicionales proveen métodos para crear, mover, renombrar y eliminar tanto archivos como directorios, pero carecen de métodos para crear, por ejemplo, enlaces adicionales a un directorio o archivo (enlace duro en Unix) o renombrar enlaces padres (".." en Unix).
El acceso seguro a sistemas de archivos básicos puede estar basado en los esquemas de lista de control de acceso o capacidades. Las listas de control de acceso hace décadas que demostraron ser inseguras, por lo que los sistemas operativos experimentales utilizan el acceso por capacidades. Los sistemas operativos comerciales aún funcionan con listas de control de acceso.
 Rutas y nombre de archivos
 
La estructura de directorios suele ser jerárquica, ramificada o "en árbol", aunque en algún caso podría ser plana. En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y números de versión. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.
En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta" —o path en inglés—. La nomenclatura para rutas varía ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura

miércoles, 10 de noviembre de 2010

Bloque de control del proceso


El Bloque de control del proceso o BCP o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.
Cuando el proceso termina, su BCP es borrado y el registro puede ser utilizado para otros procesos. Un proceso resulta conocido para el sistema operativo y por tanto elegible para competir por los recursos del sistema sólo cuando existe un BCP activo asociado a él. El bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecución del proceso y de la utilización de recursos. La información almacenada en un BCP incluye típicamente algunos o todos los campos siguientes:
  • Identificador del proceso (Process Identificator -PID-, de sus siglas en Inglés).
  • Estado del proceso. Por ej. listo, en espera, bloqueado.
  • Contador de Programa: Dirección de la próxima instrucción a ejecutar.
  • Valores de registro de CPU. Se utilizan también en el cambio de contexto.
  • Espacio de direcciones de memoria.
  • Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
  • Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
  • Estadísticas del proceso.
  • Datos del propietario (owner).
  • Permisos asignados.
  • Signals pendientes de ser servidos. (Almacenados en un mapa de bits)

Esta lista es simplemente indicativa, cada sistema operativo tiene su propio diseño de BCP, con el conjunto de metadatos necesarios para la administración. Puede medir desde 32 bits a 1024. Su denominación cambia según el sistema operativo, por ej. en IBM se designa PSW por palabra de estado de proceso. Difiere significativamente entre los sistemas de procesamiento por lotes (BATCH) y los sistemas interactivos.
Algunos sistemas de multiprogramación incluyen información de mantenimiento con el propósito de facturar a los usuarios individuales el tiempo de procesador, el almacenamiento, las operaciones de E/S y otras utilizaciones de recursos.
Una vez creado, el BCP se rellena con los atributos definidos como parámetros que se hallan en la plantilla del proceso o que son especificados como parámetros de la llamada al sistema operativo crear_proceso. En ese momento el sistema operativo suele asignar valores a otros campos. Por ejemplo, cuando se crea un proceso, los registros e indicadores hardware se fijan a los valores proporcionados por el cargador/enlazador. Cada vez que un proceso queda suspendido, el contenido de los registros del procesador es generalmente guardado en la pila, y el puntero al marco de la pila en cuestión se almacena en el BCP. De este modo los valores de los registros son restaurados cuando el proceso es seleccionado para ejecutarse nuevamente.

martes, 21 de septiembre de 2010

Estructura por capas (Anillos Concéntricos), S.O

Este tipo de estructura se le conoce como “sistemas por capas”, el objetivo principal es la organización jerárquica del sistema operativo,  mediante capas o anillos concéntricos, cada una de las capas esta construida sobre la anterior. El primer sistema que fue construido usando una estructura por capas fue desarrollado por E. W. Dijkstra y sus estudiantes en Holanda en el año 1968, el sistema que fue creado se llama THE (Technische Hogeschool Eindhoven), En este sistema consta de 6 capas.
  • Capa 0:
En esta capa se proporciona la multiprogramación básica de la CPU, esto quiere decir que trabaja en la asignación del procesador y también se alteran los procesos  cuando se ocurren las interrupciones o expiran los cronómetros. Dichos sistemas constan de procesos secuénciales, estos se pueden programar sin importar que varios procesos se estén ejecutando en el mismo procesador.

  • Capa 1:
Aquí se administra la memoria, al mismo tiempo se asignaba el espacio de memoria principal para los diversos procesos y un depósito de palabras de 512K  en el cual se utilizaba para almacenar partes de los procesos, en este caso las paginas, ya que no existía un lugar en la memoria principal. En esta capa no se debe de preocupar que los procesos que estén en memoria o en el deposito, esto se debe que el software de esta capa se encarga de garantizar que las paginas lleguen a la memoria cuando fueran necesarias
  • Capa 2:
En esta capa se encarga de la comunicación entre el proceso y la consola de usuario. Arriba de esta capa, cada proceso tiene su propia consola.

  • Capa 3:
En la capa 3 se controlan los dispositivos de E/S y también guarda en buffers los flujos de información entre los diferentes dispositivos. Por encima de esta capa, los procesos pueden trabajar con dispositivos específicos de E/S teniendo propiedades adecuadas

  • Capa 4:
Aquí se localizan los programas de los usuarios, estos no se preocupan por el proceso, memoria, consola o control de E/S, que se tuvieran que utilizar.

  • Capa 5:
En esta capa se localiza el proceso operador del sistema


Posteriormente se realizo una generalización más avanzada del concepto de capas, en el sistema MULTICS, la peculiaridad de este sistema era que no se representaba por capas, sino por medio de anillos concéntricos, en donde los anillos internos eran los más privilegiados. Al momento que un procedimiento de un anillo exterior que llame a un procedimiento de un anillo interior, se debe de hacer el equivalente a una llamada al sistema