En el almacenamiento de datos informáticos , la asignación de letras de unidad es el proceso de asignar identificadores alfabéticos a los volúmenes . A diferencia del concepto de puntos de montaje de UNIX , donde los volúmenes se nombran y ubican arbitrariamente en un único espacio de nombres jerárquico, la asignación de letras de unidad permite múltiples espacios de nombres de nivel más alto. La asignación de letras de unidad es, por lo tanto, un proceso de uso de letras para nombrar las raíces del "bosque" que representa el sistema de archivos; cada volumen contiene un "árbol" independiente (o, para sistemas de archivos no jerárquicos, una lista independiente de archivos).
El concepto de letras de unidad, tal como se utiliza hoy en día, presumiblemente [ cita requerida ] debe sus orígenes a la familia de sistemas operativos VM de IBM , que se remonta a CP/CMS en 1967 (y su predecesor de investigación CP-40 ), a través de CP/M de Digital Research (DRI) . El concepto evolucionó a través de varios pasos:
A:README.TXT
, . (Esta fue la era de los disquetes de 8 pulgadas , donde esos espacios de nombres tan pequeños no imponían restricciones prácticas). Este uso estuvo influenciado por los prefijos de dispositivo utilizados en el sistema operativo TOPS-10 de Digital Equipment Corporation (DEC) . [2]La importante capacidad de los directorios jerárquicos dentro de cada letra de unidad no existía inicialmente en estos sistemas. Esta era una característica importante de UNIX y otros sistemas operativos similares, donde las unidades de disco duro almacenaban miles (en lugar de decenas o cientos) de archivos. La creciente capacidad de almacenamiento de los microordenadores condujo a su introducción, seguida finalmente por los nombres de archivo largos . En los sistemas de archivos que carecían de estos mecanismos de denominación, la asignación de letras de unidad resultó ser un principio de organización útil y sencillo.
MS-DOS/PC DOS desde la versión 5.0 y sistemas operativos posteriores, asigna letras de unidad según el siguiente algoritmo: [4]
10h
reconocidos. En particular, no se asignan letras a las "particiones ocultas" (aquellas cuyo ID de tipo se ha cambiado a un valor no reconocido, generalmente mediante la adición de ).Las versiones 4.0 y anteriores de MS-DOS/PC DOS asignan letras a todas las unidades de disquete antes de considerar los discos duros, por lo que un sistema con cuatro unidades de disquete llamaría al primer disco duro E:. A partir de DOS 5.0, el sistema garantiza que la unidad C: sea siempre un disco duro, incluso si el sistema tiene más de dos unidades de disquete físicas.
Si bien, sin una reasignación deliberada, las asignaciones de letras de unidad suelen ser fijas hasta el siguiente reinicio, sin embargo, Zenith MS-DOS 3.21 actualizará las asignaciones de letras de unidad al restablecer una unidad. Esto puede provocar que las letras de unidad cambien sin reiniciar si se modificó la partición del disco duro.
MS-DOS en la PC Apricot asigna letras a los discos duros, comenzando con A: , antes de considerar las unidades de disquete. Un sistema con dos de cada unidad llamaría a los discos duros A: y B: , y a los disquetes C: y D: .
En el PC-98 japonés , si el sistema se inicia desde un disquete, la versión dedicada de MS-DOS asigna letras a todas las unidades de disquete antes de considerar los discos duros; hace lo contrario si se inicia desde un disco duro, es decir, si el SO se instaló en el disco duro, MS-DOS asignaría esta unidad como unidad "A:" y un disquete potencialmente existente como unidad "B:". La versión japonesa del programa SETUP de Windows 95/AT admite una opción especial para hacer cumplir que Windows esté en la unidad C:.
Algunas versiones de DOS no asignan la letra de unidad, que comienza con C:, a la primera partición primaria activa reconocida en el primer disco duro físico, sino a la primera partición primaria reconocida del primer disco duro, incluso si no está configurada como activa.
Si hay más de una partición extendida en una tabla de particiones, solo se procesan las unidades lógicas en el primer tipo de partición extendida reconocido.
Algunas versiones recientes de DR-DOS IBMBIO.COM proporcionan una estructura de configuración previa al arranque, que contiene indicadores de bits para seleccionar (además de otros) entre varias estrategias de asignación de letras de unidad. Estas estrategias pueden ser preseleccionadas por un usuario o un OEM o pueden ser modificadas por un cargador de arranque sobre la marcha al iniciar DR-DOS. En estos casos, la unidad de arranque también puede ser diferente de A: o C:.
El orden de las letras de las unidades puede depender de si un disco determinado es administrado por un controlador de arranque o por un controlador cargado dinámicamente. Por ejemplo, si el segundo o tercer disco duro es de tipo SCSI y, en DOS, requiere controladores cargados a través del archivo CONFIG.SYS (por ejemplo, la tarjeta controladora no ofrece BIOS integrado o el uso de este BIOS no es práctico), entonces la primera partición primaria SCSI aparecerá después de todas las particiones IDE en DOS. Por lo tanto, DOS y, por ejemplo, OS/2 podrían tener letras de unidad diferentes, ya que OS/2 carga el controlador SCSI antes. Una solución fue no usar particiones primarias en esos discos duros.
En Windows NT y OS/2 , el sistema operativo utiliza el algoritmo mencionado anteriormente para asignar automáticamente letras a las unidades de disquete , unidades de disco óptico , el disco de arranque y otros volúmenes reconocidos que no son creados por un administrador dentro del sistema operativo. Los volúmenes que se crean dentro del sistema operativo se especifican manualmente y algunas de las letras de unidad automáticas se pueden cambiar. A los volúmenes no reconocidos no se les asignan letras y, por lo general, el sistema operativo no los modifica.
Un problema común que ocurre con la asignación de letras de unidad es que la letra asignada a una unidad de red puede interferir con la letra de un volumen local (como una unidad de CD/DVD recién instalada o una memoria USB). Por ejemplo, si la última unidad local es la unidad D: y una unidad de red se hubiera asignado como E:, entonces a un dispositivo de almacenamiento masivo USB recién conectado también se le asignaría la unidad E:, lo que causaría la pérdida de conectividad con el recurso compartido de red o el dispositivo USB. Los usuarios con privilegios administrativos pueden asignar letras de unidad manualmente para superar este problema. [5] Otra condición que puede causar problemas en Windows XP es cuando hay unidades de red definidas, pero en una condición de error (como lo estarían en una computadora portátil que funciona fuera de la red). Incluso cuando la unidad de red no conectada no es la siguiente letra de unidad disponible, Windows XP puede no poder asignar una unidad y este error también puede impedir el montaje del dispositivo USB. [ cita requerida ]
La aplicación del esquema analizado anteriormente en un sistema basado en Windows bastante moderno generalmente da como resultado las siguientes asignaciones de letras de unidad:
diskpart
. MS-DOS normalmente utiliza parámetros en la línea que carga los controladores de dispositivos dentro del archivo CONFIG.SYS .Letras de unidad específicas del caso:
\DEV
para archivos de dispositivos bajo MiNT , MagiC y MultiTOS . [8] [9]Cuando no hay una segunda unidad de disquete física, la unidad B: se puede utilizar como una unidad de disquete "virtual" asignada a la unidad física A: , por lo que se le solicitaría al usuario que cambie de disquete cada vez que se requiera una lectura o escritura a la unidad que se haya utilizado menos recientemente de A: o B: . Esto permite gran parte de la funcionalidad de dos unidades de disquete en una computadora que tiene solo una. Este concepto de múltiples letras de unidad que comparten un único dispositivo físico (opcionalmente con diferentes "vistas" de él) no se limita a la primera unidad de disquete, sino que también se puede utilizar para otras unidades configurando dispositivos de bloque adicionales para ellas con el DRIVER.SYS estándar de DOS en CONFIG.SYS .
A las unidades de red se les suelen asignar letras hacia el final del alfabeto. Esto se hace a menudo para diferenciarlas de las unidades locales: al utilizar letras hacia el final, se reduce el riesgo de un conflicto de asignación. Esto es especialmente cierto cuando la asignación se realiza automáticamente a través de una red (normalmente mediante un script de inicio de sesión).
En la mayoría de los sistemas DOS, no es posible tener más de 26 unidades montadas. Atari GEMDOS admite solo 16 letras de unidad , de la A: a la P :. La pila de controladores PCMCIA de PalmDOS admite las letras de unidad 0:, 1 :, 2 :, ... para direccionar las ranuras de unidad PCMCIA.
Algunos controladores de red de Novell para DOS admiten hasta 32 letras de unidad en versiones compatibles de DOS. Además, Novell DOS 7, OpenDOS 7.01 y DR-DOS 7.02 admiten realmente una LASTDRIVE=32
directiva CONFIG.SYS para asignar hasta 32 letras de unidad, denominadas A: a Z: , [: , \: , ]: , ^: , _: y `: . (DR-DOS 7.02-7.07 también admite directivas HILASTDRIVE
y LASTDRIVEHIGH
para reubicar estructuras de unidad en la memoria superior). Algunos programas de aplicación de DOS no esperan letras de unidad más allá de Z: y no funcionarán con ellas, por lo que se recomienda utilizarlas para fines especiales o para buscar unidades.
El procesador de línea de comandos 4DOS de JP Software admite letras de unidad más allá de Z: en general, pero como algunas de las letras entran en conflicto con extensiones sintácticas de este procesador de línea de comandos, es necesario escaparlas para poder usarlas como letras de unidad.
Windows 9x (MS-DOS 7.0/MS-DOS 7.1) también agregó soporte para LASTDRIVE=32
y .LASTDRIVEHIGH=32
Si se requiere acceso a más sistemas de archivos que Z: en Windows NT, se deben utilizar puntos de montaje de volumen . [11] Sin embargo, es posible montar unidades que no sean letras, como 1: , 2: o !: utilizando la SUBST
utilidad de línea de comandos en Windows XP o posterior (es decir, SUBST 1: C:\TEMP
), pero no se admite oficialmente y puede romper programas que asumen que todas las unidades son letras A: a Z: .
Las letras de unidad no son la única forma de acceder a diferentes volúmenes. DOS ofrece un comando JOIN que permite el acceso a un volumen asignado a través de un directorio arbitrario, similar al comando mount de Unix . También ofrece un comando SUBST que permite la asignación de una letra de unidad a un directorio. Uno o ambos de estos comandos se eliminaron en sistemas posteriores como OS/2 o Windows NT , pero a partir de Windows 2000 , ambos vuelven a ser compatibles: el comando SUBST existe como antes, mientras que la funcionalidad de JOIN está incluida en LINKD (parte del Kit de recursos de Windows ). En Windows Vista , se puede utilizar el nuevo comando MKLINK para este propósito. Además, Windows 2000 y posteriores admiten puntos de montaje, accesibles desde el Panel de control .
Muchos sistemas operativos originados en Digital Research proporcionan medios para asignar implícitamente unidades sustitutas, llamadas unidades flotantes en la terminología DRI, utilizando el comando CD/CHDIR en la siguiente sintaxis:
CD N:=C:\SUBDIR
DOS Plus admite esto para las letras de unidad N:, O : y P:. Esta característica también está presente en Concurrent DOS , Multiuser DOS , System Manager 7 y REAL/32 ; sin embargo, estos sistemas extienden el concepto a todas las letras de unidad no utilizadas de la A: a la Z:, excepto la letra de unidad reservada L:. [7] DR DOS 3.31 - 6.0 (hasta las actualizaciones de 1992-11 con BDOS 6.7 solamente) también admite esto, incluida la letra de unidad L:. Esta característica no está disponible en DR DOS 6.0 (actualización de 1992), PalmDOS 1.0, Novell DOS 7, OpenDOS 7.01, DR-DOS 7.02 y superiores. Las unidades flotantes se implementan en el núcleo BDOS, no en el shell de línea de comandos, por lo que se pueden usar y asignar también desde dentro de las aplicaciones cuando usan la llamada de sistema "cambiar directorio". Sin embargo, la mayoría de las aplicaciones DOS no conocen esta extensión y, en consecuencia, descartarán dichas rutas de directorio por considerarlas inválidas. El intérprete de línea de comandos 4DOS de JP Software admite unidades flotantes en sistemas operativos que también lo admiten.
En una característica similar, Concurrent DOS, Multiuser DOS, System Manager y REAL/32 asignarán dinámicamente una letra de unidad L: a la ruta de carga de una aplicación cargada, permitiendo así que las aplicaciones hagan referencia a los archivos que residen en su directorio de carga bajo una letra de unidad estandarizada en lugar de bajo una ruta absoluta. [7] Esta característica de unidad de carga facilita el movimiento de instalaciones de software en y entre discos sin tener que adaptar las rutas a superposiciones, archivos de configuración o datos de usuario almacenados en el directorio de carga o directorios posteriores. (Por razones similares, el apéndice al bloque de entorno asociado con las aplicaciones cargadas bajo DOS 3.0 (y superior) contiene también una referencia a la ruta de carga del ejecutable, sin embargo, esto consume más memoria residente y para aprovecharlo, el soporte para ello debe estar codificado en el ejecutable, mientras que la solución de DRI funciona con cualquier tipo de aplicaciones y también es completamente transparente para los usuarios). En algunas versiones de DR-DOS, la ruta de carga contenida en el apéndice al entorno pasado a los controladores se puede acortar a la de una unidad sustituta temporal (por ejemplo, SUBST B: C:\DIR
) a través de la opción INSTALL[HIGH]
/ (para en lugar de, digamos, ). Esto se puede utilizar para minimizar la huella de memoria efectiva de un controlador , si el ejecutable se encuentra en un subdirectorio profundo y el controlador residente ya no necesita su ruta de carga después de la instalación. [12] [13] [14] [15]LOADHIGH
/D[:loaddrive]
B:TSR.COM
C:\DIR\TSR.COM
MPDOSTIP.ZIP
colección aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace provisto apunta a una versión anterior del NWDOSTIP.TXT
archivo convertida a HTML).