DOS ¿era de 8 bits o de 16 bits?

Foro dedicado a PCs modernos. Desde Pentium 4 en adelante
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: DOS ¿era de 8 bits o de 16 bits?

Mensajepor dondiego » 22 Jun 2013, 13:44

Tampoco veo el fallo, bien explicado todo por los dos. Y ahora...

Recapitulando el dos nunca fue de 8 bit, el pc igual que el amiga, atari st y otros ya era cuando salió de 16 bits. Al hablar de ordenadores de 8 bits todos sabemos que el pc no estaba ahí. Los primeros que 'se vendieron' llevaban el 8088 que era una versión capada del 8086 al que ya de por si no tenían mucho que envidiarle los procesadores de 8 bit. Estas máquinas eran dinosaurios en todos los sentidos y muchos que hayan tenido la desgracia de lidiar con ellos en su dia no querrán verlos ni en fotos. Lo digo porque eran muy caros y muy lentos, lo único que importaba entonces era el tamaño del disco duro. Yo sin ir más lejos que tenía el spectrum probé el double dragon de pc que me lo pasaron en un disquete de 5.25 en el dino de mi padre, tenía 512 kb de ram y cga con 4 colores, un pase de diapositivas lentísimo a menos de 1 fps. También hay que tener en cuenta de que entonces pasaban muchos años desde que salía un procesador nuevo hasta que se vendía, estas máquinas eran en realidad de los años 70 aunque se vendieron en los 80. Si eso no es una tomadura de pelo no se qué lo será. El 386 mismo que fue una revolución salió en el 85 y no se vendió en cantidad hasta el 91. Hoy me veo con ganas de soltar rollo y se me ha ido la olla si.
:piccard:
Pero bueno en cuanto a lo del SO de 32 bit, yo todavía estoy con el xp y tengo 2 gb de ram, y qué? El XP soporta en teoria hasta 4 gb de ram. Luego la memoria es de 128 bit si tienes dual channel y de 64 si no pero eso no importa. Si quieres aprovechar los 64 bits del procesador no queda otra que instalar un SO de 64 bit y si que es cierto que las aplicaciones de 16 bits de MS-DOS no van y probablemente muchas de las de 32 tampoco.

Pero lo más grave de todo esto es... que no has aclarado lo del unicornio. 8-)

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:52

dondiego escribió:El XP soporta en teoria hasta 4 gb de ram. Luego la memoria es de 128 bit si tienes dual channel y de 64 si no pero eso no importa. Si quieres aprovechar los 64 bits del procesador no queda otra que instalar un SO de 64 bit y si que es cierto que las aplicaciones de 16 bits de MS-DOS no van y probablemente muchas de las de 32 tampoco.


Hay versiones de XP de 32 y 64 bits. Si te instalas una de 32 bits puedes aprovechar 3 de los 4Gb de RAM. Con la de 64 bits no existe límite teórico, bueno sí, tantos como granos de arroz en el problema de ajedrez, que es una barbaridad. En la práctica tanto el SO como la placa base tienen capada dicha capacidad.

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: DOS ¿era de 8 bits o de 16 bits?

Mensajepor dondiego » 22 Jun 2013, 14:07

Es verdad el x64 edition, ya ni me acordaba. Creo que no tenía un buen soporte de hardware porque no había drivers para muchos dispositivos. Y tampoco era compatible con aplicaciones de 16 bit. Vamos que no me pareció muy interesante.

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, 14:57

antoniovillena escribió:Con la de 64 bits no existe límite teórico, bueno sí, tantos como granos de arroz en el problema de ajedrez, que es una barbaridad. En la práctica tanto el SO como la placa base tienen capada dicha capacidad.

En realidad el límite de la memoria direccionable no lo da ni el SO ni la placa: lo da el propio procesador. Si mal no recuerdo, en el modo de 64 bits no tienes 2^64 direcciones, sino muchas menos (alrededor de 128 gigabytes, que ya son direcciones).

Por otra parte, como se ha comentado antes, desde un Windows XP normalito de 32 bits puedes ejecutar con VMWare sistemas operativos de 64 bits (siempre y cuando el procesador admita 64 bits) lo que significa que si te lo curras (=si te haces el driver correspondiente) puedes conseguir ejecutar código de 64 bits en un Windows XP 32 bits. En mi primera respuesta, de hecho, os enseñé un código que permite ejecutar código de 64 bits desde el DOS.

Por último: el límite de los 3 gigas y pico en Windows XP cuando tienes 4GB o más no es culpa de Windows. Es "culpa" de que parte del espacio de memoria está ocupado no por RAM, sino por dispositivos PCI. Según la cantidad de dispositivos PCI con registros mapeados en memoria que tengas, mayor será la ocupación de memoria física. En el modo de 64 bits los dispositivos PCI también ocupan memoria, pero claro... no echaremos en falta esa memoria hasta dentro de muuuucho tiempo (lo mismo pensarían quizás al principio del PCI con los 32 bits :D )

