Memoria
Traducción de direcciones
Particiones fijas
Particiones dinámicas
Segmentación
Paginacion (simple)
TLB
Paginación jerárquica
Tabla invertida
Segmentación paginada
Memoria virtual
Page buffering
Se tiene un pool de frames libres. Si tengo que cargar una página y se le asigna un frame que
contiene una página con modificaciones (o sea, que se debe descargar a disco antes de ser
reemplazada), se le asigna a la página a cargar un frame del pool. Luego, en algún momento la
página que había sido elegida como víctima se descarga a disco y se marca el frame que
ocupaba como libre y parte del pool.
FILE SYSTEMS
- Proporciona una estructura para almacenar datos y poder operar con ellos.
- Busca garantizar la integridad de los datos.
- Busca optimizar desempeño (tiempo de respuesta y recursos)
- Provee soporte para distintos tipos de almacenamiento.
- Minimiza la pérdida o destrucción potencial de datos
- Provee una interfaz estandarizada para procesos de usuario
- Soporte para múltiples usuarios
Archivo
Conjunto de datos relacionados etiquetados con un nombre y almacenados en un medio
secundario.
Tiene existencia de larga duración, compartible entre procesos (según permisos) y posee una
estructura y atributos (metadata).
Directorios
Es un archivo que contiene un listado de otros archivos (que pueden ser a su vez directorios) y
sus atributos.
Permite realizar el mapeo entre nombres y los archivos en sí.
Es un grafo acíclico.
Operaciones sobre archivos
Crear: crear un FCB y una entrada de directorio.
Eliminar: se borra la entrada de directorio y se marca el inodo y bloques como libres, si el
contador de referencias es 0.
Abrir: se declara un archivo existente como “abierto” por un proceso, permitiéndole realizar
operaciones futuras sobre el archivo.
Cerrar: se cierra el archivo con respecto a un proceso. Dicho proceso no realizará más
operaciones sobre el archivo (a menos que lo vuelva a abrir).
Leer/escribir
Posicionar puntero (seek)
Truncar: se reduce el tamaño del archivo
Operaciones compuestas
Copiar: se crea un archivo nuevo, se lee entero el archivo existente y se escribe el nuevo.
Mover: se crea una entrada de directorio en el nuevo directorio y se elimina la original, si es
dentro del mismo FS. Si es a otro FS, ahí sí se debe crear el nuevo archivo, leer el existente y
escribir el nuevo archivo en el destino.
Rename: se modifica la entrada de directorio mapeada a ese archivo (se abre el archivo
directorio y se modifica la entrada del archivo que se quiere renombrar)
Locks
El SO implementa locks para regular el acceso a un archivo
- Evita que dos procesos escriban en un archivo simultáneamente
- Evita que un proceso lea información desactualizada
- Mantener la integridad del archivo
Locks exclusivos/compartidos
Exclusivo (escritura): solo un proceso a la vez puede tomarlo y no permite que otros accedan.
Compartido (lectura): puede ser tomado por varios procesos a la vez. No se puede adquirir el
lock exclusivo si hay alguno compartido.
El SO puede implementar estos locks de manera obligatoria o sugerida. En el primero, el SO
garantiza que los procesos solo pueden usar los archivos si poseen los locks. Tiene un mayor
costo, más tiempo los archivos bloqueados y procesos esperando para usarlos. En el segundo
modo, el SO provee la información de los estados de los locks pero es responsabilidad del
programador garantizar el correcto funcionamiento (adquirir y liberar locks sin generar
deadlocks).
Manipulación de archivos
Cuando se abre un archivo, el FCB se carga en memoria.
Tabla global de archivos abiertos
Contiene información inherente al archivo, igual para todos los procesos. Es también donde se
carga el FCB.
Descriptor / Contador de aperturas / FCB
El contador permite saber cuándo se puede descargar el FCB de memoria (si es 0) y se borra la
entrada de la TGAA.
Tabla de archivos abiertos por proceso
Contiene los atributos específicos de ese archivo abierto para un proceso.
Existe una por proceso. Contiene el modo de apertura y los punteros al archivo.
Modo apertura / Punteros R/W
Protección
Acceso controlado: tener alguna estructura que nos indique quién puede operar y cómo
Tipos de protección
- Propietario | grupo | universo (resto) (EXT)
- Matriz de acceso (usuario, recurso): cada celda tiene el permiso, granularidad máxima
pero desperdicia mucho espacio. No lo usa ni FAT ni EXT
- ACL: por cada archivo -> lista de usuarios con los permisos. Mayor granularidad que el
primero y ocupa menos espacio que el segundo (EXT).
Se usa cuando propietario | grupo | universo no alcanza (se combinan)
Permisos: READ|WRITE|EXECUTE
Read en un directorio nos permite listar las entradas, escribir es crear, modificar o quitar
entradas y execute es posicionarme en el directorio.
Archivos mapeados en memoria
El objetivo es tratar los accesos a archivos como si fueran un acceso a memoria. Se asocia
lógicamente al archivo con una parte del espacio de direccionamiento del proceso.
Se mapea cada bloque de disco con una página de memoria.
Una vez cargada la página, las siguientes lecturas y escrituras se gestionarán como accesos
normales de memoria.
Ventajas:
- Disminuye overhead ya que no usa syscalls read y write
- Favorece compartir archivos entre procesos -> comparten páginas
- Las escrituras pueden no ser sincrónicas en el archivo de disco
Desventajas:
- No se tienen los locks para proteger accesos concurrentes.
Asignación de espacio en disco a archivos
El archivo se va a guardar en bloques lógicos del disco virtual. Cada bloque se corresponde con
n sectores del disco físico. El tamaño del bloque es n * tamaño sector.
CONTIGUA
Ventajas:
- Mínimos reposicionamientos del cabezal del disco (por lo tanto es más rápido el
acceso)
- Se necesita poca información para administrar los espacios libres.
- Bueno para acceso directo y secuencial
Desventajas:
- El tamaño se define en el momento de creación
- Más difícil encontrar un hueco libre
- Problemas para aumentar el tamaño del disco
- Fragmentación externa
ENLAZADA
Ventajas:
- No hay problemas para aumentar el tamaño del archivo
- No presenta fragmentació externa
- Es buena para acceso secuencial.
Desventajas:
- Bloques dispersos (reposicionamientos del cabezal son mayores)
- Es malo para acceso directo
- Los punteros ocupan espacio
- Los punteros se pueden corromper e impedir que se pueda acceder al próximo bloque
INDEXADA
Ventajas:
- No hay problema para aumentar el tamaño del archivo
- No presenta fragmentación externa
- Es bueno para acceso secuencial y directo
Desventajas:
- Bloques dispersos (reposicionamientos del cabezal del disco mayores)
- Espacio ocupado por punteros es mayor que enlazada
- Se pueden corromper los bloques índices y que no se pueda acceder a los bloques.
Cada archivo tiene su propio bloque índice -> si es muy grande se desperdicia espacio, si es
muy pequeño se limita el tamaño del archivo.
Esquema enlazado: para que puedan existir archivos de gran tamaño, se enlazan varios bloques
índices.
Indice mutinivel: bloque de índice de primer nivel que apunta a otros bloques índices de
segundo nivel que a su vez apuntan a bloques de datos.
Esquema combinado: como en EXT, se tienen algunos punteros directos a bloques de datos y
otros punteros a bloques índices. Así los archivos pequeños no necesitan un índice separado e
igual se pueden guardar archivos grandes.
Gestión de espacio libre
- Vector de bits:
Cada posición bit[i] índice si el bloque i está libre (valor igual a 0) u ocupado (valor igual a 1)
- Bloques libres enlazados
Journaling
La información de las estructuras del FS por lo general está más acutalizada en memoria que en
disco. Un fallo en el sistema o hardware puede generar inconsistencias
El journaling es una técnica con la cual se lleva registro de las operaciones realizadas y sus
commits a disco. En caso de una falla, se chequea el registro para saber si el sistema está en un
estado inconsistente (si la última entrada no es commit), en ese caso se deshacen las últimas
operaciones hasta llegar al último estado consistente conocido (último commit realizado).
FAT
La tabla FAT se guarda en el FS y se carga a memoria para un acceso más veloz.
En FAT no se usa FCB. La metadata de los archivos se guarda en las entradas de directorio.
Permite acceso directo en un esquema “enlazado”:
Hay una entrada de tabla FAT por cada bloque. Cada entrada indica el bloque sigue. Se recorre
la tabla para saber a qué bloque acceder en el caso de un acceso directo.
Para obtener un bloque libre se recorre la tabla.
Tam FAT = cantidad de entradas * tamaño entrada
Tam max teórico Arch/FS = cantidad de bloques (igual a entradas) * tamaño bloque
En FAT32
Tam FAT = 2^28 * 4 B
Tam max Arch/FS = 2^28 * tamaño bloque
EXT
Directorios
En EXT, los directorios se guardan en bloques de datos especiales.
Cada directorio tiene una lista de entradas. Cada entrada contiene el id de inodo del archivo, el
tamaño de la entrada, el tamaño del nombre y el nombre.
Tipos de archivos:
- Directorios (d)
- Regulares - Hardlinks (-)
- Softlinks (l)
Softlinks (l)
Es un archivo independiente, posee su propio inodo. Su contenido posee la ruta a otro archivo.
Puede realizarse entre distintos file systems.
Hardlinks (-)
Es una nueva referencia a un archivo. Existe un único archivo con uno o más hardlinks. La
referencia apunta al mismo inodo. No puede realizarse entre distintos file systems.
Entradas de directorio:
Inodo / tipo de archivo / permisos / contador de referencias / propietario / grupo del archivo /
fecha / nombre
Los permisos se dividen en 3: propietario / usuarios que pertenecen al grupo del archivo /
resto de los usuarios