Está en la página 1de 16

I. ADMINISTRACION DE MEMORIA.

-
1. Definición de Administración de memoria
La administración de memoria se refiere a los distintos métodos y operaciones que se
encargan de obtener la máxima utilidad de la memoria, organizando los procesos y
programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el
espacio disponible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la información
que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta
administración se conoce como Memoria Virtual ya que no es la memoria física del
procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta
memoria permite que el sistema cuente con una memoria más extensa teniendo la
misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por
supuesto, que los programas que son utilizados no ocupen lugar innecesario.
Las técnicas que existen para la carga de programas en la memoria son: partición fija,
que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la
partición dinámica, que son las particiones de la memoria en tamaños que pueden ser
variables, según la cantidad de memoria que necesita cada proceso.
Entre las principales operaciones que desarrolla la administración de memoria se
encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera e la
memoria principal para maximizar la utilización del procesador; la protección,
mecanismos que protegen los procesos que se ejecutan de interferencias de otros
procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección
permite que ciertos procesos de un mismo programa que comparten una tarea tengan
memoria en común.
2. Esquemas de asignación de memoria.
La asignación de memoria es una de las principales responsabilidades de los sistemas
operativos, pues esta es la forma que el mismo tiene de destinar y dedicar una cierta
cantidad de memoria a los procesos en ejecución.
2.1. Multiprogramación con particiones fijas (MFT)
Dado que los procesos no tienen necesariamente que tener el mismo tamaño que las
particiones, existirán espacios no utilizables dentro de estas, denominados como
[fragmentación interna]].
Esto hace que no se utilice el total de la memoria siendo una de las principales
deficiencias de este esquema de asignación.
2.2.Multiprogramación con particiones variables (MVT)
Al dividirse la memoria en bloques de tamaño diferente, puede ocurrir que el bloque
más grande no pueda contener un programa dado, a pesar de que la suma de los
espacios libres sea mayor que el tamaño del programa; a esto se le denomina
fragmentación externa.
2.3. Esquemas.-
 Esquema primer ajuste: El administrador de memoria revisa toda la lista de
segmentos hasta encontrar un espacio lo suficientemente grande. El espacio se
divide entonces en dos partes, una para el proceso y la otra para la memoria
no utilizada. Este algoritmo es rápido, puesto que busca lo menos posible.
 Esquema de próximo ajuste: Funciona de la misma forma que el anterior, con la
diferencia que mantiene un registro del lugar dónde encuentra un hueco
adecuado. La siguiente vez que se le llama, comienza a buscar desde el punto
donde se detuvo, en lugar de comenzar a buscar siempre desde el inicio.
 Esquema de mejor ajuste: Busca en toda la lista y toma el mínimo hueco
adecuado. En lugar de asignar un hueco grande, intenta encontrar un hueco más
cercano al tamaño necesario.
 Esquema peor ajuste: Toma siempre el hueco más grande disponible, de forma
que el hueco resultante sea lo suficientemente grande para ser útil.
Asignación no contigua
En el momento de la carga de un trabajo le corresponde al sistema operativo localizar
los huecos libres existentes con las capacidades requeridas para los segmentos, construir
la tabla de segmentos y colocar en un registro base la dirección de ésta, si el trabajo va a
ser ejecutado de inmediato. Normalmente la tabla de segmentos es conservada en el
PCB del proceso.
Ventajas
Con este esquema, los programas se dividen en unidades de tamaño fijo. A estas
unidades se les denomina: páginas; es decir, un programa está compuesto por un
conjunto de estas.
Por otro lado, la memoria física se divide en bloques de igual longitud, coincidiendo
esta con la que tienen las páginas. A estos bloques se les llaman marcos de páginas; en
cada uno se puede almacenar justamente una página.
Desventajas
En el paginado no existe la fragmentación externa, pero si se presenta la fragmentación
interna en el último marco de página, pues normalmente tendrá una parte de su espacio
sin uso.
La solución a esto está utilizar páginas pequeñas. El tamaño de las páginas (y de los
marcos) es definido por el hardware, normalmente una potencia de 2, lo cual hace la
traducción de lógica a física más sencilla.
Segmentación
El esquema de segmentación paginada parte de algunas ventajas de la paginación:
elimina la fragmentación externa y aprovecha eficientemente la memoria; así como
otras de la segmentación: visible al [programador] y da soporte para compartición y
protección. Este esquema es de frecuente uso en sistemas operativos actuales.
3. Memoria principal RAM
En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte
para el sistema operativo (monitor residente, núcleo) y otra parte para el programa que
se ejecuta en ese instante. En un sistema multiprogramado, la parte de "usuario" de la
memoria debe subdividirse aún más para hacer sitio a varios procesos. La tarea de
subdivisión la lleva a cabo dinámicamente el sistema operativo y se conoce como
gestión de memoria.

