现在操作系统中,比如LINUX, 寻址是通过段地址+段内地址*16来寻址了吗?
发布网友
发布时间:2022-04-25 16:06
我来回答
共4个回答
热心网友
时间:2023-10-15 23:47
段地址*16+段内地址是早期系统运行在cpu实模式下的寻址方式,现在的操作系统都是在保护模式下,以32位操作系统来说,系统为每个进程分配一个4G大小的虚拟内存空间,使用一个4字节(32bits)的指针直接寻址 ,至于64位系统的话,可寻址空间就更大了,地址可以由一个long型8字节指针指向哦
热心网友
时间:2023-10-15 23:48
不是
是段地址*16+段内地址
热心网友
时间:2023-10-15 23:48
这个问题是分段机制和分页机制的问题。现在的linux在x86下,在实模式下是用的分段机制,然后在保护模式下使用的是分页机制。
所以在保护模式下用分段机制讨论分页有点离题了。
只能告诉你,在实模式下是段基址左移4位,加上段地址实现的。
热心网友
时间:2023-10-15 23:49
64 位势不可挡
从某种意义上讲,处理器的发展直接影响着整个IT行业的发展水平,电脑核心从16位到32的转变对IT行业产生的巨大影响就是一个强有力证明。从386、486直到奔腾系列的CPU都是32位,大多数情况32位计算已经能满足现阶段人们的需要。然而随着互联网等技术的发展,对内存的需求越来越大,比如大型服务器,每秒钟处理的数据量就超过2GB,32位就难以满足需求了。
32位的风云十年
在信息技术领域,“位数”是衡量计算机性能的重要标准之一。位数在很大程度上决定着计算机的内存最大容量、文件的最大长度、数据在计算机内部的传输速度、处理速度和精度等性能指标。在近十年的时间里,X86-32位平台由于其性价比高,获得广泛应用。
按照以前的习惯,我们把基于80X86的CPU架构称作X86结构,这是Intel公司在1978年发布其第一块16位的CPU(5MHz 8086)时开发的,1981年IBM推出的第一台PC中使用的也是X86指令,同时电脑中为提高浮点数据处理能力而加的X87芯片系列数学协处理器则使用X87指令,后来将X86指令集和X87指令集统称为X86指令集。为了保证计算机能够继续运行以往开发的各类应用程序以保护和继续软件资源,后续的CPU(包括大多数第三方处理器厂商)继续使用X86指令集,采用这种指令集的CPU系统被称作X86架构。
64位异军突起
64位计算技术为这一问题的解决提供了契机,64位技术可以突破这两大*,不仅使得处理器的计算能力有了更加广阔的发展空间,而且其所能支持的内存寻址能力更是达到了180亿GB,将能够彻底解决32位计算系统所遇到的瓶颈现象。但人们很快又发现,目前,已有的64位计算平台主要是基于RISC架构的高端应用,涉及厂商包括IBM、HP和SUN。其服务器高昂的价格使得64位计算长期被局限在电信、金融等少数应用领域,不能形成大规模的应用环境。享受64位计算的方便快捷成了高端应用的特权,其高昂的价格普通网络用户根本无法接受。在这种情况下,普通网络用户陷入了一个进退两难的尴尬境地……
2003年4月AMD公司推出首款64位处理器,这是一款采用X86兼容架构的64位CPU,它最大的特点就是在支持64位数据寻址的同时,向下兼容32位数据寻址,妥善解决了CPU从32位到64位的过渡和兼容问题,从而掀起了桌面处理器从32位向64位过渡的技术*。2004年3月,Intel也发布了其首款64位Xeon处理器,它采用EM64T(Intel Extended Memory 64 Technology)技术,同时支持32位和64位运算,在运行64位程序时采用64位工作方式,而在处理32位运算时依然是IA32(即X86)工作结构,这实际上也可以认为是X86-64架构。
从现在开始,本文所提到的64位技术,都是指兼容32位计算的X86-64技术或EM64T技术。
64位技术综述
在AMD强大的宣传攻势下,64位技术和64位处理器已经成了众人皆知的时髦名词,那么究竟什么是64位技术呢?64位处理器与32位处理器相比,具体有哪些优点?同样是64位/32位兼容处理器,Intel和AMD的产品在技术上又有怎样的区别呢?
64位技术的定义
64位技术是相对于32位技术而言的,这个位数指的是CPU GPRS的数据宽度为64位。此外,64位指令集就是运行64位数据的指令,64位处理器则表示处理器一次就可以运行64位的数据(如图所示)。
由图中可以看出,64位处理器的指令宽度并没有改变,只是增大了通用寄存器和数据通道的宽度,我们可以简单的理解为:64位处理器的定义是拥有数据宽度为64位的寄存器,并且可以一次传输、运算64位的数据。
当然上面的理解并不全面。通常,在通用寄存器内储存两种数据:整数数据Integer和地址数据Address,它们都由ALU进行运算。除了上面两种数据外,现在的处理器通常还支持浮点数据和多媒体数据,并且都有各自专用的寄存器和执行单元。下面以Intel的32位和64位x86处理器作简单对比,说明上述四种数据在处理器内的存储运算情况。
由附表中可以看出64位处理器和32位处理器相比,浮点数据和多媒体数据的专用寄存器数据宽度并没有改变,64位处理器所改变的主要是整数运算和内存寻址的宽度。
需要补充说明的是X86处理器在进行双精度浮点运算时采用了80位的浮点寄存器,实际上浮点运算是64位,但是当处理器将数据转换为内部数据时,为了提高运算的精度就采用了80位的格式。单精度浮点运算仍然使用64位浮点寄存器。
64位处理器的优点
光看数字,64比32整整大了一倍,那么64位处理器在应用上有什么优点呢?总的来看,64位计算主要有以下优点:
1. 可以进行更大范围的整数运算
一个32位整数可以表示2的32次方也就是4GB的数值,而一个64位整数,即2的64次方也就是1800万TB,可以看做是无限大。64位整数数据的应用程序在64位的硬件上进行运算可以大幅提高计算性能,在同一周期内可以处理更多的数据,从而大大减少运算时间,也使得某些超大数运算得以更好的解决,这使得气象模拟、环境模拟等大型科*算从中受益匪浅。
2. 可以支持更大的内存
另一个优点便是64位处理器可以支持64位的内存寻址。同样的原理,内存地址也是整数,ALU和寄存器既然能够存储更多的整数,那同样也能够容下更多的内存地址,打破了32位下4GB的*。实际上64位处理器究竟需要多大的物理和虚拟内存寻址完全取决于不同处理器的需求。
但我们需要注意的一点是:64位处理器的性能≠两倍于32位处理器的性能。我们不能因为数字上的变化,而简单的认为64位处理器的性能是32位处理器性能的整整两倍。实际上在32位应用环境下,32位处理器的性能在很多时候反倒会更强。挫折湮没了*
电脑核心从32位到64位的转变正在悄然进行中,比起行业应用的如火如荼,普通消费者却迟迟不能提起兴趣,就连专家也表示64位取代32位的时代还为时尚早。最先把64位处理器引入寻常百姓家的AMD正在全力以赴地推广64位计算技术在全行业的应用,然而这场*起初因为缺少Intel这个主角似乎有些进行不下去了,因为消费者在观望,他们担心过早地选择64位会为它的早产付出高额代价,但同时,他们更加担心会成为时代更替的牺牲者。现如今,AMD的主动 “推”和Intel的“附和”,让消费者陷入了两难境地。智者开始考虑这样一个问题,现在到底该不该迈进64位计算技术的新纪元呢?
专家认为,64位计算技术迟迟不能普及的根本原因是桌面级应用对64位技术的依赖并不是非常迫切。他进一步说,在国内,我们更需要的是一定价格下的高性能,而不是盲目追求没有必要的应用扩展。
10年前,计算机历史上曾发生过一次重大变革——多媒体技术唤起了人们对32位电脑的渴望,那些想让电脑屏幕鲜艳起来、让电脑奏出美妙的音乐、让电脑能与人交流的人发现,自己破旧的16位286电脑再也无法满足最基本的需求了,于是业内孕育并上演了32位电脑“夺权篡位”的一幕。也许那一幕连最初开发MS-DOS的比尔?盖茨都没有想到,否则他也不会认为电脑只要有640KB内存就够了。
10年后,人们还没有充分享受到32位处理器的高性能,因为32位处理器理论上可以支持高大4GB的内存,也因为32位会带来较小的延迟,更高的处理器频率。实际上,目前推动64位技术应用的并不是桌面机应用,行业级应用才是64位这个锋利的武器的用武之地。
一位资深的硬件评测专家断言,如果说32位取代16位确实是由应用和需求在驱动,那么64位取代32位更像是厂商炒作的噱头。
Windows XP X64为何姗姗来迟
大家都知道,微软64位操作系统发布时间的一再延后,让AMD错过了推广、销售64位产品,并全面超越Intel的大好机会,也是在过去两年中64位一直未能普及的根本原因,那么这背后到底是什么东西在驱使呢?笔者看来,至少有三个因素决定了这个事实。
Intel在作怪?“Wintel联盟”是很容易想到的一个原因,不过我们很难说Intel在其中发挥了多大的作用。
驱动跟不上?驱动是任何一个操作系统的组成部分,适当的驱动优化和移植需要很长时间才能完成。微软的64位Windows XP可以同时运行32位和64位应用程序,驱动则必须是原生64位编写的。看起来,这个理由倒也合情合理。
微软追求完美?由于64位Windows迟迟没有,微软也看到了不少客户为了早日用上X86-64位技术而转向了Linux平台,这肯定是他们不愿意看到的。不过为了保证新操作系统的完美,微软确实花了很长时间。
64位与32位的工作示意图
64位万事俱备 只欠东风
两年时间过去了,64位平台终于迎来了快速发展的黄金时期。虽然Intel和AMD的桌面64位CPU都能支持32位代码,但这未免有些大材小用。因此,要真正进入64位的广阔天地,必须使用“纯”64位软件,即完全使用64位扩展指令集。除了部分新开发的软件外,大多数32位软件都要进行移植或升级才行。由于64位CPU只是扩展了32位指令,并不像32位CPU那样对16位指令进行了全新改造,还增加了新的工作模式,因此 32位向64位的移植将较为容易,比16位向32位过渡时简单得多。
总结:我们要认清64位处理器的优势和发展趋势,但也不可迷信64位。