Y unos apuntes... esto son cosas que explicaba a mis alumnos de Técnicas de Programación en Bajo Nivel, y que ellos veían con sus propios ojos en las prácticas:
- En Windows XP 32 bits, la mayor cantidad de RAM que puede usar un proceso (un programa) es de 2GB (en realidad un poco menos que eso). 3GB si se usa la opción /3GB de arranque de Windows. Desgraciadamente, el bloque de memoria contiguo más largo que puede alojar un programa en Windows sigue siendo de poco menos de 2GB porque aunque se use la mencionada opción, hay muchas DLL's que están configuradas para cargarse en el límite de los 2GB, y "romperían" la continuidad de un supuesto bloque de memoria continuo de 3GB.
- En Linux para IA32, la mayor cantidad de RAM que puede usar un proceso es de 3GB. El mayor bloque contiguo que se puede alojar es de poco menos de 3GB.
- En ambos SO, el resto hasta 4GB (2GB en el caso de Windows, 1GB en el caso de Linux) lo ocupa el SO. Es decir, todos y cada uno de los procesos "ven" una copia del SO residente en memoria en la parte alta de memoria. Aunque el SO realmente no ocupe 2GB o 1GB, esa parte de memoria se reserva para el kérnel. En esa parte de memoria reservada se incluye el espacio de memoria alojado por dispositivos PCI.

Esto significa que en un equipo con Windows o Linux para 32 bits, aunque el SO pudiera usar los 4GB completos sin el problema de compartir con PCI, los procesos de usuario (tus programas) seguirían pudiendo usar la misma cantidad de memoria cada uno, con lo que no verían afectado su rendimiento.

Sí que se notaría (poco, pero se notaría) si tuvieras muchos programas en ejecución, a la vez ya que al haber menos RAM real para el sistema, tiene que echar mano más frecuentemente del swapping en disco.

E Linux (al menos en el kérnel 2.6.X, no sé si el kérnel 3.0.X sigue funcionando igual) la cosa es un poco más caótica, ya que el mapa de memoria de Linux asume que la máxima memoria física del equipo es de 896MB (¿pensaron que Linux no sobreviviría el tiempo suficiente como para poder ser usado en equipos con más RAM o qué?), así que un PC con más de esa memoria obliga al núcleo de Linux a usar parte de su memoria privada como una ventana de 128MB para mapear temporalmente cachos de RAM por encima de 896MB, con el overhead que ello implica. Nótese que 896MB+128MB=1024MB, que es el GB de memoria que usa el kérnel de Linux para sí mismo.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

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: 28 veces
Contactar:

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

Mensajepor Luna » 22 Jun 2013, 17:56

Veo que he usado las palabras equivocadas (desde el ictus de 2008 no doy una...) A ver, 4 gigas de 32 bit equivalen a 2 gigas de 64, simplemente porque se llenan con registros de 64 bit (O 'palabras' en argot informático) si el Dos box funciona en x64 pues perfecto, cuando toque reinstalar quizas ponga W7 de 64, como el ordenador es de este año, supongo que tendré drivers para todo...
:carta: apuntar: Conseguir driver de 64, web de asus. Guardar passwords, bueno, backup de todo en el disco holográfico, format y reinstalar todo, total, una mañana...

Lo del unicornio:

Imagen

Lo cual es una referencia a cierto peluche dotado de un bolsillo posterior (yo lo atribuyo a una funda para el movil)

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

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

Mensajepor na_th_an » 22 Jun 2013, 18:31

Luna escribió:Veo que he usado las palabras equivocadas (desde el ictus de 2008 no doy una...) A ver, 4 gigas de 32 bit equivalen a 2 gigas de 64, simplemente porque se llenan con registros de 64 bit (O 'palabras' en argot informático) si el Dos box funciona en x64 pues perfecto, cuando toque reinstalar quizas ponga W7 de 64, como el ordenador es de este año, supongo que tendré drivers para todo...
:carta: apuntar: Conseguir driver de 64, web de asus. Guardar passwords, bueno, backup de todo en el disco holográfico, format y reinstalar todo, total, una mañana...

Lo del unicornio:

Imagen

Lo cual es una referencia a cierto peluche dotado de un bolsillo posterior (yo lo atribuyo a una funda para el movil)


Esto no es así. La RAM se mide en bytes, por tanto, sin importar el procesador que tengas, 4 Gigabytes son 4 Gigabytes.

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: 28 veces
Contactar:

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

Mensajepor Luna » 22 Jun 2013, 19:08

Se mide en bytes, pero se llena con 'Palabras' y una palabra de 64 bit es el doble de larga que una de 32... En efecto la capacidad de la memoria se tendría que medir en palabras no en bytes

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, 19:36