En un sistema multiprogramado resulta vital una gestión efectiva de la memoria. Si sólo


hay unos pocos procesos en memoria, entonces la mayor parte del tiempo estarán
esperando a la E/S y el procesador estará desocupado. Por ello, hace falta repartir
eficientemente la memoria para meter tantos procesos como sea posible.
3.1.Carga de programas en memoria principal
La tarea central de cualquier sistema de gestión de memoria es traer los programas a
memoria principal para su ejecución en el procesador. En casi todos los sistemas
multiprogramados modernos, esta tarea supone un esquema sofisticado conocido como
memoria virtual. La memoria virtual está, a su vez, basada en el uso de una de dos
técnicas básicas; segmentación y/o paginación. Antes de ver estás técnicas de memoria
virtual, se debe preparar el terreno considerando técnicas más simples que no requieren
el uso de memoria virtual. Una de estas técnicas, la partición, se ha venido usando con
distintas variantes en algunos sistemas operativos ahora obsoletos. Las otras dos
técnicas, la paginación simple y la segmentación simple, no se usan en solitario. No
obstante, el estudio de la memoria virtual resultará más sencillo si se consideran en
primer lugar estas dos técnicas, sin tener en cuenta la memoria virtual.
Paginación
Tanto las particiones de tamaño fijo como las de tamaño variable hacen un uso
ineficiente de la memoria; las primeras generan fragmentación interna, mientras que las
segundas originan fragmentación externa. Supóngase, no obstante, que la memoria
principal se encuentra particionada en trozos iguales de tamaño fijo relativamente
pequeños y que cada proceso está dividido también en pequeños trozos de tamaño fijo y
del mismo tamaño que los de memoria. En tal caso, los trozos del proceso, conocidos
como páginas, pueden asignarse a los trozos libres de memoria, conocidos como marcos
o marcos de página. En este apartado se verá que el espacio malgastado en memoria
para cada proceso por fragmentación interna consta sólo de una fracción de la última
página del proceso. Además, no hay fragmentación externa.
En un instante dado, algunos de los marcos de memoria están en uso y otros están
libres. El sistema operativo mantiene una lista de los marcos libres. El proceso A,
almacenado en disco, consta de cuatro páginas. Cuando llega el momento de cargar este
proceso, el sistema operativo busca cuatro marcos libres y carga las cuatro páginas del
proceso A en los cuatro marcos. El proceso B, que consta de tres páginas y el proceso
C, que consta de cuatro, se cargan a continuación. Más tarde, el proceso B se suspende y
es expulsado de memoria principal. Después, todos los procesos de memoria principal
están bloqueados y el sistema operativo tiene que traer un nuevo proceso, el proceso D,
que consta de cinco páginas.
Supóngase ahora, como en este ejemplo, que no hay suficientes marcos sin usar
contiguos para albergar al proceso. ¿Impedirá esto al sistema operativo cargar D? La
respuesta es negativa, puesto que se puede emplear de nuevo el concepto de dirección
lógica. Ya no será suficiente con un simple registro base. En su lugar, el sistema
operativo mantiene una tabla de páginas para cada proceso. La tabla de páginas muestra
la posición del marco de cada página del proceso. Dentro del programa, cada dirección
lógica constará de un número de página y de un desplazamiento dentro de la página.
Recuérdese que, en el caso de la partición simple, una dirección lógica era la posición
de una palabra relativa al comienzo del programa; el procesador realizaba la traducción
a dirección física. Con paginación, el hardware del procesador también realiza la
traducción de direcciones lógicas a físicas. Ahora, el procesador debe saber cómo
acceder a la tabla de páginas del proceso actual. Dada una dirección lógica (número de
página, desplazamiento), el procesador emplea la tabla de páginas para obtener una
dirección física (número de marco, desplazamiento).
Segmentación
Otro modo de subdividir el programa es la segmentación. En este caso, el programa y
sus datos asociados se dividen en un conjunto de segmentos. No es necesario que todos
los seg-mentos de todos los programas tengan la misma longitud, aunque existe una
longitud máxima de segmento. Como en la paginación, una dirección lógica segmentada
consta de dos partes, en este caso un número de segmento y un desplazamiento.
Como consecuencia del empleo de segmentos de distinto tamaño, la segmentación
resulta similar a la partición dinámica. En ausencia de un esquema de superposición o
del uso de memoria virtual, sería necesario cargar en memoria todos los segmentos de
un programa para su ejecución. La diferencia, en comparación con la partición
dinámica, radica en que, con segmentación, un programa puede ocupar más de una
partición y éstas no tienen por qué estar contiguas. La segmentación elimina la
fragmentación interna, pero, como la partición dinámica, sufre de fragmentación
externa. Sin embargo, debido a que los procesos se dividen en un conjunto de partes
más pequeñas, la fragmentación externa será menor.
Mientras que la paginación es transparente al programador, la segmentación es
generalmente visible y se proporciona como una comodidad para la organización de los
programas y datos. Normalmente, el programador o el compilador asignan los
programas y los datos a diferentes segmentos. En aras de la programación modular, el
programa o los datos pueden ser divididos de nuevo en diferentes segmentos. El
principal inconveniente de este servicio es que el programador debe ser consciente de la
limitación de tamaño máximo de los segmentos.
4. Memoria Cache (memoria rápida).
Ante la inmensa velocidad de los procesadores que a medida del tiempo se va
incrementando, el límite es mayor entre la transferencia de la memoria principal (RAM)
y el CPU; ante esto se plantearon soluciones, una incrementar la velocidad de la RAM y
otra, quizá la más óptima, agregar un nuevo componente al PC: la memoria caché.
Es una clase de memoria RAM estática (SRAM) de acceso aleatorio y alta velocidad,
situada entre el CPU y la RAM; se presenta de forma temporal y automática para el
usuario, que proporciona acceso rápido a los datos de uso más frecuente. Ubicada entre
el microprocesador y la RAM, hace que sea suficientemente rápida para almacenar y
transmitir los datos que el microprocesador necesita recibir casi instantáneamente.
La memoria caché es rápida, unas 5 ó 6 veces más que la DRAM (RAM dinámica), por
eso su capacidad es mucho menor. Por eso su precio es elevado, hasta 10 ó 20 veces
más que la memoria principal dinámica para la misma cantidad de memoria.
4.1 USOS DE LA MEMORIA CACHÉ
 Acelerar el procesamiento de las instrucciones de memoria en la CPU.
 Los ordenadores tienden a utilizar las mismas instrucciones y (en menor
medida), los mismos datos repetidamente, por ello la caché contiene las
instrucciones más usadas.
 Es 5 ó 6 veces más que la RAM. Su capacidad varía en torno a 512 kilobytes
