Articulo de referencia

Bloque de control de archivos

Un Bloque de Control de Archivo ( FCB ) es una estructura del sistema de archivos que mantiene el estado de un archivo abierto . El sistema operativo gestiona un FCB, pero este ...

Un Bloque de Control de Archivo ( FCB ) es una estructura del sistema de archivos que mantiene el estado de un archivo abierto . El sistema operativo gestiona un FCB, pero este reside en la memoria del programa que utiliza el archivo, no en la memoria del sistema operativo. Esto permite que un proceso tenga tantos archivos abiertos simultáneamente como desee, siempre que disponga de suficiente memoria para un FCB por archivo.

El FCB tiene su origen en CP/M y también está presente en la mayoría de las variantes de DOS , aunque solo como medida de retrocompatibilidad en las versiones 2.0 y posteriores de MS-DOS . Un FCB completo tiene 36 bytes de longitud; en las primeras versiones de CP/M, tenía 33 bytes. Este tamaño fijo, que no podía aumentarse sin romper la compatibilidad de las aplicaciones, provocó que el FCB dejara de ser el método estándar para acceder a los archivos.

Los significados de varios campos en el FCB difieren entre CP/M y DOS, y también dependen de la operación que se esté realizando. Los siguientes campos tienen significados consistentes: [ 1 ]

El campo de 20 bytes que comienza en el desplazamiento 0x0C contenía campos que (entre otros) proporcionaban información adicional sobre el archivo: [ 2 ]

Las versiones más recientes de DOS utilizaron valores adicionales hasta que la nueva información ya no cabía en estos 20 bytes. Algunos bytes de "desplazamiento negativo" anteriores se extrajeron de los espacios reservados en la página cero de CP/M y el prefijo del segmento de programa de DOS para almacenar atributos de archivo. [ 1 ]

Uso

En CP/M, 86-DOS y PC DOS 1.x/MS-DOS 1.xx, el FCB era el único método para acceder a los archivos. Bajo DOS, algunas subfunciones INT 21h proporcionaban la interfaz para operar en archivos usando el FCB. [ 1 ] [ 3 ] [ 4 ] Cuando, con MS-DOS 2, se hicieron preparativos para admitir múltiples procesos o usuarios, [ 3 ] [ 4 ] usar otros sistemas de archivos [ 3 ] [ 4 ] que no fueran FAT o compartir archivos [ 4 ] a través de redes en el futuro, se consideró que los FCB eran demasiado pequeños para manejar los datos adicionales requeridos para tales características [ 4 ] y, por lo tanto, se consideró que los FCB eran inadecuados para varias rutas de expansión futuras. [ 3 ] Además, no proporcionaban un campo para especificar subdirectorios. [ 3 ] Exponer datos relacionados con el sistema de archivos al espacio de usuario también se consideró un riesgo de seguridad. [ 4 ] Los FCB fueron reemplazados por identificadores de archivo , como los que se usan en UNIX y sus derivados. [ 3 ] Los identificadores de archivo son simplemente números enteros consecutivos asociados con archivos abiertos específicos.

Si un programa utiliza la API de identificador de archivo más reciente para abrir un archivo, el sistema operativo gestionará su estructura de datos interna asociada a ese archivo en su propia área de memoria. Esto tiene la gran ventaja de que estas estructuras pueden aumentar de tamaño en versiones posteriores del sistema operativo sin romper la compatibilidad con los programas de aplicación; su desventaja es que, dada la gestión de memoria bastante simple de DOS, se debe reservar espacio para tantas de estas estructuras como el programa que más archivos pueda necesitar durante el arranque y no se puede utilizar para ningún otro propósito mientras el equipo está en funcionamiento. Dicha reserva de memoria se realiza mediante la directiva FILES = en el archivo CONFIG.SYS . Este problema no ocurre con los FCB en DOS 1 o en CP/M, ya que el sistema operativo almacena toda la información que necesita sobre un archivo abierto dentro del FCB y, por lo tanto, no necesita utilizar ninguna memoria por archivo en el espacio de memoria del sistema operativo. Al utilizar FCB en MS-DOS 3 o posterior, el formato del FCB depende de si SHARE.EXE está cargado y de si el FCB se refiere a un archivo local o remoto y, a menudo, se refiere a una entrada SFT. Debido a esto, el número de FCB que se pueden mantener abiertos simultáneamente en DOS 3 o superior también está limitado, generalmente a 4; utilizando la directiva FCBS = en el archivo CONFIG.SYS, se puede aumentar más allá de ese número si es necesario. En DR-DOS , tanto FILES como FCBS provienen del mismo conjunto interno de estructuras de identificadores disponibles y se asignan dinámicamente según sea necesario. [ 5 ]

Los FCB eran compatibles con todas las versiones de MS-DOS y Windows hasta la introducción del sistema de archivos FAT32 . Windows 95 , Windows 98 y Windows Me no admiten el uso de FCB en unidades FAT32 debido a sus números de clúster de 32 bits, [ 4 ] excepto para leer la etiqueta del volumen. Esto provocó que algunas aplicaciones antiguas de DOS, como WordStar , fallaran en estas versiones de Windows.

