win95是16位系统、98是32位系统?另外,这里的位指的是???

haoliangli 2001-07-26 11:22:14
16位、32位是按什么区分的?每个字是16位(95)32位(98)?
大哥们给小弟讲讲操作系统的初级知识吧,如地址的表示方法?
16位中用?
32位中用?
0xD000D000中0x只是表示它是16进制吧!
特别感谢所有回复的人们!俺会给分的!(虽然俺的相当一部分可用分来自辛勤灌水:给成功者以激励,给暂时消沉者以安慰…………)

...全文
726 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sssssj 2001-07-31
win95肯定不能称为32系统,而NT,2000肯定是
win98只能是准32的
win95的初衷是为了32位,但是由于当时市场的16位程序占主流,所以痿软不的不忍痛割爱,在着硬件资源的价格不匪问题,95不得不删掉大量绝对32位程序,而此在NT系统下得到应用
回复
Tiger_张虎 2001-07-29
别的我也不清楚,不过WIN 95/98调用了16位的API那我敢肯定。也就是说它们是16位和32位结合的。
回复
ym_l 2001-07-29
到底谁对谁错呢?
回复
wjyasd 2001-07-28
呵呵……对了,NT才是32位的!
回复
ximuwa 2001-07-28
听课听课
回复
yoyoyosiyu 2001-07-28
win95 从根本上说不是纯32位系统。它混合了16位和32位API。有些32位的API调用实际上在底层是调用16位版本的。但在程序员的角度可以把win95看做是32位的。win98也不是纯32位的。NT 和 Win2000是。
回复
alwaysakid 2001-07-27
>如果没有64bit的CPU,64位的OS是什么样子
实际上也可以,虚拟机就行。
而且,64位CPU上同样可以运行32位的OS,而这个32位的OS同样可以提供64位API.
回复
samueler 2001-07-27
寻址方式不同
回复
hitwd2000 2001-07-27
好像是并行传输的最大位数
回复
wmouse 2001-07-27
os是以硬件为基础的,没有硬件的支持,它的寻址方式上哪里实现呢?
回复
_STLer 2001-07-27
是系统总线吗?
回复
seedundersnow 2001-07-27

不对的话大家不要笑我....如果没有64bit的CPU,64位的OS是什么样子?

回复
seedundersnow 2001-07-27

win95是32位的
这里的"位"和最底层的一个东西CPU是有关的....从386时代开始,x86既支持16位模式,也支持32位模式....在32位模式,系统的性能可以显著提高....

Windows 3.x以及更早的版本是16位的,但后来好象microsoft也为他们添加了32位的支持....
到Windows95时代,microsoft就是用32位指令写OS拉

回复
alwaysakid 2001-07-27
还是同样的问题,64位的api不等于64位的操作系统
在win3.1上面win32s同样可以运行32位程序,同样能够运行64位程序的不一定就是严格意义上的64位操作系统。
回复
tiongkohlang 2001-07-27
windows98/me也不是纯粹的32位操作系统。单从softice显示的地址来说明问题并不合适。
上面的说,因为win95包含16位代码,所以就不是32位操作系统。win98/me都没有摆脱对16位代码的依赖。所以也不能说是纯粹的32位操作系统。
问题的关键是win9x/me的底层结构实在是和windows386增强模式是一样的(一些网上的高手这么说)。至于具体的细节,我也不十分明白。
总之,可以认为win95是一个32位操作系统。因为我们是软件开发者,在win95下面我们使用32位api开发程序,因此不必深究了。
回复
wjyasd 2001-07-27
debug
a
1681:0100 ……
1681:0110 ……
段 : 段内偏移

表示方式: 段*16 + 段内偏移=20位 的寻址方式;

16位是指操作系统提供的寻址方式是多少,16位最大的寻址空间是64K,但是早期的硬件最大支持20位的寻址能力,为了充分利用资源,DOS、WINDOW 提出了 段:段内偏移 的寻址方式。 其中,段表示高16位地址空间,段内偏移表示地四位的地址空间……(硬件是 8086) 到了80386 时期,硬件已经支持32位的寻址能力,但是软件(操作系统)没有跟上硬件的发展速度……一直使用DOS系统,WINDOW95 不能算是“纯”32位的操作系统……因为它的内核中包含着16系统的代码。
直到 WINDOW98 这个操作系统才是真正意义上的32位系统…… 你要是使用过SOFTICE进行过WINDOWS 下程序的跟踪的话,可以看到这样的地址表述方式(有点记不清楚了) 0x00000000 一共是8个0 ,8*4=32 位

呵呵……
回复
haoliangli 2001-07-27
95、98中内存中绝对地址都是如0xD000D000形式的吧!
据说16位 系统(按你们楼上说法dos、win3.0是16位,对吧)内存中绝对地址形式应是
段地址、偏移地址对吗?能不能举个例子说明是怎么左移四位相加的?
回复
lase 2001-07-27
alwaysakid(老A)大虾, xp不应该算作32位系统了吧,据说是支持下一代64位cpu的操作系统啊
回复
wwww2 2001-07-27
主要是对CPU寄存器的使用方式的不同,32位的程序工作效率更高,且和Win95以上的操作系统兼容性更好。
回复
alwaysakid 2001-07-26
单纯从程序员的角度而言,win95/98/me/nt/2000/xp都是三十二位系统,win32s也是32位系统,因为都是32位的api,也就是说没有了dos和win3.0下面的内存分段(far pointer...)
从系统程序员的角度,可以参考matt的windows system programming secretes.

32/16主要是一个寻址的问题,如果
char* p;
sizeof(p) == 32,从程序员角度而言,就是32位系统。

这些说法都比较混乱,其实问题在于32位api不等于32位系统,从程序员而言,只要是能够运行通过WIN32 SDK编写的程序的系统都能够称为32位WINDOWS,但事实上从系统程序员的角度,他完全可以把这些API调用转换一下,保持系统底层仍然是16位的。

如果单纯从SIZEOF(int)而言,95/98都是三十二位系统。
回复
加载更多回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-26 11:22
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……