代码改变世界

进程与线程的区别

2012-09-13 16:15 by jiutianhe, 137 阅读, 0 推荐, 收藏, 编辑
摘要:线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个 阅读全文

程序的内存分配

2012-09-13 16:11 by jiutianhe, 184 阅读, 0 推荐, 收藏, 编辑
摘要:一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等。操作方式类似于数据结构中的栈。只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则栈溢出。在WINDOWS下,栈的大小是2M,,是一块连续内存区域。在函数调用时,第一个进栈的是主函数后的下一条指令、然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。当本次函数调用结束后,局部变量先出栈,然后是参数,最后也就是主函数中的下一条指令,程序由该点继续运行。2、堆区(heap):由程序员分配释放,若程序员不释放,程序结束时可能由OS 阅读全文

Window进程通信方式

2012-09-13 16:10 by jiutianhe, 209 阅读, 0 推荐, 收藏, 编辑
摘要:1.进程与进程通信。进程是装入内存并准备执行的程序。每个进程都有私有的虚拟地址空间,由代码、数据、系统资源(如文件等)组成。IPC(interprocess communication)进程通信是指不同进程间数据共享和数据交换。2.进程通信方法(1)文件映射。Memory-Mapped Files文件映射是进程把文件内容当做自己的一块内存地址对待,通过指针操作读取文件内容,而不是IO操作。Win32 API允许多个进程访问同一文件对象,实现对文件共享。文件映射只适用于本地机器,不适用于网络,开发者还必须控制进程同步。(2)共享内存。Shared Memory共享内存是文件映射一种的特殊情况。共 阅读全文

Linux进程间通信

2012-09-13 16:05 by jiutianhe, 111 阅读, 0 推荐, 收藏, 编辑
摘要:(1)管道( pipe ):是一种半双工的通信方式,数据只能单向流动。命名管道 (named pipe) :也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。(2)信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。主要作为进程间以及同一进程内不同线程之间的同步手段。(3)消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。(4)共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访 阅读全文