|
发表于 2004-2-9 19:08:51
|
显示全部楼层
最初由 goldeagle 发表
很详细就难了
内存分配上就是堆栈和堆的区别
在宏观理解上,一个进程是运行在内存中程序的一份拷贝
一个进程可以拥有多个线程。
线程是进程并行完成的多个任务。
一般来说,一个进程耗费的内存更多,进程崩溃的影响也更大。
所以有进程安全的说法。
CGI程序就是用进程管理的,服务器为每个request都开一个进程。
所以CGI程序是“进程不安全”的。
JSP 这样的程序对每个request都只是开个线程而已,性能和安全性方面更加优秀。
不知道这样说你能否理解。
说得不完全正确,进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。 |
|