0% encontró este documento útil (0 votos)
25 vistas103 páginas

Sistema de Archivos

Cargado por

norapala462
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas103 páginas

Sistema de Archivos

Cargado por

norapala462
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 103

Sistemas de archivos

Archivo
■ Es un conjunto de datos al que se le asigna
un nombre.
■ Normalmente reside en un dispositivo de
almacenamiento secundario.
■ Se puede manipular como una unidad.

2
Operaciones sobre archivos
■ Abrir
■ Cerrar
■ Crear
■ Destruir
■ Copiar
■ Renombrar
■ Listar

3
Archivos
■ Los elementos de información individuales
en un archivo se pueden manipular con
operaciones como:
⚪ Leer
⚪ Escribir
⚪ Modificar
⚪ Eliminar
⚪ Insertar

4
Archivos
■ Volatilidad: Frecuencia con que se cambia
la información de un archivo.
■ Actividad: Porcentaje de registros a los que
se tuvo acceso en un período dado.
■ Tamaño

5
File System
■ Un componente fundamental en cualquier SO es
el sistema de archivos.
■ Los FS contienen:
⚪ Métodos de acceso
⚪ Administración de archivos
⚪ Administración de almacenamiento secundario
⚪ Mecanismos de integridad de los archivos

6
File system
■ El FS se ocupa de administrar el espacio de
almacenamiento secundario, sobre todo espacio
en disco.
■ Aquí aparecen los conceptos de:
⚪ Cuenta
⚪ Dueño
⚪ Permisos
⚪ Estructura jerárquica del FS
■ Un SO puede dar seguridad de archivos (y ser
multiusuario) sólo si su FS lo permite.

7
Funciones del FS
■ Se debe poder:
⚪ Crear, modificar y eliminar archivos.
⚪ Compartir archivos selectivamente.
⚪ Al compartir, se deben ofrecer varios tipos de
acceso controlados: lectura, escritura, etc.
⚪ Agrupar los archivos en una estructura
jerárquica.
⚪ Transferir información entre archivos.
⚪ Respaldo y recuperación.
⚪ Nombres simbólicos en sustitución de los
físicos.
⚪ Cifrado.
⚪ Interfaz amable con el usuario, vista lógica
8
adecuada.
Bloques y buffers
■ Bloque o registro físico: unidad de
lectura/escritura para un dispositivo.
■ Registro lógico: unidad de lectura/escritura
para el usuario.
■ Pueden relacionarse 1 a 1, n a 1 o 1 a n.

9
Organización de archivos
■ Refiere a la forma en que se acomodan los registros en un
archivo en el almacenamiento secundario.
■ Los métodos más comunes:
⚪ Secuencial: Los registros se colocan en orden físico. OK
para cintas (secuenciales).
⚪ Directo: Se obtiene acceso directo a los registros por su
dirección en el propio dispositivo.
⚪ Secuencial indizado: Registros ordenados en forma lógica
según un campo clave. Se manejan índices físicos y
lógicos.
⚪ De partición: organización en directorios.
■ Se llama volumen al medio de grabación.

10
Asignación y liberación de espacio
■ La fragmentación es el gran problema y
degrada la performance del sistema.
■ Para evitarla se pueden realizar
compactaciones y garbage collections.
■ Algunos FS ya optimizan al mover/copiar
(NTFS p/ej).

11
Distintas técnicas de asignación
■ Asignación contigua
⚪ Los archivos se asignan a zonas contiguas del almacenamiento
secundario.
⚪ Los usuarios especifican por adelantado el tamaño del área
requerida para guardar cierto archivo… y sólo se autoriza si hay
espacio (esto se ve claramente no es muy flexible).
⚪ Los directorios son fáciles de implementar, basta dar la dirección
de inicio y la longitud del archivo.

12
⚪ Desventajas:
■ Se generan huecos al asignar/borrar (fragmentación). Esto requiere
condensaciones periódicas, etc.
■ Cuando los archivos crecen dinámicamente, es inconveniente por ser
necesario reubicar continuamente los archivos.
Asignación no contigua
■ Contempla el problema del crecimiento dinámico
de los archivos.

14
Asignación de bloques
■ Maneja de forma más eficiente el almacenamiento
secundario.
■ Reduce el overhead en tiempo y espacio.
■ Es una mezcla de asignación contigua y no contigua.
■ Se asignan bloques de sectores contiguos.
■ Al asignar bloques nuevos, se busca asignar los más
cercanos físicamente.
■ Una forma de implementarlo es el encadenamiento
de bloques y el encadenamiento de bloques de índice
(figura)

