Capítulo 4 Gestión de documentos

0. Primera introducción a la gestión de archivos

1692539406714

¿Qué atributos tiene un archivo? Nombre del archivo: El nombre del archivo lo determina el usuario que creó el archivo, principalmente para facilitarle la búsqueda del archivo. Los archivos con el mismo nombre no están permitidos en el mismo directorio.

Identificador: El identificador de cada archivo en un sistema es único e ilegible para los usuarios, por lo tanto, el identificador es solo un nombre interno utilizado por el sistema operativo para distinguir cada archivo.

Tipo: Especifica el tipo de archivo

Ubicación: ruta donde se almacena el archivo (para uso de los usuarios), dirección en la memoria externa (utilizada por el sistema operativo, invisible para los usuarios)

Tamaño: especifica el tamaño del archivo.

Hora de creación, hora de la última modificación, información del propietario del archivo

Información de protección: información de control de acceso para proteger archivos

1692539796977

1692539968546

1692540057735

Compartir archivos: permite que varios usuarios compartan un archivo

Protección de archivos: cómo garantizar que diferentes usuarios tengan diferentes permisos operativos sobre los archivos

1692540294000

1. La estructura lógica del archivo.

1692540619152

Archivo no estructurado : los datos dentro del archivo se componen de una serie de secuencias binarias o secuencias de caracteres. También conocidos como "archivos de transmisión". Como por ejemplo: archivo .txt en el sistema operativo Windows.

Archivo estructurado : Consta de un grupo de registros similares, también conocido como “archivo de registro”. Cada registro se compone de varios elementos de datos. Tales como: archivo de tabla de base de datos. En términos generales, cada registro tiene un elemento de datos que se puede utilizar como clave (como ID para identificar diferentes registros).

Archivo de tabla de base de datos. En términos generales, cada registro tiene un elemento de datos que puede usarse como clave. Dependiendo de si la longitud (espacio de almacenamiento ocupado) de cada registro es igual, se puede dividir en registros de longitud fija y registros de longitud variable .

archivo de secuencia

Archivo secuencial: los registros del archivo están organizados secuencialmente (lógicamente) uno tras otro, y los registros pueden tener una longitud fija o variable. Los registros individuales se pueden almacenar físicamente de forma secuencial o en cadena.

1692540847554

1692540887665

1692541109930

archivo de índice

La tabla de índice en sí es un archivo secuencial de registros de longitud fija . Por lo tanto, la entrada del índice correspondiente al i-ésimo registro se puede encontrar rápidamente.

Las palabras clave se pueden utilizar como contenido del número de índice. Si se organizan en orden de palabras clave, también se puede admitir la búsqueda por la mitad de las palabras clave.

Cada vez que se agrega o elimina un registro, es necesario modificar la tabla de índice. Dado que los archivos de índice tienen una velocidad de recuperación muy rápida, se utilizan principalmente en situaciones que requieren una gran puntualidad en el procesamiento de la información.

Además, se pueden crear varias tablas de índice con diferentes elementos de datos. Por ejemplo: en la tabla de información del estudiante, la palabra clave "número de estudiante" se puede usar para crear una tabla de índice. También puede utilizar "nombre" para crear una tabla de índice. Esto le permite buscar rápidamente archivos según el "nombre". (Por ejemplo: SQL admite la función de indexación basada en un determinado elemento de datos)

1692541384027

archivo de secuencia de índice

Los archivos secuenciales indexados son una combinación de las ideas de archivos indexados y archivos secuenciales. En un archivo de secuencia de índice, también se creará una tabla de índice para el archivo, pero la diferencia es que no cada registro corresponde a una entrada de la tabla de índice, sino que un grupo de registros corresponde a una entrada de la tabla de índice.

1692541616073

1692541728032

2.Directorio de archivos

1692541844427

bloque de control de archivos

1692541970724

La colección ordenada de FCB se denomina "directorio de archivos" y un FCB es una entrada del directorio de archivos . FCB contiene la información básica del archivo (nombre del archivo, dirección física , estructura lógica, estructura física, etc.), información de control de acceso (si es legible/escribible, lista de usuarios prohibidos, etc.), información de uso (como la hora de creación del fichero), hora de modificación, etc.).