(512 Kb), es decir, medio "mega", frente a 16 ó 32 megas de RAM.
La memoria caché se carga desde la RAM con los datos y/o instrucciones que ha
buscado la CPU en las últimas operaciones. La CPU siempre busca primero la
información en la caché, lo normal es que va encontrar ahí la mayoría de las veces, con
lo que el acceso será muy rápido. Pero si no encuentra la información en la caché, se
pierde un tiempo extra en acudir a la RAM y copiar dicha información en la caché para
su disponibilidad.
Como estos fallos ocurren con una frecuencia relativamente baja, el rendimiento mejora
considerablemente, ya que la CPU accede más veces a la caché que a la RAM.
En el siguiente diagrama se describe un proceso cuando la CPU requiereoperación de
lectura de una instrucción, para ello se presentan dos casos:

4.2. Funcionamiento.
Memoria RAM como caché: Las unidades de almacenamiento (discos duros, discos
flexibles, etc.) y otros muchos periféricos utilizan la memoria RAM como sistema de
caché, una zona de la RAM contiene la información que se ha buscado últimamente en
dichos dispositivos, de forma que basta con acceder a la RAM para recuperarla.
Disco duro como caché: Se emplea al disco duro como caché a dispositivos aún más
lentos (unidades CD-ROM). Estos sistemas de caché suelen estar gobernados mediante
software, que se suele integrar en el sistema operativo. La caché de disco almacena
direcciones concretas de sectores, almacena una copia del directorio y en algunos casos
almacena porciones o extensiones del programa o programas en ejecución.
Los navegadores Web utilizan el disco duro como caché, al solicitar una página Web, el
navegador acude a Internet y comprueba la fecha de la misma. Si la página no ha sido
modificada, se toma directamente del disco duro, con lo que la carga es muy rápida. En
caso contrario se descarga desde Internet y se actualiza la caché, con un cierto tiempo de
espera. En el caso de los navegadores Web, el uso del disco duro es más que suficiente,
ya que es extremadamente más rápido que el acceso a Internet.
El proceso de escritura en caché es se da directamente. Para trasladar información de la
caché a la RAM, hay dos políticas de escritura fundamentales:
Write-back: La información se escribe directamente en la caché, sin actualizar la RAM.
Cuando una posición de la caché debe ser utilizada por otra posición de RAM diferente,
su contenido actual se traslada a la RAM, asegurando la coherencia entre ambas
memorias.
Write-througth: Cada vez que se escribe en una línea de caché, se actualiza la RAM.
Esta técnica conlleva un acceso continuo a la RAM, por lo que el rendimiento es pobre.