15
Encadenamiento de bloques

16
● ventaja principal respecto a la asignación contigua, no posee tanta fragmentación (al borrar o crear
archivos)
● Desventaja los punteros ocupan espacio en los bloques y la pérdida de una referencia genera la pérdida de
gran parte de información.
Tiende a dejar fragmentos de los ficheros tras borrarlos, lo que con el
tiempo ralentiza las operaciones L/E.

FAT
No es redundante a fallos (ante fallos, como fallos eléctricos, puede dejar el
sistema en un estado incongruente).

Fue diseñado para ficheros de tamaño reducido.

No soporta permisos de seguridad.


Encadenamiento de bloques
de índice

19
● Los bloques se acceden de forma directa a través de un bloque de indexación.
● Debido a que el bloque de indexación ocupa espacio, pueden surgir varios bloques de indexación por
archivo.
“Algunos sistemas de archivos diferencian las letras mayúsculas de las
minúsculas, mientras que otros no. UNIX cae en la primera categoría;
MS-DOS en la segunda. Así, un sistema UNIX puede tener los
siguientes nombres como tres archivos distintos: maria, Maria y
MARIA. En MS-DOS, todos estos nombres se refieren al mismo
archivo.”
Dr Luis Castellanos. 2014. Sistemas Operativos: una Guía de Estudios
Control de acceso
■ Para el control de acceso existen normalmente
un conjunto de permisos, los que se habilitan o
deshabilitan según los usuarios.
■ Esto da lugar a una matriz de control de acceso.
■ También aparecen diferentes roles y grupos de
usuarios y categorías de archivos, para simplificar
la administración.
■ Aparece la figura del dueño de un archivo.

22
En caso de problemas…
■ El FS puede administrar ciertas redundancias, a
nivel de sus estructuras (duplicando partes vitales
por ejemplo), o a nivel del almacenamiento
común.
■ El SO puede dar mayor o menor soporte a los
respaldos o dejarlo en manos de herramientas
que corren sobre él.
■ Puede haber respaldos completos o
incrementales o combinación.

23
Bloque de paridad

Para explicarlo de una forma sencilla, la paridad es la suma de todos los


dispositivos utilizados en una matriz. Recuperarse del fallo de dispositivo es
posible leyendo los datos buenos que quedan y comparándolos con el dato de
paridad almacenado en el conjunto.

http://www.onraidservices.com/paridad.htm
■ No es un RAID técnicamente
hablando.
■ Sin respaldo de datos. Pero si
falla un disco solo se pierde la
información de él.
■ Datos espejados
■ La capacidad de
almacenamiento se
disminuye a la mitad
■ No ganamos rendimiento
■ Enfocado a la detección de errores de disco.
■ Actualmente no se utiliza.
■ Los discos antiguos no tenían detección de errores,
era necesario aplicar algoritmos de detección de
errores y guardar su resultado en un disco.
■ Los discos son sincronizados por la controladora y
funcionan como uno. Se lee info de los primeros
discos y se verifica su correctitud con la información
contenida en el disco ultimo.
■ A mayor cantidad de tipos de error, mayor cantidad
de discos de verificación.
■ Actualmente no se utiliza (el raid 4 es similar pero
dividiendo por bloques de datos)
■ Sincroniza la controladora para que los 3 primeros
discos trabajen como uno, guardando la información
como bytes (y no como bloque). Lo cual lo vuelve
muy veloz.
■ Puede reconstruir la info a través del disco de paridad
■ Similar a Raid 3 pero con bloques.
■ Permite reconstruir cuando falla un disco
■ Tiene una desventaja respecto a raid 5, que estresa
mucho el disco de paridad (al estar concentrado en
un único disco, pudiendo generar su ruptura)y no
distribuye las lecturas.
■ Incrementa rendimiento de lectura.
■ Se precisa poco espacio para backup (1 disco).
■ Sin embargo, ante fallas de múltiples discos, pierde
información.
■ Similar pero con tolerancia a dos discos rotos a la
vez.
Esquemas combinados

https://www.redeszone.net/2019/03/12/tipos-raid-nas/
Linux

