修改Windows系统单进程使用的内存上限
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
修改Windows系统单进程使用的内存上限
第一篇:修改Windows系统单进程使用的内存上限
在开始菜单里寻找“命令提示符”打开(找不到的直接按住键盘上的“开始菜单键start+R”打开运行,输入cmd),然后输入引号内容“bcdedit /set IncreaseUserVa 4096”(将单进程内存上限可强制修改为4GB)然后重启电脑,要关闭的话就输入“bcdedit /deletevalue IncreaseUserVa” 然后重启。
第二篇:Linux系统内存使用的体会及命令解释
Linux系统内存使用的体会及命令解释
发布时间:2006.09.26 04:45来源:作者:nonameboy
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,说到这里不得不骂MS,为什么在很多时候还有很大的物理内存的时候,却还是用到了pagefile.所以才经常要跟一帮人吵着说Pagefile的大小,以及如何分配这个问题,在Linux大家就不用再吵什么swap大小的问题,我个人认为,swap设个512M已经足够了,如果你问说512M的SWAP不够用怎么办?只能说大哥你还是加内存吧,要不就检查你的应用,是不是真的出现了memory leak.夜也深了,就不再说废话了。
在Linux下查看内存我们一般用command free;
[root@nonamelinux ]# free total used free shared buffers cached; Mem: 386024 377116 8908 0 21280 155468;
-/+ buffers/cache: 200368 185656;
Swap: 393552 0 393552;
下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache)used/free的区别。
这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是8908KB,已用内存是377116KB,其中包括,内核(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
185656=8908+21280+155468 接下来解释什么时候内存会被交换,以及按什么方交换。
当可用内存少于额定值的时候,就会开会进行交换。
如何看额定值(RHEL4.0):
#cat /proc/meminfo
交换将通过三个途径来减少系统中使用的物理页面的个数:
1.减少缓冲与页面cache的大小,
2.将系统V类型的内存页面交换出去,
3.换出或者丢弃页面。
(Application 占用的内存页,也就是物理内存不足)。
事实上,少量地使用swap是不是影响到系统性能的。
下面是buffers与cached的区别。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及tracking in-flight pages.cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的
生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
实验:在一台没有什么应用的机器上做会看得比较明显。
记得实验只能做一次,如果想多做请换一个文件名。
#free #man X #free #man X #free
你可以先后比较一下free后显示buffers的大小。
另一个实验:
#free #ls /dev #free
你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。
第三篇:操作系统单处理机系统的进程调度
一.实验内容描述
1.目的
(1)了解Windows内存管理器(2)理解Windows的地址过程2.内容
任意给出一个虚拟地址,通过WinDbg观察相关数据并找到其物理地址
二.理论分析
Windows采用页式虚拟存储管理技术管理内存,页面是硬件级别上的最小保护单位 1.Windows内存管理器
Windows的内存管理主要由Windows执行体中的虚存管理程序负责,并由环境子系统负责,并由环境子系统负责与具体API相关的一些用户态特性的实现。
虚存管理程序是Windows中负责内存管理的那些子程序和数据结构的集合内存管理器的主要任务是:
地址变换:将一个进程的虚拟地址空间转译为物理内存地址
交换:当内存不足时,将内存中的有些内容转移到磁盘上,并且以后还要再次将这些内容读回
2.Windows内存管理策略
Windows采用页式虚拟存储管理技术管理内存,页面是硬件级别上最小的保护单位。
根据硬件的体系结构不同,页面尺寸被分为两种,大页面和小页面。
X86系统下小页面为4KB,大页面为4MB。
大页面
的优点是:当引用同一页面内其他数据时,地址转移的速度会很快。
不过使用大页面通常要较大的内存空间,而且必须用一个单独的保护项来映射,因此可能会造成出现错误而不引发内存访问违例的情况。
通常PC机都为小页面 3.Windows虚拟地址空间布局 x86结构下的布局方式:
默认情况下,32位Windows系统中每个用户进程可以占有2GB 的私有地址空间。
操作系统占有另外的2GB 2GB用户的进程地址空间布局如表:
2GB的系统地址空间布局如同:
3.虚拟地址转译
地址转译是指将进程的虚拟地址空间映射到实际物理页面的过程。
x86系统中地址转译过程如图:
关键数据结构如下:页目录:每个进程都有一个页目录,它是内存管理器为了映射进程中所有的页表位置而创建的一个页面。
进程也目录的地址被保存在内核进程快KPROCESS中,在x86系统上,它被映射到虚拟地址0xC0300000,当一个进程正在执行时,CPU可以通过寄存器CR3知道该进程页目录的位置。
页目录由目录项(PDE)构成,每个PDE长4字节,描述了该进程中所有可能的页表的状态和位置。
其格式和PTE类似。
x86系统上,要描述完整的4GB虚拟地址空间,需要1024个页表。
因此映射这些页表的进程页目录需包含1024个PDE,恰好占用一个页面。
页表:进程的页目录项指向页表。
每个页表占用一个页面,由1024项PTE组成。
一个有效的PTE大小为4字节,包含两个主域:数据所在的物理页面的页面帧编号(PNF)或者内存中一个页面的物理地址的PFN;一些描述该页面状态和保护属性的标志。
虚拟地质结构:x86系统上,一个32位虚拟地址被解释为三个单独的部分,页目录索引、页表索引和字节索引。
由于页目录项有1024个,因此页目录索引为10位;一个也表中含有1024个PTE。
因此页表索引也为10位,字节索引为12位,正好表示一页(4KB)内容
三.实验步骤及结果
1.查找页目录首地址
以程序WG.exe作为观测对象。
启动WinDbg到内核调试模式,运行程序WG.exe。
终断目标机运行,输入命令:kd>!process
发现WG.exe进程正处于运行状态输入命令:
在KPROCESS中名为DirectoryTableBase的域,对应值为0x9fa6000,即WG.exe进程页目录的物理地址查看CR3寄存其中的内容,输入命令:
CR3寄存其中的值和KPROCESS中记录的页目录基址相同。
这是因为在CPU切换执行任务时,其内容要更新为当前进程的页目录基址。
2.地址转译过程
假设给定的虚拟地址为0x401001 输入命令:
可以看到:
PDE的虚拟地址为C0300004.PTE的虚拟地址为C0001004 最后一行信息“pfn 9e4a---DA--UWEV”表示PDE中的具体内容,9e4a 是给定虚拟地址所在页表在内存中对应的物理页号,“---DA—UWEV”是标志信息,“pfn a173----A--UREV”表示PTE中的具体内容,a173是数据页装入内存的物理页号。
将数据页对应的物理页号a173加上业内索引(0x1)即可得到虚拟地址0x401001的物理地址
3.观察系统页表
给定观测虚拟地址为0x80001001 输入命令:
当前正在执行的进程是:WG.exe 输入命令:
得到PDE为C0300800,其对应的物理页号为3b 继续让目标机运行,启动A.exe,然后中断目标机运行。
输入命令:
当前正在执行的进程为A.exe 输入命令:
PDE信息和对应的物理页号与前面观测到的相同
四.结论
1.数据页对应的物理页号加上相应业内索引即可得到虚拟地址的物理地址
2.不同的进程页目录都指向了相同的系统表页
五.心得体会
在这次上机实验,通过对WinDbg和VPc的调试运用,我熟悉了Windows内存管理器的结构,也认知到Windows如何进行地址转译和转换。
对相关的知识也进行了温习,更牢的掌握了相关知识。
当然这些还远远不够,我以后还要继续不断努力,去学习了解掌握操作系统的各方面知识。
附录:
1.A.exe代码
#include #include
#define N 1
HANDLE mutexSemaphore;HANDLE synchSemaphore_1;HANDLE synchSemaphore_2;
HANDLE mutexDisplay;
void Display(char*str,int delayTime){ if(WaitForSingleObject(mutexDisplay,INFINITE)==W AIT_OBJECT_0){ printf(“%snn”,str);ReleaseMutex(mutexDisplay );Sleep(delayTime);} }
void useTime(double limit){ for(double i=0;i<=limit;i+=0.001);}
v oid CreateProduct(){ Display(“Creating a production...”,0);useTime(200000);Display(“Creating finished.”,100);}
void PutProduct(){ Display(“Putting a production...”,0);useTime(150000);Display(“Putting finished”,100);}
void GetProduct(){ Display(“Getting a p roduction...”,0);useTime(100000);Display(“Getting finished.”,100);}
void ConsumeProduct(){ Display(“Cosuming a production...”,0);useTime(100000);Display(“Cosuming
finished.”,100);}
void Producer(){ while(true){ CreateProduct();
if(WaitForSingleObject(synchSemaphore_1,INFINITE)==WAI T_OBJECT_0){
if(WaitForSingleObject(mutexSemaphore,INFINITE)==WAIT_ OBJECT_0){ PutProduct();ReleaseSemaphore(mutexSemaphore,1 ,NULL);} ReleaseSemaphore(synchSemaphore_2,1,NULL);} } } void Consumer(){ while(true){
if(WaitForSingleObject(synchSemaphore_2,INFINITE)==WAI T_OBJECT_0){
if(WaitForSingleObject(mutexSemaphore,INFINITE)==WAIT_ OBJECT_0){ GetProduct();ReleaseSemaphore(mutexSemaphore,1 ,NULL);} ReleaseSemaphore(synchSemaphore_1,1,NULL);} ConsumeProduct();} }
int main(){ HANDLE thread[2];DWORD threadID[2];
synchSemaphore_1=CreateSemaphore(NULL,N,N,NULL);syn chSemaphore_2=CreateSemaphore(NULL,0,N,NULL);mutexSema phore=CreateSemaphore(NULL,1,1,NULL);
mutexDisplay=CreateMutex(NULL,FALSE,NULL);
printf(“Program start.Please use WinDbg to ob serve main thread.nPress any key to continue...n”);getchar();
thread[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTIN E)(Producer),NULL,CREATE_SUSPENDED,&threadID[0]);printf(“A producer was created.Please use WinDbg to observe producer thread.nPress any key to continue...n”);getchar();
thread[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTIN E)(Consumer),NULL,CREATE_SUSPENDED,&threadID[1]);printf(“A Consumer was created.Please use WinDbg to observe Consumer thread.nPress any key to continue...n”);getchar();
printf(“Please select:n[1]Make producer thread
runn[2]Make Consumer thread runn”);bool flag=true;bool flag_1=true,flag_2=true;int
count=0;while(flag){ if(getchar()=='1'&&flag_1){ ResumeThread( thread[0]);count++;flag_1=false;} else if(getchar()=='2'&&flag_2){ ResumeThread(thread[1]);count++;f lag_2=false;} if(count==2)flag=false;} WaitForMultipleObjects(1,thread,TRUE,INFINITE);
return 0;}
2.WG.exe代码: #include
int main(){ int a=0;printf(“I'm Wangn”);while(true){a++;} }第四篇:windows系统安全策略
Windows 系统安全设置策略
1.服务器的物理安全
2.administrator账号更名、禁用Guest账号
3.更改文件夹和打印共享默认everyone组权限
4.设置密码复杂性要求,设置密码有效期
5.设置屏保密码
6.设置分区格式为NTFS格式
7.开启系统安全策略(帐户策略、本地策略)
8.关闭TerminalServices和IIS服务
9.关闭不必要的服务端口
常用服务列表c:windowssystem32driversetcservices
网上邻居>属性>本地连接>属性>internet 协议(tcp/ip)>属性>高级>选项>tcp/ip筛选>属性打
开tcp/ip筛选,添加需要的tcp,udp,协议即可。
10.不显示上次登录的用户帐户名
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurre ntVersionWinlogonDontDisplayLastUserName=1
11.禁止建立IPC$空连接
HKEY_LOCAL_MACHINESystemCurrentControlSetControlLS
ARestrictAnonymous=1
12.下载最新的Service Pack和漏洞补丁
13.禁用磁盘默认共享
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesla nmanserverparametersAutoShareServerREG_DWORD=0x0 14.禁用ADMIN共享
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesla nmanserverparametersAutoShareWks REG_DWORD=0x0 15.限制IPC$共享
HKEY_LOCAL_MACHINESystemCurrentControlSetControlLS ARestrictAnonymousREG_DWORD=0x0 匿名用户无法列举本机用户列表
REG_DWORD=0x1 匿名用户无法连接本机IPC$共享(不建议使用该值,否则造成某些服务无
法启动如Sql Server)
16.禁用445端口
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices NetBTParameters]
“SMBDeviceEnabled”=dword:00000000
17.禁止网页修改注册表
管理工具-> 服务-> Remote Registry Service-> “已禁用”
18.安装并运行防病毒软件、定期升级
19.敏感文件存放不同的文件服务器上,定期备份数据。
20.打开审核策略
21.使用文件加密系统EFS
Windows2000 强大的加密系统能够给磁盘,文件夹,文件加上一层安全保护。
这样可以防止别人把你的硬盘挂到别的机器上以读出里面的数据。
记住要给文件夹也使用EFS,而不仅仅是单个的文件.有关EFS的具体信息可以查看
22.关机时清除掉页面文件
编辑注册表HKLMSYSTEMCurrentControlSetControlSession ManagerMemory Management把ClearPageFileAtShutdown的值设置成1。
第五篇:EPSON PLQ-20K 连接windows系统参数修改
EPSON PLQ-20K 连接windows系统,软件模式参数修改方法
感谢您使用爱普生产品,为了使您尽快的熟练操作您采购的EPSON PLQ-20K存折打印机,现需您配合掌握以下几个步骤:1,为什么要修改
2,修改默认参数方法
进入修改模式:同时按住(功能键1)+(功能键2)开机,打印机开机后,开始初始化,初始化完后放入一张A4纸,纸张会被打印机吸入设备内,接着开始打印固件版本,并询问是否打印当前设置,按(功能键2),打印当前设置,按(功能键1)直接开始修改当前设置,此时我们直接修改参数,按一下(功能键1)进入第一个主菜单(软件),按一下(功能键2)会进入上一个主菜单项,继续按一下(脱机键),打印机会打印出软件主菜单中的配置模式菜单,每按一下(脱机键)会在以下几种模式中切换(PR2、ESC/P-K、IBM PPDS、OKI 5530C)我们需要切换到 ESC-P/K 配置模式,然后关机,修改成功。
3,确认是否已修改成功
同时按住(功能键1)+(功能键2)开机,打印机开机后,开始初始化,初始化完后放入一张A4纸,纸张会被打印机吸人设备内,接着开始打印固件版本,并询问是否打印当前设置,按下(功能键2)打印机会打印出当前设置,打完后核对,软件菜单中,当前设置是即有下划线部份是否是ESC/P-K。
是则成功修改。
4,注意事项
我们所做的修改只修改其软件模式菜单,其他都用默认设置,如不小心修改过其他参数,可以用以下方法,先恢复出厂设置然后再进行修改,恢复出厂设置方法:按住(脱机键)+(功能键2)开机,开机后,同时按住面板上的三个按键,听到“滴声”后要松手,即恢复
出厂设置,然后再按照第2个步骤进行设置。