La interfaz FCB tampoco funciona correctamente en Windows NT , 2000 , etc.; WordStar no funciona correctamente en estos sistemas operativos. Los emuladores de DOS DOSEMU y DOSBox implementan la interfaz FCB correctamente, por lo que permiten ejecutar programas antiguos de DOS que requieren FCB en sistemas operativos modernos.

Área de transferencia de disco

Una estructura de datos complementaria utilizada junto con el FCB era el Área de Transferencia de Disco (DTA). [ 2 ] Este es el nombre que se le da al búfer donde se leen o escriben los contenidos de los archivos (registros). Las funciones de acceso a archivos en DOS que utilizaban el FCB asumían una ubicación fija para la DTA, que inicialmente apuntaba a una parte del PSP (véase la siguiente sección); esta ubicación podía cambiarse llamando a una función de DOS, y los accesos posteriores a los archivos utilizaban implícitamente la nueva ubicación.

Con la eliminación del método FCB, las nuevas funciones de acceso a archivos que utilizaban identificadores de archivo también proporcionaron un medio para especificar un búfer de memoria para el contenido del archivo con cada llamada a la función, de modo que mantener búferes concurrentes e independientes (ya sea para archivos diferentes o para el mismo archivo) se volvió mucho más práctico.

Prefijo de segmento de programa e inicialización de programa

Cada ejecutable de DOS iniciado desde el shell ( COMMAND.COM ) se proporcionaba con una estructura de datos prellenada de 256 bytes llamada Prefijo de Segmento de Programa (PSP). Los campos relevantes dentro de esta estructura incluyen: [ 2 ]

Esta estructura de datos se encontraba al inicio del segmento de datos cuya dirección proporcionaba DOS al inicio del programa en los registros de segmento DS y ES. Además de proporcionar la línea de comandos del programa tal cual en la dirección 0x81, DOS también intentaba construir dos bloques FCB correspondientes a las dos primeras palabras de la línea de comandos, con el fin de ahorrarle trabajo al programador en el caso común de que estas palabras fueran nombres de archivo con los que operar. Dado que estos bloques FCB permanecían sin abrir, no se produciría ningún problema incluso si estas palabras de la línea de comandos no se referían a archivos.

La dirección inicial del DTA se configuró para superponerse al área del PSP (en la dirección 0x80) donde se almacenaban los argumentos de la línea de comandos, de modo que un programa necesitaba analizar esta área en busca de argumentos de la línea de comandos antes de invocar funciones de DOS que utilizaban el DTA (como leer un registro de archivo), a menos que el programa se encargara de cambiar la dirección del DTA a otra región de memoria (o no utilizar las funciones DTA/FCB en absoluto, que pronto quedaron obsoletas en favor de los identificadores de archivo).

Véase también

Referencias

  1. 1 2 3 "FCB - Bloque de control de archivos estándar de DOS" .
  2. 1 2 3 Rodríguez-Roselló, Miguel (1992). 8088-8086/8087 Programacion Ensamblador En Entorno MSDOS (en español). Ediciones Anaya Multimedia. ISBN 84-7614-128-9.
  3. 1 2 3 4 5 6 Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill ; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La enciclopedia de MS-DOS: versiones 1.0 a 3.2 . Por Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon ; Petzold, Charles ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (Edición completamente revisada ). Redmond, Washington, EE. UU.: Microsoft Press . ISBN  1-55615-049-0LCCN 87-21452 . OCLC 16581341 .​  (xix+1570 páginas; 26  cm) (NB. Esta edición se publicó en 1988 después de una extensa revisión de la primera edición de 1986, que fue retirada, por un equipo diferente de autores.)
  4. 1 2 3 4 5 6 7 Chappell, Geoff (enero de 1994). Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals . The Andrew Schulman Programming Series (1.ª impresión, 1.ª ed.). Addison Wesley Publishing Company . ISBN  978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5")) Erratas:
  5. ^ Pablo, Matías R. (30 de julio de 1997). NWDOS-TIP : consejos y trucos para Novell DOS 7, con un clic para deshacer detalles, errores y soluciones . Versión 157 (en alemán) (3 ed.). Archivado desde el original el 23 de agosto de 2017 . Consultado el 11 de enero de 2012 . {{cite book}}: |work=ignorado ( ayuda ) (Nota: NWDOSTIP.TXT es una obra exhaustiva sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características y aspectos internos no documentados. Forma parte de la colección MPDOSTIP.ZIP del autor, aún más extensa, que se mantuvo hasta 2001 y se distribuyó en muchos sitios en aquel entonces. El enlace proporcionado apunta a una versión anterior del archivo NWDOSTIP.TXT convertida a HTML).

Lecturas adicionales

  • Brown, Ralf D. , ed. (17 de julio de 2000). "210F: DOS 1+ - ABRIR ARCHIVO USANDO FCB" . Lista de interrupciones de Ralf Brown 61. ctyme.com. Archivado del original el 19 de junio de 2016.
  • Elliott, John C. (2002-12-29). "CP/M File Control Block" . Seasip.info . Archivado del original el 23-08-2017 . Recuperado el 23-08-2017 .
  • "CP/M Internals" . 23/08/2017. Archivado del original el 23/08/2017 . Consultado el 23/08/2017 .- Descripción detallada de CP/M FCB
Obtenido de " https://en.wikipedia.org/w/index.php?title=File_Control_Block&oldid=1260083507 "