¿Qué operaciones deben realizarse en el directorio?

Buscar: cuando un usuario desea utilizar un archivo, el sistema busca el directorio según el nombre del archivo y encuentra la entrada del directorio correspondiente al archivo.

Crear un archivo: al crear un nuevo archivo, debe agregar una entrada de directorio al directorio al que pertenece.

Eliminar archivos: al eliminar un archivo, la entrada del directorio correspondiente debe eliminarse en el directorio

Mostrar directorio: los usuarios pueden solicitar mostrar el contenido del directorio, como mostrar todos los archivos y los atributos correspondientes en el directorio.

Modificar el directorio: algunos atributos del archivo se guardan en el directorio, por lo que cuando estos atributos cambian, los elementos correspondientes del directorio deben modificarse (como: cambiar el nombre del archivo)

Directorio de un solo nivel de una sola máquina

Los primeros sistemas operativos no admitían directorios de varios niveles: solo se creaba una tabla de directorios en todo el sistema y cada archivo ocupaba una entrada de directorio.

Se implementa el "Acceso por nombre", pero no se permiten nombres de archivos duplicados.

Al crear un archivo, primero debe verificar si hay un archivo con el mismo nombre en la tabla del directorio. Solo después de confirmar que no hay ningún nombre duplicado se puede crear el archivo e insertar la entrada del directorio correspondiente al nuevo archivo. en la tabla del directorio.

Obviamente, una estructura de directorios de un solo nivel no es adecuada para sistemas operativos multiusuario.

1692542214578

Estructura de directorio de dos niveles

Los primeros sistemas operativos multiusuario utilizaban una estructura de directorios de dos niveles. Se divide en directorio de archivos maestro (MFD, Master File Directory) y directorio de archivos de usuario (UFD, User Flie Directory).

1692542328638

Estructura de directorio multinivel

1692542476523

Cuando un usuario (o proceso de usuario) quiere acceder a un archivo, debe utilizar el nombre de la ruta del archivo para identificarlo. El nombre de la ruta del archivo es una cadena. Los directorios de todos los niveles están separados por "/". La ruta que comienza desde el directorio raíz se llama ruta absoluta.

Por ejemplo, el archivo del directorio de "Fotos" se abrió en este momento, es decir, esta tabla de directorio se transfirió a la memoria y luego se puede configurar como el "directorio actual". Cuando los usuarios desean acceder a un archivo, pueden utilizar una "ruta relativa" que comienza desde el directorio actual.

Se puede ver que después de introducir el "directorio actual" y la "ruta relativa", la cantidad de E/S del disco se ha reducido. Esto mejora la eficiencia del acceso a archivos.

La estructura de directorios en árbol puede clasificar archivos fácilmente, la estructura jerárquica es clara y también puede administrar y proteger archivos de manera más efectiva. Sin embargo, la estructura de árbol no es conveniente para compartir archivos. Por este motivo, se propone la "estructura de directorios de gráficos acíclicos".

Estructura de directorio de gráficos acíclicos

1692542619989

Puede apuntar al mismo archivo con diferentes nombres de archivo, o incluso apuntar al mismo directorio (compartiendo todo en el mismo directorio).

Es necesario configurar un contador de uso compartido para cada nodo compartido para registrar cuántos lugares comparten el nodo en este momento. Cuando un usuario realiza una solicitud para eliminar un nodo, el FCB del usuario solo se elimina y el contador de uso compartido se reduce en 1. El nodo compartido no se elimina directamente.

El nodo se elimina solo cuando el contador de uso compartido disminuye a 0.

Nota: Compartir archivos es diferente a copiar archivos. En un archivo compartido, dado que cada usuario apunta al mismo archivo, siempre que uno de los usuarios modifique los datos del archivo, todos los usuarios pueden ver los cambios en los datos del archivo.

nodo índice

1692542794405

El nodo de índice almacenado en la memoria externa se denomina "nodo de índice de disco", y cuando el nodo de índice se coloca en la memoria, se denomina "nodo de índice de memoria".

