论坛: 编程破解 标题: 高手才进! 复制本贴地址    
作者: chenxing [chenxing]    论坛用户   登录
关于WIN2000的进程,听说2000系统只支持200个进程,开机用了20个进程,请问这20个进程有哪些可以不要的。还有就是,我现在用了198个进程了,有什么办法增加进程吗?XP支持几个进程的?



地主 发表时间: 08/21 20:20

回复: NetDemon [netdemon]   ADMIN   登录
我不是高手,象你说的这么高的技术问题我不会

不过我知道下列语句还是能编译成功的,虽然我都不知道这是那种语言编写的程序

if( 进程 !>= 200 ) then { microsoft就会破产 && 比尔叔叔就比亚洲之鹰穷 };

因为亚洲之鹰比盖兹同志还有钱,所以买了一套别墅,别墅是连房子带装修还有电器一起的,一共20个电器。当然象亚洲之鹰这样的有钱人来说,有些免费带来的就显得太老土了,要换掉冰箱还是电视什么还是要再安装中央空调那得由你根据你的要求搞,俺们这些穷人说不上话

B1层 发表时间: 08/21 23:15

回复: ricky [ricky]   版主   登录
我好佩服你啊,开了198个进程系统还没崩溃,哈哈

B2层 发表时间: 08/22 09:56

回复: flashsky [flashsky]   论坛用户   登录
I386的系统理论上进程的数目受全局段积存器指向的全局段数据结构大小的限制,在I386系统中,每个进程会占用两个数据项,而全局段积存器许可的全局段数据结构的大小总共为8192个表项,排除系统内核本身占有的(不同的操作系统有不同,大致用户进程许可数目是4000个左右)
但是实际环境下你的进程许可数和你内存大小有关系,也和特定操作系统的内核记录进程数据结构的大小也有关系(一般这是一个固定大小的表项,不同操作系统不同,有些操作系统如SUN甚至允许动态交换这个区域来提高更大的进程许可),至于WIN的有多大我不清楚,我想怎么定也应该是2的指数方式定吧。如果你说的是200,我想更符合情况的是256,系统进程保留56个。
当然就算允许你有更多的进程,但是如果你的物理内存资源不许可的话,导致系统频繁的进行页面的交换的话,系统也会将你的进程给KILL掉的。

B3层 发表时间: 08/22 10:36

回复: tabris17 [tabris17]   论坛用户   登录
闪空是个内核高手哦

我太崇拜你了

B4层 发表时间: 08/22 11:01

回复: chenxing [chenxing]   论坛用户   登录
我的是256内存,我要怎么才能用利到4000个进程呢?是不是我加内存条就可以了,可是有人试过,加了内存条也只不过加多10个进程,划不来哦!可是用软件可以,理论上可以加到3500个进程,什么软件可以做到呢?

B5层 发表时间: 08/22 12:01

回复: chenxing [chenxing]   论坛用户   登录
?

B6层 发表时间: 08/26 07:37

回复: NetDemon [netdemon]   ADMIN   登录
首先你应该弄清楚,内存的大小和进程的多少之间的关系
你有256M内存,如果系统用掉56M,那么剩下200M
但如果你运行的这个程序的一个进程就必须150M的话,我看你最多只能运行2个进程
但如果一个进程是200K的话,你自己算算可以运行多少个?
200M/20K=1000个
Win系统我没有测试过,但我却在我的FreeBSD上试过并发500个apache加上100个Sendmail。
如果win和Unix的差别真的有这么大,微软早就倒闭了

如果你真的想解决问题,你还是把你具体的情况贴上来吧 


B7层 发表时间: 08/27 15:49

回复: ricky [ricky]   版主   登录
真的有这么大的差别,我在2000下开ie窗口,256M内存,开到大概50几个就垮了,还有100多M的物理内存没有用完,哈哈

B8层 发表时间: 08/27 16:04