Laboratorio 1.
UNIX
● 1965
Bell Telephone Laboratories y General Electric Company intervienen en el
proyecto MAC del MIT para desarrollar un nuevo sistema operativo
(MULTICS).
El cual tenía como objetivo ofrecer un sistema multiusuario, de gran
capacidad de almacenamiento y facilidades para compartir datos entre
procesos.
● 1969
Bell se retira del proyecto y desarrolla su propio sistema operativo para la
computadora PDP-7. El cual constituyó la primer versión de UNIX.
● 1971
Ritchie crea el lenguaje C (continuación de B, inspirado este último en BCPL
y FORTRAN).
● 1973
Se escribe en C la versión de UNIX
● 1974
Se introduce UNIX en las universidades con fines educativos
● 1977
Nace la primera versión comercial de UNIX, conocida como versión 6.
● 1981
Nace la primer versión de UNIX para computadoras personales.
Ventajas

★ Escrito en lenguaje de alto nivel C


★ Sistema jerárquico de procesos y
archivos
★ Interface con perifericos
★ Multiusuario y tiempo compartido
★ Adapta sus programas a cualquier
máquina (hardware) con UNIX
★ No está ligado a ningún fabricante de
computadoras particular
$ nombre [calificador] [argumento] [terminador]

● Nombre
nombre del comando
● Calificador
Posibles variaciones de actuación del comando.
● Argumento
Nombre del elemento (archivo, directorio, etc) sobre el que se quiere aplicar
el comando
● Terminador
Delimitador que sirve para separar comando

Ejemplo linux:

ls -ltrh /home ;

Nota,
--help | less
Herramientas

El sistema operativo UNIX proporciona al usuario una serie


de herramientas o programas de utilidad para el desarrollo
del software, como puede ser:

● Editor de Pantalla Vi
● CC compilador de C
● MAKE es un programa que acepta especificaciones de
las dependencias existentes entre módulos de un
programa y establece mecanismos para mantener las
versiones del programa, trasladando al resto de
módulos los cambios que se realicen en uno de ellos.
Es decir, nos ayuda a compilar los programas.
● AWK es el intérprete de un lenguaje de programación
cuyo fin es tabular, dar formato y pre procesar archivos
de datos.
Free Software Foundation
FSF-1985

La Free Software Foundation (FSF) es una organización sin fines de lucro con la
misión mundial de promover la libertad de los usuarios de computadoras.
Defendemos los derechos de todos los usuarios de software.
Free Software Foundation

“Linux y todo su desarrollo no tendría cabida si no hubiera existido el concepto de


Software Libre como lo pensó Richard Stallman que en 1985 crea la FSF. Y
publica el manifiesto GNU, de hecho uno de los principales objetivos de GNU era
precisamente desarrollar un sistema operativo libre del que Hurd (así lo llamó)
sería el núcleo (kernel).”
Principios

● La libertad de ejecutar el programa como lo desee, con cualquier propósito


(libertad 0).
● La libertad de estudiar el funcionamiento del programa y modificarlo de modo
que realice las tareas como usted desee (libertad 1). El acceso al código
fuente es un prerrequisito para esto.
● La libertad de redistribuir copias para ayudar a los demás (libertad 2).
● La libertad de distribuir copias de sus versiones modificadas a otras personas
(libertad 3). Al hacerlo da a toda la comunidad la oportunidad de beneficiarse
de sus cambios. El acceso al código fuente es un prerrequisito para esto.
LINUX
GNU LINUX

● GNU = GNU’s not UNIX


Sigue un diseño de tipo Unix y se mantiene compatible, pero se distingue de
UNIX por ser software libre y por no contener código de UNIX.
● Auspiciado por la FSF
● Con el tiempo, distintos grupos de personas empezaron a aunar esfuerzos
para crear lo que se conoce como distribuciones de Linux. La mayor parte de
estas distribuciones se diferenciaban solamente en los conjuntos de software
que incluyen. A medida que pasaba el tiempo, las diferentes distribuciones
diversificaron sus ofertas, añadiendo algunas veces software escrito
específicamente para las propias distribuciones (como utilidades de
empaquetamiento e interfaces gráficas) en un esfuerzo por diferenciarse del
resto.
Distribuciones

https://es.wikipedia.org/wiki/Distribuci%C3%B3n_Linux#/media/Archivo:Linux_Dist
ribution_Timeline.svg
Kernel
Repositorio
● “Un repositorio es un servidor accesible mediante internet que almacena paquetes y programas
para que nosotros los podamos descargar e instalar en nuestra distribución GNU-Linux.”
● sudo nano /etc/apt/sources.list
sudo apt-get update
Recopilación de distribuciones

https://distrowatch.com/
Comandos Básicos
File System
Archivos y directorios

● Archivos
Son los archivos del usuario (contienen programas, texto, etc)
● Directorios
Son particiones lógicas que a su vez son archivos que contienen la
información necesaria para poder encontrar un archivo en el disco
● Archivos Especiales
Se utilizan para designar periféricos de entrada y salida.