Por el contrario, es necesario agregar cierta información al nodo de índice de memoria, como: si el archivo se ha modificado, cuántos procesos están accediendo al archivo en este momento, etc.

1692542913213

3. Estructura física del archivo

1692881602891

1692883438327

En la gestión de la memoria, el espacio de direcciones lógicas de un proceso se divide en páginas.

De manera similar, en la administración de memoria externa, para facilitar la administración de los datos del archivo, el espacio de direcciones lógicas del archivo también se divide en "bloques" de archivos uno por uno.

Por lo tanto, la dirección lógica del archivo también se puede expresar en forma de (número de bloque lógico, dirección dentro del bloque).

asignación continua

La asignación continua requiere que cada archivo ocupe un conjunto contiguo de bloques en el disco.

El usuario proporciona el número de bloque lógico al que se accederá y el sistema operativo encuentra la entrada de directorio (FCB) correspondiente al archivo. Número de bloque físico = número de bloque inicial + número de bloque lógico

El número de bloque físico correspondiente al número de bloque lógico se puede calcular directamente, por lo que la asignación continua admite el acceso secuencial y el acceso directo (es decir, acceso aleatorio).

Cuando se lee un bloque de disco, es necesario mover el cabezal. Cuanto más separados se accede a dos bloques de disco, más tiempo se tarda en mover el cabezal.

Conclusión: los archivos asignados de forma contigua son más rápidos cuando se leen/escriben secuencialmente

1692885383275

1692885592938

Conclusión: es físicamente inconveniente expandirse utilizando archivos asignados continuamente.

Conclusión: Al utilizar físicamente la asignación continua, la utilización del espacio de almacenamiento es baja y producirá fragmentos de disco que son difíciles de usar.
Compact se puede usar para manejar fragmentos, pero lleva mucho tiempo.

Ventajas: Admite acceso secuencial y acceso directo (es decir, acceso aleatorio); los archivos asignados continuamente son más rápidos cuando se accede de forma secuencial

Desventajas: Inconveniente para la expansión de archivos; baja utilización del espacio de almacenamiento y fragmentación del disco

Asignación de enlace

enlace implícito

El usuario proporciona el número de bloque lógico i al que se accederá y el sistema operativo encuentra la entrada de directorio (FCB) correspondiente al archivo.... Encuentra el número de
bloque inicial (es decir, el bloque o) de la entrada de directorio y lee el número de bloque lógico i. número de bloque 0 Memoria, conociendo así el número de bloque físico almacenado en el bloque lógico No. 1, luego leyendo el bloque lógico No. 1 y luego encontrando la ubicación de almacenamiento del bloque lógico No. 2... y así sucesivamente.
Por lo tanto, leer el bloque lógico número i requiere un total de i+1 veces de E/S de disco.

1692885776915

Conclusión: los archivos que utilizan asignación en cadena (enlace implícito) solo admiten el acceso secuencial, no el acceso aleatorio, y la eficiencia de la búsqueda es baja. Además, el puntero al siguiente bloque de disco también consume una pequeña cantidad de espacio de almacenamiento.

Conclusión: el método de asignación de enlaces de enlace implícito es muy conveniente para la expansión de archivos. Además, se pueden utilizar todos los bloques de disco libres, no habrá problemas de fragmentación y la tasa de utilización de la memoria externa es alta.

mostrar enlace

1692885983741

Nota: Sólo se configura una FAT para un disco. Al arrancar, FAT se lee en la memoria y permanece residente en la memoria. Cada entrada FAT se almacena físicamente de forma continua y cada entrada tiene la misma longitud, por lo que el campo "número de bloque físico" puede estar implícito.

Encuentre el número de bloque inicial en la entrada del directorio. Si i>0, consulte la tabla de asignación de archivos FAT en la memoria. Luego busque el número de bloque físico correspondiente al bloque lógico i. El proceso de convertir números de bloques lógicos en números de bloques físicos no requiere una operación de lectura de disco.