回复: flashsky [flashsky]   论坛用户   登录
给NETDEMON:
  I386体系的进程上限4000个左右的限制是由硬件决定的,而不是由某种系统决定的,原因在于I386的保护模式下,进程切换的时候需要先将进程的段积存器中代表的全局段积存器的索引内容取出,指向新的进程的页面表以进行虚拟地址到物理地址的转换转换,而I386体系中这个全局段积存器指向的段表大小为8192个,而且每个进程需要使用2个表项。
  在这个硬件极限限制下,你谈的内存和进程的关系有,但是不是主要因素,主要因素还是受制于操作系统本身的代表内核进程的数据结构的大小有关,因为现在操作系统都不会把所有物理页面一次影射到内存中的,而采用了交换技术,既使总的内存操作了物理内存仍然能够运行,不过由于进程之间由于分时导致频繁的页面交换而发生抖动,内核可能会KILL掉其中一些进程。另外同一个程序导致的进程,内核会自动把上下文进行共享方式,指向同一个物理的页面,因此你的测试:并发500个apache加上100个Sendmail。基本上没什么意义,也就是说进程的正文区内存只会占有一个,对再多的同一个程序的进程而言,所有的内存是:1个正文区内存+500个堆栈内存+500个数据内存+500个U区内存+500个页面表项区,而其中数据内存,现代的UNIX操作系统都实现的是变化后才生成复制页面,而堆栈内存这是指向一个特殊的0内存页面,直到有数据需要才真正的物理分配一个页面,而一个弹出导致多余一个页面又会马上回收,你的这个测试可能真正导致的内存(用户进程)是:1个正文区内存+几个堆栈内存页面+1个数据内存+进程更新导致复制的数据内存页面+500个U区内存+1个页面表项区+修改了的页面表项区(且只限于数据内存)而已,而且这些还是可以交换的,但是对核心来说,却需要构建500个PROC区,早期的UNIX操作系统是不允许对内核进行交换的,现代的很多UNIX都逐渐支持可交换内核了。如果UNIX操作系统是先确定和分配这个数据结构空间,也可以在编译选项中进行更改重新连接后生效。
    WINDOWS的操作系统核心一样需要分配代表进程的内核对象数据结构,不过增大这个代表需要占据更多的内核空间,同时对性能的影响也是很大的。但到底如何增大这个,倒是个没有搞明白的问题,但是我估计也不可能提高到非常高的象UNIX的那样允许几千个以上接近硬件的极限,因为这样内核分配的空间非常大而且WINDOWS肯定是不支持内核交换的,而且他的东西一般会比UNIX的臃肿很多。另外,WINDOWS2000号称是个微内核的系统,核心是非常的小,其他的一些系统要求都是使用外部系统进程的方式来完成的。
    那么提高的可以提高到3500个进程的程序是如何实现呢,我想可能是采用把新的进程用用户线程库提供的方法将其转为成用户线程进行运行的方法吧,因为用户线程是在内核中不占有数据结构的,而完全由主进程进行调度的。(区分用户线程和系统线程),WINDOWS中,用户线程一般附加到系统工作者内核线程(类似UNIX下的轻量级进程LWP的概念)上,但是是允许复用的,这样就可以有效减少PROC区占有的不可交换的内存资源,模拟上千个进程并发的情况。这样从理论上也可以突破4096个物理进程的硬件极限(当然其实是线程),当然每个进程许可的线程也是有限制的,物理上说,应该是实际使用的内存不能超过一个进程的虚拟地址空间(WINDOWS下一般是2G,也可以修改成3G)


[此贴被 闪空(flashsky) 在 8月27日17时33分 编辑过]

B9层 发表时间: 8/27 17:54

回复: xjy1234 [xjy1234]   论坛用户   登录
不要再吵了,

B10层 发表时间: 08/28 09:35

回复: NetDemon [netdemon]   ADMIN   登录
你误会了。

我的测试并不是为了测试进程内存什么的,我是测试主机性能
谁都知道,一个apache的例程至少要3M.如果以我帖子说的那个关系来算的话那需要1.5G的内存,这个肯定是不成立的因为我根本只有512M

我为什么说这个测试那是因为我真的不相信WIN2K只能用到200个进程
而且尽管我明知道我关于内存和进程的关系那是绝对错误的,但就提出这个问题的人的目前的水平来说,我不那么说的话,他根本不能理解。只能这样说了。因材施教嘛,我那样说也许他能明白点啥,你说的虽然对,但是他可能更模糊了我觉得




[此贴被 NetDemon(netdemon) 在 8月29日14时41分 编辑过]

B11层 发表时间: 8/29 14:37

回复: chenxing [chenxing]   论坛用户   登录
有人可以用到3500个进程!你们不行吗?就是2000系统!

B12层 发表时间: 08/30 03:02

回复: sainthero [sainthero]   论坛用户   登录
这种情形是不是利用进程空隙,也就是在进程空闲的时候,运行其他的进程
具体情况我不清楚,不过进程空闲我知道一些

B13层 发表时间: 09/07 16:57

回复: soft803 [soft803]   论坛用户   登录
大哥,你能告诉我怎么开了198个进程吗?


B14层 发表时间: 09/08 14:28

回复: sinister [sinister]   论坛用户   登录
这个问题不能抛开 OS 实现来谈。拿 9X 来说,他用到了 LDT 。
也是为每个进程分配一个 TSS。它们其实都存储在 GDT 中。而 GDT 
是 8192 项。每个站2位的话正好是 4096 个上限。那么在 NT KERNEL
里的实现就大有不同,NT KERNEL 中根本就没有使用到 LDT。且也只
使用了同一个 TSS 。所以 GDT 中只有一个 TSS DESCRIPTOR 。这也
就避免了上述限制。想要证实我的说法,可以写一段小的 ASM CODE。
来判断 DATA SELECTOR 中的 TI 位是否为 0。这也就可以简单的判断
当前 OS 是 9X 还是 NT。

B15层 发表时间: 06/01 02:13

回复: NetDemon [netdemon]   ADMIN   登录
哇靠,你那里冒出来的?
也不说一声,我好派个林肯去接你啊,还弄一群小姑娘拿鲜花夹道欢迎

B16层 发表时间: 06/01 02:48

回复: sinister [sinister]   论坛用户   登录
不是睡不着,就顺便过来看看吗。呵呵

B17层 发表时间: 06/01 03:34

回复: BlueFish [mfkzly]   论坛用户   登录
198个进程??有点惊人哟!!

B18层 发表时间: 06/01 12:24

回复: shavb [shavb]   论坛用户   登录
我的是XP,能开199个吗?

B19层 发表时间: 06/03 03:51

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号