Cada archivo tiene asociado un conjunto de permisos que determinan qué puede
hacerse con él y quienes tienen acceso.
Permisos
https://blog.desdelinux.net/permisos-linux-administradores-desarrolladores-sistemas/
http://programacion.jias.es/2017/02/linux-unix-como-cambiar-permisos-en-archivos-o-directorios-chmod/
https://www.emezeta.com/articulos/10-comandos-para-trabajar-en-linux
Cat /etc/groups

Nombregrupo:x:140:lucas,gabriel, pepe

● X, es la contraseña cifrada
● 140 es el GID (group ID)
● Lucas, gabriel y pepe los integrantes
del grupo

$ sudo groupadd <grupo>

$ groups gabriel

$ sudo usermod -a -G <grupos> <usuario>


Otras Utilidades
Crontab

crontab -e

crontab -l
Relaciones de Confianza

ssh-keygen
Respaldos Rsync + crontab + relación
de confianza
Bibliografia

● Linux (6º Edición)


David Bandel/Robert Napier.
● Introducción a los Sistemas Operativos
Alcalde / Morera
● Linux La guia definitiva
Facundo Arena
● Linux Easy Steps
Mike Mcgrath
● WEBS
○ https://www.fsf.org/es
○ https://es.wikipedia.org/
○ https://geekland.eu/que-son-los-repositorios-en-linux/
○ https://blogcitochia.wordpress.com/2017/03/22/estructura-jerarquica-de-directorios-de-linux/
○ https://miro.medium.com/max/1760/1*ijflPgo4L7qWkePRclcQfA.png
○ https://es.wikipedia.org/wiki/GnuLinEx

Bash Scripting y
Regex
Scripts

● Lista de comandos reunidos en un archivo,


posibilitando su ejecución, de forma de
reutilizar el código.
● La filosofía de los scripts es la de crear
comandos complejos a partir de agrupar
comandos simples.

Bash Scripting
● Fusión entre programación y comandos de la shell.
● Busca automatizar las acciones repetitivas

Nota: Estas diapositivas muestran ejemplos prácticos sencillo, omite


información y posibilidades de Bash Scripting, tan solo para simplificar.
Primera Línea

● #!/bin/bash
○ #!
shebang, caracteres que se encuentran al inicio
de los programas ejecutables interpretados.
○ /bin/bash
Ruta completa al programa necesario para
ejecutar las instrucciones contenidas en el script.
○ Básicamente la línea “#!/bin/bash” referencia a
quien interpreta los comandos del script.
○ ¿Dónde está el bash?
which bash
Comentarios y mostrar en Pantalla

#!/bin/dash

# Esto es un comentario

echo Hola Mundo


Ejecución
● Guardar como archivo .sh
● Sea unejemplo.sh, se ejecuta:
○ ./unejemplo.sh

Variables

VaR1=a
VAR2=2
echo "Variables: $VaR1 $VAR2"

● Tener en cuenta que es “case sensitive”


● Los nombres de variable pueden únicamente contener letras, números o guión bajo y comenzar
con una letra o con el guión bajo.
Impresión de texto

#!/bin/bash

var1=que

var2=" tal ?"

echo "una salida"

echo "hola $var1 $var2"

echo "hola \$var1"

echo "hola 'que tal'"

Los caracteres encerrados entre comillas simples preservan su valor literal.


Impresión de texto

Algunos caracteres especiales

● \a alerta (speaker)
● \n nueva línea
● \\ imprimir barra

echo -e "\n linea 1 \n linea 2 \n"


Función con y sin parámetros

testfunction(){
echo "My first function"
}
testfunction

testfunction(){

echo $1

echo $2

}
testfunction "Hello" "World"
Lectura de línea

read valorPorTeclado

echo "Valor entrado por teclado: "$valorPorTeclado


condicional

read menuvalor
if [ $menuvalor = 1 ]; then
echo "Se ingresa la opcion 1"
elif [ $menuvalor = 2 ]; then
echo "Se ingresa la opcion 2 "
else
echo "no se ingresa una opcion
valida"
fi
Condicionales

-eq Igual -lt menor


if [ "$a" -eq "$b" ]
if [ "$a" -lt "$b" ]
-ne Distinto
-le menor o igual
if [ "$a" -ne "$b" ]
if [ "$a" -le "$b" ]
-gt Mayor

if [ "$a" -gt "$b" ]

-ge mayor o igual

