由于并发活动的复杂性,不同学者研究和讨论的侧重点不同,对进程的定义也不尽相同:1、进程是可以和别的计算并发执行的计算2、进程是程序的一次执行,亦即是在给定内存区域中的一组指定序列的执行过程3、一个程序在给定活动空间和初始化环境下,在一个处理机上的执行过程4、程序在一个数据集合上运行的过程,是系统进行...
分类:
其他好文 时间:
2015-04-22 13:27:05
阅读次数:
98
程序运行时需要系统分配内存,那么系统如何为程序分配内存呢?
首先,我们得清楚内存分配方式分为类:静态分配内存和动态分配内存。那么这两种又是个什么东西?好的,基于这个问题我们来看一下他们的定义:
静态分配内存:由编译器根据变量类型来确定分配给变量多少字节的内存区域。
动态分配内存:程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delet...
分类:
编程语言 时间:
2015-04-21 14:45:36
阅读次数:
271
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息...
分类:
系统相关 时间:
2015-04-20 21:00:16
阅读次数:
278
大多数共享内存的具体实现,都是把由不同进程之间共享的内存映射为同一段物理内存。 多个进程都把该物理内存区域映射到自己的虚拟地址空间,这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。
共享内存允许两个不相关的进程访问同一段物理内存, 由于数据不需要在不同的进程间复制,所以它是在两个正在运行的进程之间传递数据的一种非常有效的方式,一个进程向共享内存区域写入数据,共享该...
分类:
系统相关 时间:
2015-04-20 20:58:51
阅读次数:
287
共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这块共享虚拟内存的页面,出现在每一个共享该页面的进程的页表中。但是它不需要在所有进程的虚拟内存中都有相同...
分类:
系统相关 时间:
2015-04-20 20:58:44
阅读次数:
293
内核怎样保证各个进程寻址到同一个共享内存区域的内存页面
1、page cache及swap cache中页面的区分:一个被访问文件的物理页面都驻留在page cache或swap cache中,一个页面的所有信息由struct page来描述。struct page中有一个域为指针mapping ,它指向一个struct address_space类型结构。page cache或swap cac...
分类:
系统相关 时间:
2015-04-20 20:58:37
阅读次数:
644
笔记,深入理解java虚拟机 Java运行时内存区域 程序计数器,线程独占,当前线程所执行的字节码的行号指示器,每个线程需要记录下执行到哪儿了,下次调度的时候可以继续执行,这个区是唯一不会发生oom的 栈,线程独占,包含虚拟机栈或native method stack,用于存放局部变量的 堆,线程共...
分类:
编程语言 时间:
2015-04-20 16:24:24
阅读次数:
232
缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可...
分类:
Web程序 时间:
2015-04-18 21:46:06
阅读次数:
196
使用的是“引用计数”方式进行回收。简单地理解的话,就是每个分配的内存区域都有一个计数器,记录有多少个变量指针指向这片内存。当指向该片内存的指针数量为0,那么该片内存区域就可以被回收。引用计数计数简单,强大,但是有一个致命的缺陷,就是环状引用。考虑以下的代码:Php代码$a = array();$a[...
分类:
Web程序 时间:
2015-04-18 20:32:16
阅读次数:
134
程序运行中(BSS段、数据段、代码段、堆栈) BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段 :数据段(data segment)通常是指用来存放程序中 ...
分类:
其他好文 时间:
2015-04-18 19:08:32
阅读次数:
175