进程与线程

来源:互联网 发布:罗技m337 mac 编辑:程序博客网 时间:2024/05/26 15:59

  进程的概念比线程要大一些,进程包含线程。在资源分配的时候,以进程为基本单元;但在CPU调度的时候,以线程为基本单元;所以,可以理解为,进程主要负责资源的申请,而线程是实际的执行单元。进程拥有的所有资源能够被其包含的所有线程共享。但是线程也有其私有的资源,比如栈,一个线程的栈不能够被另一个线程访问。


进程与线程资源

进程资源:全局变量,信号量,堆 等

线程资源:栈 等

http://www.cnblogs.com/CareySon/archive/2012/05/04/2482134.html


进程中堆和栈的区别

堆:堆是线程共享的,操作系统中闲置的内存块被链接起来,所以堆是不连续的。堆中存储动态生成的变量。

栈:栈是线程独有的连续的空间,存储函数参数,局部变量等;在发生函数调用时,首先入栈的是该函数下一条指令的地址,然后对函数参数进行压栈,最后是函数内的局部变量。

http://www.cppblog.com/luyulaile/archive/2011/04/08/143692.html


C++内存五个区中的堆与栈 与 操作系统中进程的堆与栈 的区别

一个C++程序其实就可以看作是一个进程,一般来说是单线程。C++程序的堆与进程的堆就是同一个概念,栈也是同一个概念,都是函数调用发生的地方。在一个程序中(或者线程中),栈的空间有限的,一般是1M或者2M,比如说,我们在C++中声明一个数组 int a[1024][1024],那么这个数组的大小是4M,编译时是可以通过的,但是运行时就会报错,因为已经超出了栈的大小。堆的最大空间应该可以达到最大虚拟空间。比如我们可以通过 while(true){ int* ptr = (int*)malloc(1024); }一直申请空间,直到所有空闲空间被申请完,最后操作系统发生内存饿死而没有任何反应。

0 0