Luna escribió:Se mide en bytes, pero se llena con 'Palabras'

Se llenará con bytes, o con palabras, o con dobles palabras, o con lo que sea, dependiendo del programa que se esté ejecutando y de la granularidad con la que el procesador pueda acceder a dicha memoria.

Quizás estés pensando que un procesador de 64 bits tiene que usar la memoria obligatoriamente de 64 en 64 bits, y que para guardar un carácter (8 bits) desperdicia 56 bits, mientras que en un sistema de 16 bits, para guardar la misma información sólo se desperdician 8 bits. Esto es cierto casi siempre (o sea, es cierto para variables sueltas, pero no para arrays de caracteres), y sí que es cierto que redunda en una mayor fragmentación de la memoria al desperdiciarse más de ella en aras de no penalizar la velocidad de los acceos a memoria.

Pero los procesadores de Intel permiten el acceso a memoria desalineada. Con la penalización de la velocidad asociada, pero lo permiten. Otra cosa es que un compilador prefiera no hacer ese tipo de triquiñuelas. Pero aun así, para un X86-64 no es problema guardar varias variables de 8 bits en el mismo espacio de 64 bits. Es decir, que si en un programa tengo varias variables de tipo "char", en 64 bits esto se puede hacer (y sin penalizar el acceso a memoria):

Código: Seleccionar todo

movzx rax,[byte ptr 0x12345670]
movzx rbx,[byte ptr 0x12345671]
movzx rcx,[byte ptr 0x12345672]
movzx rdx,[byte ptr 0x12345673]

Lo malo, y quizás es por ahí por donde van tus inquietudes, es que como para algunas operaciones, hay que trabajar sí o sí con los 64 bits, te podrías encontrar con un "desperdicio" de memoria insano. Por ejemplo, si tengo una función en C con el siguiente prototipo:

Código: Seleccionar todo

void funcion (char a, char b, char c, char d);

Llamar a esa función implica meter cuatro parámetros en pila que son de 8 bits (1 byte), pero como la pila se maneja en 64 bits, para meter estos 4 bytes estamos desperdiciando 28 bytes más.

Por fortuna, el impacto de esta fragmentación es mínimo, ya que el número de variables "sueltas" de un programa no es elevado. Un programa donde gasta más memoria es en vectores y matrices, y ahí los elementos están más empaquetados (sobre todo si los elementos son datos simples).

En los casos en los que esto no es así, los programadores (y/o los compiladores) se las apañan para que el impacto de la fragmentación sea mínimo. Por ejemplo:

Código: Seleccionar todo

struct {
  char a;
  short b;
  int c;
  long long d
} v[1024]:

Si un compilador crea un vector de estructuras pero haciendo que cada campos tenga su "parcela" de 64 bits, cada elemento de este vector ocupará 4*64=256 bits, es decir, 32 bytes, desperdiciándose 17. Multiplicado por 1024 elementos, nos da 32KB de memoria de la que se estarían desperdiciando 17KB.

Pero un compilador "decente" se dará cuenta de que a,b y c pueden coexistir en la misma parcela de 64 bits (1+2+4=7 bytes < 8 bytes) con lo que la anterior estructura cabe en realidad en 16 bytes, desperdiciándose 1. El vector ocuparía 16KB, y de esa memoria, solo 1KB sería un byte desperdiciado.

Luna escribió:En efecto la capacidad de la memoria se tendría que medir en palabras no en bytes

Y todos locos, porque para unos la palabra serían 16 bits, y para otros, 64 bits. La capacidad de la memoria está bien como está medida (en bytes generalmente, y en algunos casos, en bits).
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

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: DOS ¿era de 8 bits o de 16 bits?

Mensajepor dondiego » 22 Jun 2013, 20:52

Una explicación bastante larga pero me quedo con que la ram se mide en bytes y 4 gb son 4 gb. Para una máquina nueva lo mejor sin disquisiciones filosóficas es meter un SO de 64 bits, y si es windows el 7. El vista por mi experiencia es una pesadilla trabajar con el.
En el dibujo me doy cuenta de que curiosamente el tio tiene dos unicornios no uno. Y luego espero que lo del ictus fuera coña porque es algo bastante grave. :o
Lo siento pero con tanto unicornio me resulta difícil saber qué es en serio y que no. :piccard:
Ojalá te recuperes del todo y a cuidarse compañero.

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: 28 veces
Contactar:

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

Mensajepor Luna » 23 Jun 2013, 13:13

lo dicho, si dosbox 64 funciona bien, creo que en el próximo format meteré w7 64, a ver que tal...

@dondiego No hay nada que sentir, somos humanos, (Menos alguno por aquí que estoy por confirmar que es un androide) :term:

Venga, un abrazo.


Volver a “PC Moderno”

¿Quién está conectado?

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