Conclusión: Los archivos que utilizan asignación en cadena (enlace explícito) admiten acceso secuencial y acceso aleatorio (cuando desea acceder al bloque lógico i, no necesita acceder a los bloques lógicos anteriores 0 ~ i-1 en secuencia), porque La conversión del número de bloque El proceso no requiere acceso al disco, por lo que la velocidad de acceso es mucho más rápida que la vinculación implícita.

Obviamente, el enlace explícito no producirá fragmentación externa y el archivo se puede expandir fácilmente.

asignación de índice

La asignación de índice permite que los archivos se asignen discretamente en varios bloques de disco. El sistema creará una tabla de índice para cada archivo. La tabla de índice registra los bloques físicos correspondientes a cada bloque lógico del archivo (la función de la tabla de índice es similar a la en la gestión de memoria). Tabla de páginas: establece la relación de mapeo entre páginas lógicas y páginas físicas). Los bloques de disco almacenados en la tabla de índice se denominan bloques de índice. Los bloques de disco donde se almacenan los datos de los archivos se denominan bloques de datos.

1692886421763

Se puede ver que el método de asignación de índices puede admitir el acceso aleatorio. La expansión de archivos también es fácil de implementar (solo necesita asignar un bloque libre al archivo y agregar una entrada a la tabla de índice), pero la tabla de índice requiere una cierta cantidad de espacio de almacenamiento.

① Esquema de vinculación: si la tabla de índice es demasiado grande para caber en un bloque de índice, se pueden vincular varios bloques de índice para su almacenamiento.

1692886742918

②Índice multinivel: cree un índice multinivel (el principio es similar a una tabla de páginas multinivel). Haga que el bloque de índice de primer nivel apunte al bloque de índice de segundo nivel. El tercer y cuarto nivel de bloques de índice también se pueden establecer según los requisitos de tamaño del archivo.

1692886941967

Al utilizar una estructura de índice de nivel K y la tabla de índice de nivel superior no se transfiere a la memoria, acceder a un bloque de datos solo requiere operaciones de lectura de disco K+1.

③Índice híbrido: una combinación de múltiples métodos de asignación de índices. Por ejemplo, la tabla de índice de nivel superior de un archivo contiene un índice de dirección directo (que apunta directamente al bloque de datos), un índice indirecto de primer nivel (que apunta a una tabla de índice de un solo nivel) y un índice indirecto de dos niveles. índice (apuntando a una tabla de índice de dos niveles).

1692887149159

Puntos de prueba súper, súper, súper importantes: ① Debe poder calcular la longitud máxima del archivo en función de la estructura de índices multinivel e índices híbridos (Clave: la longitud máxima de la tabla de índice en cada nivel no puede exceder uno bloque); ② Debe poder analizar usted mismo lo que se necesita para acceder a un determinado bloque de datos. El número de lecturas del disco (Clave: FCB contendrá un puntero al bloque de índice de nivel superior, por lo que el bloque de índice de nivel superior puede leerse de acuerdo con FCB. Cada vez que se lee el bloque de índice del siguiente nivel, se requiere una operación de lectura del disco. Además, tenga en cuenta Condiciones de la pregunta: si el bloque de índice de nivel superior se ha transferido a la memoria)

1692887337861

4. Estructura lógica VS estructura física

1692888394739

5. Gestión del espacio de almacenamiento de archivos

1692969492559

1692969571055

método de lista libre

Adecuado para el método de asignación continua"

Cómo asignar bloques de disco: muy similar a la asignación dinámica de particiones en la administración de memoria, se asigna espacio de almacenamiento contiguo para un archivo. También se pueden utilizar algoritmos como la primera adaptación, la mejor adaptación y la peor adaptación para determinar qué intervalo asignar al archivo.

Cómo reciclar bloques de disco: muy similar a la asignación dinámica de particiones en la administración de memoria, se deben cumplir cuatro situaciones al reciclar un área de almacenamiento: ① no hay áreas libres adyacentes antes y después del área de reciclaje; ② tanto la parte delantera como la trasera del El área de reciclaje es un área libre; ③ Delante del área de reciclaje está el área libre; ④ Detrás del área de reciclaje está el área libre. En resumen, debe prestar atención a la combinación de elementos de la mesa al reciclar.

1692969794074

método de lista libre

