DOS ¿era de 8 bits o de 16 bits?

Foro dedicado a PCs modernos. Desde Pentium 4 en adelante
Luna
Amiga 1200
Amiga 1200
Mensajes: 1974
Registrado: 01 Jun 2013, 16:21
Sistema Favorito: PC
primer_sistema: ZX81
consola_favorita: Sega Saturn
Primera consola: Atari 2600
Ubicación: Republica de catalunya
Gracias dadas: 30 veces
Gracias recibidas: 29 veces
Contactar:

DOS ¿era de 8 bits o de 16 bits?

Mensajepor Luna » 20 Jun 2013, 19:04

¿Por qué DOS, siendo de 8 bit podía ejecutar apps de 16 o 32 bits, pero para ejecutar un programa de 64 bits no basta con el ordenador de 64 bits? Recuerdo el DOS extender, no hacen win extenders?

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2970
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 326 veces
Contactar:

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor zup » 20 Jun 2013, 19:47

Lo primero, MS-DOS nunca ha sido de 8 bits, siempre ha sido de 16 bits. El sistema CP/M (del que DOS tuvo una "fuente de inspiración") sí tuvo versiones de 8 y 16 bits (CP/M 86).

Lo segundo, MS-DOS no soporta aplicaciones de 32 bits "nativamente". El truco de los DOS extenders es que al iniciar la ejecución (tras comprobar nimiedades como que el procesador sea de 32 bits y determinadas características estén activas o inactivas según necesite) saltan a modo protegido (32 bits) y después se interponen entre el programa y el MS-DOS. El programa se ejecuta a 32 bits, pero cuando se necesita una función de DOS (leer fichero, escribir fichero, leer la fecha... esas cosas) se llama al extender, el extender cambia temporalmente a modo 16 bits, ejecuta la función y después vuelve a modo 32 bits. Y, esto es importante, siempre que el procesador sea 80386 o superior (32 bits). 8086 y 80286 no te valen, son de 16 bits.

Anticipando tu siguiente pregunta... ¿podría ejecutarse código de 64 bits "casi nativamente" desde un sistema operativo de 32 bits? Depende. Lo primero de todo, y para esto no hay remedio, necesitarás un procesador de 64 bits. Lo segundo (y esto no lo sé) necesitarías una instrucción en el microprocesador que permita cambiar de modo 32 bits (el nativo) a 64 bits. Y, por último, necesitarás una buena razón para justificar la complejidad de ir saltando de 32 a 64 bits en un sistema operativo moderno.

Tomar el control casi total de un MS-DOS es fácil, sólo hay unas pocas cosas ejecutándose y es fácil asumir que toda la memoria y CPU es para tí. Un sistema operativo "moderno" suele tener muchos procesos ejecutándose a la vez, lo que implica que el kernel debe saber en todo momento qué memoria está asignada, qué se lee de los puertos y todas esas cosas. Teniendo que compartir CPU, memoria, accesos a puertos y todo eso con muchos programas, probablemente el micro pasaría más tiempo saltando de modo 32 a 64 y vuelta que ejecutando tu programa.

La decisión de usar un sistema de 64 bits y cambiar solo unas pocas cosas a 32 bits es mucho más sencilla de implementar, además ofrecer más rendimiento. Lo que ya no me gusta es que se hayan cepillado la compatibilidad con 16 bits.

Por último (lo pongo porque quizás el post sea algo lioso), hay tres formas de ejecutar las cosas (los nombres los he puesto yo, en mis propias palabras... nada de terminología técnica): nativamente (sistema operativo y programa usan el mismo juego de instrucciones), "casi nativamente" (el sistema operativo y el programa no usan el mismo juego de instrucciones, pero el procesador y el sistema operativo permiten cambiar entre ambos) y mediante emulación (o bien el sistema operativo o bien el micro no conocen el juego de instrucciones que usa el programa). En el primer caso, todo se ejecuta a toda velocidad y no hay cambios de modo; en el segundo todo se ejecuta a toda velocidad pero hay cambios de modo que gastan un poquito de CPU extra (lo que hacen los DOS extenders); en el tercer modo se tienen que emular todas las instrucciones, lo que necesita una solución software y un gasto extra de CPU (DOSBox en mi Raspberry Pi).

Y ya como bonus... me suena que si tienes un procesador que permita virtualización y las últimas versiones de VMWare o Virtualbox, con determinadas opciones podrías ejecutar una máquina virtual de 64 bits en un sistema operativo de 32 bits. Desde luego que no vas a conseguir el mismo rendimiento ni de coña, y además hay cosas que no van a funcionar (DirectX 7)... pero hace lo que tu pedías.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
dondiego
Atari 1040 STf
Atari 1040 STf
Mensajes: 984
Registrado: 30 May 2013, 22:05
Sistema Favorito: PC
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sony PlayStation 2
Primera consola: Atari 2600
Ubicación: Granada
Gracias dadas: 14 veces
Gracias recibidas: 72 veces

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor dondiego » 20 Jun 2013, 20:59

