第一篇:系统启动策略
优化windowx XP绝棒的九条技巧
使用XP的过程中,系统运行速度会随着时间的推移越来越慢了,有的朋友可能会想到重装系统,但重装后,那么多的应用软件也要重新安装,如何在不安装系统的前提下提升XP的运行速度呢?只要你安照以下九个方面操作,相信你的XP又会重新高速运行。
1、加快开关机速度
在Windows XP中关机时,系统会发送消息到运行程序和远程服务器,告诉它们系统要关闭,并等待接到回应后系统才开始关机。加快开机速度,可以先设置自动结束任务,首先找到HKEY_CURRENT_USERControl PanelDesktop,把AutoEndTasks的键值设置为1;然后在该分支下有个“HungAppTimeout”,把它的值改为“4000(或更少),默认为50000;最后再找到 HKEY_LOCAL_MACHINESystemCurrentControlSetControl,同样把 WaitToKillServiceTimeout设置为“4000”;通过这样设置关机速度明显快了不少。
2、提高宽带速度
专业版的Windows XP默认保留了20%的带宽,其实这对于我们个人用户来说是没有什么作用的。尤其让它闲着还不如充分地利用起来。
在“开始→运行”中输入gpedit.msc,打开组策略编辑器。找到“计算机配置→管理模板→网络→QoS数据包调度程序”,选择右边的“限制可保留带宽”,选择“属性”打开限制可保留带宽属性对话框,选择“启用”,并将原来的“20”改为“0”,这样就释放了保留的带宽。
3、优化网上邻居
Windows XP网上邻居在使用时系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,然后才显示出来,这样速度显然会慢的很多。这些功能对我们没多大用的话,可以将其删除。在注册表编辑器中找到 HKEY_LOCAL_MACHINEsofewareMicrosoftWindowsCurrent VersionExploreRemoteComputerNameSpace,删除其下的(打印机)和{D6277990-4C6A-11CF8D87-00AA0060F5BF}(计划任务),重新启动电脑,再次访问网上邻居,你会发现快了很多。
4、加快启动速度
要加快Windows XP的启动速度。可以通过修改注册表来达到目的,在注册表编辑器,找到 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ControlSession/ManagerMemory Management/PrefetchParameters,在右边找到EnablePrefetcher主键,把它的默认值3改为1,这样滚动条滚动的时间就会减少;
5、自动关闭停止响应程序
有些时候,XP会提示你某某程序停止响应,很烦,通过修改注册表我们可以让其自行关闭,在HKEY_CURRENT_USERControl PanelDesktop中将字符健值是AutoEndTasks的数值数据更改为1,重新注销或启动即可。
6、加快菜单显示速度
为了加快菜单的显示速度,我们可以按照以下方法进行设置:我们可以在HKEY_CURRENT_USERControl PanelDesktop下找到“MenuShowDelay”主键,把它的值改为“0”就可以达到加快菜单显示速度的效果。
7、清除内存中不被使用的DLL文件
在注册表的HKKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion,在Explorer增加一个项AlwaysUnloadDLL,默认值设为1。注:如由默认值设定为0则代表停用此功能。
8、加快预读能力改善开机速度
Windows XP预读设定可提高系统速度,加快开机速度。按照下面的方法进行修改可进一步善用CPU的效率: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerMemoryManagement],在PrefetchParameters右边窗口,将EnablePrefetcher的数值数据如下更改,如使用PIII 800MHz CPU以上的建议将数值数据更改为4或5,否则建议保留数值数据为默认值即3。
9、减少启动时加载项目
许多应用程序在安装时都会自作主张添加至系统启动组,每次启动系统都会自动运行,这不仅延长了启动时间,而且启动完成后系统资源已经被消耗掉!
启动“系统配置实用程序”,在“启动”项中列出了系统启动时加载的项目及来源,仔细查看你是否需要它自动加载,否则清除项目前的复选框,加载的项目愈少,启动的速度自然愈快。此项需要重新启动方能生效。
10.如何加速启动设置
进入注册表编辑器找到HKEY_LOCAL_MACHIN/SYSTEM/ControlSet001/control子项将其systemstartOptions值项的数值改为NODETECT。关闭注册表编辑器,重启计算机后生效,WinXP极速关机
作者:佚名 来源:InterNet 加入时间:2005-5-18
体积庞大的WindowsXP关起机来也是老黄牛一头--大约需要30~50秒,按照下面的方法更改注册表选项,看看WinXP关机速度加快了吗?
找到HKEY-CURRENT-USER\Control Panel\Desktop键,将WaitToKillAppTimeout改为:1000,即关闭程序时仅等待1秒。
将HungAppTimeout 值改为:200,表示程序出错时等待0.5秒。
将AutoEndTasks 值设为:1。让系统自动关闭停止响应的程序。
屏蔽五项功能 Windows XP极速狂飙
作者:佚名 来源:InterNet 加入时间:2008-3-17
许多藏在系统暗处的网络设置功能,是许多系统优化绝招无法触及的,很多情况下就是因为这些设置不当的网络功能拖慢了系统启动速度;为此,我们只要将这些不当的网络功能屏蔽掉,就一定能够为系统提速再加一鞭!
事实上,许多藏在系统暗处的网络设置功能,是许多系统优化绝招无法触及的,很多情况下就是因为这些设置不当的网络功能拖慢了系统启动速度;为此,我们只要将这些不当的网络功能屏蔽掉,就一定能够为系统提速再加一鞭!
1、屏蔽网络共享功能
要是我们的计算机并没有处于单位局域网网络中,那么已经被启用的网络共享功能其实一点用处都没有,它的存在反而会拖累系统的启动速度;要想尽可能地提高系统启动速度的话,我们完全可以将本地系统已经启用的网络共享功能给屏蔽掉,下面就是具体的屏蔽操作步骤:
首先在Windows系统“开始”菜单中依次执行“设置”/“控制面板”/“网络连接”命令,打开本地计算机的网络连接列表窗口,找到其中的“本地连接”图标,并用鼠标右键单击该图标,从其后出现的快捷菜单中执行“属性”命令,打开本地连接属性设置窗口。
其次在该窗口的“常规”标签页面中,找到“此连接使用下列项目”列表框中的“Microsoft网络的文件和打印机共享”选项,并将该选项前面 方框中的勾号取消掉,最后单击“确定”按钮关闭属性设置窗口,这么下来系统在下次启动时就不会花费时间去检查网络共享方面的内容了。
2、屏蔽完全控制功能
计算机系统每次启动时都会自动对本地硬盘中的相关共享文件夹进行搜索和扫描,而共享文件夹的访问属性设置不同的话,那么系统扫描该目标共享文件夹的时间也会不相同;比方说,要是某一共享文件夹被设置为“只读”权限时,系统扫描该共享文件夹的时间可能只需要1毫秒,而当将共享文件夹的访问权限设置 为“完全控制”时,系统扫描该共享文件夹的时间可能就需要1.5毫秒,由此可见,当开通共享文件夹的“完全控制”功能时,系统的启动速度也会受到一定程度 的影响。
为此,当我们不希望自己的共享资源让别人随意编辑修改时,只需要简单地将共享文件夹的属性设置为“只读”就可以了,而不要想当然地将它设置成“完 全共享”,毕竟在这种访问属性下,共享文件夹的安全不但得不到保证,而且还会影响系统的启动速度。要将目标共享文件夹的“完全控制”功能屏蔽掉的话,可以 按照如下步骤进行操作:
首先打开系统的资源管理器窗口,并在该窗口中找到目标共享文件夹,然后用鼠标右键单击对应文件夹图标,从其后出现的快捷菜单中选择“共享和安全”命令选项,打开到目标共享文件夹的属性设置窗口。
其次单击该属性设置窗口中的“安全”标签,打开标签设置页面,在该页面的“组或用户名称”列表框中,选中自己经常登录系统的那个特定用户帐号,例如这里笔者选择的是“ower”帐号。
接下来在对应“ower的权限”列表框中,选中“完全控制”项目,并在对应该选项的“允许”方框中取消选中状态,这样我们就能将目标共享文件夹 的“完全控制”功能给屏蔽掉了,之后根据实际访问需要,开通目标共享文件夹的“读取”权限或“写入”权限,最后单击“确定”按钮,相信这么一来系统的启动 速度就能更进一步了。
3、屏蔽自动搜索功能
当启动安装有Windows XP系统的计算机时,该计算机一般会自做主张地搜索局域网环境中的所有共享资源,很显然这种自做主张的“行为”也会影响计算机系统的快速启动。为了提高系统启动速度,我们可以按照如下方法将本地系统自动搜索共享资源的功能屏蔽掉:
首先打开本地系统的资源管理器窗口,单击该窗口菜单栏中的“工具”选项,从其后出现的下拉列表中单击“文件夹选项”,进入到系统的文件夹选项设置界面,单击其中的“查看”标签,打开选项设置窗口;找到该窗口中的“自动搜索网络文件夹和打印机”选项,并将该选项前面方框中的勾号取消,再单击一下“确定”按钮,这样的话该计算机系统下次启动时就不会耗费时间去自动搜索局域网环境中的其他共享资源了,那么系统启动速度应该就会明显提升许多。
4、屏蔽自动分配功能
这里所提到的“自动分配功能”,其实指的是Windows系统在默认状态下为本地网卡设备自动分配IP地址的功能;一旦将本地网卡的IP地址设 置成自动获取的话,那么计算机系统每次启动时,都会耗费一定的时间向局域网网络中的DHCP服务器申请可以使用的动态IP地址,要是访问不到DHCP服务 器时,计算机系统还会尝试反复连接、访问DHCP服务器,直到访问超时为止,这么一来系统的启动速度将会受到非常严重的影响,甚至会出现系统假死状态。为 了避免系统在启动过程中耗费时间去连接、访问DHCP服务器,我们只要事先为网卡设备设置好一个可以使用的静态IP地址就可以了,为网卡设备分配静态IP 地址可以按照如下步骤进行操作:
首先依次单击“开始”/“设置”/“网络连接”/“本地连接”命令,直接进入到本地系统的“本地连接”属性设置界面,在该设置界面的“常规”标 签页面中,选中“Internet协议(TCP/IP)”选项,并单击对应页面中的“属性”按钮,打开属性设置界面,将该设置界面中的“使用下面的IP地 址”选项选中,同时为网卡设备指定一个与ADSL设备地址同处一个子网的IP地址;比方说,ADSL设备的IP地址一般为“192.168.1.1”,那 么我们就可以将网卡IP地址设置为“192.168.1.11”,同时将子网掩码地址设置成“255.255.255.0”,网关地址设置为 “192.168.1.1”。
接下来再将“使用下面的DNS服务器地址”选中,然后将本地ISP的真实DNS服务器IP地址填写在这里,比方说,ISP真实的DNS地址要是 为“61.172.7.1”时,那我们就可以将该地址填写在这里,同时单击一下“确定”,以便将上面的IP地址参数保存起来,相信这么一来计算机系统日后 就不需要在启动的时候花时间访问DHCP服务器了,那么系统启动速度肯定会更上一层楼的。
5、屏蔽网络映射功能
为了方便每次开机后就能快速访问到对方计算机中的共享文件夹,许多人往往会通过网络映射功能将对方的共享文件夹映射成本地计算机中的一个磁盘分 区。这种方式虽然给共享访问带来了很大方便,但是它给系统的启动带来了不小的影响,毕竟系统在每次启动时都需要耗费时间去搜索、扫描、连接对方共享文件 夹,实际上我们并不是每次开机时都需要访问对方共享文件夹,很明显随意开通共享文件夹的网络映射功能,会严重拖慢计算机系统的启动速度。
为了让系统启动速度不受影响,我们可以按照如下操作步骤将本地计算机中暂时不用的网络映射连接断开:
首先用鼠标双击系统桌面中的“我的电脑”图标,在其后弹出的窗口中单击菜单栏中的“工具”项目,从随后出现的下拉菜单中执行“断开网络驱动器”命令,之后选中其中一个暂时不用的网络驱动器分区盘符,再单击“确定”按钮就可以了。
当然,我们也可以直接使用“net use”命令实现断开网络映射连接的目的,在使用这种方法屏蔽网络映射功能时,只需要先打开系统的运行对话框,并在其中执行“cmd”字符串命令,将系统 界面切换到MS-DOS命令行状态;接着在DOS提示符下执行“net use x: /del”字符串命令,就能将网络磁盘分区为“X”的网络映射连接断开了,要想快速地将本地计算机中所有的网络映射连接断开的话,只需要执行“net use * /del”字符串命令就可以了。
Windows也不完美!XP中的28个烦恼揭密
作者:佚名 来源:InterNet 加入时间:2007-5-10
Windows XP比它以前的系统更加稳定和安全(让我们从容面对这并不是太多的问题),但它还是有让人不满意的地方。如果你还在XP上耗费时间,那你会碰到很多需要修补的非常白痴的小问题,从启动缓慢到图标跟你捉秘藏等等。而其中的一些问题无法得到很好的修复,似乎我们只能等待下一个版本的Windows了。出路其实就在我们的前方:我们会给大家介绍修复你XP缺陷的方法,让你能够更加舒适地使用你的电脑。
加速Windows的启动
烦恼:我在自己的系统上安装了一些应用程序,但是在Windows启动时会自动加载它们,让我的系统启动速度慢得像乌龟在爬一样。更让人气愤的是这些新安装的应用程序居然也没提供能够取消自动加载功能的选项。
对策:如果你在开始菜单无法找到这个程序的(或者根本就无法从开始菜单里面启动这个程序)关闭自动运行的设置项,那可以试着用Windows的系统配置工具来手动阻止它的自动运行。点击“开始-运行”,在打开后面输入msconfig后点击确定。在弹出的窗口里面选择“启动”页,取消你想要阻止自动运行选项前面的勾选标后点确定,然后选择重启电脑。当你重启电脑后系统配置工具会弹出个烦人的测试模式窗口。如果没有什么问题的话就选择“下次启动不显示这个信息及弹出系统配置工具”后确定即可。
将备份带回家
烦恼:在我办公室电脑上的Windows XP专业版中自带了备份工具(点击“开始-程序-附件-系统工具”)。但在我的家用版XP上我一直在苦苦寻找这样一款备份工具而没有结果。微软把它藏哪去了?
对策:幸好Windows XP家用版的安装光盘里面有这个备份工具。要安装它,进入光盘根目录valueadd msftntbackup这个文件夹,在ntbackup.msi这个文件上点右键,选择安装。如果你像我这样只能找到自己电脑的恢复光盘而不是XP的安装光盘的话,你可以去硬盘上Windows安装路径下valueaddmsftntbackup寻找。如果你的系统支持数据光盘写入,你可以通过你的CD-R/RW刻录机来备份。
清除临时文件
烦恼:浏览网页、安装软件或进行一些正常的Windows操作都会产生大量无用的临时文件在一个你难以发现的临时文件夹里面(一般都在系统盘的Documents and SettingsusernameLocal SettingsTemp这个路径下)。Windows让人不满意的是,当你选择删除临时文件时,这个文件夹里的内容却会被忽略。
对策:在Windows资源管理器中的C盘上点右键(其他盘符也可)选择属性,在常规选项里面会看见“磁盘清理”按钮。点击“磁盘清理”来删除一些无用的文件以获得更多有用的磁盘空间,但它并没有删除在系统盘Local Settings目录下的临时文件。所以我们还不得不再手动删除这些文件。删除这些文件前,关闭所有的应用程序,进入这个文件夹,按“Ctrl+A”全选这些文件,然后删除即可。
当Windows提示你的硬盘上已没有任何临时文件时,不用轻信它。自己手动找到这些临时文件并删除它们。
找出隐藏的文件和文件扩展名
烦恼:Windows XP可能认为我不需要查看隐藏的文件和文件扩展名。你认为呢?当然大部分时间确实是这样的。在我查看自己某个文件夹下的JPEG或BMP图片的情况下,这一设置是快捷、有效的。但是病毒也有机会利用这一隐藏的默认属性来引诱我进入它们的圈套。在不显示文件扩展名的情况下,我可能会点击我电子邮件中一个叫SafePic.jpg的图像文件,但它其实是一个名为SafePic.jpg.exe的一个可执行文件。
对策:要显示所有文件的扩展名,打开资源管理器,选择上面的“文件-文件夹选项-查看”,去除“隐藏已知文件类型的扩展名”和“显示所有文件和文件夹” 勾选,然后确定。
终止无响应但又占用系统资源的任务
烦恼:我已经关闭了所有的应用程序,但还是有一个正在运行的应用程序吞噬了我所有的系统资源,让系统运行变慢,我该怎么办?
对策:可能引发这一状况的原因是一些程序或任务出错,但又在不停运行而没有被关闭,但它们又没有显示在桌面或任务栏,所以你无法关闭它们。要关闭这些耗费CPU资源的东西,首先要关闭所有应用程序,按下“Ctrl+Alt+Delete”弹出任务管理器后,你就可以关闭它们。下拉进程列表以寻找那个占用系统资源太多的任务,找到后,选中它后点击结束进程。不要在意系统剩余的进程,它们只是在任务管理器里面占用很少的资源百分比。
启用休眠
烦恼:我想让自己的笔记本电脑启动更加迅速。但是在默认设置中,无论是关机还是待机模式都对笔记本电脑电池的续航能力影响太大。
对策:现在有第三个选择方案:休眠,在Windows关机时把系统当前状态写入到硬盘中。从休眠状态下开机的速度比从关机状态下开机快,而且很节省电池的电量。但是你必须手动启用这一功能。进入控制面板的“性能和维护”类别选项里面,打开电源选项,选择休眠选项,勾选启用休眠,即可。
当你启用休眠时请牢记三点:你必须有足够的硬盘空间(我们建议至少应该是物理内存的1.5倍大小);你必须以管理员或高权限用户身份登录; 你必须安装有最新版本的Windows,驱动和应用程序。(Windows XP SP2修正了使用1GB内存下的休眠问题;但是SP2还是不停提示休眠错误,如果把内存增大到1.5GB或更大即解决。微软宣称他们仍在寻求解决这个错误的办法。)
第二篇:润滑油系统启动总结
润滑油系统启动总结
检修后润滑油系统的启动,检查检修工作已结束或者工作票已压回,具备启动条件。因为二期净邮箱在#4机凝补水箱旁边,所以油质一般都不合格,先应该联系化学对油质进行化验。#
3、#4共用一套油储存系统,所以一般在补油时一定要注意先把系统查清楚。要把正在运行的机组完全隔离开,以防在补油过程中造成机组油位波动从而发生事故。
在补油过程中,先就地检查补油泵送电正常(#4机汽机0米MCC C段)。将补油系统油路导通后开始对油箱进行补油,这时候可以先将主油箱排烟风机起起来有利于补油。检修后补油要先把油箱油位补到+300以上(就地油位计跟DCS显示一致)。检查油箱电加热已送电,当油温低于35 ℃时启动电加热。检查排烟风机运行正常。检查主机直流油泵、交流油泵送电正常。检查关闭空侧密封油高、低备用油源手动门。就地检查润滑油系统油路导通,具备启动条件。远方启动直流润滑油泵,当油箱油位缓慢下降并最终稳定。说明油路注油完成,这时候要对系统全面检查一遍,确保没有漏油。系统稳定后启动交流润滑油泵,停止直流润滑油泵。启动注意事项:
(1):必须要对敬友祥油质进行化验,因为露天风吹雨晒及其可能油变质。
(2):要对#
3、#4机润滑油系统特别熟悉,最好先拿系统图做好三讲,以防误操作造成正常运行的机组油位下降,造成事故扩大。(3):启动润滑油之前一定要检查空侧密封油的高、低压备用油源手动在关闭状态,以防发电机进油。
(4):启动后一定要对冷却器进行检查,观察底部有无漏油,最近这几年起润滑油系统都发生过漏油现象。
(5):润滑油系统用直流油泵注油时,等系统稳定后就切换到交流润滑油泵运行,直流油泵不能运行时间过长,以防油泵损坏。
第三篇:Android系统启动源代码调查分析
Android系统启动调查。
目的:Android程序入口在哪里?Mainifest配置文件如何加载实例化?从系统层到应用层如何使用?
目标从系统角度来了解Android启动过程,通过下载源代码并且根据源代码从底层开始跟踪,跟着方法走一遍Android启动过程。了解Zygote进程是什么?
开机一开始:Linux启动这一层,主要包括了两块:BootLoader(嵌入式系统的引导程序)和Kernel(Linux内核层,驱动层)第二块:Android系统启动。
我们都知道,Linux系统启动,定义了一个Init.rc这个系统启动的配置文件(放在System/bin文件下面)。
Init.rc启动的时候,最开始启动了SystemManager守护进程,它的源代码是一个Java文件,守护进程是一个与界面无关,会持续运行在后台,用来接收响应,并且维持系统运营的。
在启动servicemanager的同时,再来启动Zygote,Zygote实际上启动的是:app_main.cpp的系统文件.这个文件的main()方法,会调用Android_Runtime.cpp的文件中的start()方法,这个方法通过JNI机制,来调用ZygoteInit.java孵化器初始文件,这个文件的Main()函数,将会去调用所有进程。
这个ZygoteInit文件的main()函数,这个函数通过JNI机制调用了FrameWrok中的SystemServer文件,这个文件有三个函数:main(),init1()和init2()方法。
Init1()方法会通过JNI机制再去调用com_Android__server_SystemService.java的原生态文件,去实现系统初始化的操作,(调用System_init.cpp)。
当系统初始化工作做完之后,系统反过来会调用SystemServer文件下面的init2()方法,会通过runtime方法调用ServerThread进程去调用激活其他的所有进程。
第三块:应用程序启动(下次再讲)。
使用工具:【代码分析工具】source Insight 【源代码】 Android 源代码包
操作步骤:
在下载好Android SDK 安装包之后(如果没有下载好请移步这里)
【配置代码分析工具】
打开source Insight 软件,来配置Android源代码。
“项目”→“新建项目”
在“新项目名”填写:“Android 14”(Android 第14个版本,代表Android V4.0.3)在“项目文件储存位置”填写:SDK源代码包的位置
继续进行配置,点击确定。
选中右边的所有文件夹,点击“添加所有”按钮,将这个版本的源代码全部导入。
应用级别:选中将所有的子集目录,下级子目录中的所有文件都导入查找项目。
进行检索。。。
一共找到了“213720”个文件,是否导入?选中“Yes”
导入文件,索引建立
这时候,查看正下方,项目文件(213720)已经全部导入,项目准备完毕。可以进行调查了。
这时候你看到的右边工具栏,就是我们可以用来方便查找的搜索栏,输入对应的关键字即可。
切入正题,查找Android系统启动文件
【查找Init文件】启动方法会初始化MainiFest.xml配置文件,配置文件再去调用里面的配置,但是启动方法何时启动的调查,还未找到源头,只知道一切事物的源头,从这里开始。
原代码如下:
service console /system/bin/sh(启动Linux内核)
console
disabled
user shell
group log
on property:ro.secure=0
start console
# adbd is controlled by the persist.service.adb.enable system property service adbd /sbin/adbd
disabled
# adbd on at boot in emulator on property:ro.kernel.qemu=1
start adbd
on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
service servicemanager /system/bin/servicemanager(启动服务管理进程)
user system
critical
onrestart restart zygote
onrestart restart media
service vold /system/bin/vold
socket vold stream 0660 root mount
ioprio be 2
service netd /system/bin/netd
socket netd stream 0660 root system
socket dnsproxyd stream 0660 root inet
service debuggerd /system/bin/debuggerd
service ril-daemon /system/bin/rild
socket rild stream 660 root radio
socket rild-debug stream 660 radio system
user root
group radio cache inet misc audio sdcard_rw
service zygote /system/bin/app_process-Xzygote /system/bin--zygote--start-system-server
socket zygote stream 666
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
onrestart restart netd
OK,现在先调查(ServerManager)这个启动进程。
在system/core/libsysutils/src 目录下(系统级启动进程)
(启动孵化器进程)
在左侧点击start方法
这就是守护进程中的源代码之一,start()方法 ServiceManager::ServiceManager(){ } int ServiceManager::start(const char *name){ //如果进程已经启动,那么打印日志:“XX进程已经启动”
if(isRunning(name)){
SLOGW(“Service '%s' is already running”, name);
return 0;
}
SLOGD(“Starting service '%s'”, name);
property_set(“ctl.start”, name);
int count = 200;
while(count--){
sched_yield();
if(isRunning(name))
break;
}
if(!count){
SLOGW(“Timed out waiting for service '%s' to start”, name);
errno = ETIMEDOUT;
return-1;
}
SLOGD(“Sucessfully started '%s'”, name);
return 0;}
再来看同时启动的app_main的源代码,我们去查看一下它的main函数
int main(int argc, const char* const argv[]){
// These are global variables in ProcessState.cpp
mArgC = argc;
mArgV = argv;
mArgLen = 0;
for(int i=0;i mArgLen += strlen(argv[i])+ 1; } mArgLen--; AppRuntime runtime; const char *arg; const char *argv0; argv0 = argv[0]; // Process command line arguments // ignore argv[0] argc--; argv++; // Everything up to '--' or first non '-' arg goes to the vm int i = runtime.addVmArguments(argc, argv); // Next arg is parent directory if(i < argc){ runtime.mParentDir = argv[i++]; } // Next arg is startup classname or “--zygote” if(i < argc){ arg = argv[i++]; if(0 == strcmp(“--zygote”, arg)){ bool startSystemServer =(i < argc)? strcmp(argv[i], “--start-system-server”)== 0 : false; setArgv0(argv0, “zygote”); //设置了一个进程名叫zygote的进程,通过runtime来启动ZygoteInit文件中的startSystemServer方法 set_process_name(“zygote”); runtime.start(“com.android.internal.os.ZygoteInit”,startSystemServer); } else { set_process_name(argv0); runtime.mClassName = arg; // Remainder of args get passed to startup class main() runtime.mArgC = argc-i; runtime.mArgV = argv+i; LOGV(“App process is starting with pid=%d, class=%s.n”,getpid(), runtime.getClassName()); runtime.start(); } } else { LOG_ALWAYS_FATAL(“app_process: no class name or--zygote supplied.”); fprintf(stderr, “Error: no class name or--zygote supplied.n”); app_usage(); return 10; } } 调查一下runtime的类。AppRuntime,这就是android系统的运行时类,它启动了zygote孵化器进程,用来孵化Davlik虚拟机的。 runtime.start(“com.android.internal.os.ZygoteInit”,startSystemServer);所涉及到的ZygoteInit文件。 找到ZygoteInit文件(FrameWork里面的一个java类)。先去看看Main函数。 public static void main(String argv[]){ try { VMRuntime.getRuntime().setMinimumHeapSize(5 * 1024 * 1024); // Start profiling the zygote initialization.SamplingProfilerIntegration.start(); registerZygoteSocket(); EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_START,SystemClock.uptimeMillis()); preloadClasses(); //cacheRegisterMaps(); preloadResources(); EventLog.writeEvent(LOG_BOOT_PROGRESS_PRELOAD_END,SystemClock.uptimeMillis()); // Finish profiling the zygote initialization.SamplingProfilerIntegration.writeZygoteSnapshot(); // Do an initial gc to clean up after startup gc(); // If requested, start system server directly from Zygote if(argv.length!= 2){ throw new RuntimeException(argv[0] + USAGE_STRING); } if(argv[1].equals(“true”)){ //如果输入参数为真,我们就启动系统服务 startSystemServer(); } else if(!argv[1].equals(“false”)){ throw new RuntimeException(argv[0] + USAGE_STRING); } Log.i(TAG, “Accepting command socket connections”); if(ZYGOTE_FORK_MODE){ //如果孵化器一直是交叉模式,就启动运行交叉模式函数;否则就选择另一个循环模式 runForkMode(); } else { runSelectLoopMode(); } closeServerSocket(); } catch(MethodAndArgsCaller caller){ caller.run(); } catch(RuntimeException ex){ Log.e(TAG, “Zygote died with exception”, ex); closeServerSocket(); throw ex; } } 我们继续查看,如果参数为真的情况下,ZygoteInit文件中的,startSystemServer()函数的源代码。 /** * Prepare the arguments and fork for the system server process.*/ private static boolean startSystemServer() throws MethodAndArgsCaller, RuntimeException { /* Hardcoded command line to start the system server */ String args[] = { “--setuid=1000”,“--setgid=1000”,“--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,3001,3002,3003”,“--capabilities=130104352,130104352”,“--runtime-init”,“--nice-name=system_server”,“com.android.server.SystemServer”,//这个虚拟机的名字叫system Server }; ZygoteConnection.Arguments parsedArgs = null; int pid; try { parsedArgs = new ZygoteConnection.Arguments(args); /* * Enable debugging of the system process if *either* the command line flags * indicate it should be debuggable or the ro.debuggable system property * is set to “1” */ int debugFlags = parsedArgs.debugFlags; if(“1”.equals(SystemProperties.get(“ro.debuggable”))) debugFlags |= Zygote.DEBUG_ENABLE_DEBUGGER; /* Request to fork the system server process */ pid = Zygote.forkSystemServer(parsedArgs.uid, parsedArgs.gid,parsedArgs.gids, debugFlags, null,parsedArgs.permittedCapabilities,parsedArgs.effectiveCapabilities); } catch(IllegalArgumentException ex){ throw new RuntimeException(ex); } /* For child process */ if(pid == 0){ handleSystemServerProcess(parsedArgs); } return true; } 我们继续去查看 system Server的源代码 main函数: /** * This method is called from Zygote to initialize the system.This will cause the native * services(SurfaceFlinger, AudioFlinger, etc..)to be started.After that it will call back * up into init2()to start the Android services.*/ native public static void init1(String[] args);//Init1()函数却是个空函数 public static void main(String[] args){ if(System.currentTimeMillis()< EARLIEST_SUPPORTED_TIME){ // If a device's clock is before 1970(before 0), a lot of // APIs crash dealing with negative numbers, notably // java.io.File#setLastModified, so instead we fake it and // hope that time from cell towers or NTP fixes it // shortly.Slog.w(TAG, “System clock is before 1970;setting to 1970.”); SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME); } if(SamplingProfilerIntegration.isEnabled()){ SamplingProfilerIntegration.start(); timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run(){ SamplingProfilerIntegration.writeSnapshot(“system_server”); } }, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL); } // The system server has to run all of the time, so it needs to be // as efficient as possible with its memory usage.VMRuntime.getRuntime().setTargetHeapUtilization(0.8f); System.loadLibrary(“android_servers”); init1(args);// main()函数中,会调用到 init1()的方法。 } public static final void init2(){ Slog.i(TAG, “Entered the Android system server!”); Thread thr = new ServerThread(); thr.setName(“android.server.ServerThread”); thr.start(); } 因为通过调查发现,SystemServer文件的main()函数调用的init1()函数,是一个空方法,native public static void init1(String[] args); 但是根据JNI调用机制,我们可以在同名文件夹(framework/base/services/)下找到JNL目录,然后找到和系统相关的com_android_server_SystemServer.java文件 使用“C”的动态链接嗲用system_init 的方法。它去回调Init2的方法 我们继续看看SystemServer方法的Init2()方法是看什么用的。 去调查一下ServerThread()方法是干什么用的?这个内部类ServerThread就是启动,并且实例化每一个系统进程的线程类 class ServerThread extends Thread { private static final String TAG = “SystemServer”; private final static boolean INCLUDE_DEMO = false; private static final int LOG_BOOT_PROGRESS_SYSTEM_RUN = 3010; private ContentResolver mContentResolver; private class AdbSettingsObserver extends ContentObserver { public AdbSettingsObserver(){ super(null); } @Override public void onChange(boolean selfChange){ boolean enableAdb =(Settings.Secure.getInt(mContentResolver,Settings.Secure.ADB_ENABLED, 0)> 0); // setting this secure property will start or stop adbd SystemProperties.set(“persist.service.adb.enable”, enableAdb ? “1” : “0”); } } @Override public void run(){ EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN,SystemClock.uptimeMillis()); Looper.prepare(); android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_FOREGROUND); BinderInternal.disableBackgroundScheduling(true); android.os.Process.setCanSelfBackground(false); // Check whether we failed to shut down last time we tried.{ final String shutdownAction = SystemProperties.get(ShutdownThread.SHUTDOWN_ACTION_PROPERTY, “"); if(shutdownAction!= null && shutdownAction.length()> 0){ boolean reboot =(shutdownAction.charAt(0)== '1'); final String reason; if(shutdownAction.length()> 1){ reason = shutdownAction.substring(1, shutdownAction.length()); } else { reason = null; } ShutdownThread.rebootOrShutdown(reboot, reason); } } String factoryTestStr = SystemProperties.get(”ro.factorytest“); int factoryTest = ”“.equals(factoryTestStr)? SystemServer.FACTORY_TEST_OFF : Integer.parseInt(factoryTestStr); LightsService lights = null; PowerManagerService power = null; BatteryService battery = null; ConnectivityService connectivity = null; IPackageManager pm = null; Context context = null; WindowManagerService wm = null; BluetoothService bluetooth = null; BluetoothA2dpService bluetoothA2dp = null; HeadsetObserver headset = null; DockObserver dock = null; UsbService usb = null; UiModeManagerService uiMode = null; RecognitionManagerService recognition = null; ThrottleService throttle = null; // Critical services...try { Slog.i(TAG, ”Entropy Service“); ServiceManager.addService(”entropy“, new EntropyService()); Slog.i(TAG, ”Power Manager“); power = new PowerManagerService(); ServiceManager.addService(Context.POWER_SERVICE, power); Slog.i(TAG, ”Activity Manager“); context = ActivityManagerService.main(factoryTest); Slog.i(TAG, ”Telephony Registry“); ServiceManager.addService(”telephony.registry“, new TelephonyRegistry(context)); AttributeCache.init(context); Slog.i(TAG, ”Package Manager“); pm = PackageManagerService.main(context,factoryTest!= SystemServer.FACTORY_TEST_OFF); ActivityManagerService.setSystemProcess(); mContentResolver = context.getContentResolver(); // The AccountManager must come before the ContentService try { Slog.i(TAG, ”Account Manager“); ServiceManager.addService(Context.ACCOUNT_SERVICE,new AccountManagerService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Account Manager“, e); } Slog.i(TAG, ”Content Manager“); ContentService.main(context,factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL); Slog.i(TAG, ”System Content Providers“); ActivityManagerService.installSystemProviders(); Slog.i(TAG, ”Battery Service“); battery = new BatteryService(context); ServiceManager.addService(”battery“, battery); Slog.i(TAG, ”Lights Service“); lights = new LightsService(context); Slog.i(TAG, ”Vibrator Service“); ServiceManager.addService(”vibrator“, new VibratorService(context)); // only initialize the power service after we have started the // lights service, content providers and the battery service.power.init(context, lights, ActivityManagerService.getDefault(), battery); Slog.i(TAG, ”Alarm Manager“); AlarmManagerService alarm = new AlarmManagerService(context); ServiceManager.addService(Context.ALARM_SERVICE, alarm); Slog.i(TAG, ”Init Watchdog“); Watchdog.getInstance().init(context, battery, power, alarm,ActivityManagerService.self()); Slog.i(TAG, ”Window Manager“); wm = WindowManagerService.main(context, power,factoryTest!= SystemServer.FACTORY_TEST_LOW_LEVEL); ServiceManager.addService(Context.WINDOW_SERVICE, wm); ((ActivityManagerService)ServiceManager.getService(”activity“)).setWindowManager(wm); // Skip Bluetooth if we have an emulator kernel // TODO: Use a more reliable check to see if this product should // support Bluetooth-see bug 988521 if(SystemProperties.get(”ro.kernel.qemu“).equals(”1“)){ Slog.i(TAG, ”Registering null Bluetooth Service(emulator)“); ServiceManager.addService(BluetoothAdapter.BLUETOOTH_SERVICE, null); } else if(factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL){ Slog.i(TAG, ”Registering null Bluetooth Service(factory test)“); ServiceManager.addService(BluetoothAdapter.BLUETOOTH_SERVICE, null); } else { Slog.i(TAG, ”Bluetooth Service“); bluetooth = new BluetoothService(context); ServiceManager.addService(BluetoothAdapter.BLUETOOTH_SERVICE, bluetooth); bluetooth.initAfterRegistration(); bluetoothA2dp = new BluetoothA2dpService(context, bluetooth); ServiceManager.addService(BluetoothA2dpService.BLUETOOTH_A2DP_SERVICE,bluetoothA2dp); int bluetoothOn = Settings.Secure.getInt(mContentResolver,Settings.Secure.BLUETOOTH_ON, 0); if(bluetoothOn > 0){ bluetooth.enable(); } } } catch(RuntimeException e){ Slog.e(”System“, ”Failure starting core service“, e); } DevicePolicyManagerService devicePolicy = null; StatusBarManagerService statusBar = null; InputMethodManagerService imm = null; AppWidgetService appWidget = null; NotificationManagerService notification = null; WallpaperManagerService wallpaper = null; LocationManagerService location = null; if(factoryTest!= SystemServer.FACTORY_TEST_LOW_LEVEL){ try { Slog.i(TAG, ”Device Policy“); devicePolicy = new DevicePolicyManagerService(context); ServiceManager.addService(Context.DEVICE_POLICY_SERVICE, devicePolicy); } catch(Throwable e){ Slog.e(TAG, ”Failure starting DevicePolicyService“, e); } try { Slog.i(TAG, ”Status Bar“); statusBar = new StatusBarManagerService(context); ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar); } catch(Throwable e){ Slog.e(TAG, ”Failure starting StatusBarManagerService“, e); } try { Slog.i(TAG, ”Clipboard Service“); ServiceManager.addService(Context.CLIPBOARD_SERVICE,new ClipboardService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Clipboard Service“, e); } try { Slog.i(TAG, ”Input Method Service“); imm = new InputMethodManagerService(context, statusBar); ServiceManager.addService(Context.INPUT_METHOD_SERVICE, imm); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Input Manager Service“, e); } try { Slog.i(TAG, ”NetStat Service“); ServiceManager.addService(”netstat“, new NetStatService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting NetStat Service“, e); } try { Slog.i(TAG, ”NetworkManagement Service“); ServiceManager.addService(Context.NETWORKMANAGEMENT_SERVICE,NetworkManagementService.create(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting NetworkManagement Service“, e); } try { Slog.i(TAG, ”Connectivity Service“); connectivity = ConnectivityService.getInstance(context); ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Connectivity Service“, e); } try { Slog.i(TAG, ”Throttle Service“); throttle = new ThrottleService(context); ServiceManager.addService(Context.THROTTLE_SERVICE, throttle); } catch(Throwable e){ Slog.e(TAG, ”Failure starting ThrottleService“, e); } try { Slog.i(TAG, ”Accessibility Manager“); ServiceManager.addService(Context.ACCESSIBILITY_SERVICE,new AccessibilityManagerService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Accessibility Manager“, e); } try { /* * NotificationManagerService is dependant on MountService,*(for media / usb notifications)so we must start MountService first.*/ Slog.i(TAG, ”Mount Service“); ServiceManager.addService(”mount“, new MountService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Mount Service“, e); } try { Slog.i(TAG, ”Notification Manager“); notification = new NotificationManagerService(context, statusBar, lights); ServiceManager.addService(Context.NOTIFICATION_SERVICE, notification); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Notification Manager“, e); } try { Slog.i(TAG, ”Device Storage Monitor“); ServiceManager.addService(DeviceStorageMonitorService.SERVICE,new DeviceStorageMonitorService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting DeviceStorageMonitor service“, e); } try { Slog.i(TAG, ”Location Manager“); location = new LocationManagerService(context); ServiceManager.addService(Context.LOCATION_SERVICE, location); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Location Manager“, e); } try { Slog.i(TAG, ”Search Service“); ServiceManager.addService(Context.SEARCH_SERVICE,new SearchManagerService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Search Service“, e); } if(INCLUDE_DEMO){ Slog.i(TAG, ”Installing demo data...“); (new DemoThread(context)).start(); } try { Slog.i(TAG, ”DropBox Service“); ServiceManager.addService(Context.DROPBOX_SERVICE,new DropBoxManagerService(context, new File(”/data/system/dropbox“))); } catch(Throwable e){ Slog.e(TAG, ”Failure starting DropBoxManagerService“, e); } try { Slog.i(TAG, ”Wallpaper Service“); wallpaper = new WallpaperManagerService(context); ServiceManager.addService(Context.WALLPAPER_SERVICE, wallpaper); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Wallpaper Service“, e); } try { Slog.i(TAG, ”Audio Service“); ServiceManager.addService(Context.AUDIO_SERVICE, new AudioService(context)); } catch(Throwable e){ Slog.e(TAG, ”Failure starting Audio Service“, e); } try { Slog.i(TAG, ”Headset Observer“); // Listen for wired headset changes headset = new HeadsetObserver(context); } catch(Throwable e){ Slog.e(TAG, ”Failure starting HeadsetObserver“, e); } try { Slog.i(TAG, ”Dock Observer“); // Listen for dock station changes dock = new DockObserver(context, power); } catch(Throwable e){ Slog.e(TAG, ”Failure starting DockObserver“, e); } try { Slog.i(TAG, ”USB Service“); // Listen for USB changes usb = new UsbService(context); ServiceManager.addService(Context.USB_SERVICE, usb); } catch(Throwable e){ Slog.e(TAG, ”Failure starting UsbService“, e); } try { Slog.i(TAG, ”UI Mode Manager Service"); 各位领导、各位同仁: 大家下午好! 5月12日召开了集团综合管理信息系统的启动会,今天在这里又召开了人力资源管理信息系统启动会,标志着2010年集团信息化建设进入实质性工作阶段。 根据集团信息化建设总体目标,建立以项目管理为核心(此处项目管理涵盖建安和房地产两大主业的项目管理)、适应集团三级管理模式的,推进集团“双主业、多板块”业务、加快集团“业务国际化、产权多元化、资本市场化、管理科学化”发展的、集中统一、高效实用的集团级信息管理系统。集团2010年信息化建设主要做9项重点工作: 1、开发、试用、完善项目综合管理信息系统 2、开发和完善集团核心业务系统软件,如:人力资源管理信息系统、经营系统招投标管理、成本控制信息系统、科技质量管控信息系统、档案管理信息系统等。 3、初步搭建集团级信息管理系统架构 4、搭建以报表管理为基础的集团决策平台 5、全面更新OA办公自动化系统 6、集团特级资质就位信息化考评达标准备工作 7、集团总部计算机网络机房建设 8、初步建立集团级信息编码体系 9、集团建筑三维动画制作的初步规划设想 集团综合管理信息系统(一期)已全面启动,包括一个平台,五个系统,即协同管理平台、OA办公自动化系统、人力资源管理信息系统、经营系统招投标管理和成本控制信息系统、科技质量管控信息系统、档案管理信息系统。我们要充分认识集团管理信息化的现实意义,一方面是满足集团管理需求、提高管理科学化水平的实际需要,另一方面是集团特级资质就位的迫切需要。做为集团战略支撑的人力资源管理,是集团长远发展的重要保证。人力资源信息系统在集团综合管理信息系统中占要重要的基础地位,人力资源信息系统的建设水平和质量将直接影响集团综合管理信息系统的建设水平和质量。 首先,要保证人力资源信息系统的完整性、准确性、及时性。集团所有信息系统的登录用户,都来自人力资源管理信息系统。员工基本信息录入到人力资源系统之后,集团的每一名员工会拥有一个类似通行证的用户名和密码,用来访问其有权限的信息系统,不用像现在这样要记住不同信息系统的不同用户名和密码。当员工发生职位变动后,集团各信息系统能够根据人力资源系统的员工信息变化进行相应的、自动的同步权限调整,从而大大提高了集团各信息系统的准确性,避免了大量的重复工作和权限管理上的混乱,同时提高了信息的安全性。 其次,要实现人力资源信息系统和集团其它各信息系统的联动和集成。实现人力资源信息系统和集团其它各信息系统的联动和集成,如人力资源信息系统和项目综合管理信息系统实现联动和集成,可以根据人力资源信息系统的人员信息,查询、调用项目经理、技术负责人、管理人员等的履历、业绩等资料,完成项目部的组织机构的建立,同时可以通过项目综合管理信息系统对项目经理的工程各项指标进行全过程的跟踪,并且记录在人力资源信息系统中,从而实现对项目经理及项目经理部的绩效考核。人力资源信息系统和集团其它各信息系统的联动和集成,可以实现集团各信息系统的协同工作,大大提高集团的整体工作效率。 可以说人力资源管理信息系统是集团整体信息化建设的基础系统,建设好人力资源管理系统,将为集团信息化建设打好坚实的基础。集团综合管理信息系统项目是一项系统工程,需要集团各有关单位、有关部门、软件公司的积极参与和通力配合。有关单位、有关部门、软件公司要服从大局,落实责任,通力配合,形成合力,共同完成综合管理信息系统项目的开发工作。我相信在大家的共同努力下,一定能为集团打造一个实用的、成功的、有集团特色的人力资源管理系统。 2010年5月27日星期四 终极优化 系统启动时间减少一半 前些日子我的笔记本开机进程就达到了33个之多占用了139M的内存.而且启动时滚动条居然要滚16次.如此龟速当然不能让我满意.摸索着把系统全面整改.现将小小心得给大家分享.系统平台:主板855GME;CPU CM1.4G;内存DDR333 256M*2;集成Intel Extreme2显卡;日立5400/40G硬盘.优化流程如下: 一.系统自动加载优化: 开机速度慢主要是系统加载了太多无用的功能,所以先从服务入手.运行(services.msc)将无用的选项一一关掉.尤其是把远程协助等无聊选项关闭了.具体设置如下图所示.建议把远程的选项全部关闭.这样不仅仅是为了提高速度.更可让很多病毒流入的通道.不知道会不会用到的设置为手动.二.应用软件的优化: 很多朋友在机子上装了非常多的应用软件.很多软件开机是会自动运行的.比如说V8.大量的软件占用的内存比系统还要多.推荐用第三放软件优化.我使用的是优化大师6.82版.如图将不需要自动运行的软件一一打勾.优化掉就可以了.在使用优化打师的过程中也总结了些小经验.这个过会再说.三.系统功能优化: 其实这个本可以和第一点写到一块的.但是又有点区别.首先我们可以在文件夹工具里面做点优化 强烈建议把寻找网络文件夹和打印机的选项关闭.其他的两个,建议不要隐藏扩展名.因为很多病毒和木马都是采用了双扩展名类似于 *.TXT.EXE的方式骗过系统.方便查找病毒.接下来我们可以在我的电脑的属性里面做点设置.强烈建议把系统还原完全关闭.这样不仅仅是提高速度.而且可以释放大约0.3G的C盘空间.建议使用GHOST的还原系统.关掉为好.如果要打补丁自己会下载的.这个东西速度慢不说还浪费资源.远程也关掉.不过如你需要协助工作的话必须打开.字体也会拖累你的系统 XP系统可以安装最多1500种字体.我们平时用的最多超不过50种.即使是专业的美编也用不到系统中的很多字体.但是字体越多.启动速度就越慢.在C:WINDOWSFonts 中保存的就是字体文件.先把FONT整体打包备用.建议只留下.arial.marlett.micorosoft scans serif regular.mingliu&pmingliu.modern.ms outlook.ms serif 8,10,12,14,18,24.script.simsun& nsimsun.tahoma.times new roman这几个外国字体.中文字体大家自己选择.五.XP 预读功能: XP和2003系统中新增加的一项称为(prefetcher)的功能.这是为了提高系统性能而设计的一种后台数据预计技术.不同的预计方式对开机速度影响很大.我们可以在注册表里修改预计方式.运行注册表编辑器(regedit.exe)找到[HKEY_LOCAL_MACHINESYSTEMSurrentControlSetControlSessionManagerMemory ManagementPrefetchParameters]如下图 可以修改红框内EablePrefetcher 的键值: 0 关闭预读 1 只对应用程序进行预读 只对启动的项进行预读 3 对应用程序和启动选项都进行预读 对于目前的主流配置推荐 3 而硬件配置比较低的建议选择1 如果运行XP都比较勉强的话建议选择0.同时对C:WINDOWSPrefetch 内的文件也要定期清理一次(一般为两个月左右).否则即使预读了速度也会非常的慢.甚至比优化前的速度还要慢.六.自动整理启动文件的碎片 这也是XP系统新增加的功能.为的是在文件启动前自动的给其排序列.提高启动的速度.有的朋友可能听到碎片整理会吓了一跳.这个和磁盘的碎片整理还是有区别的.这里指的是在启动必须的文件给它们排序列以方便下次启动获得最快的启动速度.开启方法如下:运行(regedit.exe)找到[HKEY_LOCAL_MACHNE_SoftwareMicrosftDfrgBootOptimizefunction] 右击窗格中的Eenable 选择修改(Y 为打开.N为关闭)修改完关闭修改器.重新启动电脑即可生效.七.去处杀毒软件开机扫描 杀毒软件的开机扫描功能非常的占资源.非常拖系统速度.所以我 就根本没有用杀毒软件.裸奔.感觉很爽.拿卡巴专业5.0来说吧.开机后WINDOWS的启动加载项会成为病毒的藏身之处.所以卡巴每次都会扫描.实际上每次扫描有点浪费.平时自己手杀就足够了.取消的方法如下“设置-手动扫描任务-扫描系统启动对象-属性-启动对象-设置-计划 ”取消“启动计划扫描”的勾,即可.其他的软件也触类旁通.以上就是我最近优化XP的全过程.优化完毕之后:开机进程 17 开机内存占用 84.2M C盘占用1.9G 开机滚动条滚动3次第四篇:人力资源管理系统启动会讲话范文
第五篇:终极优化 系统启动时间减少一半范文