Índice ˇ Capítulo
13
ˇ Capítulo 15 ˇ Publicaciones
ˇ Saulo.Net
14-1 Introducción
Este capítulo muestra cómo graba ms-dos la información en los discos. Explica detalladamente cada una de las divisiones físicas propias de todo disco (caras, pistas, sectores) así como la estructura lógica creada por ms-dos al formatear un disco (sector de arranque, FAT, directorio raíz, área de datos).
Además, el capítulo es especialmente interesante por las órdenes Chkdsk y Scandisk. Estas órdenes de conocimiento imprescindible solucionan los errores producidos en un disco. Le conviene aprender a solucionar posibles problemas en su disco duro, pues se producen a menudo y pueden llegar a inutilizar el disco.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-2 El sistema de disco
El sistema de disco permite leer y grabar información de forma permanente. Esta formado por:
El disco. Dispositivo magnético que almacena la información.
La unidad de disco. Dispositivo mecánico que mueve las cabezas de lectura y escritura para acceder a toda la superfice del disco.
La controladora de disco. Dispositivo electrónico que transforma las peticiones del sistema operativo en movimiento de la unidad de disco.
En los discos duros, el disco y la unidad de disco forman un solo cuerpo cerrado herméticamente. No se puede utilizar más de un disco para la misma unidad de disco duro.
Por el contrario, las unidades de disco flexible y compacto admiten diversos discos para la misma unidad.
Las unidades de disco flexible se corresponden con los tipos de disquetes existentes: 5¼ DD, 5¼ HD, 3½ DD, 3½ HD y 3½ ED. Cada una de estas unidades admite el disquete indicado en su nombre y los inferiores de su mismo tamaño. Es decir, una disquetera de 3½ HD trabaja con discos de 3½ HD y 3½ DD. En cambio, una disquetera de 5¼ DD solamente admite discos de 5¼ DD.
Disquetera. Unidad de disco flexible.
Disquete. Disco flexible y su funda protectora.
El siguiente cuadro muestra los discos admitidos por cada unidad de disco flexible:
Las unidades de disco compacto se clasifican según su
velocidad de acceso a una información (en milisegundos) y su
velocidad de transferencia. La velocidad de transferencia de datos entre el disco compacto y el ordenador se rige por la
siguiente tabla:
| Tipo de unidad | Velocidad de transferencia | |
| Simple velocidad | 150 Kilobytes cada segundo. | |
| Doble velocidad | 300 Kb/seg | |
| Triple velocidad | 450 Kb/seg. | |
| Cuádruple velocidad | 600 Kb/seg. | |
| Velocidad x | 150 · x Kb/seg. |
Aunque es necesaria una controladora de disco para cada unidad, generalmente se comercializan tarjetas con varias controladoras integradas. El caso más común son tarjetas controladoras (se conectan a la placa base y unidades de disco) para dos unidades de disco flexible y dos unidades de disco duro. Sin embargo, la tendencia actual es incorporar las controladoras en la propia placa base. Las unidades de disco compacto se conectan como segundo disco duro o bien, a una tarjeta controladora propia.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-3 El disco
Es un soporte magnético que almacena información de forma permanente. La memoria, en cambio, es almacenamiento temporal. Los datos de la memoria se pierden al apagar el ordenador pero los datos de un disco quedan grabados aún sin corriente eléctrica.
La superficie de un disco se puede dividir según su estructura física o lógica.
Según su estructura física, se divide en:
Caras o cabezas.
Pistas o cilindros.
Sectores.
Según su estructura lógica, se divide en:
Sector de arranque.
FAT.
Directorio raíz
Área de datos.
Estructura física
Cada tipo de disco posee una estructura propia, determinada por el fabricante.
Los valores para los discos flexibles son fijos:
| 5 1/4 DD | 5 1/4 DD | 3 1/2 DD | 3 1/2 HD | 3 1/2 ED | |
| Caras | 2 | 2 | 2 | 2 | 2 |
| Pistas/Cara | 40 | 80 | 80 | 80 | 160 |
| Sectores/Pista | 9 | 15 | 9 | 18 | 36 |
Los valores de los discos duros dependen de su capacidad. Además, discos duros con igual capacidad y diferente fabricante pueden tener estructura física distinta.
Las caras son las superficies del disco que almacenan datos. Los disquetes actuales poseen dos caras: la superior y la inferior. Para acceder a cada cara del disco, las unidades poseen una cabeza de lectura/escritura por cada una.
Las pistas son anillos concéntricos en cada una de las caras. En los discos duros se denominan cilindros.
A su vez, las pistas se subdividen en sectores. En la mayoría de los discos un sector almacena 512 bytes de información.
Estructura lógica
Cada sistema operativo crea una estructura lógica distinta en sus discos. En este caso, estudiamos la estructura lógica creada por ms-dos.
El siguiente gráfico representa el desarrollo de un disco formateado, desde el primer sector hasta el último.
El propósito de esta estructura lógica es grabar y leer datos de la forma más eficiente posible. Cada una de las divisiones tiene un tamaño fijo según el disco y una misión específica para el sistema operativo.
La siguiente tabla muestra el sector de comienzo y cantidad de sectores ocupados por cada área en los cuatro disquetes más extendidos.
| 5 1/4 DD | 5 1/4 DD | 3 1/2 DD | 3 1/2 HD | |
| Sector comienzo sector de arranque | 0 | 0 | 0 | 0 |
| Longitud sector de arranque | 1 | 1 | 1 | 1 |
| Sector comienzo primera FAT | 1 | 1 | 1 | 1 |
| Sector comienzo segunda FAT | 3 | 8 | 6 | 10 |
| Longitud ambas FAT | 4 | 14 | 10 | 18 |
| Sector comienzo directorio raíz | 5 | 15 | 11 | 19 |
| Longitud directorio raíz | 7 | 14 | 7 | 14 |
| Sector comienzo área de datos | 12 | 29 | 18 | 33 |
| Longitud área de datos | 709 | 2372 | 1123 | 2848 |
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-4 Sector de arranque
Ocupa el primer sector del disco. Este sector dispone de un pequeño programa que busca los ficheros ocultos IO.SYS y MSDOS.SYS en el directorio raíz. Si los encuentra, carga el sistema operativo y si no, muestra alguna variante del conocido mensaje "Error, de disco de sistema. Reemplace y presione cualquier tecla".
Nota: Para crear un disquete de arranque utilice la orden Sys o también Format con el modificador /S.
El sector de arranque de cada disco posee, además, las siguientes informaciones:
Nombre y versión del sistema operativo.
Tipo de disco.
Número de caras del disco.
Número de sectores por pista.
Número de bytes por sector.
Número total de sectores.
Número de sectores en cada grupo.
Número de FAT's.
Número de entradas máximas en el directorio raíz.
Número de sectores ocupados por cada FAT.
Número de serie del disco.
Etiqueta del disco.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-5 Los grupos
El área de datos está dividida lógicamente en grupos. Los grupos, clusters o también llamados unidades de asignación tienen una correspondencia con los sectores del disco. En los disquetes de doble densidad, 2 sectores del área de datos forman un grupo. Pero en los disquetes de alta densidad, cada sector forma un grupo.
Los dos primeros grupos están reservados (grupos 0 y 1). El primer grupo disponible es el número 2.
Cada grupo puede almacenar información de un sólo fichero. Si un fichero no cabe en un sólo grupo, se utilizan varios -no necesariamente contiguos-.
En un disquete de 3½ HD, cada grupo almacena 512 bytes. Si crea un fichero de 1 byte, éste se almacena ocupando todo un grupo. Si luego crea otro fichero de 1 byte, éste empleará un nuevo grupo. Como vemos, el gasto del disco no es de 2 bytes sino de ¡1024 bytes!
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-6 La FAT
Es el índice del disco. Almacena los grupos utilizados por cada fichero, los grupos libres y los defectuosos.
Como hemos indicado anteriormente, un fichero puede usar varios grupos no consecutivos. Para seguir el rastro del fichero por el disco, el dos emplea la FAT.
La FAT o tabla de asignación de ficheros es de tal importancia en un disco que se graba por duplicado. Si la FAT se estropea, el dos no reconocerá la información del disco.
Vamos a verlo con un ejemplo. En un disquete vacío de 3½ HD creamos un fichero de 251 bytes llamado ROMANCE.TXT. Como el grupo es de 512 bytes, ROMANCE ocupa el primero disponible (grupo 2). La FAT contiene lo siguiente:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| 3 | (libre) | |
| 4 | (libre) | |
| 5 | (libre) | |
| ... | ... |
Luego, creamos otro fichero llamado SONETO.TXT de 632 bytes. Como no cabe en un sólo grupo, ocupa dos. LA FAT cambia automáticamente:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| 3 | 4 | |
| 4 | (final) | |
| 5 | (libre) | |
| ... | ... |
Es decir, SONETO empieza en el grupo 3, continúa en el 4 y finaliza.
Ahora, borramos el fichero ROMANCE.TXT. El dos marca como libres los grupos ocupados por el fichero (en este caso, el grupo 2).
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (libre) | |
| 3 | 4 | |
| 4 | (final) | |
| 5 | (libre) | |
| ... | ... |
Para finalizar, creamos un nuevo fichero con 606 bytes de tamaño y de nombre RECUERDO.TXT. ms-dos busca el primer grupo disponible y lo utiliza. Como no cabe en un sólo grupo, busca otro y también lo utiliza. La FAT queda de esta forma.
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | 5 | |
| 3 | 4 | |
| 4 | (final) | |
| 5 | (final) | |
| ... | ... |
El fichero RECUERDO ha quedado fragmentado en dos grupos no contiguos: el 2 y el 5.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-7 El directorio raíz
Esta área almacena las entradas del directorio raíz. Cada entrada consta de los siguientes campos:
| Nombre | Extensión | Atributos | Reservado | Hora | Fecha | Grupo 1º | Tamaño |
| (8 bytes) | (3 bytes) | (1 byte) | (10 bytes) | (2 bytes) | (2 bytes) | (2 bytes) | (4 bytes) |
Cada entrada es almacenada en disco como un conjunto de 32 bytes. Todos los campos menos el nombre y extensión se codifican para ahorrar espacio. Por ejemplo, el campo de la hora con sólo 2 dígitos almacena horas, minutos y segundos.
El directorio raíz (descodificado) del último ejemplo es el siguiente:
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| RECUERDO | TXT | A | 17:00:06 | 31/08/95 | 2 | 606 |
| SONETO | TXT | A | 16:58:02 | 31/08/95 | 3 | 632 |
Notas: La orden Dir muestra los campos nombre, extensión, hora, fecha y tamaño. Sin embargo no muestra los segundos del campo hora. La orden Attrib muestra los campos nombre, extensión y los atributos de sólo lectura (R), oculto (H), sistema (S) y archivar (A).
Los subdirectorios del raíz se comportan como ficheros. Aunque parezca extraño, para el dos un directorio es un fichero cuyo nombre es el nombre del directorio y cuyo contenido son las entradas del directorio. Para diferenciar a los subdirectorios de los ficheros, el dos coloca un atributo especial a los subdirectorios (D).
Además, el directorio raíz contiene la etiqueta del disco. La etiqueta ocupa una entrada más y posee un atributo característico (E). Recuerde como el nombre de una etiqueta no puede sobrepasar los 11 caracteres (8 + 3).
Nota: La etiqueta de un disco se almacena en dos lugares distintos: sector de arranque y directorio raíz.
Si al disco del ejemplo anterior, le creamos un subdirectorio llamado TEXTOS y además, le ponemos la etiqueta "CAPITULO-14", el directorio raíz será el siguiente:
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| RECUERDO | TXT | A | 17:00:06 | 31/08/95 | 2 | 606 |
| SONETO | TXT | A | 16:58:02 | 31/08/95 | 3 | 632 |
| TEXTOS | D | 17:20:10 | 31/08/95 | 6 | 0 | |
| CAPITULO | -14 | E | 17:22:36 | 31/08/95 | 0 | 0 |
| (libre) | ||||||
| ... |
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-8 El área de datos
Almacena todos los subdirectorios y ficheros del disco. El área de datos se divide en un número fijo de grupos dependiendo del tipo de disco. Cuando alguien habla del tamaño de un disco, en realidad, se refiere al tamaño del área de datos. En el área de datos de un disquete de 3½ HD caben 1,44 Mb.
La orden CHKDSK
Tiene dos misiones principales: mostrar información relativa al disco y corregir errores del disco (ver más adelante).
Un listado de la orden Chkdsk en un disquete de 3½ HD puede ser el siguiente:
A:\>chkdsk
El volumen CAPITULO-14 se creó el 31/08/1995 a las 17:22
El número de serie del volumen es 11F5-1441
1.457.664 bytes de espacio total en disco
512 bytes en 1 directorio(s)
2.560 bytes en 3 archivo(s) de usuario
1.454.592 bytes disponibles en el disco
512 bytes en cada unidad de asignación
2.847 total de unidades de asignación en el disco
2.841 unidades de asignación disponibles en disco
655.360 bytes de memoria total
627.040 bytes libres
La primera línea obtiene la información de la entrada con atributo E en el directorio raíz. El número de serie del disco lo encuentra leyendo el sector de arranque.
La siguiente línea muestra la capacidad total del área de datos. "Bytes en x directorio(s)" apunta los bytes consumidos por los subdirectorios (sin contar el raíz). Debe ser múltiplo del tamaño del grupo. La línea "bytes en x archivo(s) de usuario" indica los bytes ocupados por el total de ficheros en el disco. Debe ser múltiplo igualmente del tamaño del grupo. Si dividimos 2560 entre 512 obtenemos 5 grupos utilizados por ficheros. Los bytes disponibles se obtienen restando de la capacidad total, los bytes usados (1.457.664 - 512 - 2560 = 1.454.592)
El siguiente bloque de texto muestra información sobre los grupos o unidades de asignación. Como ya sabemos, los grupos de un disquete de 3½ HD almacenan un máximo de 512 bytes. Restando los grupos totales menos los grupos disponibles, tenemos los grupos usados (2.847 _ 2.841 = 6). Seis grupos usados: cinco en ficheros y uno en subdirectorios.
El último bloque informa sobre la memoria convencional.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-9 Estructura lógica de los discos duros
Los discos duros presentan una serie de diferencias frente a la estructura lógica de los discos flexibles:
Tienen una tabla de particiones en el primer sector.
Pueden crearse de una a cuatro particiones.
Poseen tantos sectores de arranque como particiones.
Las particiones son divisiones lógicas efectuadas en un disco duro. Responden a una necesidad muy importante en informática: compartir un mismo disco duro para varios sistemas operativos. Cada partición tiene la estructura lógica correspondiente a su sistema operativo. Una partición dos contiene sector de arranque, FAT, directorio raíz y área de datos. Los datos de una partición no se mezclan con los de otra.
Si se preparan varias particiones es necesario establecer una partición como activa. La partición activa es la que arranca al encender el ordenador.
En el primer sector de todo disco duro se sitúa una tabla de particiones con el siguiente formato.
| Concepto | Bytes ocupados | |
| (reservado) | 445 bytes | |
| Entrada de la partición 1 | 16 bytes | |
| Entrada de la partición 2 | 16 bytes | |
| Entrada de la partición 3 | 16 bytes | |
| Entrada de la partición 4 | 16 bytes |
La entrada de cada partición contiene los siguientes campos:
| Campo | Bytes ocupados | |
| Partición activa o no | 1 byte | |
| Cabeza primer sector de la partición | 1 byte | |
| Cilindro y sector del primer sector | 2 bytes | |
| Tipo de partición: DOS, XENIX... | 1 byte | |
| Cabeza último sector de la partición | 1 byte | |
| Cilindro y sector del último sector | 2 bytes | |
| Primer sector de la partición | 4 bytes | |
| Longitud de la partición en sectores | 4 bytes |
Nota: Para cambiar las particiones, se utiliza la orden Fdisk.
Cuando el ordenador arranca, busca en la tabla de particiones la partición activa y cede el control al sector de arranque de dicha partición.
Índice ˇ Subir ˇ Publicaciones ˇ Saulo.Net
14-10 Corrección de errores en los discos
Para corregir errores producidos en un disco por mal uso o por defectos del hardware o software se emplea la orden Chkdsk (hasta la versión 6.0) o Scandisk (desde la 6.2)
Scandisk detecta y corrige los siguientes problemas en un disco sin comprimir:
Las FAT's no coinciden.
Estructura del directorio incorrecta.
Sistema de ficheros incorrecto (cadenas perdidas y vínculos cruzados)
Errores físicos en el disco.
Chkdsk detecta únicamente los siguientes errores. Para corregirlos es necesario añadir el modificador /F.
Estructura del directorio incorrecta.
Sistema de ficheros incorrecto (cadenas perdidas y vínculos cruzados)
Para verificar el disco duro C:, escriba lo siguiente según su versión de ms-dos:
Hasta la versión 6.0
C:\>chkdsk /f
Si detecta algún error, Chkdsk pide confirmación al usuario antes de solventarlo. Si el disco es correcto, Chkdsk muestra información del disco y termina.
Desde la versión 6.2
C:\>scandisk
Scandisk comprueba en primer lugar la estructura lógica del disco y en segundo lugar, la estructura física. Si detecta alguna anomalía, Scandisk ofrece una explicación detallada del problema antes de resolverlo. Si se encargó solucionar el error, Scandisk ofrece la posibilidad de crear un disquete Deshacer. Un disquete Deshacer permite restaurar un disco a su estado original si éste funciona peor después de la reparación efectuada. Para ello escribimos SCANDISK /UNDO.
Verificar el disco duro frecuentemente es una tarea más que necesaria. Los errores lógicos o físicos pueden producirse por diversos motivos: no salir adecuadamente de las aplicaciones, apagar el ordenador a mitad de una operación, un corte de suministro eléctrico, fallo de la parte mecánica del disco duro, programas defectuosos...
Por estas razones debe solucionar los posibles errores antes de que sea demasiado tarde. Una colección de pequeños errores pueden inutilizar el disco.
Si dispone de una versión de ms-dos anterior a la 6.0 agregue la siguiente línea al AUTOEXEC.BAT para que el disco duro sea chequeado en cada arranque del sistema.
CHKDSK C: /F
Si su versión es posterior a la 6.2 coloque la siguiente línea en el AUTOEXEC.BAT
SCANDISK C: /CUSTOM
A continuación se describen los errores detectados por Chkdsk y Scandisk.
Las FAT's no coinciden.
Debido a la vital importancia de este área, se encuentra almacenada en dos lugares diferentes. Si Scandisk detecta alguna diferencia entre ambas copias, actualiza la segunda copia con los datos de la primera.
Estructura del directorio incorrecta.
Chkdsk y Scandisk revisan las entradas de los directorios comparándolas con la FAT. Si detectan un carácter no válido o un dato incorrecto en alguna entrada, se lo comunican al usuario.
Imagine un disco de 3½ HD con las siguientes informaciones:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| 3 | (libre) | |
| ... | ... |
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| PRUEBA | TXT | A | 10:15:28 | 01/01/96 | 2 | 711 |
El fichero PRUEBA.TXT, según el directorio raíz, empieza en el grupo 2. Observando la FAT, el grupo 2 es el último del fichero. Sin embargo, un grupo equivale a 512 bytes y el fichero tiene 711 bytes. Para solucionar el problema, Scandisk o Chkdsk cambian el valor 711 por 512.
Cadenas perdidas
Son informaciones del área de datos no asignadas a ningún fichero.
Suponga un disco de 3½ HD con el siguiente contenido:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| 3 | (final) | |
| 4 | 5 | |
| 5 | (final) | |
| ... | ... |
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| FICH1 | TXT | A | 09:40:00 | 03/06/96 | 2 | 250 |
| FICH2 | TXT | A | 10:41:02 | 03/06/96 | 3 | 372 |
El grupo 4 y 5 se encuentran en la FAT como usados. Sin embargo, ningún fichero se hace responsable de estas informaciones. Por tanto, los grupos 4 y 5 forman una cadena perdida. Para solucionarlo, tanto Chkdsk como Scandisk ofrecen dos posibilidades: borrar o recuperar.
Si borramos, los grupos 4 y 5 se marcan en la FAT como libres:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| 3 | (final) | |
| 4 | (libre) | |
| 5 | (libre) | |
| ... | ... |
Si recuperamos, ms-dos asigna un nombre de fichero a la cadena perdida. A la primera cadena recuperada la llama FILE0001.CHK y así sucesivamente:
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| FICH1 | TXT | A | 09:40:00 | 03/06/96 | 2 | 250 |
| FICH2 | TXT | A | 10:41:02 | 03/06/96 | 3 | 372 |
| FILE0001 | CHK | A | 11:42:04 | 03/06/95 | 4 | 1024 |
Generalmente las cadenas perdidas recuperadas no tienen ninguna utilidad y se pueden borrar simplemente. Este error se produce frecuentemente al apagar el ordenador sin salir de una aplicación.
Vínculos cruzados
Se produce cuando un mismo grupo es compartido por varios ficheros.
El siguiente disco posee el grupo 2 común a los ficheros FICH1.TXT y FICH2.TXT
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | (final) | |
| ... | ... |
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| FICH1 | TXT | A | 10:02:18 | 01/01/96 | 2 | 160 |
| FICH2 | TXT | R | 10:03:22 | 01/01/96 | 2 | 450 |
El siguiente disco de 3½ HD posee un vínculo cruzado a nivel de FAT. El grupo 3 es compartido por dos ficheros.
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | 3 | |
| 3 | (final) | |
| ... | ... |
| Nombre | Ext. | Atrib. | Hora | Fecha | Grupo 1º | Tamaño |
| FICH1 | TXT | A | 12:22:00 | 01/01/96 | 2 | 800 |
| FICH2 | TXT | A | 12:24:08 | 01/01/96 | 3 | 257 |
Para solventar un vínculo cruzado, Chkdsk o Scandisk copian el grupo común a otro lugar del disco. El segundo fichero implicado se dirige al nuevo lugar, rompiendo el cruzamiento.
Errores físicos
Se origina un error físico en un sector del disco cuando ese sector no almacena datos de forma segura.
Si Scandisk encuentra un sector defectuoso en el sector de arranque, FAT o directorio raíz, no puede hacer nada y el disco queda inservible.
En cambio, si encuentra un grupo defectuoso en el área de datos, Scandisk copia la información existente a lugar seguro y marca en la FAT ese grupo como defectuoso.
La siguiente FAT corresponde a un disco con el grupo 3 defectuoso. ms-dos evitará ese bloque en todas las operaciones de escritura:
| Grupo | Valor | |
| 0 | (reservado) | |
| 1 | (reservado) | |
| 2 | 4 | |
| 3 | (defectuoso) | |
| 4 | (final) | |
| ... | ... |
Índice ˇ Subir ˇ Capítulo15 ˇ Publicaciones ˇ Saulo.Net