Amén.
Qué tiempos los del msdos 6.22 y el doom con el dos/4g. :) Que por cierto conseguí que funcionara en mi fraudetti 386 con 3 mb de ram con la memoria virtual de windows 3.1 cuando necesitaba 4 mb. Llevaba memoria con paridad que no tenían ni en italia. :evil:
Y en cuanto a la firma de luna, o me equivoco o eso no es un pony sino un unicornio hembra. :)

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor mcleod_ideafix » 20 Jun 2013, 22:15

zup escribió:necesitarías una instrucción en el microprocesador que permita cambiar de modo 32 bits (el nativo) a 64 bits. Y, por último, necesitarás una buena razón para justificar la complejidad de ir saltando de 32 a 64 bits en un sistema operativo moderno.

Desde DOS (o incluso desde el sector de arranque de un disquete) se puede saltar del modo real al modo de 64 bits directamente. Aquí explican cómo:
http://wiki.osdev.org/Entering_Long_Mode_Directly

Para pasar temporalmente del modo de 64 bits al modo real bastaría en principio con poner el bit 0 de CR0 a 0. En modo de 64 bits no existe el modo V8086, así que no puedes tener al DOS en una máquina virtual 8086 como sí se podía tener en 32 bits.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Alki
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 524
Registrado: 05 Jul 2006, 10:24
Gracias dadas: 3 veces
Gracias recibidas: 2 veces

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor Alki » 20 Jun 2013, 23:44

zup escribió:
Y ya como bonus... me suena que si tienes un procesador que permita virtualización y las últimas versiones de VMWare o Virtualbox, con determinadas opciones podrías ejecutar una máquina virtual de 64 bits en un sistema operativo de 32 bits. Desde luego que no vas a conseguir el mismo rendimiento ni de coña, y además hay cosas que no van a funcionar (DirectX 7)... pero hace lo que tu pedías.


no quiero desvirtuar el hilo, pero esto que comentas no es correcto, para poder virtualizar sistemas de 64 bit necesitas un procesador de 64 bits, y ademas que cuente con las extensiones intel vt o amdV.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor mcleod_ideafix » 21 Jun 2013, 00:03

Alki escribió:
zup escribió:
Y ya como bonus... me suena que si tienes un procesador que permita virtualización y las últimas versiones de VMWare o Virtualbox, con determinadas opciones podrías ejecutar una máquina virtual de 64 bits en un sistema operativo de 32 bits. Desde luego que no vas a conseguir el mismo rendimiento ni de coña, y además hay cosas que no van a funcionar (DirectX 7)... pero hace lo que tu pedías.


no quiero desvirtuar el hilo, pero esto que comentas no es correcto, para poder virtualizar sistemas de 64 bit necesitas un procesador de 64 bits, y ademas que cuente con las extensiones intel vt o amdV.

Lo que ha dicho es virtualizar un SO de 64 bits aunque el SO anfitrión (no el procesador) sea de 32 bits. Eso sí: es cierto que el procesador debe ser de 64 bits.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Alki
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 524
Registrado: 05 Jul 2006, 10:24
Gracias dadas: 3 veces
Gracias recibidas: 2 veces

Re: Porqué DOS, siendo de 8 bit podía ejecutar apps de 16 o

Mensajepor Alki » 21 Jun 2013, 00:45

mcleod_ideafix escribió:
Alki escribió:
zup escribió:
Y ya como bonus... me suena que si tienes un procesador que permita virtualización y las últimas versiones de VMWare o Virtualbox, con determinadas opciones podrías ejecutar una máquina virtual de 64 bits en un sistema operativo de 32 bits. Desde luego que no vas a conseguir el mismo rendimiento ni de coña, y además hay cosas que no van a funcionar (DirectX 7)... pero hace lo que tu pedías.


no quiero desvirtuar el hilo, pero esto que comentas no es correcto, para poder virtualizar sistemas de 64 bit necesitas un procesador de 64 bits, y ademas que cuente con las extensiones intel vt o amdV.

Lo que ha dicho es virtualizar un SO de 64 bits aunque el SO anfitrión (no el procesador) sea de 32 bits. Eso sí: es cierto que el procesador debe ser de 64 bits.


cierto, fue un lapsus en la lectura, pensaba que se referia al micro..

