|
|
||
|
"640K ought to be enough for anybody." Bill Gates, 1981 |
DOS, siglas de "Disk Operating System", surge como una interfaz de alto nivel entre el hardware y el usuario. Versiones posteriores permitirían realizar cierta administración de I/O, memoria y CPU, y convertirse en una interfaz entre el software y hardware.
Pensado inicialmente para salvar las dificultades asociadas al manejo y administración de los discos, ha ido cambiando y evolucionando hasta convertirse en un pequeño sistema operativo debidamente normalizado y ampliamente soportado.
Bill Gates y Paul Allen desarrollan un intérprete BASIC para el computador. Allen se incorpora a MITS y solicita a Gates una versión del intérprete que soporte discos flexibles (floppy drives). Para realizar esto, Gates se apoya en la utilización de una Tabla de Alojamiento de Archivos (File Allocation Table, FAT) residente en memoria y que posteriormente sería la base de MS-DOS.
Aparece el Intel 8086, que maneja datos tanto interna como externamente a 16 bits. Tiempo después aparecería una versión más barata: el 8088, éste se comunica externamente a 8 bits.
La mayoría de los periféricos de la época se comunica a 8 bits a la vez.
Digital Research trabaja sobre la siguiente versión del CP/M: CP/M-86. El trabajo se encuentra atrasado en su calendario, aunque la compañía no muestra ninguna prisa por su introducción.
IBM trabaja sobre un computador personal y decide usar lo que existe en el mercado a desarrollar todo por su cuenta. Basa su diseño en los microprocesadores de Intel y encarga a Microsoft el desarrollo de un BASIC en ROM para su computador. Este último sugiere un diseño basado en un microprocesador de 16 bits.
PosteriormenteIBM deja entrever la entrega de otros lenguajes de programación compilados, pero Microsoft indica que éstos requeriría del soporte de un sistema operativo más robusto al interconstruido en BASIC. Se sugiere la utilización del CP/M-86.
IBM establece negociaciones con Digital Research, a sugerencia de Microsoft, para adquirir el CP/M-86. Este no trabaja aún y difícilmente podría cumplir con el calendario de IBM, quien se inclina por un microprocesador de 8-bits por ser más barato y contar con un mercado de aplicaciones ya establecido.
Noviembre. A pesar de que XENIX es poderoso, resulta demasiado demandante de recursos y no es compatible con CP/M, Microsoft decide que trabajará sobre su propio sistema operativo. IBM concede.
Microsoft compra el 86-DOS. Tim Paterson hace algunos cambios apresurados. Se presenta el sistema operativo e IBM detecta bugs, por lo que decide reescribir varias rutinas. Esto lo acreedor compartir los derechos sobre éste.
Abril. Tim Paterson se une a Microsoft.
IBM designa al sistema operativo de Microsoft como DOS. Después de su aparición la industria lo llama PC-DOS y versiones posteriores vendidas por separado por Microsoft son comercializadas como MS-DOS.
Agosto. El IBM PC aparece. Basado en el 8088 (4.77 MHz), con 256KB en RAM y floppy de una cara de simple densidad (160KB, sectores de 512 bytes), rutinas de entrada/salida en ROM (BIOS, Basic Input/Output System). Pensado para funcionar con el aún no liberado CP/M-86, se vende junto con el MS-DOS (PC-DOS).
MS-DOS 1.0 (PC-DOS 1.0): 4000 líneas de código ensamblador (organizado en tres archivos: IBMBIO.COM, IBMDOS.COM, COMMAND.COM. Esencialmente se trata del 86-DOS.
PC-DOS 1.85.- Para uso interno de IBM.
MS-DOS 2.0 (PC-DOS 2.0): 20,000 líneas de código soportado por un equipo de 4 personas. Mantiene compatibilidad con MS-DOS v1.0 pero se trata de un sistema operativo diferente.
Se libera el CP/M-86. Se sugiere un precio de $495. Las aplicaciones de CP/M no pueden portarse con facilidad.
Aparecen los primeros clones de PCs y DOS:
MS-DOS 2.05: Soporte de juegos de caracteres internacionales.
MS-DOS 2.1 (PC-DOS 2.1): Destinada a la IBM PCjr. Corrige bugs de la versión 2.0.
MS-DOS 2.11: Combinación de v2.05 y v2.1. Rechazada por IBM, vende millones de copias y es traducida a 60 idiomas. Versiones arábicas son vendidas con protección de copia en hardware (dongle).
MS-DOS 2.2: Soporta el conjunto de caracteres koreano.
MS-DOS 2.25: Soporta juegos de caracteres koreano y japonés.
MS-DOS 3.0 (PC-DOS 3.0): 40,000 líneas de código y un equipo de 30 personas. Incluyó muchos bugs.
MS-DOS 3.1 (PC-DOS 3.1):
AT&T DOS 3.1: difiere en el tamaño de clusters y estructuras de FAT de MS-DOS 3.10.
Epson Equity y ComputerLand DOS 3.10: usan reglas de 3.x si las particiones superan los 32680 sectores (FAT de 16 bits), bajo esto usan las reglas de 2.x (FAT de 12 bits).
MS-DOS 3.2 (PC-DOS 3.2):
Zenith DOS 3.2 y Wyse DOS 3.2: Device driver interconstruido que maneja hasta 4 particiones de 32MB en un mismo disco duro.
Wyse DOS 3.21: soporta FAT de 32 bits.
MS-DOS 3.3 (PC-DOS 3.3):
Wyse DOS 3.31: maneja particiones sencillas de hasta 512MB (FAT de 32 bits).
Compaq DOS 3.31: soporta FAT de 32 bits.
Las Versiones de DOS entre 3.3 y 4.0 vendidas en Gran Bretaña usan otra numeración.
Microsoft crea un sistema operativo de modo real multitareas al que inicialmente denomina MS-DOS versión 4.0. Fue diseñado para el 8086, por lo que sólo cuenta con 640KB para mantener a todos los procesos y sistema operativo. El 8086 carece de modo protegido por lo que los procesos pueden colisionar. Pensado para facilitar la transición de MS-DOS a OS/2, resultó poco útil y nunca fue liberado. Una versión diferente ocupó su lugar. Algunas copias se venden en Europa para aplicaciones especiales.
MS-DOS 4.0 (PC-DOS 4.0):
Microsoft enfrenta una demanda de pantente en sobre el uso de la tecnología empleada en la elaboración del DOUBLESPACE.
Se reportan problemas de corrupción de la FAT en discos mayores a 100MB que han sido compactados con el DOUBLESPACE.
Las versiones vendidas directamente a fabricantes presentaban algunas diferencias que las hacian incompatibles con las versiones IBM (tomadas como el standard). Estas diferencias se debían a características propias de cada equipo o facilidades adicionales que se brindaban sobre la versión standard, como ejemplo tenemos a la DEC Rainbow que incorporaba el ANSY.SYS dentro del código principal y que soportaba floppys de una cara de cuadruple densidad.
Algunos clones de este sistema operativo han sido:
Las versiones distribuidas en forma de ROM han sido para los equipos:
Además del IBM PC, MS-DOS ha sido ejecutado en otros equipos. Ya sea por medio de tarjetas de expansión, hardware o por software de emulación, este sistema operativo a corrido en equipo Apple II, Commodore Amiga 2000, Macintosh II, IBM RT PC, Atari ST y PowerPC. Igualmente, otros sistemas lo incluyen en sus capacidades: OS/2, QNX (y algunos otros UNIX), Windows 95.
Diversas interfaces gráficas han sido creadas para DOS:
Para el usuario, DOS se compone de cuatro elementos:
El procesador de comandos se carga automáticamente junto con el sistema operativo. La configuración del ambiente se logra, durante el inicio de una sesión, con lo que se haya indicado en un archivo especial denominado CONFIG.SYS (si existe). El ambiente puede modificarse de forma limitada a nivel de comandos introducidos por teclado.
Para el desarrollo de programas, el sistema operativo incluye un intérprete de BASIC y un debuger que permite la creación y exploración de programas en ensamblador. El usuario se comunica con el sistema mediante comandos introducidos por teclado. Los comandos, incluyendo nombres de archivos ejecutables (.COM y .EXE) y archivos de comandos (.BAT), permiten la interacción con discos, directorios, archivos, operaciones de I/O y la ejecución de programas de aplicación.
Para DOS los discos están compuestos de lados, pistas y sectores. Los sectores se agrupan en clusters y la FAT muestra como los clusters son alojados a los archivos. Para que un disco pueda ser reconocido como tal debe prepararsele ("darle formato"). El comando FORMAT prepara los discos, llamando al driver adecuado (DOS 3.0+), para establecer la estructura física que DOS reconoce, es entonces cuando se crea un volumen.
Un volumen es un floppy o partición en el disco. Cada volumen se divide en sectores lógicos, cada uno residiendo en partes de pistas físicas. Las partes son determinadas por las diversas posiciones fijas de las cabezas de lectura y escritura. Los sectores son agrupados en clusters. El número es definido cuando al disco se le da formato y debe ser potencia de 2. La FAT encadena clusters para definir el contenido de un archivo. El espacio para archivos es alojado como se necesite, con un cluster a la vez y secuencialmente.
Cada volumen se divide en:
Las áreas 1 a 5 corresponden al sistema, el área 6 al usuario.
El sector lógico 0 de cada volumen (al crearse) es llamado sector de arranque (boot sector). Este reside en la pista 0, sector 1, lado 0 de cada diskette, disco duro o inicio de partición. Contiene:
JMP (E9h) más desplazamiento de 2 bytes; para DOS 3.0+ se utiliza la instrucción de salto que usa el contenido del registro SI (EBh) y desplazamiento de 1 byte seguido por la instrucción NOP (90h).Lo anterior puede verse fácilmente con el programa depurador DEBUG.COM. En el siguiente ejemplo de carga a partir de la dirección de memoria 100h, de la unidad B (0=A, 1=B, 2=C...), a partir del sector 0, un sector. A continuación se hace un vaciado de memoria (dump) a partir de la localidad 100h en pantalla.
C:> debug -l 100 1 0 1 -d 100 0E44:0100 EB 3C 90 4D 53 44 4F 53-35 2E 30 00 02 01 01 00 .<.MSDOS5.0..... 0E44:0110 02 E0 00 40 0B F0 09 00-12 00 02 00 00 00 00 00 ...@............ 0E44:0120 00 00 00 00 00 00 29 02-13 76 0C 4E 4F 20 4E 41 ......)..v.NO NA 0E44:0130 4D 45 20 20 20 20 46 41-54 31 32 20 20 20 FA 33 ME FAT12 .3 0E44:0140 C0 8E D0 BC 00 7C 16 07-BB 78 00 36 C5 37 1E 56 .....|...x.6.7.V 0E44:0150 16 53 BF 3E 7C B9 0B 00-FC F3 A4 06 1F C6 45 FE .S.>|.........E. 0E44:0160 0F 8B 0E 18 7C 88 4D F9-89 47 02 C7 07 3E 7C FB ....|.M..G...>|. 0E44:0170 CD 13 72 79 33 C0 39 06-13 7C 74 08 8B 03 13 7C ..ry3.9..|t....|
Cada cluster en la FAT indica:
Cada entrada en el directorio es de 32 bytes. Usándose:
El primer byte del nombre del archivo puede contener códigos indicando:
El byte del atributo puede indicar:
| 76543210 BITS | DOS v2.x |
|---|---|
| --------000 | Acceso de lectura |
| --------001 | Acceso de escritura |
| --------010 | Acceso de lectura/escritura |
| Para DOS v3.x+ | |
| --------000 | Acceso de lectura |
| --------001 | Acceso de escritura |
| --------010 | Acceso de lectura/escritura |
| ------X--- | Reservado |
| --000------ | Modo compartido-Modo de compatibilidad |
| --001------ | Modo compartido-acceso a lectura/escritura denegado |
| --010------ | Modo compartido-acceso a escritura denegado |
| --011------ | Modo compartido-acceso a lectura denegado |
| --100------ | Modo compartido-acceso completo permitido |
| 0---------- | Heredado por proceso hijo (Inherited by child processes) |
| 1---------- | Privado al proceso actual (Private to current process). |
Para DOS, un archivo es una cadena de bytes, no se asumen estructuras de registro o acceso. Pueden ser de datos o ejecutables, la extensión los identifica. Los archivos pueden ser accesados por File Control Block (FCB) y llamados a File Handles (>v2.0). El FCB usa un Buffer prestablecido (Disk Tranfer Area) normalmente en el segmento prefijo del programa y de 128 bytes de longitud. Los File Handles son enteros de 16 bits devueltos a la aplicación por DOS e indican en el llamado qué buffer se usará. Así, DOS usa buffers en memoria para cada operación de input/output y sólo requiere un apuntador al buffer de datos y un contador del número de bytes a leer o escribir, para hacer I/O.
Son 8 los File Handles por defecto, estos se incrementan mediante el CONFIG.SYS. Cuando se usa un File Handle internamente se crea un FCB que es usado únicamente por DOS. Existen 5 File Handles preasignados:
| Handle | Dispositivo estándar | Nombre del dispositivo |
|---|---|---|
| 0 | input | CON | 1 | output | CON | 2 | error | CON | 3 | auxiliar | AUX(serial port I/O) | 4 | printer | PRT(parallel port output) |
Los Device Drivers son programas que controlan la entrada y salida, manejan la comunicación entre el sistema operativo y los dispositivos de hardware. Cinco device drivers residentes controlan los dispositivos standard, estos están contenidos en el IBMBIO.COM (IO.SYS) y que forman al DOS BIOS. Los device drivers permiten usar dispositivos de dos tipos: de carácter (si maneja un byte a la vez) y de bloque (si trabaja con paquetes de bytes). Para DOS, los device drivers son tratados como archivos.
Un device driver se compone de: Device Header, Strategy Routine, Interrupt routine. El header mantiene un apuntador al siguiente device driver y apunta a las rutinas. La strategy manteniene un apuntador a las estructuras de datos mantenidas por MS-DOS y la interrupt realiza las operaciones de I/O.
Nuevos dispositivos o reemplazos pueden instalarse via el comando DEVICE (DOS 2.0+) en el CONFIG.SYS ia nivel boot.
Un filtro es un programa que procesa datos de entrada para poder producir una salida a algún archivo o dispositivo. Se tienen tres filtros: SORT, FIND, MORE.
En DOS, las salidas pueden ser redirigidas (usando <, >, <<, y >>), y los comandos entubarse (usando el pipe, |).
Para MS-DOS la memoria se organiza en:
Al ejecutarse un programa, la función EXEC causa que DOS aloje memoria, escriba el segmento prefijo, carge el nuevo programa y transfiera su control a éste. El programa llamador es el PROGRAMA PADRE, el programa llamado es el PROGRAMA HIJO. El hijo hereda los File Handles del que lo llama.
Jerárquicamente, el llamado de rutinas y devolución de datos está establecido de la siguiente forma:
Para la comunicación con el sistema los programas utilizan System Calls. Estos se dividen en interrupciones y funciones. El COMMAND.COM posee una parte residente, de inicialización, y transitoria. La parte residente maneja errores, interrupción de teclado y código para cargar la parte transitoria. La parte de inicialización se activa cuando se comienza a cargar un programa y procesa el AUTOEXEC.BAT . La parte transitoria tiene el procesador de archivos de comandos y los comandos internos. Controla la ejecución de comandos externos. Un archivo .COM consiste de código, datos, y área de pila. No es relocalizable, debe ser menor a 64KB y carga más rápido que un .EXE. Un archivo .EXE es relocalizable y posee un encabezado para ello. Separa datos de código.
| Last update: . |