操作系统也寻址吗?

qlz37238 2009-04-27 08:38:54
加精
寻址应该是CPU的事吧。。所以CPU有32位和64位,操作系统也分32和64的,难道操作系统也寻址吗?那么操作系统与CPU的寻址有什么区别呀?? 不知道我有没有说错的地方。。
...全文
1443 104 打赏 收藏 转发到动态 举报
写回复
用AI写文章
104 条回复
切换为时间正序
请发表友善的回复…
发表回复
ifur 2011-02-12
  • 打赏
  • 举报
回复
来看看热闹
aspenchen 2010-12-14
  • 打赏
  • 举报
回复
操作系统当然得有地址了和你的网卡地址是一样的。
hanhongzhan 2010-04-02
  • 打赏
  • 举报
回复
学习中。。。。。。。
mrjinle 2010-01-22
  • 打赏
  • 举报
回复
都是高手,初来乍到,学习学习。
pcanyi 2009-06-14
  • 打赏
  • 举报
回复
CPU是硬件层次的,操作系统的功能是进行文件和内存管理。CPU本身带有很多指令,但是这些指令都是通过操作系统和软件调用来完成了,所以寻址在软件层次上来说应该是由操作系统完成的,CPU的只是响应操作系统发送来的指令,指令当中己经包括了寻址方式和地址了。
tmdbcd0630 2009-06-13
  • 打赏
  • 举报
回复
楼上的达人们说了好多。都很专业。简单的说现代的计算机都是基于“总线”结构的,CPU的一大堆引脚中,有一类线被成为“总线”,比如数据总线,控制总线,地址总线。其中有40根是地址信号线,是直接连接在“总线”上的。CPU当然要寻址,一是寻址取得所谓的操作数,另外经过CPU运算的结果也要通过“总线”输送出去,输送到指定的内存单元去。之所以我把“总线”打引号,因为并不是物理上CPU的地址引脚直接和内存的引脚相连。现代计算机有很多的技术,比如DMA控制器,比如HT总线技术等等。但是不管退出什么样的技术,“总线”结构是没有彻底改变的。因此,只要是基于“总线”结果的计算机,CPU就一定要寻址的。
Tippisum 2009-06-13
  • 打赏
  • 举报
回复
看来很多问题还不是很清晰啊……
再来澄清几点。

所谓“16位”“32位”或“64位”,指的是CPU数据总线宽度和最大寻址能力(当然,现有64位CPU只有40根地址线,寻址能力只有40位,没有64位)
但是各位注意,这只是“最大寻址能力”,并不是“实际寻址能力”!就好像汽车速度表上的最大值不一定能达到一样。

INTEL系列的各个CPU,为了实现向后兼容,都提供了多种工作模式。
假设现在有一个64位CPU (如INTEL Core 2系列)

当CPU加电启动时,工作在兼容8086系列的16位“实模式”。此时,它的40根地址线只使用低20位。寻址方式是用保存在段寄存器中的值左移4位当做段基地址,再加上指令中给出的16位偏移地址,形成一个20位地址。此时,它的寻址能力只有1MB。

如果现在你运行了一个32位OS,如Win32,那么它会在实模式下完成初始化之后,让CPU转移到(兼容IA32的)32位“保护模式”。此时,它的40根地址线使用低32位,寻址方式是用保存在段寄存器中的值作为选择子,检索GDT或LDT得到32位的段基地址,在加上指令中给出的32位偏移地址形成32位的线性地址,再使用(可选的)分页机制,将32位线性地址映射为32位物理地址。此时,它的寻址能力为4GB。

如果你运行的是64位OS,如Win64,那么它会设置CPU进入64位模式,也就是它的完全模式。此时,它的40位地址线都可以寻址,寻址能力为1TB。这种模式下,段保护机制中的“基地址”和“界限”保护都被忽略,只有权限保护有效。保护机制主要依靠页机制实现。

由此可见,CPU模式的切换会极大地影响CPU的寻址方式。因此,在所有INTEL CPU中,都只有系统级程序可以使用这些“特权指令”来改变CPU的工作模式。
而一旦CPU工作模式被确定,其寻址方式也相应确定。用户的应用程序不能改变CPU的寻址方式。这个操作只能,也只应该由OS完成。
也就是说,一旦一个32位的OS将CPU设置为32为寻址模式,用户的应用程序只能使用32位寻址,用户程序没有开启64位寻址的权限。
古井荡月 2009-06-13
  • 打赏
  • 举报
回复
楼上说的很好,很详细。。。
pupengtao 2009-06-11
  • 打赏
  • 举报
回复
应用程序执行时难道也要经过操作系统来寻址吗?
我现在正在学计算机组成原理,对这个问题只能发表一下我自己的看法。大多数cpu都支持虚拟存储,在虚拟存储时寄存器里的地址都是逻辑地址,而逻辑地址是可以大于主存容量的。如果让os来寻址的话,它怎么访问贮存最大容量以外的地址?
qlz37238 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 79 楼 limeng123 的回复:]
路过……估计楼主是个初学者
[/Quote]


我当然是一个初学者,如果我不是初学者我问这个问题。干什么。
qlz37238 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 92 楼 zxqlj 的回复:]
大学都白学了啊!!微机原理和操作系统讲得那么清楚!!!!
[/Quote]


不是大学白学了。是我根本就没有读大学。我是自学的。呵呵
smilemeimei 2009-06-01
  • 打赏
  • 举报
回复
是白学了,上学的时候谁明白呀!
y254988348 2009-05-31
  • 打赏
  • 举报
回复
让你们 搞糊度了
aaaaaaaaaabb 2009-05-31
  • 打赏
  • 举报
回复
CPU在内存中寻址。
zxqlj 2009-05-31
  • 打赏
  • 举报
回复
大学都白学了啊!!微机原理和操作系统讲得那么清楚!!!!
aries2048 2009-05-31
  • 打赏
  • 举报
回复
32位和64位只是寻址能力,
yanbeifei168 2009-05-31
  • 打赏
  • 举报
回复
CPU寻址干吗呀。CPU只管按PC执行代码。寻址是操作系统管的
xiaoxiinlose 2009-05-31
  • 打赏
  • 举报
回复
学习了
ZHOUHUAIYI 2009-05-31
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_3d4e77310100az2l.html
http://zhidao.baidu.com/question/13014890.html
suncheng_hong 2009-05-31
  • 打赏
  • 举报
回复
软件不存址可能吗?
加载更多回复(78)

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