5. Memoria virtual.
La memoria virtual permite una multiprogramación muy efectiva y releva al usuario de
las rígidas e innecesarias restricciones de la memoria principal.
Las ventajas de la memoria virtual son importantes. La cuestión es: ¿Funcionará este
esquema? En un primer momento, se produjo un gran debate sobre este punto, pero la
experiencia con numerosos sistemas operativos demuestra más allá de cualquier duda
que la memoria virtual funciona. Por consiguiente, ha llegado a ser un componente
esencial de la mayoría de los sistemas operativos actuales.
Para comprender cuál él es elemento clave y por qué la memoria virtual generó tanto
debate, se va a considerar de nuevo la labor del sistema operativo con respecto a la
memoria virtual. Considérese un proceso grande formado por un programa largo y un
conjunto de series de datos. Durante un corto periodo, la ejecución puede estar reducida
a una pequeña sección del programa (por ejemplo, una subrutina) y acceder sólo a una o
dos series de datos. Si esto es así, sería un claro desperdicio cargar docenas de
fragmentos para el proceso cuando se van a usar sólo unos pocos antes de que pase a
estar suspendido o se descargue. Se puede aprovechar mejor la memoria cargando tan
sólo unos pocos fragmentos. Además, si el programa se bifurca a una instrucción o hace
referencia a datos de un fragmento que no está en memoria, se producirá un fallo de
página. Este fallo le dice al sistema operativo que traiga el fragmento deseado.
Paginación
El término memoria virtual se asocia normalmente con sistemas que emplean
paginación, aunque también se puede usar memoria virtual basada en la segmentación,
que se tratará después. El uso de la paginación en la memoria virtual fue presentado por
primera vez en el computador Atlas [KILB62] y pronto alcanzó un uso comercial muy
extendido.
En el estudio de la paginación simple se indicó que cada proceso tiene su propia tabla de
páginas y que, cuando carga todas sus páginas en memoria principal, se crea y carga en
memoria principal una tabla de páginas. Cada entrada de la tabla de páginas contiene el
número de marco de la página correspondiente en memoria principal. Cuando se
considera un esquema de memoria virtual basado en la paginación se necesita la misma
estructura, una tabla de páginas. Nuevamente, es normal asociar una única tabla de
páginas con cada proceso.
Segmentación
La segmentación permite al programador contemplar la memoria como si constara de
varios espacios de direcciones o segmentos. Con memoria virtual, el programador no
necesita pre-ocuparse de las limitaciones de memoria impuestas por la memoria
principal. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica.
Las referencias a memoria constan de una dirección de la forma (número de segmento,
desplazamiento).
Paginación y Segmentación Combinadas
Tanto la paginación como la segmentación tienen sus ventajas. La paginación, que es
transparente al programador, elimina la fragmentación externa y, de este modo,
aprovecha la memoria principal de forma eficiente. Además, puesto que los fragmentos
que se cargan y descargan de memoria principal son de tamaño constante e igual para
todos, es posible construir algoritmos de gestión de memoria sofisticados que
aprovechen mejor el comportamiento de los programas, tal y como se verá. La
segmentación, que es visible para el programador, tiene las ventajas antes citadas,
incluida la capacidad de manejar estructuras de datos que puedan crecer, la modularidad
y el soporte de la compartición y la protección. Para combinar las ventajas de ambas,
algunos sistemas están equipados con hardware del procesador y software del sistema
operativo que las permiten.
En un sistema con paginación y segmentación combinadas, el espacio de direcciones de
un usuario se divide en varios segmentos según el criterio del programador. Cada
segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma
longitud que un marco de memoria principal. Si el segmento tiene menor longitud que
la página, el segmento ocupará sólo una página. Desde el punto de vista del
programador, una dirección lógica también está formada por un número de segmento y
un desplazamiento en el segmento. Desde el punto de vista del sistema, el
desplazamiento del segmento se ve como un número de página dentro del segmento y
un desplazamiento dentro de la página.
II. SISTEMA DE ARCHIVOS
1. Introducción.
Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo
utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera
en la que se organizan los archivos en el disco. El término también es utilizado para
referirse a una partición o disco que se está utilizando para almacenamiento, o el tipo
del sistema de archivos que utiliza. Así uno puede decir “tengo dos sistemas de archivo”
refiriéndose a que tiene dos particiones en las que almacenar archivos, o que uno utiliza
el sistema de “archivos extendido”, refiriéndose al tipo del sistema de archivos.
La diferencia entre un disco o partición y el sistema de archivos que contiene es
importante. Unos pocos programas (incluyendo, razonablemente, aquellos que crean
sistemas de archivos) trabajan directamente en los sectores crudos del disco o partición;
si hay un archivo de sistema existente allí será destruido o corrompido severamente. La
mayoría de programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán
una partición que no contenga uno (o que contenga uno del tipo equivocado).
Antes de que una partición o disco sea utilizada como un sistema de archivos, necesita
ser iniciada, y las estructura de datos necesitan escribirse al disco. Este proceso se
denomina construir un sistema de archivos.
La mayoría de los sistema de archivos UNIX tienen una estructura general parecida,
aunque los detalles exactos pueden variar un poco. Los conceptos centrales son
superbloque, nodo-i, bloque de datos, bloque de directorio, y bloque de indirección. El
superbloque tiene información del sistema de archivos en conjunto, como su tamaño (la
información precisa aquí depende del sistema de archivos). Un nodo-i tiene toda la
información de un archivo, salvo su nombre. El nombre se almacena en el directorio,
junto con el número de nodo-i. Una entrada de directorio consiste en un nombre de
archivo y el número de nodo-i que representa al archivo. El nodo-i contiene los números
de varios bloques de datos, que se utilizan para almacenar los datos en el archivo. Sólo
hay espacio para unos pocos números de bloques de datos en el nodo-i; en cualquier
caso, si se necesitan más, más espacio para punteros a los bloques de datos son
colocados de forma dinámica. Estos bloques colocados dinámicamente son bloques
indirectos; el nombre indica que para encontrar el bloque de datos, primero hay que
encontrar su número en un bloque indirecto.
Los sistemas de archivos UNIX generalmente nos permiten crear un agujero en un
archivo (esto se realiza con la llamada al sistema lseek(); compruebe su página de
manual), lo que significa que el sistema de archivos simplemente intenta que en un
lugar determinado en el archivo haya justamente cero bytes, pero no existan sectores del
disco reservados para ese lugar en el archivo (esto significa que el archivo utilizará un
poco menos de espacio en disco). Esto ocurre frecuentemente en especial para pequeños
binarios, librerías compartidas de Linux, algunas bases de datos, y algunos pocos casos
especiales. (los agujeros se implementan almacenando un valor especial en la dirección
del bloque de datos en el bloque indirecto o en el nodo-i. Esta dirección especial indica
que ningún bloque de datos está localizado para esa parte del archivo, y por lo tanto,
existe un agujero en el archivo).
2. Archivos del sistema operativo
Los archivos se utilizan para toda la entrada y salida (E/S) de información del sistema
operativo, para estandarizar el acceso al software y al hardware.
La entrada se produce cuando se modifica el contenido de un archivo o se graba en él.
La salida se produce cuando se lee el contenido de un archivo o se transfiere a otro
archivo. Por ejemplo, para crear una copia impresa de un archivo, el sistema lee
información del archivo de texto y graba esa información en el archivo que representa la
impresora.
2.1. Tipos de archivos
Los tipos de archivos reconocidos por el sistema son normal, directorio o especial. No
obstante, el sistema operativo utiliza muchas variaciones de estos tipos básicos.
A continuación se indican los tipos básicos de archivos existentes:
Elemento Descripción
normal Almacena datos (texto, binario y ejecutable)
directorio Contiene la información que se utiliza para acceder a otros archivos
especial Define un archivo de conducto FIFO (primero en entrar, primero en salir)
o un dispositivo físico
Todos los tipos de archivos reconocidos por el sistema se enmarcan en una de estas
categorías. No obstante, el sistema operativo utiliza muchas variaciones de estos tipos
básicos.
 Archivos normales
