stringtranslate.com

File Control Block

A File Control Block (FCB) is a file system structure in which the state of an open file is maintained. A FCB is managed by the operating system, but it resides in the memory of the program that uses the file, not in operating system memory. This allows a process to have as many files open at one time as it wants, provided it can spare enough memory for an FCB per file.

The FCB originates from CP/M and is also present in most variants of DOS, though only as a backwards compatibility measure in MS-DOS versions 2.0 and later. A full FCB is 36 bytes long; in early versions of CP/M, it was 33 bytes. This fixed size, which could not be increased without breaking application compatibility, led to the FCB's eventual demise as the standard method of accessing files.

The meanings of several of the fields in the FCB differ between CP/M and DOS, and also depending on what operation is being performed. The following fields have consistent meanings:[1]

The 20-byte-long field starting at offset 0x0C contained fields which (among others) provided further information about the file:[2]

Further values were used by newer versions of DOS until new information could no longer fit in these 20 bytes. Some preceding "negative offset" bytes were squeezed from reserved spaces in CP/M Zero Page and DOS Program Segment Prefix for storing file attributes.[1]

Usage

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. En DOS, algunas subfunciones de INT 21h proporcionaron la interfaz para operar con archivos usando el FCB. [1] [3] [4] Cuando, con MS-DOS 2, se hicieron preparativos para soportar múltiples procesos o usuarios, [3] [4] usar otros sistemas de archivos [3] [4] además de FAT o para compartir archivos [4 ] en las redes en el futuro, se consideró que los FCB eran demasiado pequeños para manejar los datos adicionales necesarios para tales funciones [4] y, por lo tanto, los FCB se consideraron inadecuados para diversas vías de expansión futuras. [3] Además, no proporcionaron un campo para especificar subdirectorios. [3] Exponer datos relacionados con el sistema de archivos al espacio del usuario también se consideró un riesgo de seguridad. [4] Los FCB fueron así reemplazados por identificadores de archivos , tal como se utilizan en UNIX y sus derivados. [3] Los identificadores de archivos son simplemente números enteros consecutivos asociados con archivos abiertos específicos.

Si un programa utiliza la API de manejo de archivos más nueva para abrir un archivo, el sistema operativo administrará su estructura de datos interna asociada con ese archivo en su propia área de memoria. Esto tiene la gran ventaja de que estas estructuras pueden crecer en 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 simplista de DOS, el espacio para tantas de estas estructuras como el programa más "hambriento de archivos" pueda utilizar debe reservarse en el momento del arranque y no puede utilizarse para ningún otro propósito mientras la computadora está funcionando. 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 CP/M, ya que el sistema operativo almacena todo lo que necesita saber sobre un archivo abierto dentro del FCB y, por lo tanto, no necesita usar ninguna memoria por archivo en la memoria del sistema operativo. espacio. Cuando se utilizan FCB en MS-DOS 3 o posterior, el formato FCB depende de si SHARE.EXE está cargado y de si el FCB hace referencia a un archivo local o remoto y, a menudo, hace referencia a una entrada SFT. Debido a esto, el número de FCB que se pueden mantener abiertos a la vez en DOS 3 o superior también está limitado, normalmente a 4; utilizando la directiva FCBS = en el archivo CONFIG.SYS, se puede aumentar más allá de ese número si es necesario. Bajo DR-DOS , tanto ARCHIVOS como FCBS provienen del mismo grupo interno de estructuras de identificadores disponibles y se asignan dinámicamente según sea necesario. [5]

Los FCB fueron 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, incluido 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 son una forma de ejecutar programas DOS antiguos que necesitan FCB en sistemas operativos modernos.

Área de transferencia de disco

Una estructura de datos complementaria utilizada junto con el FCB fue el Área de transferencia de disco (DTA). [2] Este es el nombre dado al búfer donde se leerá/escribirá el contenido del archivo (registros). Las funciones de acceso a archivos en DOS que usaban el FCB asumieron una ubicación fija para el DTA, inicialmente apuntando a una parte del PSP (consulte la siguiente sección); esta ubicación podría cambiarse llamando a una función de DOS, y los accesos posteriores a archivos utilizarán implícitamente la nueva ubicación.

