stringtranslate.com

Bloque de control de archivos

Un bloque de control de archivos ( FCB ) es una estructura de sistema de archivos en la que se mantiene el estado de un archivo abierto. Un FCB es administrado por el sistema operativo, pero reside en la memoria del programa que usa el archivo, no en la memoria del sistema operativo. Esto permite que un proceso tenga tantos archivos abiertos a la vez como desee, siempre que pueda disponer de suficiente memoria para un FCB por archivo.

El FCB se origina en CP/M y también está presente en la mayoría de las variantes de DOS , aunque sólo como medida de compatibilidad con versiones anteriores de MS-DOS 2.0 y posteriores. Un FCB completo tiene una longitud de 36 bytes; en las primeras versiones de CP/M, era de 33 bytes. Este tamaño fijo, que no se podía aumentar sin romper la compatibilidad de las aplicaciones, llevó a la eventual desaparición del FCB como método estándar para acceder a archivos.

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

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

Las versiones más nuevas de DOS utilizaron más valores hasta que la nueva información ya no cabía en estos 20 bytes. Algunos bytes de "desplazamiento negativo" anteriores se extrajeron de espacios reservados en CP/M Zero Page y DOS Program Segment Prefix 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. 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 utilizaban el FCB asumían 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 de función, de modo que mantener búferes independientes y simultáneos (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