Los archivos normales son los archivos más comunes y se utilizan para contener
datos. Los archivos normales están en formato de archivos de texto o de archivos
binarios:
 Archivos de texto
Los archivos de texto son archivos normales que contienen información
almacenada en formato ASCII y que el usuario puede leer. Puede visualizar e imprimir
dichos archivos. Las líneas de un archivo de texto no deben contener caracteres NUL y
ninguna puede exceder de {LINE_MAX} bytes de longitud, incluido el carácter de
nueva línea.
El término archivo de texto no impide la inclusión de caracteres de control o de
otros caracteres no imprimibles (diferentes de NUL). Por lo tanto, los programas de
utilidad estándar que listan archivos de texto como entradas o como salidas o bien son
capaces de procesar los caracteres especiales o bien son capaces de describir
explícitamente sus limitaciones dentro de sus secciones individuales.
 Archivos binarios
Los archivos binarios son archivos normales que contienen información que el sistema
puede leer. Los archivos binarios podrían ser archivos ejecutables que indicaran al
sistema que ha de realizar un trabajo. Los mandatos y los programas se almacenan en
archivos binarios ejecutables. Los programas de compilación especial convierten texto
ASCII en código binario.
Los archivos de texto y binarios sólo se diferencian en que los archivos de texto
tienen líneas de menos de {LINE_MAX} bytes, sin ningún carácter NUL, cada una de
las cuales termina con un carácter de nueva línea.
 Archivos de directorios
