当前位置:首页 » 编程语言 » c语言一级缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言一级缓存

发布时间: 2022-12-21 13:27:14

c语言的输入缓冲怎么回事,哪里有详细介绍啊

缓冲是标准C中的标准I/O里的机制,标准库里的I/O语句为了提高读写的效率,在实际读写之前将数据保存到一段内存中,这段内存就叫缓冲,分全缓冲,行缓冲两种,全缓冲在缓冲的内存满了之后做实际的读写,行缓冲在遇到换行符之后做实际的读写,unix高级环境编程里第五章里有详细的说明,或者网络也有

㈡ c语言如何按任意键返回上一级

关于getchar()函数的说明,请参考http://..com/question/150979107.html
因为缓存中存有数据,所以,getchar()读取时,会读到返回数据,而不等待用户输入键盘按键。修改方法为:
一、getchar()之前加清除缓存(在windows系统下有效)
fflush(stdin) ;//清除缓存
getchar(); //等待用户按键(回车)
system("cls");
二、采用系统命令pause,替换掉getchar();
system("pause"); //调用系统命令pause暂停,等待按"任意"键!
system("cls");
三、调用conio.h中的getch()函数
getch与getchar基本功能相同,差别是getch直接从键盘获取键值(不读,也不清除缓存中的数据),不等待用户按回车,只要用户按一个键,getch()就立刻返回。
#include <conio.h> //引用相关头文件

getch(); //等待用户按键(回车)
system("cls");

㈢ C语言中清除内存缓冲区的函数是什么

是I/O 函数分为“带缓冲”的和“不带缓冲”的两类。

带缓冲的 I/O 函数写数据时,并不直接写磁盘介质,而是将数据先写到这块内存缓冲中,之后用户空间缓冲中的数据会被传送到系统缓冲中。

linux 内核会将系统缓冲中的数据送完磁盘驱动器(fsync函数可以加速这一过程),这之后,数据才真正的被写入磁盘。

因为目前内存的读写速度往往远大于硬盘的读写速度(常 ms 级)。因此,缓冲区的建立可以尽力避免太过频繁的写磁盘。

对于硬盘来说,写入一个字节可能跟写入一个扇区没什么两样,程序员每次写入的数据也许就几个字节,所以可以将每次写入的几个字节放入缓冲区,排列组合成一整块数据再写入,也能极大的提升效率。

(3)c语言一级缓存扩展阅读

1、带缓冲的 I/O 读函数读取数据之前,则会首先判断用户空间的进程缓冲区是否包含数据,如果没有,则继续判断系统缓冲区是否包含数据。

2、“带缓冲”的 I/O 读函数从磁盘读取数据时,并不只读取调用者指定的读取字节数。读函数可能一次性读取一个扇区(常常是 512B)保存在缓冲区里,只返回给程序员需要的 10 字节。

㈣ CPU基础知识大全详解

CPU基础 知识大全 详解有哪些? CPU在电脑中是最核心关键的硬件之一,相当于人的大脑,决定了电脑运算能力,因此CPU的选择至关重要。下面就让我带你去看看CPU基础知识大全详解,希望对你有所帮助吧!

程序员必须了解的CPU知识 - 科普篇

1导读

对于一名程序员来说,无论你使用的是什么语言,代码最终都会交给CPU来执行。所以了解CPU相关的知识一方面属于程序员的内功,另一方面也可以帮助你在日常编写代码时写出更加高效的代码

本文不打算对CPU进行深入探究,相反是以简单的语言来帮助大家了解CPU的工作原理以及不得不提到的CPU缓存相关知识,其中晦涩的内容我会通过配图来帮助大家理解,最后会以几个例子来帮助大家更直观的感受到CPU缓存带来的性能影响

2CPU基础知识

CPU即Central Processing Unit(中央处理器),是我们的代码打交道最多的硬件之一,要想让一个CPU工作,就必须给它提供指令和数据,而这里的指令和数据一般就放在我们的内存当中。其中指令就是由我们平常编写的代码翻译而来,数据也是我们代码中需要用到的数据(例如一个int值、一串字符串等等)

以C语言为例,从我们开始编写到运行的生命周期可以粗略的用下图表示:

大致分为以下几个步骤

我们日常中使用编辑器或者IDE敲入代码

代码编写完成后使用编译和链接工具生成可以被执行的程序,也就是机器语言(指令的集合)

当程序被运行时,整个程序(包括指令和数据)会被完整的载入到内存当中

CPU不停的向内存读取该程序的指令执行直到程序结束

通过上述第4步我们知道,CPU自身是没有保存我们的程序的,需要不停的向内存读取

那么有个问题是CPU是如何向内存读取的呢?

这里其实存在一个“总线”的概念,即CPU会通过地址总线、控制总线、数据总线来与我们的内存进行交互。其中地址总线的作用是寻址,即CPU告诉内存需要哪一个内存地址上的数据;控制总线的作用是对外部组件的控制,例如CPU希望从内存读取数据则会在控制总线上发一个“读信号”,如果希望往内存中写一个数据则会发一个“写信号”;而数据总线的作用顾名思义就是用来传输数据本身的了

例如CPU需要希望从内存中读一条数据,那么整个过程为:

到这里我们已经知道了CPU在执行我们程序的过程中会不断的与内存交互,读取需要的指令和数据或者写入相关的数据。这个过程是非常非常快的,一般CPU与内存交互一次需要200个时钟周期左右,而现代的处理器单个时钟周期一般都短于1纳秒(1秒 = 十亿纳秒)

但我们的前辈们仍然对这个速度不满足,所以又对CPU设计了一套缓存系统来加速对内存中数据的读取

3CPU缓存

现代CPU通常设计三级缓存(L1、L2、L3),其中L1、L2缓存是每个CPU核心独享的,L3缓存是所有CPU核心共享的,而L1缓存又分为数据缓存和指令缓存

我们的数据就从内存先到L3缓存中,再到L2缓存中,再到L1缓存中,最后再到CPU寄存器中

按照大小来看,通常L1 < L2 < L3 < 内存 < 磁盘,如果你手边有一台Linu__机器的话,可以通过下面的命令查看CPU各级缓存的大小

以我手上这台服务器为例,L1指令缓存大小为32K、数据缓存大小为32K,L2缓存大小为1MB,L3缓存大小为35.75MB

按照速度来看,通常L1 > L2 > L3 > 内存 > 磁盘,以时钟周期为计量单位

L1缓存:约 4 个CPU时钟周期

L2缓存:约 10 个CPU时钟周期

L3缓存:约 40 个CPU时钟周期

内存:约 200 个CPU时钟周期

也就意味着如果能命中缓存,我们程序的执行速度至少提升5倍左右,如果能命中L1缓存则提升50倍左右,这已经属于相当大的性能提升了

有了缓存系统后,CPU就不必要每条指令或数据都读一次了,可以一次性读取若干条指令或数据然后放到缓存里供以后查询,因为根据局部性原理,CPU访问内存时,无论是读取指令还是数据,所访问的内存单元都趋于聚集在一个较小的连续区域中,所以一次性读取一块连续的内存有利于后续的缓存命中

