Chinaunix首页 | 论坛 | 博客
  • 博客访问: 866314
  • 博文数量: 179
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1546
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-27 11:05
个人简介

MySQL工程师 QQ:1815357042

文章分类

全部博文(179)

文章存档

2015年(179)

分类: LINUX

2015-02-07 14:14:34

背景
PAE模式
PAE,物理地址扩展是基于x86 的服务器的一种功能,它使运行 Windows Server 2003, Enterprise Edition 和 Windows Server 2003,
Datacenter Edition 的计算机可以支持4GB 以上物理内存

物理地址扩展 (PAE) 允许将最多64GB 的物理内存用作常规的4 KB 页面,并扩展内核能使用的位数以将物理内存地址从32扩展到36。

PAE模式
物理地址扩展(PAE) X86 允许软件使用地址窗口扩展(AWE) API 集并在具有 Intel Pentium Pro 或更高版本处理器的计算机上运行,
而 4 GB 以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间
不使用 AWE API 集的应用程序也可以从 PAE X86 获益,因为操作系统使用更大的物理内存来减小页面,从而提高了性能
同样,这还使驻留多个应用程序的合并服务器受益。
通过在内存中而不是在磁盘上保存数据,可提高操纵大量数据的应用程序的性能。例如,PAE X86 可显著提高以下类型应用程序的性能:
数据库,如 Microsoft SQL/E 7.0 或更高版本。
科学和工程应用程序,如计算流体动力学的应用程序。
执行大量数据采集的统计分析应用程序。
在采用支持非执行页面保护功能的处理器的计算机上启用 DEP 时,
在运行装有 Service Pack 1 的 Windows Server 2003 和装有 Service Pack 2 的 Windows XP 的计算机上将自动启用 PAE。
在装有 SP1 的标准版 Windows Server 2003 和装有 SP2 的 Windows XP 上启用 PAE 模式时,物理地址空间将限制在 4 GB。
将物理地址空间限制在 4 GB 有助于防止 PAE 模式出现驱动程序兼容性问题。
只有特定硬件才支持 PAE X86,因此在最初安装该操作系统时不启用此功能。有关哪些硬件支持 PAE X86 的详细信息,
可以查看兼容信息查询有关 Windows Server 2003 家族中产品的硬件兼容性信息。


PAE:只能用4G内存
AWE:用超过4G的内存,通过AWE API

CentOS系统在x86的硬件平台下,内存通常只能读到3GB左右,WindowsXP也只能读到3GB,
最新的Windows7 X86也刚刚读到3GB,其他版本的Linux系统也一样,CentOSx86系统也是3GB,目前服务器上的内存容量都很大,
很容易达到3GB以上,需要将内存支持度扩大,下列做法将内存容量超过3GB以上

检查目前内存容量,CentOS x86系统安装4GB内存,在系统中输入 free -m,所看到的内存容量只有3GB(3034MB),
必须更新内核才可以支持到4GB
  1. [root@localhost ~]# free -m
  2.     total used free shared buffers cached
  3. Mem: 992   285 707    0      28     134
  4. -/+ buffers/cache: 122 870
  5. Swap: 2015 0 2015

使用yum在线更新,可以让内核支持更大的内存容量,如果要全部更新kernel是有风险的,有可能无法开机,
建议不要更新全部kernel,不能输入【yum install kernel*】这样的命令,这样操作无法开机正常的,
建议更新前备份数据。当前为CentOS5.6 i386系统更新支持大内存的软件为kernel-PAE 2.6.18,更新版本以所安装的系统版本为主。
  1. [root@localhost ~]# yum install kernel-PAE

编辑配置文件,更新完内核后,编辑grub.conf。默认为default=1,将之设为default=0,目的是让kernel-PAE默认在内核中启动
  1. [root@localhost ~]# vim /boot/grub/grub.conf
  1. # root (hd0,0)
  2. # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
  3. # initrd /initrd-[generic-]version.img
  4. #boot=/dev/sda
  5. default=0 //设为0 让在内核中启动
  6. timeout=5
设置完成后,重启系统才会生效
  1. [root@localhost ~]# shutdown -r now

重启之后,再查看系统内存是否超过4GB,输入 free -m ,系统显示超过4G
  1. [root@localhost ~]# free -m
  2.              total used free shared buffers cached
  3. Mem: 992 187 804 0 17 56
  4. -/+ buffers/cache: 114 878
  5. Swap: 2015 0 2015
CentOS6.x系统已经解除PAE限制,所以支持4G以上内存。不过,如果要使用大容量内存,最好还是选择x86_64版本,系统功效比i386好
CentOS6.x不需要修改grub.conf文件,因为默认就是default=0 



一、问题:如何打造一个 Linux 系统,并将之安装到 U 盘里。(这里的打造是指自己编译内核,自己编译命令。)


说实在话,这个问题,新手能提出来,俺还是很佩服这个勇气的。


在开始讲这个话题之前,首先得说一下什么是操作系统,操作系统是干什么的?操作系统又是如何驱动硬件,并为我们提供一个人机交互环境的?操作系统与开发语言的关系是什么?


简单说,操作系统是一个中间层,它位于应用软件和计算机硬件之间,用于将应用软件的指令翻译成机器指令并提交给机器执行。这个机器指令其实就是二进制代码,对应于机器硬件的指令就是电路中的通、断。


操作系统通过与固化到 flash 中的硬件指令来驱动硬件,并提供一个人机交互的环境。(这里说简单点,说太多咱就漏了,毕竟只有半桶水啊^_^.)。做过嵌入式开发的朋友可能知道,所谓的“烧板”其实就是把硬件指令写入到硬件的 flash 中。更形象一点,就是我们的 x86 指令集、mips指令集等等 。


开发语言实际上是通过一定的编译程序,将我们用中、高级语言写成的代码首先翻译成汇编代码,再由汇编器翻译成机器码,然后由链接器将一个一个的代码片段链接成能执行完整程序功能的执行代码,并保存在非易失存储器上。


计算机系统的启动过程。


(本部分以 x86 系列为例,MBR模式,非 EFI 模式,其实说太多了,俺也说不清楚了。)


系统加电以后,首先会有一个自己检测的过程,这一个过程主要是通过接口来测试各个硬件能否正常工作,如果可以,那么系统首先会以实模式启动,此时系统仅能访问 1 MB 内存的内容,实际上由于还有留部分内存给硬件中断,我们实际能访问到的是 640KB。然后系统会根据 cmos 中设置的启动顺序,从外部的硬件中查找能启动系统的信息,此时如果找到,则系统将转入到这个外部的介质上,读取最初的启动信息,这个最初的启动信息很小,它只是指明了真正的操作系统内核加载的地址位,并将继承器的第20位置为1,开启虚模式,此时系统能使用较大的内存了(一般是 4GB , 特殊的方式【PAE】能映射到 16GB)。然后系统移到这个偏移地址,将真正的操作系统内核装入,完成系统的进一步自检,如果没有错误,开始初始化系统的软件环境。


最后进入到一个提供人机交互的环境,这个环境下供用户选择自己使用的 shell 。(DOS 年代,没有选择 ,就是 command.com )


我们执行的可执行文件,有一定的格式,在 linux 下一般是 ELF 格式,这个格式下,系统的指令是动态装入的,需要的时候才装入,不需要的时候,系统并不装入执行的动态链接库信息。需要指出的是,不同的可执行文件格式,其实真正的执行码,在同一种硬件架构上是一样的,不同的是这个可执行文件的文件头。操作系统根据这个文件头决定在什么时候,什么地址装入可执行指令和数据。



阅读(1929) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~