Con la desaprobación del método FCB, las nuevas funciones de acceso a archivos que usaban identificadores de archivos también proporcionaron un medio para especificar un búfer de memoria para el contenido del archivo con cada llamada a función, de modo que mantener búferes simultáneos e independientes (ya sea para diferentes archivos 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 proporcionó con una estructura de datos precargada de 256 bytes de largo llamada Prefijo de segmento de programa (PSP). Los campos relevantes dentro de esta estructura incluyen: [2]

Esta estructura de datos se puede encontrar al comienzo del segmento de datos cuya dirección fue proporcionada por DOS al inicio del programa en los registros de segmento DS y ES. Además de proporcionar la línea de comando del programa palabra por palabra en la dirección 0x81, DOS también intentó construir dos FCB correspondientes a las dos primeras palabras en la línea de comando, con el propósito de ahorrarle trabajo al programador en el caso común en el que estas palabras eran nombres de archivos para operar. . Dado que estos FCB permanecieron sin abrir, no se produciría ningún problema incluso si estas palabras de la línea de comando no hicieran referencia a archivos.

La dirección inicial del DTA se configuró para superponer el área en la PSP (en la dirección 0x80) donde se almacenaban los argumentos de la línea de comando, de modo que un programa necesitaba analizar esta área en busca de argumentos de la línea de comando antes de invocar funciones de DOS que hacían uso del DTA (como leer un registro de archivo), a menos que el programa haya tenido cuidado de cambiar la dirección del DTA a alguna otra región de memoria (o no usar las funciones DTA/FCB por completo, que pronto quedaron obsoletas en favor de los identificadores de archivos).

Ver también

Referencias

  1. ^ abc "FCB - Bloque de control de archivos DOS estándar".
  2. ^ abc 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. ^ abcdef Zbikowski, Marcos ; Allen, Pablo ; Ballmer, Steve ; Borman, Rubén; Borman, Rob; Mayordomo, Juan; Carroll, tirada; Chambelán, Marcos; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Raquel; Eckhardt, Kurt; Evans, Eric; Granjero, Rick; Puertas, Bill ; Geary, Michael; Grifo, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; Rey, Adrián; Koch, caña; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc ; McKinney, Bruce; Martín, Pascal; Mathers, Estelle; Mateos, Bob; Melín, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, cresta; Pai, Sunil; Paterson, Tim ; Pérez, Gary; Peters, Chris; Petzold, Carlos ; Pollock, Juan; Reynolds, Aarón ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Breve, Antonio; Slivka, Ben; Sonríe, Jon; Fabricante de alambiques, Betty; Stoddard, Juan; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Asesores técnicos". La enciclopedia 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, Carlos ; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, furgoneta; Wong, William; Woodcock, JoAnne (edición completamente reelaborada). Redmond, Washington, Estados Unidos: Microsoft Press . ISBN 1-55615-049-0. LCCN  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 retirada de 1986 por parte de un equipo diferente de autores. [1])
  4. ^ abcdefg Chappell, Geoff (enero de 1994). Schulman, Andrés; Pedersen, Amorette (eds.). Partes internas de DOS . Serie de programación de Andrew Schulman (primera impresión, primera edición). Compañía editorial Addison Wesley . ISBN 978-0-201-60835-9.(xxvi+738+iv páginas, disquete de 3,5" [2][3]) Erratas: [4][5][6]
  5. ^ Paul, 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 ) (NB. NWDOSTIP.TXT es un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01 , que incluye la descripción de muchas características e componentes internos no documentados. Es parte de la colección MPDOSTIP.ZIP aún más grande del autor mantenida hasta 2001 y distribuido en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior convertida a HTML del archivo NWDOSTIP.TXT).

Otras lecturas