现实中,CPU通常情况下每次的读取内存时都会一次性读取内存中连续的64个字节,这个连续的64字节术语就叫做Cache Line(缓存行),所以每一级CPU缓存就像下面这样

如果你手边有一台Linu__机器的话,可以通过下面的命令查看你的机器使用的CPU的Cache Line大小是多少

对于我的服务器来说,L1缓存就有 32KB / 64B = 512 个Cache Line

到这里,我们已经知道了CPU缓存的工作原理和加载方式,这里实际上还遗留了两个话题没有讲,一个是如何组织每一级的 Cache Line(例如 L1 的 512 个Cache Line)来提升访问的命中率;另一个更加复杂一点,在现代CPU都是多核的场景下如何保证数据的一致性,因为每个核都有自己的L1和L2缓存,那么如果核心1修改的时候只修改了缓存的数据而没有修改内存中的数据,其他核心读到的就是旧数据了,如何解决这一问题?

由于本篇 文章 只是期望对CPU知识进行一个科普,不希望对于小白来说一次性接触大量的新内容,所以这两个问题我准备在后面的另外两篇再进行更细致的讨论

4性能对比

下面以几个实际的例子来加深大家对Cache Line如何影响程序性能的理解

示例一

我们假设有一个5000万长度的int数组,接着把这个数组的其中一些元素乘以2,考虑下面这两份代码

直觉上代码一比代码二少循环了4倍,并且也少乘2了4倍,理论上代码一比代码二快4倍左右才合理

但在我的服务器上运行的结果是代码一平均花费90毫秒,代码二平均花费93毫秒,性能几乎是差不多的,读者可以自行思考一下原因,再点击下方空白处查看解析

点击下方空白区域查看解析

解析

这里最主要的原因还是Cache Line,虽然代码一需要执行的指令确实比代码二要少4倍,但由于CPU一次会把连续的64个字节都读入缓存,而读写缓存的速度又特别快(还记得吗?L1的读取速度只有约4个时钟周期,是内存的50倍),以至于我们很难察觉到这4倍指令的差距

示例二

假设我们需要遍历一个二维数组,考虑下面这两种遍历 方法 :

由于数组长度是一模一样的,直觉上我们期望的是两份代码运行时间相差无几。但在我的服务器上代码一运行需要23毫秒,代码二运行需要51毫秒,读者可以自行思考一下原因,再点击下方空白处查看解析

点击下方空白区域查看解析

解析

这里最主要的原因依然是Cache Line,由于C语言中二维数组的内存是连续的,所以我们按行访问的时候访问的一直都是连续的内存,而Cache Line也是连续的64个字节,所以按行访问对Cache Line更友好,更容易命中缓存

而按列访问的话每次访问的内存不是连续的,每次的跨度都是256__sizeof(int)也就是1KB,更容易出现缓存Miss

示例三

假设我们有一个数组,我们希望计算所有大于100的元素的和,考虑下面两份代码

其中代码一是随机生成了个长度为1000W的数组,然后统计大于100的所有数字的和;代码二也是随机生成了个长度为1000W的数组,但是是先排完序,再统计大于100的所有数字的和。并且可以看到,两份代码都是只计算了统计sum的那段代码的消耗时间,所以两份代码都不考虑随机生成数组和排序花费的时间

理论上来讲两份代码花费时间应当是相差无几的,但实际上在我的机器上跑出来第一份代码输出的是46毫秒,第二份代码输出的是23毫秒

读者可以自行思考一下原因,再点击下方空白处查看解析,提示:第二份代码中在统计sum之前数组是有序的

电脑CPU如何选购? 台式机 CPU知识扫盲和选购建议

CPU有几个重要的参数:架构、主频、核心、线程、缓存、接口。

架构:

有句老话叫“抛开架构看核心主频都是耍流氓”,那什么是架构?假如我们把架构想象成交通工具,那么老的架构就是火车,而新的架构就是高铁,所以架构的提升直接影响CPU的性能。这也就是为什么老式的CPU虽然也有超高的主频但性能还是被现在的i3碾压的原因了。

电脑CPU如何选购?台式机CPU知识扫盲和选购建议

主频:

我们常在CPU的信息里看到 某某CPU主频3.6GHz,这里的主频其实是CPU内核工作的时钟频率,并不直接等于CPU的运算速度,但是高的主频对于CPU的运算速度却至关重要。

核心:

核心又称内核,是CPU用来完成所有计算、接受/存储命令、处理数据等任务的装置。我们可以简单的把核心理解为人的手,单核就是一只手、双核就是两只手、四核就是四只手。

核心数并不是越多越好的,要看使用场景,比如在打字的时候,两只手就比一只手效率高,但是在操作鼠标的时候,使用两只手只会起到适得其反的效果。至于什么场景需要使用多少核心的CPU在下面会讲到。

电脑CPU如何选购?台式机CPU知识扫盲和选购建议

线程:

我们通常会看到“四核四线程” 和“四核八线程”这两种说法,我们可以简单的把工厂里的流水线比作线程,把工人比作核心,早先由于工人工作技能不高,一个工人只能处理一条流水线的任务,我们可以把这个称为单核单线程,但是后来工人技术熟练了,觉得操作一条流水线很无聊,不能体现自己的价值,于是就给又分配一条流水线,让这个工人同时处理两条流水线的任务,我们可以把这个称为“单核双线程”。

缓存:

缓存也是CPU里的一项非常重要的参数,由于CPU的运算速度比内存条的读写速度要快很多,这会让CPU花费很长的时间等待数据的到来或是把数据写入内存条,这个时候CPU内的高速缓存可以作为临时的存储介质来缓解CPU的运算速度与内存读写速度不匹配的矛盾,所以缓存越大越好。

电脑CPU如何选购?台式机CPU知识扫盲和选购建议

接口:

CPU需要通过接口安装在主板上才能工作,而目前CPU的接口都是针脚式接口,AMD和英特尔的CPU在接口上就有很大的差别,所以需要使用适配接口的主板才能正常工作。目前英特尔主流的接口类型为LGA-1151接口(6、7、8代i3 i5 i7都是这种接口);AMD平台主流的接口类型有AM4接口(锐龙系列)和FM2+接口(速龙系列、APU系列)。

PS:英特尔最新的酷睿8代CPU虽然也是LGA-1151接口,但不适配老式的LGA-1151接口主板的平台,需要另购主板

说完了这些重要的参数,相信你也对CPU有了一个大概的了解,我们再谈谈不同场景对CPU的选择。

计算机系统基础:CPU相关知识笔记

1、什么是CPU

计算机的基本硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件组成。

运算器和控制器等部件被集成在一起称为中央处理单元(Central Processing Unit,CPU).CPU

是硬件系统的核心。

2、CPU的用途

CPU主要负责获取程序指令、对指令进行译码并加以执行。

CPU的功能如下:

3、CPU的组成

CPU主要由运算器、控制器、寄存器和内部总线等部件组成。

3.1 运算器

运算器包括算术逻辑单元(ALU)、累加器、缓冲寄存器、状态条件寄存器等。它的主要工作是完成所规定的的各种算术和逻辑运算。