1692969832644

1692969860016

Cadena de discos libre:

El sistema operativo guarda los punteros del cabezal y del final de la cadena.

Cómo asignar: si un archivo se aplica a K bloques de disco, K bloques de disco se asignarán comenzando desde el encabezado de la cadena y se modificará el puntero del encabezado de la cadena libre.

Cómo reciclar: los bloques de disco reciclados se cuelgan hasta el final de la cadena por turno y se modifica el puntero de la cola de la cadena libre.

Adecuado para estructuras físicas discretamente asignadas. Al asignar varios bloques de disco a un archivo, es posible que deba repetir la operación varias veces.

Cadena de extensión libre:

El sistema operativo guarda los punteros del cabezal y del final de la cadena.

Cómo asignar: si un archivo se aplica a K bloques de disco, puede usar la primera adaptación, la mejor adaptación y otros algoritmos para buscar desde el encabezado de la cadena, encontrar un disco libre con un tamaño que cumpla con los requisitos de acuerdo con las reglas del algoritmo y asignar al archivo. Si no hay bloques libres consecutivos adecuados, también puede asignar bloques de disco de diferentes extensiones a un archivo al mismo tiempo. Tenga en cuenta que es posible que sea necesario modificar el puntero de cadena correspondiente, el tamaño de la extensión y otros datos después de la asignación.

Cómo reciclar: si el área de reciclaje es adyacente a una extensión libre, el área de reciclaje debe fusionarse con la extensión libre. Si el área de recuperación no es adyacente a ninguna área libre, el área de recuperación se colgará hasta el final de la cadena como una extensión libre separada.

Es aplicable tanto a la asignación discreta como a la asignación continua. Es más eficiente asignar varios bloques de disco a un archivo

método de mapa de bits

1692970270901

Mapa de bits: cada bit binario corresponde a un bloque de disco. En este ejemplo, "0" significa que el bloque de disco está libre y "1" significa que el bloque de disco está asignado.

Cómo asignar: si el archivo requiere K bloques, ① escanee secuencialmente el mapa de bits para encontrar K "0" adyacente o no adyacente; ② calcule el número de bloque de disco correspondiente según el tamaño de fuente y el número de bits, y asigne el bloque de disco correspondiente a Archivo; ③Establezca el bit correspondiente en "1".

Cómo reciclar: ① Calcule el tamaño de fuente correspondiente y el número de bits en función del número de bloque del disco recuperado; ② Establezca el bit binario correspondiente en "0"

Método de vinculación de grupos

El método de lista libre y el método de lista enlazada libre no son adecuados para sistemas de archivos grandes porque la lista libre o la lista enlazada libre pueden ser demasiado grandes. El método de enlace de grupo se utiliza en sistemas UNIX para administrar bloques libres de disco.

Un bloque de disco se utiliza especialmente como un "superbloque" en el área del directorio del volumen del archivo. Cuando se inicia el sistema, el superbloque debe leerse en la memoria. Y es necesario garantizar que los datos del "superbloque" en la memoria y la memoria externa sean consistentes".

1692970425386

1692970512720

1692970783776

6. Operaciones básicas de archivos.

Crear un archivo

Cuando el sistema operativo maneja la llamada al sistema Crear, hace principalmente dos cosas:

1. Encuentre el espacio requerido para el archivo en la memoria externa (combine el método de lista vinculada libre, mapa de bits, método de vínculo de grupo y otras estrategias de administración aprendidas en la sección anterior para encontrar el espacio libre) 2
. Busque el archivo de directorio correspondiente al directorio (aquí está el directorio D: /Demo) según la información de la ruta de almacenamiento del archivo y cree la entrada de directorio correspondiente al archivo en el directorio. La entrada del directorio contiene información como el nombre del archivo y la ubicación del archivo en el almacenamiento externo.

Borrar archivos

Cuando el sistema operativo maneja la llamada al sistema Eliminar, hace principalmente varias cosas:

1. Busque el archivo del directorio correspondiente según la ruta de almacenamiento del archivo y busque la entrada del directorio correspondiente al nombre del archivo en el directorio.