if [ "$a" -ge "$b" ]


Iteración

#! /bin/bash

OPCION=0

while [ $OPCION -eq 0 ]; do

echo "itero"

read OPCION

done
Iteración

#!/bin/bash

for numero in {1..20};

do

echo Este es el número: $numero

sleep 5

done
apertura de archivo

while IFS= read -r line

do

echo "$line"

done < archivos.txt


Ejm. Crear Carpeta y archivo

mkdir unac

touch unac/una.txt

echo 'text here' >> unac/una.txt


REGEX

En cómputo teórico y teoría de lenguajes formales, una expresión regular, o


expresión racional, también conocidas como regex o regexp por su contracción de
las palabras inglesas regular expression, es una secuencia de caracteres que
conforma un patrón de búsqueda. Se utilizan principalmente para la búsqueda
de patrones de cadenas de caracteres u operaciones de sustituciones.

Las expresiones regulares proporcionan una manera muy flexible de buscar o


reconocer cadenas de texto. Por ejemplo, el grupo formado por las cadenas
Handel, Händel y Haendel se describe con el patrón "H(a|ä|ae)ndel".
Metacaracteres

^ $ . |{}[]()*+?\

Online Regex:
https://www.regextester.com/

https://www.freeformatter.com/regex-tester.html
El .

● a
Toma todas las a del texto.
● .
El punto puede referir a cualquier carácter.
● .a
Selecciona las a y el carácter precedente.
● ..a
Selecciona las a y dos caracteres precedentes.
\

\ transforma metacaracteres en caracteres.

● \.
muestra todos los puntos
Corchetes []

Se utiliza para seleccionar ocurrencias de caracteres (ejemplo [ab] agrupa todas


las a y b que aparezcan (inclusive por separado). De ser ab (sin paréntesis
cuadrados), detecta únicamente la combinación ab.

● [0123456789]
Selecciona todas las ocurrencias de numeros
● [a-z]
selecciona todas las ocurrencias de la ‘a’ a la ‘z’ minusculas.
● [0-9]
Selecciona todas las ocurrencias de numeros
Repetición ?

el ? implica que el carácter antecesor debe aparecer cero o una vez.

● 123?
reconocerá 12 , 123, pero no 1253 o 1233
Repetición +

el + implica que el carácter aparecerá una o más veces.

● 123+
reconocerá 123, 1233, 12333, etc
Repetición *

el * implica que el carácter aparecerá cero, una o más veces.

● 123*
reconocerá 12, 123, 1233, 12333, etc
Repetición {}

Define la cantidad de veces que debe aparecer lo que antecede

● [0-9]{4}
reconocerá cifras de 4 dígitos
^

Dentro de [^] implica exclusión

● [^0-9]
implica todo menos números
● por fuera de los paréntesis cuadrados, implica comienzo de linea.
$

Implica indicar el final del texto. es útil cuando se trata de archivos de varias
lineas.
Ejm

● (no|bu|oo)(t|k)
reconocerá not, but, oot, nok, buk, ook
● history | grep -E “sh$”
● history | grep -E "echo..[a-zA-Z0-9]*..>>.[a-zA-Z0-9]*.txt"
● history | grep -E "[0-9]{7}-[^0-9]"
Reconocer un mail...
(?:[a-z0-9!#$%&'*+/=?^_`{|}~
-]+(?:\.[a-z0-9!#$%&'*+/=?^_
`{|}~-]+)*|"(?:[\x01-\x08\x0b\x
0c\x0e-\x1f\x21\x23-\x5b\x5d
-\x7f]|\\[\x01-\x09\x0b\x0c\x0
e-\x7f])*")@(?:(?:[a-z0-9](?:[
a-z0-9-]*[a-z0-9])?\.)+[a-z0-9
](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?
:(2(5[0-5]|[0-4][0-9])|1[0-9][0-
9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-
5]|[0-4][0-9])|1[0-9][0-9]|[1-9]
?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\
x01-\x08\x0b\x0c\x0e-\x1f\x2
1-\x5a\x53-\x7f]|\\[\x01-\x09\
x0b\x0c\x0e-\x7f])+)\])
Cibergrafía

● https://overthewire.org/wargames/bandit/bandit2.html
https://www.youtube.com/watch?v=RUorAzaDftg
● https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
● https://www.robertoballester.com/pequeno-manual-sobre-expresiones-regular
es-regex/
● https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-addr
ess-using-a-regular-expression
● https://tldp.org/LDP/abs/html/comparison-ops.html
● https://explainshell.com/
103

También podría gustarte