Los archivos de directorio contienen la información que el sistema necesita para
acceder a todos los tipos de archivos, pero los archivos de directorio no contienen los
datos reales del archivo. En consecuencia, los directorios ocupan menos espacio que un
archivo normal y proporcionan a la estructura de sistema de archivos flexibilidad y
profundidad. Cada entrada de directorio representa un archivo o un subdirectorio. Cada
entrada contiene el nombre del archivo y el número de referencia de nodo de índice
(número de i-nodo) del archivo. El número de inodo apunta al nodo de índice exclusivo
que se ha asignado al archivo. El número de inodo describe la ubicación de los datos
que se asocian al archivo. Un grupo independiente de mandatos crea y controla los
directorios.
 Archivos especiales
Los archivos especiales definen dispositivos para el sistema o son archivos
temporales creados por procesos. Los tipos básicos de archivos especiales son FIFO
(primero en entrar, primero en salir), de bloques y de caracteres. Los archivos FIFO
también se denominan conductos. Los conductos se crean mediante un proceso para
permitir temporalmente las comunicaciones con otro proceso. Estos archivos dejan de
existir cuando termina el primer proceso. Los archivos de bloque y los archivos de
caracteres definen dispositivos.
Cada archivo tiene un conjunto de permisos (denominado modalidades de acceso)
que determina quién puede leer, modificar o ejecutar el archivo.
 Convenios de denominación de archivos
El nombre de cada archivo debe ser exclusivo en el directorio en el que se almacena.
Esto garantiza que el archivo tiene también un nombre de vía de acceso exclusivo en el
sistema de archivos.
 Nombres de vías de acceso de archivos
El nombre de la vía de acceso de cada archivo y directorio del sistema de archivos se
compone de los nombres de cada directorio que precede al archivo o directorio en la
estructura de árbol.
 Patrones de coincidencia con comodines y metacaracteres
Los caracteres comodín son un método muy eficaz para especificar varios nombres de
archivos o de directorios.
 Patrones de coincidencia en contraste con expresiones normales
Las expresiones normales le permiten seleccionar series específicas de un conjunto de
series de caracteres. La utilización de expresiones normales suele asociarse al proceso
de texto.
3. Directorios o Carpetas.
Para llevar el registro de los archivos, los sistemas de archivos por lo general tienen
directorios o carpetas, que en muchos sistemas son también archivos. En esta sección
hablaremos sobre los directorios, su organización, sus propiedades y las operaciones
que pueden realizarse con ellos.
Sistemas de directorios de un solo nivel.

Directorio de un solo nivel

La forma más simple de un sistema de directorios es tener un directorio que contenga