2. Según la ubicación de almacenamiento, el tamaño del archivo y otra información del archivo registrado en la entrada del directorio, se recuperan los bloques de disco ocupados por el archivo. (Al reciclar bloques de disco, se deben realizar diferentes procesamientos de acuerdo con diferentes estrategias de administración, como el método de lista libre, el método de lista vinculada libre, el método de mapa de bits, etc.)

3.Elimine la entrada del directorio correspondiente al archivo de la tabla del directorio.

abrir un archivo

Cuando el sistema operativo procesa la llamada al sistema abierto, hace principalmente varias cosas:
1. Encuentre el archivo del directorio correspondiente de acuerdo con la ruta de almacenamiento del archivo, busque la entrada del directorio correspondiente al nombre del archivo en el directorio y verifique si el usuario tiene la permisos de operación especificados.
2. Copie la entrada del directorio en la "tabla de archivos abiertos" en la memoria. Y devolver el número de entrada correspondiente al usuario. Luego, el usuario utiliza el número en la tabla de archivos abiertos para indicar el archivo que se va a operar.

cerrar el archivo

leer archivo

escribir archivo

1692971472021

7. Compartir archivos

1692971518218

Aviso:

Varios usuarios comparten el mismo archivo significa que sólo hay "una copia" de los datos del archivo en el sistema. Y siempre que un usuario modifique los datos del archivo, otros usuarios también podrán ver los cambios en los datos del archivo.

Si varios usuarios "copian" el mismo archivo, habrá "varias copias" de los datos del archivo en el sistema. Si un usuario modifica los datos de sus propios archivos, no tendrá ningún impacto en los datos de los archivos de otros usuarios.

Método de intercambio basado en nodos de índice (enlace físico)

Método de intercambio basado en cadena simbólica (enlace suave)

1692971730174

1692971853276

8. Protección de archivos

1692971895048

Protección de contraseña

Ventajas: la sobrecarga de espacio para guardar contraseñas no es mucha y la sobrecarga de tiempo para verificar las contraseñas también es muy pequeña.

Desventajas: La "contraseña" correcta se almacena dentro del sistema, lo que no es lo suficientemente seguro.

Protección de cifrado

Ventajas: Gran confidencialidad, no es necesario almacenar una "contraseña" en el sistema

Desventajas: Codificar/decodificar o cifrar/descifrar lleva una cierta cantidad de tiempo.

Control de acceso

Agregue una lista de control de acceso (ACL) al FCB (o nodo de índice) de cada archivo , que registra qué operaciones puede realizar cada usuario en el archivo.

1692972125128

1692972358229

9. Estructura jerárquica del sistema de archivos.

1692972545431

Utilice un ejemplo para ayudar a memorizar la estructura jerárquica del sistema de archivos:
suponga que un usuario solicita eliminar los últimos 100 registros del archivo "D:/Directorio de trabajo/Información del estudiante..xlsx".

1.用户需要通过操作系统提供的接口发出上述请求――用户接口

2.由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项―一文件目录系统

3.不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限――存取控制模块(存取控制验证层)

4.验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址――逻辑文件系统与文件信息缓冲区
5.知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址――物理文件系统

6.要删除这条记录,必定要对磁盘设备发出请求――设备管理程序模块

7.删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收――辅助分配模块

10.文件系统的全局结构(布局)

文件系统在外存中的结构

物理格式化,即低级格式化――划分扇区,检测坏扇区,并用备用扇区替换坏扇区。

逻辑格式化后,磁盘分区(分卷Volume),完成各分区的文件系统初始化

注:逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据

文件系统在内存中的结构

1692973113788

11.虚拟文件系统

普通的文件系统

1692973268856

虚拟文件系统

虚拟文件系统的特点:
①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异

②VFS要求下层的文件系统必须实现某些规定的函数功能,如: open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求。

③每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统。

注意:vnode只存在于主存中,而inode 既会被调入主存,也会在外存中存储

1692973404336

4.3_3_虚拟文件系统_哔哩哔哩_bilibili

Supongo que te gusta

Origin blog.csdn.net/m0_57385165/article/details/132507195
Recomendado
Clasificación