算术逻辑单元(ALU):ALU的重要组成部件,负责处理数据,实现算术和逻辑运算。

累加器(AC):当执行算术或逻辑运算时,为ALU提供一个工作区。

数据缓冲器(DR):作为CPU和内存、外部设备之间数据传送的中转站、操作速度的缓冲;

在单累加器结构的运算器中,DR还可以作为操作数寄存器。

状态寄存器(PSW):保存算术指令和逻辑指令运行或测试的结果建立的的各种条件码内容,分为状态标志和控制标志。

3.2 控制器

用于控制这个CPU的工作,不仅要保证程序的正确执行,还要能处理异常事件。

控制器主要包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑。

3.2.1 指令控制

指令寄存器(IR):当执行一条指令时,需要先把它从内存存储器取到缓冲寄存器中,再送入IR中暂存,指令译码器会根据IR的内容产生各种微操作命令,控制其他部件协调工作,完成指令的功能。

程序计数器(PC):PC具有寄存和计数两种功能。又称为指令计数器。

地址寄存器(AR):用来保存当前CPU所访问的内存单元地址。

指令译码器(ID):包含指令操作码和地址码两部分,为了能执行任何给定的指令必须对操作码进行分析,以便识别要进行的操作。

3.2.2 时序控制

时序控制要为每条指令按时间顺序提供应有的控制信号。

3.2.3 总线控制

为多个功能部件提供服务的信息通路的控制电路。

3.2.4 中断控制

用于控制各种中断请求,并根据优先级排队,逐个交给CPU处理。

3.3 寄存器组

分为专用寄存器、通用寄存器。运算器和控制器中的寄存器是专用寄存器,作用是固定的。

通用寄存器用途广泛由程序员规定其用途。

4、什么是多核CPU

内核:CPU的核心称为内核,是CPU的最重要组成部分。CPU的所有计算、接收/存储命令、处理数据都是由核心执行。

多核:在一个单芯片上集成两个或者更多个处理器内核,并且每个内核都有自己的逻辑单元、控制单元、中端处理器、运算单元、一级Cache、二级Cache共享或独有。

多核CPU优点:可满足用户同时进行多任务处理等要求。


CPU基础知识大全详解相关文章:

★ CPU的基础知识大全有哪些

★ CPU基础知识拓展大全

★ 电脑主板应用知识大全

㈤ 使用GPU编程,一定能够提高运行速度吗