todos los archivos. Algunas veces se le llama directorio raíz, pero como es el único, el
nombre no importa mucho. En las primeras computadoras personales, este sistema era
común, en parte debido a que sólo había un usuario. Como dato interesante, la primera
supercomputadora del mundo (CDC 6600) también tenía un solo directorio para todos
los archivos, incluso cuando era utilizada por muchos usuarios a la vez. Esta decisión
sin duda se hizo para mantener simple el diseño del software. En la gráfica se muestra
un ejemplo de un sistema con un directorio. Aquí el directorio contiene cuatro archivos.
Las ventajas de este esquema son su simpleza y la habilidad de localizar archivos con
rapidez; después de todo, sólo hay un lugar en dónde buscar. A menudo se utiliza en
dispositivos incrustados simples como teléfonos, cámaras digitales y algunos
reproductores de música portátiles.
Sistemas de directorios jerárquicos.

Directorios Jerárquicos
Tener un solo nivel es adecuado para aplicaciones dedicadas simples (e incluso se
utilizaba en las primeras computadoras personales), pero para los usuarios modernos
con miles de archivos, sería imposible encontrar algo si todos los archivos estuvieran en
un solo directorio.
En consecuencia, se necesita una forma de agrupar los archivos relacionados. Por
ejemplo, un profesor podría tener una colección de archivos que en conjunto formen un
libro que está escribiendo para un curso, una segunda colección de archivos que
contienen programas enviados por los estudiantes para otro curso, un tercer grupo de
archivos que contenga el código de un sistema de escritura de compiladores avanzado
que está construyendo, un cuarto grupo de archivos que contienen proposiciones de
becas, así como otros archivos para correo electrónico, minutas de reuniones, artículos
que está escribiendo, juegos, etcétera.Lo que se necesita es una jerarquía (es decir, un
árbol de directorios). Con este esquema, puede haber tantos directorios como se necesite
para agrupar los archivos en formas naturales. Además, si varios usuarios comparten un
servidor de archivos común, como se da el caso en muchas redes de empresas, cada
usuario puede tener un directorio raíz privado para su propia jerarquía. Este esquema se
muestra en la gráfica mostrada arriba. Aquí, cada uno de los directorios A, B y C
contenidos en el directorio raíz pertenecen a un usuario distinto, dos de los cuales han
creado subdirectorios para proyectos en los que están trabajando.
La capacidad de los usuarios para crear un número arbitrario de subdirectorios provee
una poderosa herramienta de estructuración para que los usuarios organicen su trabajo.
Por esta razón, casi todos los sistemas de archivos modernos se organizan de esta
manera.
Operaciones de directorios
Las llamadas al sistema permitidas para administrar directorios exhiben más variación
de un sistema a otro que las llamadas al sistema para los archivos. Para dar una
impresión de lo que son y cómo funcionan, daremos un ejemplo (tomado de UNIX).

 Create. Se crea un directorio. Está vacío, excepto por punto y puntopunto, que el
sistema coloca ahí de manera automática (o en unos cuantos casos lo hace el
programa mkdir).
 Delete. Se elimina un directorio. Se puede eliminar sólo un directorio vacío. Un
directorio que sólo contiene a punto y puntopunto se considera vacío, ya que por
lo general éstos no se pueden eliminar.
 Opendir. Los directorios se pueden leer. Por ejemplo, para listar todos los
archivos en un directorio, un programa de listado abre el directorio para leer los
nombres de todos los archivos que contiene. Antes de poder leer un directorio se
debe abrir, en forma análoga al proceso de abrir y leer un archivo.
 -Closedir. Cuando se ha leído un directorio, se debe cerrar para liberar espacio
en la tabla interna.
 Readdir. Esta llamada devuelve la siguiente entrada en un directorio abierto.
Antes era posible leer directorios utilizando la llamada al sistema read común,
pero ese método tiene la desventaja de forzar al programador a conocer y tratar
con la estructura interna de los directorios. En contraste, readdir siempre
devuelve una entrada en formato estándar, sin importar cuál de las posibles
estructuras de directorio se utilice.
 Rename. En muchos aspectos, los directorios son sólo como archivos y se les
puede cambiar el nombre de la misma forma que a los archivos.
 Link. La vinculación (ligado) es una técnica que permite a un archivo aparecer
en más de un directorio. Esta llamada al sistema especifica un archivo existente
y el nombre de una ruta, creando un vínculo desde el archivo existente hasta el
nombre especificado por la ruta. De esta forma, el mismo archivo puede
aparecer en varios directorios. A un vínculo de este tipo, que incrementa el
contador en el nodo-i del archivo (para llevar la cuenta del número de entradas
en el directorio que contienen el archivo), se le llama algunas veces vínculo
duro(o liga dura).
 Unlink. Se elimina una entrada de directorio. Si el archivo que se va a
