diff options
Diffstat (limited to 'iso/n4.lyx')
| -rw-r--r-- | iso/n4.lyx | 895 |
1 files changed, 895 insertions, 0 deletions
diff --git a/iso/n4.lyx b/iso/n4.lyx new file mode 100644 index 0000000..4944c11 --- /dev/null +++ b/iso/n4.lyx @@ -0,0 +1,895 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Los sistemas de computación actuales necesitan un +\series bold +almacenamiento secundario +\series default + que complemente al primario, para almacenar grandes cantidades de información + que no caben en el primario; preservarla para que no desaparezca cuando + termine el proceso o el sistema se apague, y permitir que la información + sea fácilmente compartida y accedida. + Para ello se usan discos y otros dispositivos que almacenan la información + en un conjunto de bloques, o que se manejan como si fuera así, y sobre + los cuales el sistema operativo crea una abstracción para facilitar su + uso a usuarios y programadores. +\end_layout + +\begin_layout Standard +Un +\series bold +sistema de ficheros +\series default + es una parte del sistema operativo que organiza un sistema de almacenamiento + secundario como una serie de ficheros o unidades de información que se + agrupan en directorios, y también es el formato que adquiere el disco para + ello. + Desde el punto de vista del usuario es importante la forma de nombrar los + ficheros, las operaciones permitidas, el tipo de protección que podemos + aplicar, etc., mientras que desde el punto de vista del sistema operativo + es importante la implementación. +\end_layout + +\begin_layout Section +Ficheros +\end_layout + +\begin_layout Standard +En los sistemas modernos, un fichero es una secuencia de bytes con significado + definido por el programa que accede al mismo. + Cada fichero tiene un nombre que lo identifica, y que dependiendo del diseño + del sistema de ficheros y del sistema operativo, distingue o no entre mayúscula +s y minúsculas, tiene un cierto tamaño máximo, tiene o no una estructura + (como +\begin_inset Quotes fld +\end_inset + + +\family typewriter +\emph on +nombre +\emph default +. +\emph on +extensión +\family default +\emph default + +\begin_inset Quotes frd +\end_inset + +), etc. +\end_layout + +\begin_layout Standard +Los ficheros suelen tener atributos, como por ejemplo: +\end_layout + +\begin_layout Itemize +ACLs, contraseña, creador, propietario. +\end_layout + +\begin_layout Itemize +Sólo lectura, ocultación, fichero de sistema, biblioteca, texto o binario, + acceso aleatorio, temporal, bloqueo. +\end_layout + +\begin_layout Itemize +Tiempos de creación, último acceso y última modificación. +\end_layout + +\begin_layout Itemize +Tamaño actual y tamaño máximo. +\end_layout + +\begin_layout Standard +En general hay operaciones para crear un fichero vacío, eliminar un fichero, + abirlo, cerrar un fichero abierto, leer una cantidad de bytes, escribir + una cantidad de bytes al final (añadir) o (si es posible) en otra posición, + cambiar de posición dentro del fichero, obtener y establecer los atributos, + cambiar de nombre o mover el fichero a otro directorio, y truncar el fichero + a partir de una posición. +\end_layout + +\begin_layout Subsection +Ficheros regulares +\end_layout + +\begin_layout Standard +Contienen información del usuario. + Distinguimos entre ficheros +\series bold +de texto +\series default +, codificados en UTF-8 o algún otro sistema y con líneas que terminan en + CR, LF o LF/CR y que se pueden ver tal cual de forma legible, y los +\series bold +binarios +\series default +, que tienen cierta estructura pero no son de texto. +\end_layout + +\begin_layout Standard +Así, los ejecutables, binarios generalmente manejados por el sistema operativo, + contienen una cabecera con un +\series bold +número mágico +\series default + (número que identifica el formato de archivo), el tamaño de las secciones + de código y datos, el punto de entrada (dirección donde debe empezar la + ejecución) y otra información, seguida de las propias secciones. + Por su parte, los archivos de biblioteca son ficheros binarios que almacenan + código máquina de funciones (e información asociada). +\end_layout + +\begin_layout Standard +Muchas veces el nombre del fichero contiene una +\series bold +extensión +\series default + que identifica el tipo, que en los sistemas operativos modernos como Linux + no es significativa pero sí lo es para algunos programas, como exploradores + de ficheros para saber con qué programa abrirlo, y ayudan al usuario a + identificar el tipo rápidamente. + +\end_layout + +\begin_layout Standard +Ejemplos de extensiones son +\family typewriter +.bak +\family default + para copias de seguridad; +\family typewriter +.hlp +\family default + para ficheros de ayuda; +\family typewriter +.gif +\family default + o +\family typewriter +.jpg +\family default + para imágenes GIF o JPEG; +\family typewriter +.c +\family default + para código fuente en C; +\family typewriter +.html +\family default +o +\family typewriter +.tex +\family default + o +\family typewriter +.txt +\family default + para documentos HTML, \SpecialChar TeX + o de texto plano; +\family typewriter +.mp3 +\family default + para sonido MP3; +\family typewriter +.mpg +\family default + para vídeo MPEG; +\family typewriter +.o +\family default + para ficheros objeto; +\family typewriter +.pdf +\family default + o +\family typewriter +.ps +\family default + para documentos PDF; +\family typewriter +.zip +\family default + para archivos comprimidos ZIP; etc. +\end_layout + +\begin_layout Subsection +Ficheros especiales +\end_layout + +\begin_layout Standard +No se corresponden con un fichero en el propio sistema de almacenamiento, + sino con una forma de tratar otro tipo de datos como si fuera un fichero + (en el almacenamiento lo que se guarda es algún tipo de referencia). + En UNIX existen dos tipos: +\end_layout + +\begin_layout Itemize + +\series bold +De caracteres +\series default +: Representan dispositivos de E/S como terminales, impresoras y conexiones + de red. + No es posible cambiar de posición, escribir en una posición distinta del + final o truncarlos. +\end_layout + +\begin_layout Itemize + +\series bold +De bloques +\series default +: Representan dispositivos que permiten acceso aleatorio, en general almacenamie +nto secundario. +\end_layout + +\begin_layout Subsection +Directorios +\end_layout + +\begin_layout Standard +Son ficheros gestionados por el sistema operativo para registrar los ficheros + y organizarlos en una +\series bold +jerarquía de directorios +\series default +, de la que existen varios tipos: +\end_layout + +\begin_layout Itemize + +\series bold +Directorio único +\series default +, con los ficheros de todos los usuarios. + Se usaban en los primeros microcomputadores. + Puede haber problemas si distintos usuarios utilizan los mismos nombres + de fichero. +\end_layout + +\begin_layout Itemize + +\series bold +Directorio por usuario +\series default +, aunque no es deseable si uno tiene muchos ficheros. + Se debe decidir si un usuario puede o no acceder a los directorios de otros + y cómo. +\end_layout + +\begin_layout Itemize + +\series bold +Árbol de directorios +\series default +. + Un directorio puede contener a otros. + Es lo que se usa hoy en día. + Normalmente los directorios tienen una entrada especial +\family typewriter +. + +\family default + para referirse al propio directorio y +\family typewriter +.. + +\family default + para referirse al directorio padre. + Se accede a los ficheros (y directorios) mediante una +\series bold +ruta de acceso +\series default +, que indica el nombre de los directorios por los que hay que pasar hasta + llevar al fichero deseado (incluyendo el nombre del fichero), separados + por un cierto caracter, que es +\family typewriter +/ +\family default + en UNIX y +\family typewriter + +\backslash + +\family default + en Windows. + Dos tipos: +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Absoluta +\series default +: Parte desde la raíz y comienza por el caracter separador. + Es única para un mismo fichero siempre que no se usen +\family typewriter +. + +\family default + y +\family typewriter +.. +\family default +. +\end_layout + +\begin_layout Itemize + +\series bold +Relativa +\series default +: Parte de un +\series bold +directorio actual +\series default + o +\series bold +de trabajo +\series default +, y no comienza por el caracter separador. + Existe una cantidad numerable de rutas relativas para un mismo fichero + desde un mismo directorio actual. +\end_layout + +\end_deeper +\begin_layout Standard +No podemos leer y escribir en ellos como con los otros tipos de ficheros, + sino que en su lugar la apertura de un directorio sirve para recorrido + y hay operaciones para obtener la siguiente entrada; ligar o enlazar un + fichero al directorio, permitiendo que un mismo fichero aparezca en varios + directorios, y desligar una entrada del directorio, lo que equivale a borrarla + si esta es la única entrada del sistema de fichero en la que aparece. +\end_layout + +\begin_layout Section +Representación +\end_layout + +\begin_layout Standard +La representación en disco debe ser tal que consiga una buena velocidad + y aprovechamiento del espacio pero a la vez reduzca la fragmentación interna + (partes de un bloque sin aprovechar) y externa (bloques libres que no se + pueden ocupar). +\end_layout + +\begin_layout Subsection +Bloques lógicos +\end_layout + +\begin_layout Standard +Por lo general los discos proporcionan una interfaz basada en una lista + de +\series bold +bloques físicos +\series default + o +\series bold +sectores +\series default +, la unidad mínima de lectura y escritura, cuyo tamaño es constante y suele + ser una potencia de 2 desde +\begin_inset Formula $\unit[512]{B}$ +\end_inset + + hasta +\begin_inset Formula $\unit[4]{kB}$ +\end_inset + +. + Es común que el sistema de ficheros agrupe o incluso divida los sectores + para formar +\series bold +bloques lógicos +\series default + o unidades de asignación más grandes o pequeñas. +\end_layout + +\begin_layout Standard +Si el bloque lógico es grande, un fichero tendrá menos bloques y el rendimiento + en discos duros será mayor pero habrá más fragmentación interna, mientras + que si el bloque es pequeño habrá poca fragmentación interna pero las listas + de bloques ocuparán mucho. +\end_layout + +\begin_layout Subsection +Asignación de espacio +\end_layout + +\begin_layout Standard +Todo fichero tiene asociado un conjunto de bloques donde guarda sus datos. + La asignación de estos puede ser de varias formas: +\end_layout + +\begin_layout Itemize + +\series bold +Adyacente +\series default + o +\series bold +contigua +\series default +. + De fácil especificación, pues solo hay que recordar un número para localizar + los bloques, y ofrece un excelente rendimiento en discos duros al suponer + muy pocos movimientos del brazo del disco o ninguno. + En general no es realizable, pues si no se sabe el tamaño máximo de un + fichero no se sabe cuánto espacio reservarle; si este es muy pequeño, cuando + el fichero crezca hay que moverlo a un hueco mayor, algo costoso y no siempre + posible. + Sin embargo es útil en medios como CD-ROMs y DVD-ROMs, donde se sabe el + tamaño de los ficheros de antemano. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante lista ligada +\series default +. + En cada bloque se guarda la dirección del siguiente. + No hay fragmentación externa y la entrada de directorio correspondiente + solo tiene que guardar la dirección del primer bloque, pero el acceso aleatorio + es muy lento y los programas que esperan que los bloques tengan un tamaño + potencia de 2 también se ralentizan. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante lista ligada e índice +\series default +. + Similar, pero la dirección del siguiente bloque no se guarda en el bloque + sino en una tabla con una entrada por bloque que indica la dirección del + siguiente en el fichero. + Esto solo es eficiente si toda la tabla está en memoria, lo que es un problema + si la tabla es grande. + Se puede reducir el tamaño de la tabla usando bloques lógicos grandes, + pero entonces se desperdicia espacio por fragmentación. + Además, si la tabla se modifica y la modificación no se escribe en disco, + una caída del sistema puede hacer que los ficheros desaparezcan o queden + incompletos. +\begin_inset Newline newline +\end_inset + +Se puede usar un número de bloque inválido (como el 0) para indicar que + un bloque está libre. + El sistema FAT, usado por MS-DOS y uno de los implementados en Windows, + usa este sistema. +\end_layout + +\begin_layout Itemize + +\series bold +Mediante nodos-i +\series default +. + A cada fichero se le asigna un nodo-i (nodo índice) que contiene las direccione +s en disco de los bloques del fichero, en orden. + Normalmente se usan nodos-i pequeños capaces de almacenar unas pocas direccione +s y se guardan varios nodos-i en un mismo bloque, de modo que una zona contigua + del disco (o varias, por eficiencia), llamada +\series bold + tabla de nodos-i +\series default +, se destinan a nodos-i. +\begin_inset Newline newline +\end_inset + +Para ficheros grandes se usa un +\series bold +bloque simplemente indirecto +\series default + (BSI), que contiene direcciones de bloques de datos adicionales; un +\series bold +bloque doblemente indirecto +\series default + (BDI), que contiene direcciones de más BSIs, y un +\series bold +bloque triplemente indirecto +\series default + (BTI), que contiene direcciones de más BDIs, de forma que 3 de las direcciones + del nodo-i se usan para estos bloques. +\begin_inset Newline newline +\end_inset + +Este es el esquema usado en la mayoría de sistemas de ficheros en sistemas + UNIX, y permite acceder a cualquier bloque de un fichero abierto accediendo, + como mucho, a 4 bloques del disco si el nodo-i está en memoria. +\end_layout + +\begin_layout Standard +Además, debe haber una forma de saber que bloques de datos (así como qué + números de nodos-i) están libres. + Principalmente hay dos métodos: +\end_layout + +\begin_layout Itemize + +\series bold +Lista ligada de bloques +\series default +: Una lista con tantos números de bloques libres como pueda más un puntero + al siguiente bloque. + Los bloques de la lista son libres, por lo que podrán ser usados si es + necesario. +\end_layout + +\begin_layout Itemize + +\series bold +Mapa de bits +\series default +: Contiene un bit para cada bloque, que indica si el bloque es libre u ocupado. + Los bloques del mapa no son libres, pero los sistemas de ficheros actuales + como Ext2, Ext3, Ext4 o NTFS lo usan porque permite buscar de forma sencilla + grupos de bloques libres consecutivos. +\end_layout + +\begin_layout Subsection +Ficheros compartidos +\end_layout + +\begin_layout Standard +Un fichero es compartido si puede aparecer en varios directorios con el + mismo o distinto nombre, o en un mismo directorio con nombres distintos. + La conexión entre un directorio y un fichero se llama +\series bold +enlace +\series default +, y si existe, el sistema de ficheros pasa de ser un árbol a ser simplemente + un grafo acíclico dirigido. +\end_layout + +\begin_layout Itemize + +\series bold +Enlace físico +\series default + o +\emph on +hard link +\emph default +: Los datos relativos a un fichero se guardan en una estructura de datos + y las entradas de directorio correspondientes apuntan a esta. + Es necesario que entre los datos del fichero exista un contador de enlaces, + pues el nodo solo debe liberarse cuando se borra un fichero y no quedan + más enlaces. +\end_layout + +\begin_layout Itemize + +\series bold +Enlace simbólico +\series default + o +\emph on +soft link +\emph default +: Se usa un tipo de fichero especial que contiene una ruta de acceso al + fichero al que se enlaza. + Cuando el fichero original se borra, el enlace simbólico queda invalidado + salvo que se cree un fichero con la misma ruta. +\end_layout + +\begin_layout Standard +UNIX implementa ambos. + Los enlaces simbólicos tienen más coste, pero presentan menos problemas, + con lo que UNIX permite enlaces simbólicos de directorios e incluso a otros + sistemas de ficheros pero no permite hacer lo mismo con enlaces físicos. + Un programa de copias de seguridad puede duplicar datos al copiar un fichero + compartido si no usa alguna forma de detectar los enlaces para evitar esta + duplicación. +\end_layout + +\begin_layout Subsection +Directorios +\end_layout + +\begin_layout Standard +En MS-DOS, los directorios son ficheros salvo el directorio raíz que ocupa + unos bloques fijos en disco, por lo que tiene un tamaño máximo preestablecido. + Estos almacenan una lista desordenada de entradas o registros de 32 bytes, + una por fichero, con los siguientes campos, en orden: +\end_layout + +\begin_layout Enumerate +8 bytes para el nombre del fichero y 3 para la extensión. +\end_layout + +\begin_layout Enumerate +Un byte para atributos donde los bits se usan como banderas. + Uno de ellos distingue a un directorio de un fichero normal. +\end_layout + +\begin_layout Enumerate +Un campo de 10 bytes reservado para futuros usos. +\end_layout + +\begin_layout Enumerate +2 bytes para la hora de última modificación: 5 bits para la hora (0–23), + 6 para el minuto (0–59) y 5 para el segundo, que debe ser par (0–58). +\end_layout + +\begin_layout Enumerate +2 bytes para la fecha de última modificación: 7 bits para el año (correspondiend +o el valor 0 al 1980), 4 para el mes (1–12) y 5 para el día del mes (1–31). +\end_layout + +\begin_layout Enumerate +2 bytes para la dirección del primer bloque. +\end_layout + +\begin_layout Enumerate +4 bytes para el tamaño del fichero, en bytes. +\end_layout + +\begin_layout Standard +En la mayoría de sistemas de ficheros en sistemas UNIX, los atributos se + almacenan en los nodos-i y el directorio raíz no tiene tratamiento especial. + En el de los primeros UNIX, las entradas de un directorio eran de 16 bytes, + siendo 2 bytes para el número de nodo-i del fichero y otros 14 bytes para + el nombre, que tenía pues un máximo de 14 caracteres. + Posteriormente se crearon sistemas de ficheros para sistemas UNIX que soportaba +n nombres de hasta 255 caracteres, con entradas con los siguientes campos, + en orden: +\end_layout + +\begin_layout Enumerate +4 bytes para el número de nodo-i. +\end_layout + +\begin_layout Enumerate +2 bytes para la longitud del registro. +\end_layout + +\begin_layout Enumerate +1 byte para la longitud del nombre. +\end_layout + +\begin_layout Enumerate +1 byte para el tipo de fichero (regular, de caracteres, de bloques o directorio). +\end_layout + +\begin_layout Enumerate +Hasta 255 bytes para el nombre. +\end_layout + +\begin_layout Standard +Una entrada no puede estar entre dos bloques, y el total de registros de + un bloque debe cubrirlo enteramente; de ahí que se permita que la longitud + de un registro sea mayor a la estrictamente necesaria. + Siempre que se crea un directorio se añaden dos entradas, +\family typewriter +. + +\family default + y +\family typewriter +.. +\family default +. + Para añadir una nueva entrada, se elige una existente, se disminuye su + tamaño y se añade la nueva en el hueco, o se añade un nuevo bloque al directori +o si esto no es posible. + Para eliminarla se añade su espacio al de la entrada anterior, o si esto + no es posible se marca el registro como libre utilizando un número de nodo-i + inválido. +\end_layout + +\begin_layout Subsection +Estructura general +\end_layout + +\begin_layout Standard +En general el bloque 0 del almacenamiento es el +\series bold +bloque de arranque +\series default + y puede contener código de arranque del sistema operativo que se encuentra + en la partición. + El bloque 1 suele ser el +\series bold +superbloque +\series default +, que contiene información crítica del sistema de ficheros como el total + de bloques lógicos, tamaño de los mapas de bits, etc., por lo que algunos + sistemas de ficheros tienen varias copias de este en otras zonas del disco. + En otros, el superbloque es parte del bloque de arranque. +\end_layout + +\begin_layout Standard +A partir de entonces hay mucha variación, pero en los primeros sistemas + de ficheros en UNIX encontramos el mapa de bits de bloques, el de nodos-i, + la tabla de nodos-i y, finalmente, el resto de bloques, para ficheros y + bloques indirectos. +\end_layout + +\begin_layout Section +Cachés +\end_layout + +\begin_layout Standard +Una +\series bold +caché de disco +\series default +, +\series bold +bloques +\series default + o +\series bold +\emph on +buffers +\series default +\emph default + es una colección de bloques del almacenamiento secundario que se mantienen + temporalmente en memoria principal por rendimiento. + La política de sustitución podría ser LRU mediante colas, pero el LRU puro + no es recomendable si se quiere mantener la consistencia del sistema de + ficheros ante posibles fallos del sistema, pues por ejemplo un bloque que + contiene nodos-i se usará mucho y si se modifica en caché y no se vuelve + a escribir en disco el sistema de ficheros quedará inconsistente ante un + fallo del sistema. +\end_layout + +\begin_layout Standard +Por ello se suele usar un LRU modificado, en el que los bloques que por + su tipo probablemente no se vuelvan a utilizar pronto pasan directamente + al frente de la cola y los bloques esenciales para la consistencia se escriben + directamente en disco sin esperar a ser expulsados. + Tampoco es recomendable mantener mucho tiempo los bloques de datos modificados + en caché por riesgo de perder los cambios. + Así, en muchos UNIX los bloques de datos se escriben en disco como tarde + a los 30 segundos de ser modificados, mientras que los de metadatos se + escriben como tarde a los 5 segundos. + También existe la orden +\family typewriter +sync +\family default +, que al ejecutarse fuerza la escritura de todos los bloques modificados. +\end_layout + +\begin_layout Standard +Por su parte, como las resoluciones de ruta (localizar un fichero a través + de una ruta) son algo muy frecuente y una misma ruta puede resolverse muchas + veces en poco tiempo, el sistema operativo suele mantener en memoria informació +n sobre las últimas resoluciones en otra caché, que en Linux se llama +\emph on +dentry cache +\emph default + o +\series bold +caché de entradas de directorio +\series default +. +\end_layout + +\begin_layout Section +Particiones +\end_layout + +\begin_layout Standard +Son porciones de bloques consecutivos de un disco, manejadas por el sistema + operativo y tratadas de por sí como listas de bloques sobre las que se + puede implementar un sistema de ficheros. + Tradicionalmente la información de las particiones, como sus bloques de + inicio y fin, se guarda en la +\series bold +tabla de particiones +\series default + del bloque +\series bold +MBR +\series default + ( +\emph on +Master Boot Record +\emph default +, registro de arranque maestro), el primer bloque del disco, que además + contiene una pequeña porción de código de arranque que la BIOS carga en + memoria y ejecuta para, tras una serie de pasos, arrancar un sistema operativo. + En general lo que hace este código es buscar una partición activa y cargar + el código de arranque en esta. +\end_layout + +\begin_layout Standard +Las particiones permiten tener distintos sistemas de ficheros en un mismo + disco, o incluso sistemas operativos distintos. + Por ejemplo, en Linux conviene tener al menos una partición para datos + con Ext4 y una +\series bold +partición de intercambio +\series default + usada para la memoria virtual. + También permite dar a cada partición un uso distinto, de modo que si hay + un error grave en el sistema de ficheros de una partición el resto siguen + siendo usables. +\end_layout + +\end_body +\end_document |