主频也叫时钟频率,单位是MHz(或GHz),用来表示CPU的运算、处理数据的速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于服务器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel英特尔和AMD,在这点上也存在着很大的争议,从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一块1G的全美达处理器来做比较,它的运行效率相当于2G的Intel处理器。
主频和实际的运算速度存在一定的关系,但并不是一个简单的线性关系. 所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,也可以看到这样的例子:1 GHz Itanium芯片能够表现得差不多跟2.66 GHz至强( Xeon)/Opteron一样快,或是1.5 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线、总线等等各方面的性能指标。
主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
外频
外频是CPU的基准频率,单位是MHz。CPU的外频决定着整块主板的运行速度。通俗地说,在台式机中,所说的超频,都是超CPU的外频(当然一般情况下,CPU的倍频都是被锁住的)相信这点是很好理解的。但对于服务器CPU来讲,超频是绝对不允许的。前面说到CPU决定着主板的运行速度,两者是同步运行的,如果把服务器CPU超频了,改变了外频,会产生异步运行,(台式机很多主板都支持异步运行)这样会造成整个服务器系统的不稳定。
目前的绝大部分电脑系统中外频与主板前端总线不是同步速度的,而外频与前端总线(FSB)频率又很容易被混为一谈,下面的前端总线介绍谈谈两者的区别。
前端总线(FSB)频率
前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据位宽)/8,数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,现在的支持64位的至强Nocona,前端总线是800MHz,按照公式,它的数据传输最大带宽是6.4GB/秒。
外频与前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一亿次;而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit÷8bit/Byte=800MB/s。
其实现在“HyperTransport”构架的出现,让这种实际意义上的前端总线(FSB)频率发生了变化。IA-32架构必须有三大重要的构件:内存控制器Hub (MCH) ,I/O控制器Hub和PCI Hub,像Intel很典型的芯片组 Intel 7501、Intel7505芯片组,为双至强处理器量身定做的,它们所包含的MCH为CPU提供了频率为533MHz的前端总线,配合DDR内存,前端总线带宽可达到4.3GB/秒。但随着处理器性能不断提高同时给系统架构带来了很多问题。而“HyperTransport”构架不但解决了问题,而且更有效地提高了总线带宽,比方AMD Opteron处理器,灵活的HyperTransport I/O总线体系结构让它整合了内存控制器,使处理器不通过系统总线传给芯片组而直接和内存交换数据。这样的话,前端总线(FSB)频率在AMD Opteron处理器就不知道从何谈起了。
CPU的位和字长
位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是 “0”或是“1”在CPU中都是 一“位”。
字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。字节和字长的区别:由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。字长的长度是不固定的,对于不同的CPU、字长的长度也不一样。8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。
倍频系数
倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。这是因为CPU与系统之间数据传输速度是有限的,一味追求高主频而得到高倍频的CPU就会出现明显的“瓶颈”效应—CPU从系统中得到数据的极限速度不能够满足CPU运算的速度。一般除了工程样版的Intel的CPU都是锁了倍频的,少量的如Inter 酷睿2 核心的奔腾双核E6500K和一些至尊版的CPU不锁倍频,而AMD之前都没有锁,现在AMD推出了黑盒版CPU(即不锁倍频版本,用户可以自由调节倍频,调节倍频的超频方式比调节外频稳定得多)。
缓存
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常在32—256KB。
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,以前家庭用CPU容量最大的是512KB,现在笔记本电脑中也可以达到2M,而服务器和工作站上用CPU的L2高速缓存更高,可以达到8M以上。
L3 Cache(三级缓存),分为两种,早期的是外置,现在的都是内置的。而它的实际作用即是,L3缓存的应用可以进一步降低内存延迟,同时提升大数据量计算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务器领域增加L3缓存在性能方面仍然有显着的提升。比方具有较大L3缓存的配置利用物理内存会更有效,故它比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。
其实最早的L3缓存被应用在AMD发布的K6-III处理器上,当时的L3缓存受限于制造工艺,并没有被集成进芯片内部,而是集成在主板上。在只能够和系统总线频率同步的L3缓存同主内存其实差不了多少。后来使用L3缓存的是英特尔为服务器市场所推出的Itanium处理器。接着就是P4EE和至强MP。Intel还打算推出一款9MB L3缓存的Itanium2处理器,和以后24MB L3缓存的双核心Itanium2处理器。
但基本上L3缓存对处理器的性能提高显得不是很重要,比方配备1MB L3缓存的Xeon MP处理器却仍然不是Opteron的对手,由此可见前端总线的增加,要比缓存增加带来更有效的性能提升。
CPU扩展指令集
CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SSE3、SSE4系列和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。通常会把CPU的扩展指令集称为”CPU的指令集”。SSE3指令集也是目前规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命令,SSE2包含有144条命令,SSE3包含有13条命令。目前SSE4也是最先进的指令集,英特尔酷睿系列处理器已经支持SSE4指令集,AMD会在未来双核心处理器当中加入对SSE4指令集的支持,全美达的处理器也将支持这一指令集。
CPU内核和I/O工作电压
从586CPU开始,CPU的工作电压分为内核电压和I/O电压两种,通常CPU的核心电压小于等于I/O电压。其中内核电压的大小是根据CPU的生产工艺而定,一般制作工艺越小,内核工作电压越低;I/O电压一般都在1.6~5V。低电压能解决耗电过大和发热过高的问题。
制造工艺
制造工艺的微米是指IC内电路与电路之间的距离。制造工艺的趋势是向密集度愈高的方向发展。密度愈高的IC电路设计,意味着在同样大小面积的IC中,可以拥有密度更高、功能更复杂的电路设计。现在主要的180nm、130nm、90nm、65nm、45纳米。最近inter已经有32纳米的制造工艺的酷睿i3/i5系列了。
而AMD则表示、自己的产品将会直接跳过32nm工艺(2010年第三季度生产少许32nm产品、如Orochi、Llano)于2011年中期初发布28nm的产品(名称未定)
指令集
(1)CISC指令集
CISC指令集,也称为复杂指令集,英文名是CISC,(Complex Instruction Set Computer的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即使是现在新起的X86-64(也被成AMD64)都是属于CISC的范畴。
要知道什么是指令集还要从当今的X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加了X87芯片,以后就将X86指令集和X87指令集统称为X86指令集。
虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到过去的PII至强、PIII至强、Pentium 3,Pentium 4系列,最后到今天的酷睿2系列、至强(不包括至强Nocona),但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。x86CPU目前主要有intel的服务器CPU和AMD的服务器CPU两类。
(2)RISC指令集
RISC是英文“Reced Instruction Set Computing ” 的缩写,中文意思是“精简指令集”。它是在CISC指令系统基础上发展起来的,有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。基于上述原因,20世纪80年代RISC型CPU诞生了,相对于CISC型CPU ,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。RISC指令集是高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。RISC指令系统更加适合高档服务器的操作系统UNIX,现在Linux也属于类似UNIX的操作系统。RISC型CPU与Intel和AMD的CPU在软件和硬件上都不兼容。
目前,在中高档服务器中采用RISC指令的CPU主要有以下几类:PowerPC处理器、SPARC处理器、PA-RISC处理器、MIPS处理器、Alpha处理器。
(3)IA-64
EPIC(Explicitly Parallel Instruction Computers,精确并行指令计算机)是否是RISC和CISC体系的继承者的争论已经有很多,单以EPIC体系来说,它更像Intel的处理器迈向RISC体系的重要步骤。从理论上说,EPIC体系设计的CPU,在相同的主机配置下,处理Windows的应用软件比基于Unix下的应用软件要好得多。
Intel采用EPIC技术的服务器CPU是安腾Itanium(开发代号即Merced)。它是64位处理器,也是IA-64系列中的第一款。微软也已开发了代号为Win64的操作系统,在软件上加以支持。在Intel采用了X86指令集之后,它又转而寻求更先进的64-bit微处理器,Intel这样做的原因是,它们想摆脱容量巨大的x86架构,从而引入精力充沛而又功能强大的指令集,于是采用EPIC指令集的IA-64架构便诞生了。IA-64 在很多方面来说,都比x86有了长足的进步。突破了传统IA32架构的许多限制,在数据的处理能力,系统的稳定性、安全性、可用性、可观理性等方面获得了突破性的提高。
IA-64微处理器最大的缺陷是它们缺乏与x86的兼容,而Intel为了IA-64处理器能够更好地运行两个朝代的软件,它在IA-64处理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解码器,这样就能够把x86指令翻译为IA-64指令。这个解码器并不是最有效率的解码器,也不是运行x86代码的最好途径(最好的途径是直接在x86处理器上运行x86代码),因此Itanium 和Itanium2在运行x86应用程序时候的性能非常糟糕。这也成为X86-64产生的根本原因。
(4)X86-64 (AMD64 / EM64T)
AMD公司设计,可以在同一时间内处理64位的整数运算,并兼容于X86-32架构。其中支持64位逻辑寻址,同时提供转换为32位寻址选项;但数据操作指令默认为32位和8位,提供转换成64位和16位的选项;支持常规用途寄存器,如果是32位运算操作,就要将结果扩展成完整的64位。这样,指令中有“直接执行”和“转换执行”的区别,其指令字段是8位或32位,可以避免字段过长。
x86-64(也叫AMD64)的产生也并非空穴来风,x86处理器的32bit寻址空间限制在4GB内存,而IA-64的处理器又不能兼容x86。AMD充分考虑顾客的需求,加强x86指令集的功能,使这套指令集可同时支持64位的运算模式,因此AMD把它们的结构称之为x86-64。在技术上AMD在x86-64架构中为了进行64位运算,AMD为其引入了新增了R8-R15通用寄存器作为原有X86处理器寄存器的扩充,但在而在32位环境下并不完全使用到这些寄存器。原来的寄存器诸如EAX、EBX也由32位扩张至64位。在SSE单元中新加入了8个新寄存器以提供对SSE2的支持。寄存器数量的增加将带来性能的提升。与此同时,为了同时支持32和64位代码及寄存器,x86-64架构允许处理器工作在以下两种模式:Long Mode(长模式)和Legacy Mode(遗传模式),Long模式又分为两种子模式(64bit模式和Compatibility mode兼容模式)。该标准已经被引进在AMD服务器处理器中的Opteron处理器.
而今年也推出了支持64位的EM64T技术,再还没被正式命为EM64T之前是IA32E,这是英特尔64位扩展技术的名字,用来区别X86指令集。Intel的EM64T支持64位sub-mode,和AMD的X86-64技术类似,采用64位的线性平面寻址,加入8个新的通用寄存器(GPRs),还增加8个寄存器支持SSE指令。与AMD相类似,Intel的64位技术将兼容IA32和IA32E,只有在运行64位操作系统下的时候,才将会采用IA32E。IA32E将由2个sub-mode组成:64位sub-mode和32位sub-mode,同AMD64一样是向下兼容的。Intel的EM64T将完全兼容AMD的X86-64技术。现在Nocona处理器已经加入了一些64位技术,Intel的Pentium 4E处理器也支持64位技术。
应该说,这两者都是兼容x86指令集的64位微处理器架构,但EM64T与AMD64还是有一些不一样的地方,AMD64处理器中的NX位在Intel的处理器中将没有提供。
超流水线与超标量
在解释超流水线与超标量前,先了解流水线(pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间。而超流水线是通过细化流水、提高主频,使得在一个机器周期内完成一个甚至多个操作,其实质是以时间换取空间。例如Pentium 4的流水线就长达20级。将流水线设计的步(级)越长,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。但是流水线过长也带来了一定副作用,很可能会出现主频较高的CPU实际运算速度较低的现象,Intel的奔腾4就出现了这种情况,虽然它的主频可以高达1.4G以上,但其运算性能却远远比不上AMD 1.2G的速龙甚至奔腾III。
封装形式
CPU封装是采用特定的材料将CPU芯片或CPU模块固化在其中以防损坏的保护措施,一般必须在封装后CPU才能交付用户使用。CPU的封装方式取决于CPU安装形式和器件集成设计,从大的分类来看通常采用Socket插座进行安装的CPU使用PGA(栅格阵列)方式封装,而采用Slot x槽安装的CPU则全部采用SEC(单边接插盒)的形式封装。现在还有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封装技术。由于市场竞争日益激烈,目前CPU封装技术的发展方向以节约成本为主。
多线程
同时多线程Simultaneous multithreading,简称SMT。SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。SMT最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显着地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。这对于桌面低端系统来说无疑十分具有吸引力。Intel从3.06GHz Pentium 4开始,所有处理器都将支持SMT技术。
多核心
多核心,也指单芯片多处理器(Chip multiprocessors,简称CMP)。CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与CMP比较, SMT处理器结构的灵活性比较突出。但是,当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。目前,IBM 的Power 4芯片和Sun的 MAJC5200芯片都采用了CMP结构。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。
2005年下半年,Intel和AMD的新型处理器也将融入CMP结构。新安腾处理器开发代码为Montecito,采用双核心设计,拥有最少18MB片内缓存,采取90nm工艺制造,它的设计绝对称得上是对当今芯片业的挑战。它的每个单独的核心都拥有独立的L1,L2和L3 cache,包含大约10亿支晶体管。
SMP
SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。像双至强,也就是所说的二路,这是在对称处理器系统中最常见的一种(至强MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少数是16路的。但是一般来讲,SMP结构的机器可扩展性较差,很难做到100个以上多处理器,常规的一般是8个到16个,不过这对于多数的用户来说已经够用了。在高性能服务器和工作站级主板架构中最为常见,像UNIX服务器可支持最多256个CPU的系统。
构建一套SMP系统的必要条件是:支持SMP的硬件包括主板和CPU;支持SMP的系统平台,再就是支持SMP的应用软件。为了能够使得SMP系统发挥高效的性能,操作系统必须支持SMP系统,如WINNT、LINUX、以及UNIX等等32位操作系统。即能够进行多任务和多线程处理。多任务是指操作系统能够在同一时间让不同的CPU完成不同的任务;多线程是指操作系统能够使得不同的CPU并行的完成同一个任务 。
要组建SMP系统,对所选的CPU有很高的要求,首先、CPU内部必须内置APIC(Advanced Programmable Interrupt Controllers)单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers–APICs)的使用;再次,相同的产品型号,同

㈥ C语言程序 如何把当前程序的内存状态保存下来(到硬盘),下次运行时接着上次保存的内存状态运行

有稻草
当怀疑系统重新启动之前针对计算机所进行的更改可能导致故障,可以在启动系统时按F8键,选择“最后一次正确的配置”来恢复对系统所做的更改。

2.自动登陆
单击开始→运行,输入“rundll32 netplwiz.dll,UsersRunDll”(不带引号),然后在User Accounts中取消“Users must enter a user name and password to use this computer”,单击“OK”,接着在弹出的对话框中输入你想自己登陆的用户名和密码即可。

3.快速关机或重启的快捷键(可定时)
在桌面点击鼠标右键,选择新建(快捷方式,在弹出的向导中输入位置为:C:/WINDOWS/system32/shutdown.exe -s -t 10(其中的-s可以改为-r,也就是重新启动,而-t 10表示延迟10秒,你可以根据自己的需要更改这个数字)。制作完这个快捷键后,按照上面的方法为它指定一个图标。这个快速关机或重启的技巧会显示一个比较漂亮的对话框提示关机(重启),而且你可以在后面加上“-c "我要关机啦!"”,这样这句话会显示在对话框中,当然文字你可以随意写,但要注意不能超过127个字符。

4.关机、重启只要1秒钟
如果你想让Windows XP瞬间关机,那么可以按下CTRL+ALT+DEL,接着在弹出的任务管理器中点击“关机”→“关机”,与此同时按住CTRL,不到1秒钟你会发现系统已经关闭啦,简直就在眨眼之间。同样道理,如果在“关机”菜单中选择“重启”,即可快速重启。

5. 寻找丢失的快速启动栏
把鼠标移到任务栏的空白区域,单击右键从弹出的菜单中选择“属性”,在弹出的窗口中选择“任务栏”选项卡,再从“任务栏外观”框中把“显示快速启动”的复选框选中,“确定”就行了。

6. 快速锁定计算机
在桌面上单击鼠标右键,在随后出现的快捷菜单上选择新建“快捷方式”,接着系统便会启动创建快捷方式向导,在文本框中输“rundll32.exe user32.dll,LockWorkStation”,点击“下一步”,在弹出的窗口中输入快捷方式的名称,点击“完成”即可。当然最简单的锁定计算机的方法是直接按WinKey + L。

7.恢复“开始”菜单
Windows XP新的“开始”菜单还是挺方便的,对系统资源的影响也不大。如果你喜欢过去的经典菜单的话,用鼠标右键单击任务栏空白处,选择“属性”菜单,进入“任务栏和开始菜单属性”的设置窗口,选择“[开始]菜单”选项卡,选择“经典[开始]菜单”即可恢复到从前的模样了。

8.优化视觉效果
Windows XP的操用界面的确是很好看,好看的背后是以消耗大量内存作为代价的,相对于速度和美观而言,我们还是宁愿选择前者,右键单击“我的电脑”,点击“属性/ 高级”,在“性能”一栏中,点击“设置/视觉效果”,在这里可以看到外观的所有设置,可以手工去掉一些不需要的功能。在这里把所有特殊的外观设置诸如淡入淡出、平滑滚动、滑动打开等所有视觉效果都关闭掉,我们就可以省下“一大笔”内存

9.禁用多余的服务组件
Windows XP和Windows 2000一样可以作为诸如Http服务器、邮件服务器、FTP服务器,所以每当Windows XP启动时,随之也启动了许多服务,有很多服务对于我们这些普通用户来说是完全没用的,所以关掉它们是一个很好的选择。操作的方法是:右键单击“我的电脑”,依次选择“管理/服务和应用程序/服务”,将不需要的服务组件禁用。
注意:有些服务是Windows XP必需的,关闭后会造系统崩溃。查看详细说明确认后再禁止。

10.减少启动时加载项目
许多应用程序在安装时都会自作主张添加至系统启动组,每次启动系统都会自动运行,这不仅延长了启动时间,而且启动完成后系统资源已经被吃掉不少!我们可以减少系统启动时加载的程序,方法是:选择“开始”菜单的“运行”,键入“msconfig”启动“系统配置实用程序”,进入“启动”标签,在此窗口列出了系统启动时加载的项目及来源,仔细查看你是否需要它自动加载,否则清除项目前的复选框,加载的项目愈少,启动的速度自然愈快。此项需要重新启动方能生效。

11.关闭系统还原功能
“系统还原”功能是Windows系列操作系统的一个重要特色,当Windows运行出现问题后,还原操作系统。“系统还原”虽然对经常犯错误的人有用,但是它会让你的硬盘处于高度繁忙的状态,你会发现你的硬盘总是忙个不停,因为Windows XP要记录操作,以便日后还原。如果你对自己有信心,那么就不要使用它,因为它可占不少内存。
关闭系统还原功能方法是:单击“开始/所有程序/附件/系统工具/系统还原”,在系统还原界面,单击“系统还原设置”进入“系统还原设置”窗口,清空“在所有驱动器上关闭系统还原”复选框,这样Windows XP就会删除备份的系统还原点,从而释放它占用的磁盘空间。

12.关闭自动更新
“自动更新”是Windows XP为了方便用户升级系统而推出的一种新功能,这种功能可以在微软推出系统升级补丁或系统安全补丁的时候,自动提醒用户升级自己的系统,不过这种功能有一个要求,就是用户必须时时在线,但是对于我们这些缺铁少银的“穷人”来说,这个要求未免苛刻,所以我们把“自动升级”功能关闭掉,改为“手动升级”。
关闭自动更新具体操作为:右键单击“我的电脑/属性/自动更新”,在“通知设置”一栏选择“关闭自动更新。我将手动更新计算机”一项。

13.关闭远程桌面
这个功能的一个特点就是可以让别人在另一台机器上访问你的桌面。在局域网中,这个功能很有用。比如你有问题了可以向同事求助,他可以不用到你的跟前,直接通过“远程桌面”来访问你的机器帮你解决问题。但是对于我们只有一台计算机的普通用户来说这个功能就显得多余了,所以我们把它关掉,不让它在那儿白白浪费内存。具体操作为:右键单击“我的电脑”,选择“属性/远程”,把“远程桌面”里的“允许用户远程连接到这台计算机”勾去掉。

14.禁用消休眠功能
Windows XP的休眠可以把内存中当前的系统状态完全保存到硬盘,当你下次开机的时候,系统就不需要经过加载、系统初始化等过程,而直接转到你上次休眠时的状态,因此启动非常快。但它会占用大量的硬盘空间(和你的内存大小一样),可以到“控制面板/电源选项/休眠”中将其关闭,以释放出硬盘空间,待到要需要使用时再打开即可。方法是:单击“开始/控制面板/电源管理/休眠”,将“启用休眠”前的勾去掉。

15.合理设置虚拟内存
对于虚拟内存文件,Windows XP为了安全默认值总是设的很大,浪费了不少的硬盘空间,其实我们完全可以将它的值设小一点。方法是:进入“控制面板/系统/高级/性能/设置/高级/虚拟内存/更改”,来到虚拟内存设置窗口,首先确定你的页面文件在哪个驱动器盘符,然后将别的盘符驱动器的页面文件全部禁用。建议你把它是设置到其他分区上,而不是默认的系统所在的分区,这样可以提高页面文件的读写速度,有利于系统的快速运行。根据微软的建议,页面文件应设为内存容量的1.5倍,但如果你的内存比较大,那它占用的空间也是很可观的,所以,建议如果内存容量在256MB以下,就设置为1.5倍,最大值和最小值一样,如果在512MB以上,设置为内存容量的一半完全可行。

16.删除多余文档
Windows XP中有许多文件平时我们很少用到,放在硬盘中,白白浪费空间,降低系统性能。我们完全可以把这些用不到的文件删除,需要删除的文件有:
帮助文件:在C:/Windows/Help目录下。
驱动备份:C:/Windows/driver cache/i386目录下的Driver.cab文件。
系统文件备份: 一般用户是不怎么用的,利用命令sfc.exe /purgecache删除。
备用的dll文件:在C:/Windows/system32/dllcache目录下。
输入法:在C:Windows/Ime文件夹下直接删除chtime、imjp8_1、imkr6_1三个目录即可,分别是繁体中文、日文、韩文输入法。

17.禁止MSN随Windows启动
每次启动Windows时,Messenger总是自动运行,即使你不想启动它,可是它也自动运行,非常烦人,我们能不能禁止它,不让它随Windows启动呢?回答是可以的。
第一种方法:
1.在“开始”菜单中单击“运行”,在“打开”框中输入“msconfig”,“确定”后打开“系统配置实用程序”窗口。
2.单击“启动”选项卡,在“启动项目”列表中,清除“MSMSGS”前的复选框,单击“确定”按钮。
3.当系统提示“重新启动计算机”时,请单击“是”按钮。
第二种方法:
1.打开“注册表编辑器”窗口。
2.依次展开“KEY_CURRENT_”分支,然后在右窗格中右键单击“MSMSGS”,再单击快捷菜单中的“删除”命令,当系统提示确认删除时,请单击“是”按钮。
经过设置,MSN就再也不会随Windows XP的启动而启动了。

18.删除多余字体
Windows XP中安装的字体越多,就会占用更多的内存的系统资源,减慢系统的运行速度,因此,对于不常用的字体,我们最好把它从系统中删除。字体文件存放在C:/Windows/font目录下,你完全可以根据需要选择一些字体,对于更多不用的字体,一删了之。

19.更改IE临时文件夹
上网时产生的大量临时文件都存放在IE临时文件夹中,默认情况下,临时文件夹是在系统分区上,大量的临时文件会影响硬盘读写系统文件的性能。你可以更改临时文件的位置来避免出现这种情况。方法是单击“开始/控制面板/Internet选项”,在“常规”选项卡中单击“设置”按钮,在打开的窗口中单击“移动文件夹”按钮,指定一个非系统分区上的文件夹,单击“确定”后,临时文件就会移到指定的文件夹上。

20.加快“网上邻居”共享的速度
不知道各位使用者用Windows XP开“网上邻居”里面的共享资源时,有没有发现所花的时间相当的长,这是因为它会检查其它计算机中的设定工作,有时甚至就在那边停了将近一分钟,相当讨厌,大家可以通过下面的方法将其检查的步骤取消:选择“开始/运行”,输入regedit,在弹出注册表编辑器中寻找 [HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/RemoteComputer/NameSpace],按鼠标右将在此位置的删除之即可。

21.清除预读文件
当Windows XP使用一段时间后,安装目录下的预读文件夹(C:/Windows/prefetch)里的文件会变的很大,里面会有死链接文件,这会减慢系统时间,建议你定期删除这些文件。

22.设置预读以提高速度
Windows XP使用预读设置这一新技术,以提高系统速度。如果你的电脑配置不错,拥有PIII 800, 512M内存以上,你可以进行以下修改:单击“开始/运行”,输入“regedit”,打开注册表,找到 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management/PrefetchParameters/EnablePrefetcher],设置数值0,1,2,3(0-Disable,1- 预读应用程序,2-启动预读,3-前两者皆预读),推荐使用“3”,这样可以减少启动时间。

23.启用DMA传输模式
所谓DMA,即直接存储器存储模式,指计算机周边设备(主要指硬盘)可直接与内存交换数据,这样可加快硬盘读写速度,提高速据传输速率。由于某些原因, Windows XP有时会在IDE通道上使用PIO并行输入输出传输模式,而不是DMA模式。如果有这种情况,用户可以手动把IDE通道改为DMA模式,这样可以减少该设备占用的CPU周期。方法是:右键点击“我的电脑”,选“属性”,点选“硬件”选项卡,单击“设备管理器”按钮,打开“设备管理器”,然后点击展开 “IDE ATA/ATAPI 控制器”分支,其中“IDE控制器”有两项“主要IDE通道”及“次要IDE通”,分别选中,依次进入“属性/高级设置”,该对话框会列出目前IDE接口所连接设备的传输模式,检查“传输模式”下拉菜单,把它们全部设“DMA(若可用)”,点击“确定”。

24.关闭计算机时自动结束任务
在关机的时候,有时会弹出讨厌的对话框,提醒某个程序仍在运行,是否结束任务。其实完全可以通过一点点修改让Windows自动结束这些仍在运行的程序。在注册表中打开HKEY_CURRENT_USER/Control Panel/Desktop 目录,把里面的AugoEndTasks键值改为1。
注意:可能会找不到AutoEndTasks键值,如果是这样的话,自己建一个串值并把它改为这个名字,值设为1就可以了。

25.减少磁盘扫描等待时间
WindowsXP虽然号称稳定,但是并不是永不死机,偶尔也会给你个蓝脸,非法操作后系统会自动扫描,出现大段大段的E文,告诉你刚才系统非正常结束,现在需要检查一下是否出错,可是还要等待一段时间才开始,所以我们可以在dos下,键入“chkntfs/t:0”,表示等待时间为0秒。

26.设置共享文件夹的权限
Windows 2000操作系统中用户在设置文件夹的共享属性时操作非常简便,只需用鼠标右击该文件夹并选择属性,就可以找到共享设置标签,来设置文件夹的访问权限,只允许特定用户访问,可在Windows XP中却找不到这个功能了。难道在Windows XP中不能使用这个功能吗?其实不然,你可以这样操作:打开“我的电脑”中的“工具”,选择“文件夹属性”,调出“查看”标签,在“文件和文件夹”部分将 “使用简单文件共享(推荐)”项前面的选择取消,这样修改后用户就可以象使用Windows 2000一样对文件夹属性进行方便修改了。

27.彻底隐藏文件
每个人的机器上都或多或少有一点不愿意别人看见的东西,怎么办,直接隐藏起来吗?一打开显示隐藏文件就什么都看见了,其实你只要HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/explorer/Advanced/Folder/Hidden/SHOWALL下, DWORD值Checkedvalue设为0(如果没有这一项可新建一个),这样当有非法用户开启显示隐藏文件功能后,你的文件也不会被显示出来。

28.快速锁定计算机
如果你因为有急事而需要离开,但又不希望电脑进行系统注销。这时你可以选择“新建/快捷方式”,接着系统便会启动创建快捷方式向导,在文本框中输入 "rundll32.exe user32.dll,LockWorkStation",单击“下一步”,在弹出的窗口中输入快捷方式的名称。比如我们可将它命名为“锁定计算机”或选用你所喜欢的任何名称,单击“完成”。以后,我们就可以简单地点击这个快捷方式,锁定计算机。

29.禁止隐藏不活动的图标
在使用一段时间后,Windows XP会自动检测并隐藏不活动的图标,我们可以通过下面的方法来禁止它:在任务栏的空白处单击鼠标右键,在弹出的快捷菜单中选择“属性”,在“任务栏”标签中将“隐藏不活动的图标”取消即可,如果你不想完全禁止这项功能,可以单击“自定义”按钮,自行设置有关项目的隐藏和显示。

30.让欢迎窗口更清晰
Windows XP系统的显示效果得到了较大提高,这主要是基于它使用了名“ClearType”的清晰化技术,该技术特别让使用笔记本电脑及液晶显示器的用户在运行 Windows XP操作系统时感受到与以往系统不同的效果。但由于该清晰效果只有当Windows启动完毕后才能调用,因此在系统启动过程中的欢迎窗口仍然无法实现这一效果。为了使欢迎窗口更加清晰,用户可以使用注册表编辑器进行修改,寻找到这两个主键:
HKEY_USERS/.Default/Control Panel/Desktop/FontSmoothing
HKEY_USERS/.Default/Control Panel/Desktop/FontSmoothingType
将键值修改为“2”,这样便可以实现清晰显示效果了。

31.隐藏桌面图标
在Windows XP中增加了隐藏桌面图标的功能,你只需用鼠标单击桌面空白处,在弹出的右键菜单中选定“排列图标”命令,然后在其下一级级联菜单中取消对“显示桌面图标”命令的选定,系统就会自动将所有桌面图标隐藏。

32.缩短等待时间
HKEY_CURRENT_USER\Control Panel\Desktop 键,将右边窗口的 WaitToKillAppTimeout 改为 4000(原设定值:20000),即关闭程序时仅等待1秒。将 HungAppTimeout 值改为:2000(原设定值:5000),表示程序出错时等待0.5秒。

33.优化“启动和故障恢复”设置:
右键单击“我的电脑”,点击属性,点击“高级”,在“启动和故障恢复”
一栏中,点击“设置”,其中的“系统失败”一栏中,只选择“自动重新启动”,写入调试信息选择“无”。

34.定制特殊的启动提示注册表:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Winlogon中的"LegaNoticeCaption"是登陆提示语言,“LegalNoticeText”是欢迎词。

35.windowsXP的内存优化!!!!!!!!!!!!(警告!!!!!以下设置需要有256M以上的内存才能有好的效果!!!)
注册表:
HKEK_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/SessionManager/Memory Management
中的:禁用内存页面调度: DisablePagingExecutive 值改为“1”
提升系统缓存: LargeSystemCache 值改为“1”

36.卸载无用的动态链接
资源管理器经常在内存中留下无用的动态链接,为了消除这种现象,你可以打开注册表编辑器,设置键值:HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Windows\CurrentVersion\Explorer/AlwaysUnloadDLL(字符串值)将其设为1

37.在关机时清空页面文件
打开“控制面板”,点击“性能和维护”-“管理工具”→“本地安全策略”→“本地策略”→“安全选项”,双击其中“关机:清理虚拟内存页面文件”
一项,点击弹出选单中的“已启用”选项,单击“确定”即可

38.Windows XP 安装好后,如何把FAT 32转化为NTFS
使用convert命令,在命令行模式下用convert.exe这个命令随时转化的。例如:convert c: /fs:ntfs把c盘转化为NTFS

39.上网时在地址栏内输入网址,系统会记录下来,虽然方便以后不用再重复,不过如果是公用的机子,又不想让别人知道自己到过哪些地方,可以用“CTRL+ O(字母O,不是0)”,这时对弹出一个“打开”对话框,在其中的地址栏内 输入网址,就不会被记录下来了.

电脑死机原因大全
由硬件原因引起的死机

显示器、电源和CPU在工作中发热量非常大,因此保持良好的通风状况非常重要,如果显示器过热将会导致色彩、图象失真甚至缩短显示器寿命。工作时间太长也会导致电源或显示器散热不畅而造成电脑死机。CPU的散热是关系到电脑运行的稳定性的重要问题,也是散热故障发生的“重灾区”。

在电脑移动过程中受到很大振动常常会使机器内部器件松动,从而导致接触不良,引起电脑死机,所以移动电脑时应当避免剧烈振动。

机器内灰尘过多也会引起死机故障。如软驱磁头或光驱激光头沾染过多灰尘后,会导致读写错误,严重的会引起电脑死机。

如主板主频和CPU主频不匹配,老主板超频时将外频定得太高,可能就不能保证运行的稳定性,因而导致频繁死机。

三维软件和一些特殊软件,可能在有的微机上就不能正常启动甚至安装,其中可能就有软硬件兼容方面的问题。

主要是内存条松动、虚焊或内存芯片本身质量所致。应根据具体情况排除内存条接触故障,如果是内存条质量存在问题,则需更换内存才能解决问题。

主要是硬盘老化或由于使用不当造成坏道、坏扇区。这样机器在运行时就很容易发生死机。可以用专用工具软件来进行排障处理,如损坏严重则只能更换硬盘了。另外对于在不支持UDMA 66/100的主板,应注意CMOS中硬盘运行方式的设定。

超频提高了CPU的工作频率,同时,也可能使其性能变得不稳定。究其原因,CPU在内存中存取数据的速度本来就快于内存与硬盘交换数据的速度,超频使这种矛盾更加突出,加剧了在内存或虚拟内存中找不到所需数据的情况,这样就会出现“异常错误”。解决办法当然也比较简单,就是让CPU回到正常的频率上。

是由于声卡或显示卡的设置冲突,引起异常错误。此外,其它设备的中断、DMA或端口出现冲突的话,可能导致少数驱动程序产生异常,以致死机。解决的办法是以“安全模式”启动,在“控制面板”→“系统”→“设备管理”中进行适当调整。对于在驱动程序中产生异常错误的情况,可以修改注册表。选择“运行”,键入“REGEDIT”,进入注册表编辑器,通过选单下的“查找”功能,找到并删除与驱动程序前缀字符串相关的所有“主键”和“键值”,重新启动。

内存容量越大越好,应不小于硬盘容量的0.5~1%,如出现这方面的问题,就应该换上容量尽可能大的内存条。

少数不法商人在给顾客组装兼容机时,使用质量低劣的板卡、内存,有的甚至出售冒牌主板和Remark过的CPU、内存,这样的机器在运行时很不稳定,发生死机在所难免。因此,用户购机时应该警惕,并可以用一些较新的工具软件测试电脑,长时间连续考机(如72小时),以及争取尽量长的保修时间等。

由软件原因引起的死机

病毒可以使计算机工作效率急剧下降,造成频繁死机。这时,我们需用杀毒软件如KV3000、金山毒霸、瑞星等来进行全面查毒、杀毒,并做到定时升级杀毒软件。

该故障现象很普遍,如硬盘参数设置、模式设置、内存参数设置不当从而导致计算机无法启动。如将无ECC功能的内存设置为具有ECC功能,这样就会因内存错误而造成死机。

由于Windows 9x启动需要有Command.com、Io.sys、Msdos.sys等文件,如果这些文件遭破坏或被误删除,即使在CMOS中各种硬件设置正确无误也无济于事。解决方法:使用同版本操作系统的启动盘启动计算机,然后键入“SYS C:”,重新传送系统文件即可。

由于Windows 9x启动需要读取System.ini、Win.ini和注册表文件,如果存在Config.sys、Autoexec.bat文件,这两个文件也会被读取。只要这些文件中存在错误信息都可能出现死机,特别是System.ini、Win.ini、User.dat、System.dat这四个文件尤为重要。

在Windows操作系统中还有一类文件也相当重要,这就是扩展名为DLL的动态链接库文件,这些文件从性质上来讲是属于共享类文件,也就是说,一个DLL文件可能会有多个软件在运行时需要调用它。如果我们在删除一个应用软件的时候,该软件的反安装程序会记录它曾经安装过的文件并准备将其逐一删去,这时候就容易出现被删掉的动态链接库文件同时还会被其它软件用到的情形,如果丢失的链接库文件是比较重要的核心链接文件的话,那么系统就会死机,甚至崩溃。我们可用工具软件如“超级兔仔”对无用的DLL文件进行删除,这样会避免误删除。

如果硬盘的剩余空间太少,由于一些应用程序运行需要大量的内存、这样就需要虚拟内存,而虚拟内存则是由硬盘提供的,因此硬盘要有足够的剩余空间以满足虚拟内存的需求。同时用户还要养成定期整理硬盘、清除硬盘中垃圾文件的良好习惯。

应备份BIOS以防不测,但如果你的系统需要对BIOS进行升级的话,那么在升级之前最好确定你所使用BIOS版本是否与你的PC相符合。如果BIOS升级不正确或者在升级的过程中出现意外断电,那么你的系统可能无法启动。所以在升级BIOS前千万要搞清楚BIOS的型号。如果你所使用的BIOS升级工具可以对当前BIOS进行备份,那么请把以前的BIOS在磁盘中拷贝一份。同时看系统是否支持BIOS恢复并且还要懂得如何恢复。

大多数人可能认为软件升级是不会有问题的,事实上,在升级过程中都会对其中共享的一些组件也进行升级,但是其它程序可能不支持升级后的组件从而导致各种问题。

最好少用软件的测试版,因为测试软件通常带有一些BUG或者在某方面不够稳定,使用后会出现数据丢失的程序错误、死机或者是系统无法启动。

不要把软件安装所在的目录直接删掉,如果直接删掉的话,注册表以及Windows目录中会有很多垃圾存在,久而久之,系统也会变不稳定而引起死机。

因为这些软件可能隐藏着病毒,一旦执行,会自动修改你的系统,使系统在运行中出现死机。

这种情况是常见的,如在Win 98中运行那些在DOS或Windows 3.1中运行良好的16位应用软件。Win 98是32位的,尽管它号称兼容,但是有许多地方是无法与16位应用程序协调的。还有一些情况,如在Win 95下正常使用的外设驱动程序,当操作系统升级后,可能会出现问题,使系统死机或不能正常启动。遇到这种情况应该找到外设的新版驱动。

这使系统资源消耗殆尽,使个别程序需要的数据在内存或虚拟内存中找不到,也会出现异常错误。

用非法格式或参数非法打开或释放有关程序,也会导致电脑死机。请注意要牢记正确格式和相关参数,不随意打开和释放不熟悉的程序。

㈦ 求答案,c语言

D B B C B B C A D D C D C B C D B B A C B
4次 第一步:分成3组:27,27,26,将前2组放到天平上
有获胜策略 第1次在第5堆中取32颗石子
10,10
6 28 496 8128 33550336
5
6 2 5 4 3 7 9 9 7 3 4 5 2 6

① k=n (或n=k)
② count mod 5=0
③ perm(k+1)
④ a[k]:=a[j];a[j]:=t
⑤ perm(1)
2.⑥ break
⑦ t mod 50=0
⑧ a-p*b(或a-b*p)
⑨ c*10+1 (或10*c+1)
⑩ n

㈧ 浅析C语言中堆和栈的区别

一、堆栈空间分配区别:
1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
二、堆栈缓存方式区别:
1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别:
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。