desvincular sólo está presente en un directorio (el caso normal), se quita del
sistema de archivos. Si está presente en varios directorios, se elimina sólo el
nombre de ruta especificado. Los demás permanecen. En UNIX, la llamada al
sistema para eliminar archivos (que vimos antes) es, de hecho, unlink.
4. Operaciones con Directorios
Las llamadas al sistema permitidas para el manejo de los directorios tienen variación de
sistema a sistema [23, Tanenbaum].
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.
 Unlink (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.
4.1. Operaciones con Archivos
Las llamadas más comunes al sistema relacionadas con los archivos son [23,
Tanenbaum]:
 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.

5. Tipo de sistemas de archivos


Sistemas de archivos de disco
Un sistema de archivo de disco está diseñado para el almacenamiento de archivos en
una unidad de disco, que puede estar conectada directa o indirectamente a la
computadora.
Sistemas de archivos de red
Un sistema de archivos de red es el que accede a sus archivos a través de una red de
computadoras.
Dentro de esta clasificación encontramos dos tipos de sistemas de archivos:
los sistemas de archivos distribuidos (no proporcionan E/S en paralelo);
los sistemas de archivos paralelos (proporcionan una E/S de datos en paralelo).
Sistemas de archivos de propósito especial
Los sistemas de archivos de propósito especial (special purpose file system) son
aquellos tipos de sistemas de archivos que no son ni sistemas de archivos de disco, ni
sistemas de archivos de red.
Ejemplos: acme (Plan 9), archfs, cdfs, cfs, devfs, udev, ftpfs, lnfs, nntpfs, plumber (Plan
9), procfs, ROMFS, swap, sysfs, TMPFS, wikifs, LUFS, etcétera.
Sistema de archivos por Sistema Operativo
En cada sistema operativo existen distintas formas de utilización de los tipos de acceso
para la organización óptima de sus archivos y su información. Cada sistema operativo
cuenta con uno o varios sistemas diferentes de organización, los cuales trabajan acorde a
las necesidades del usuario y su uso de la información.
Sistemas de archivos en Windows
Los sistemas de organización de archivos que utiliza Windows utilizan el acceso
secuencial indexado (acceso secuencial y acceso indexado adjuntos en un mismo
método), el acceso directo en algunos casos en la utilización de los sistemas de
organización por tablas.
FAT: Tabla de asignación de archivos, comúnmente conocido como FAT (del inglés
file allocation table), es un sistema de archivos. Es un formato popular para disquetes
admitido prácticamente por todos los sistemas operativos existentes para computadora
personal. Se utiliza como mecanismo de intercambio de datos entre sistemas operativos
distintos que coexisten en la misma computadora, lo que se conoce como entorno
multiarranque.
Sistema de archivos en Linux
Linux es el sistema operativo que soporta más sistemas de organización lo cuál lo
convierte en uno de los más versátiles. Además, al igual que Windows, utiliza los
mismos tipos de acceso y sistemas de organización. La estructura de archivos es unas
estructura jerárquica en forma de árbol invertido, donde el directorio principal (raíz) es
el directorio "/", del que cuelga toda la estructura del sistema. Este sistema de archivos
permite al usuario crear, borrar y acceder a los archivos sin necesidad de saber el lugar
exacto en el que se encuentran. No existen unidades físicas, sino archivos que hacen
referencia a ellas. Consta de tres partes importantes, superbloque, tabla de i-nodos y
bloques de datos.
-EXT: El sistema de archivos extendido (extended file system o ext), fue el primer
sistema de archivos de Linux. Tiene metadatos estructura inspirada en el tradicional
sistema de archivos UNIX (UFS). Fue diseñado por Rémy Card para vencer las
limitaciones del sistema de archivos MINIX.
Sistema de archivos de MacOS
Los sistemas de archivos que utiliza MacOs tienen su forma peculiar de trabajar, la cual
es totalmente distinta a la de Windows y Linux, trabajan por medio de jerarquías.
-HFS: El Sistema de Archivos Jerárquico divide un volumen en bloques lógicos de 512
bytes. Estos bloques lógicos están agrupados juntos en bloques de asignación
(allocation blocks) que pueden contener uno o más bloques lógicos dependiendo del
tamaño total del volumen.

También podría gustarte