Luna
Amiga 1200
Amiga 1200
Mensajes: 1974
Registrado: 01 Jun 2013, 16:21
Sistema Favorito: PC
primer_sistema: ZX81
consola_favorita: Sega Saturn
Primera consola: Atari 2600
Ubicación: Republica de catalunya
Gracias dadas: 30 veces
Gracias recibidas: 29 veces
Contactar:

Re: DOS ¿era de 8 bits o de 16 bits?

Mensajepor Luna » 22 Jun 2013, 12:57

Vamos, que no existe... Veis el fallo? Tengo ordenador con capacidad de 64 bit, PERO tengo el O.S. de 32 bit, como tengo 4 GB de ram, con 64 bit me quedaría con 2 GBx64 con lo que me quedaría corto para hoy en dia... Y encima Win64 tiene problemas con software de 16 bit, tenía curiosidad, pero sin saciar se queda...

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: DOS ¿era de 8 bits o de 16 bits?

Mensajepor mcleod_ideafix » 22 Jun 2013, 13:21

Luna escribió:Vamos, que no existe... Veis el fallo?

¿Qué es lo que no existe? ¿Win extenders? Los DOS-extender existían por la sencilla razón de que el DOS no daba ningún tipo de soporte a 32 bits, y además como corría en modo real, un programa podia hacer lo que le diera en gana, por ejemplo, pasar a modo protegido. En Windows esto no ocurre, y todo el ordenador está bajo el control del SO, por lo que un programa no puede hacer todo aquello que quiera. Por otra parte, el soporte de 16 bits depende en parte de un modo del 80386 que se llama Virtual 8086, y que no existe, que yo sepa, en el modo de 64 bits.
Dar soporte a un programa para que pueda ejecutarse en modo de 16 bits desde un entorno de 64 bits implicaría, o bien emular por software esa ejecución (cosa factible pero que Microsoft no se ha molestado en hacer, porque basicamente tanto Intel como Microsoft quieren rematar YA el modo de 16 bits), o bien hacer pasar al procesador temporalmente a modo real, o a un modo de 32 bits "antiguo" con V8086. Lo primero tiene unas consecuencias a la seguridad gordísimas, y estaría descartado desde el principio. Lo segundo implicaría escribir todo un subsistema que permitiera al programa conmutar "temporalmente" al modo de 64 bits para usar los servicios del SO.

Luna escribió:Tengo ordenador con capacidad de 64 bit, PERO tengo el O.S. de 32 bit, como tengo 4 GB de ram, con 64 bit me quedaría con 2 GBx64

No entiendo este cálculo de 2GBx64. 4GB de RAM en un SO de 32 bits se ven como aproximadamente 3.2GB (dependiendo de la cantidad de cacharros PCI que tengas en el sistema)

Luna escribió:Y encima Win64 tiene problemas con software de 16 bit, tenía curiosidad, pero sin saciar se queda...

Porque Microsoft le quitó el subsistema de 16 bits. Sí, es un fastidio. Iba a ponerme Windows 64 bits, y pude comprobar que funciona con todo lo que tengo excepto... el software de instalación de mi programador universal. Sólo por eso tuve que ponerme Windows 7 de 32 bits, y la verdad es que al final y a la postre, ha sido para mejor. Eso de poder abrir una consola, escribir DEBUG, y en el prompt escribir db800:0 y que siga funcionando... no tiene precio :D
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
antoniovillena
Amiga 1200
Amiga 1200
Mensajes: 2013
Registrado: 16 Abr 2012, 21:22
Gracias recibidas: 8 veces

Re: DOS ¿era de 8 bits o de 16 bits?

Mensajepor antoniovillena » 22 Jun 2013, 13:34

No hay ningún fallo, los SOs nunca soportan aplicaciones o drivers de más bits para los que están pensados. En teoría con 32bits se pueden direccionar 4Gb, pero como Windows no aprovecha todo el mapeado, al final se queda en 3Gb la RAM aprovechable. La solución es instalar un SO de 64Gb y ejecutar las aplicaciones de 16 bits con DOSBOX o algún emulador similar.

Un SO de 64 bits ejecuta drivers de 64 bits y aplicaciones de 32 y 64bits. Las aplicaciones de 16 bits no se pueden ejecutar porque en modo de 64 bits quitaron todas las instrucciones raras de 16 bits, registros de segmentos (CS, DS, ES). Se mantienen en el modo de 32 bits, pero para eso tienes que instalarte un SO de 32 bits, uno de 64 bits está todo el tiempo en modo 64 bits. La idea es quitarse poco a poco la basura que antes se ha mantenido por temas de retrocompatibilidad. Si no lo hacen así, los procesadores se volverían muy complejos e ineficientes a lo largo del tiempo.


Volver a “PC Moderno”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados