Allocated 511 MB total.
/*
* Virtual memory related constants, all in bytes
*/
#define MAXTSIZ (128UL*1024*1024) /* max text size */
#ifndef DFLDSIZ
#define DFLDSIZ (128UL*1024*1024) /* initial data size limit */
#endif
#ifndef MAXDSIZ
#define MAXDSIZ (512UL*1024*1024) /* max data size */
#endif
#ifndef DFLSSIZ
#define DFLSSIZ (8UL*1024*1024) /* initial stack size limit */
#endif
#ifndef MAXSSIZ
#define MAXSSIZ (64UL*1024*1024) /* max stack size */
#endif
#ifndef SGROWSIZ
#define SGROWSIZ (128UL*1024) /* amount to grow stack */
#endif
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
Allocated 1023 MB total.
options MAXDSIZ="(2049ULL*1024*1024)"
Allocated 2048 MB total.
Allocated 3056 MB total.
原帖由 gvim 于 2006-3-25 15:41 发表
options MAXDSIZ="(2048*1024*1024)"
options DFLDSIZ="(2048*1024*1024)"
把这个换成
options MAXDSIZ="(3221225472UL)"
options DFLDSIZ="(3221225472UL)"
试试 ...
init died (signal 0, exit 1)
painc : Going nowhere without my init
cpuid = 0
原帖由 antijp 于 2006-3-25 20:43 发表
我在freebsdchina的回复你没有仔细看
需要2G的话,要用2048U(LL)? * 1024 * 1024
原帖由 antijp 于 2006-3-25 20:43 发表
我在freebsdchina的回复你没有仔细看
需要2G的话,要用2048U(LL)? * 1024 * 1024
原帖由 zzbwang 于 2006-3-26 20:18 发表
我也遇到了同样的问题,我在DELL2850服务器上安装了4GB内存,同时调整了/boot/loader.conf中的MAXDSIZ的值,发现当MAXDSIZ值设置到3GB以上时,服务器就不能启动。至今不知道什么原因。
楼主所作的试验我以前也 ...
原帖由 szjungle 于 2006-3-26 20:56 发表
能分得多大的内存,还应该跟机器的物理内存和交换分区大小有关。
NetBSD UVM FAQ 上有这么一条:
How much virtual memory do I have?
[url]http://www.netbsd.org/Documentation/kernel/uvm.html#vm-ho ...
原帖由 szjungle 于 2006-3-26 20:56 发表
能分得多大的内存,还应该跟机器的物理内存和交换分区大小有关。
NetBSD UVM FAQ 上有这么一条:
How much virtual memory do I have?
[url]http://www.netbsd.org/Documentation/kernel/uvm.html#vm-ho ...
原帖由 fredrick 于 2006-3-26 23:55 发表
如果只是分配内存的话,内核应该会使用一种“聪明”的办法来解决问题。 不妨试试分配内存之后往这些内存单元里写一点东西,那你可能会看到实际能分配的能力了。
options MAXDSIZ="(3072ULL*1024*1024)"
options DFLDSIZ="(3072ULL*1024*1024)"
options KVA_PAGES="(192)" # 实际大小是192*4=768MB,默认是256*4=1024MB
Allocated 3071 MB total.
原帖由 hongzjx 于 2006-3-27 15:51 发表
呵呵,llzqq用shell来运行也可以吗?
原帖由 llzqq 于 2006-3-27 15:27 发表
[root@bsd ~]#vi sh
#include <stdio.h>
#include <stdlib.h>
int main(){
int MB = 0;
while(malloc(1 << 20)) ++MB;
printf("Allocated %d MB total ...
原帖由 hongzjx 于 2006-3-27 15:51 发表
呵呵,llzqq用shell来运行也可以吗?
原帖由 congli 于 2006-3-27 14:11 发表
经过一翻折腾,终于找到了原因.感谢风雨^_^
默认情况下,系统会保留1GB空间(打开PAE,会保留2GB),所以导致MAXDSIZ=3GB启动时出现panic.
最后结果:
呵~比linux还要多^_^
PS:虽然找到原因,修改后对性能是否 ...
原帖由 gvim 于 2006-3-27 16:55 发表
可是不应该啊。(我还没有进入内存管理部分,先把问题放在这里)
疑问1:
为什么NetBSD不会crash。我看了相关文献和论文,FreeBSD的vm和NetBSD的uvm 策略差别不大。
疑问2:
"默认情况下,系统会保留 ...
原帖由 gvim 于 2006-3-27 16:55 发表
默认情况下,系统会保留1GB空间"这是保留的内核空间,但是进程可以用的最大空间还是3G,修改KVA_PAGES只是减小了内核保留的虚拟空间。比喻下应该是拆东墙补西墙的感觉 ...
原帖由 雨丝风片 于 2006-3-27 17:00 发表
谈谈我对这个问题的看法。
在32位机器的4GB的地址空间中,高端的1GB是缺省留给内核使用的,低端的大致3GB的空间则留给进程自己使用。我们知道,对于一个传统的unix进程的内存布局而言,低端是text段,然后是 ...
原帖由 gvim 于 2006-3-27 17:05 发表
我昨天试了下(NB)用的-static编译静态程序,运行程序可以多分得1M的虚拟空间。我估计mmap空间不会保留的那么大,以至于我困惑于实际分得的2869M和3072M还有很大的差距。(当然3072还需要去除text segment等东西 ...
原帖由 雨丝风片 于 2006-3-27 17:07 发表
mmap保留多大是由MAXDSIZ决定的,data段不要的都给mmap,![]()
原帖由 gvim 于 2006-3-27 17:12 发表
内存分配是lazy allocation的吧。现在情况是data段都需要,难道系统需要为每个进程保留200M左右的mmap空间?不合理吧![]()
原帖由 gvim 于 2006-3-27 17:25 发表
我理解你的意思。我的意思是将MAXDSIZ=3*1024*1024*1024的时候,也就是最大数据va大小是3G了。并且我也不打算使用mmap这个东西(比如1楼的小程序)。
那么,首先就FB来说,它就panic了。
就NB来说,可以分配28 ...
原帖由 雨丝风片 于 2006-3-27 17:29 发表
你还没把地址空间最下边那128M的未映射区域算进去吧?
原帖由 gvim 于 2006-3-27 17:29 发表
congli兄在gentoo上的实验结果是 3056 MB 距3G只有16M空间。这16M包含了text,stack,(或许还有的mmap),因此我想BSD不会硬性的保留200M左右出来做mmap的最小尺寸吧。
原帖由 gvim 于 2006-3-27 17:35 发表
?我怎么没有看见有这个提法?我只知道0G开始分配一个页面之后的地方开始分配text
不过128M也有点吃惊
老大在哪里看见的?我去看一看。免得继续在论坛上开黄腔![]()
原帖由 雨丝风片 于 2006-3-27 17:47 发表
是elf格式固定从0x8000000开始加载text段的。![]()
原帖由 llzqq 于 2006-3-27 18:14 发表
在openbsd-3.8上试了试:
[root@bsd ~]#./m
Allocated 1022 MB total.
在OPENBSD上怎么调大呢,没看到那里可以调节。
原帖由 jjdeng 于 2006-3-27 19:27 发表
当年我看<<C专家编程>>的时候怎么就没在机器上调调呢
哈哈 落伍了
原帖由 llzqq 于 2006-3-27 18:14 发表
在openbsd-3.8上试了试:
[root@bsd ~]#./m
Allocated 1022 MB total.
在OPENBSD上怎么调大呢,没看到那里可以调节。
原帖由 无倦 于 2006-3-27 20:47 发表
呵呵,有个疑问,用 while(malloc(1024)) 来试了一下, 程序把所有的内存和SWAP耗尽后就死了,malloc(1 <<20)好象没占用内存就运行完毕的?
原帖由 congli 于 2006-3-27 22:55 发表
估计是调整过.
公司的那台OB结果是:Allocated 511 MB total.![]()
原帖由 llzqq 于 2006-3-28 08:25 发表
偶在编译内核时修改了:
maxusers 64
其他没作设置,就是这个结果了,难道OPENBSD可以这样调节程序最大使用的内存?
原帖由 无倦 于 2006-3-27 20:47 发表
呵呵,有个疑问,用 while(malloc(1024)) 来试了一下, 程序把所有的内存和SWAP耗尽后就死了,malloc(1 <<20)好象没占用内存就运行完毕的?
原帖由 congli 于 2006-3-28 09:52 发表
哦,明白了,
管理员跟普通用户不同;
root:Allocated 1022 MB total.
普通用户:Allocated 511 MB total.
原帖由 Alligator27 于 2006-3-28 10:53 发表
是因为 ulimit 设置不一样?
原帖由 Alligator27 于 2006-3-28 11:13 发表
补充一句:
PT2 malloc (大多数Linux): 如果size>256KB, 内存是mmap()得来的. 否则是用sbrk(). 这个值可编程修改.
Debian/Novell 的Hoard是64KB.
options MAXDSIZ="(2912ULL*1024*1024)"
options DFLDSIZ="(2912ULL*1024*1024)"
Allocated 2911 MB total.
total address space : max = 4095M
max data segment : max = 2912M
max stack segment : max = 64M
options MAXDSIZ="(2920ULL*1024*1024)"
options DFLDSIZ="(2920ULL*1024*1024)"
Allocated 2919 MB total.
total address space : max = 4095M
max data segment : max = 2920M
max stack segment : max = 64M
virtual memory exhausted: Cannot allocate memory
options MAXDSIZ="(2928ULL*1024*1024)"
options DFLDSIZ="(2928ULL*1024*1024)"
Allocated 2927 MB total.
total address space : max = 4095M
max data segment : max = 2928M
max stack segment : max = 64M
virtual memory exhausted: Cannot allocate memory
options MAXDSIZ="(2934ULL*1024*1024)"
options DFLDSIZ="(2934ULL*1024*1024)"
Allocated 1531 MB total.
total address space : max = 4095M
max data segment : max = 2934M
max stack segment : max = 64M
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
httpd: Syntax error on line 83 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_ssl.so into server: /lib/libcrypto.so.3: mmap
of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
options MAXDSIZ="(2935ULL*1024*1024)"
options DFLDSIZ="(2935ULL*1024*1024)"
Allocated 1195 MB total.
total address space : max = 4095M
max data segment : max = 2935M
max stack segment : max = 64M
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
httpd: Syntax error on line 83 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_ssl.so into server: /usr/lib/libssl.so.3: mmap of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
/libexec/ld-elf.so.1: /usr/local/lib/libiconv.so.3: mmap of entire address space failed: Cannot allocate memory
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
options MAXDSIZ="(2936ULL*1024*1024)"
options DFLDSIZ="(2936ULL*1024*1024)"
Allocated 859 MB total.
total address space : max = 4095M
max data segment : max = 2936M
max stack segment : max = 64M
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
/libexec/ld-elf.so.1: /usr/local/lib/libdb-4.2.so.2: mmap of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
Starting SAMBA: removing stale tdbs :
/var/db/samba/messages.tdb
/var/db/samba/unexpected.tdb
Starting nmbd.
/libexec/ld-elf.so.1: /lib/libcrypto.so.3: mmap of entire address space failed:
Cannot allocate memory
Starting smbd.
/libexec/ld-elf.so.1: /usr/local/lib/compat/pkg/libgnutls.so.12: mmap of entire
address space failed: Cannot allocate memory
.
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
options MAXDSIZ="(2937ULL*1024*1024)"
options DFLDSIZ="(2937ULL*1024*1024)"
Allocated 523 MB total.
total address space : max = 4095M
max data segment : max = 2937M
max stack segment : max = 64M
Starting sshd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
Initial i386 initialization:.
Additional ABI support: linuxem0: Link is up 100 Mbps Full Duplex
/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /usr/local/lib/libiconv.so.3: mmap of entire address space failed: Cannot allocate memory
cups: unable to start scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
Starting SAMBA: removing stale tdbs :
Starting nmbd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
Starting smbd.
ELF interpreter /libexec/ld-elf.so.1 not found
Abort trap
.
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
Mar 28 13:09:41 FreeBSD init: getty repeating too quickly on port /dev/ttyv8, sleeping 30 secs
options MAXDSIZ="(2938ULL*1024*1024)"
options DFLDSIZ="(2938ULL*1024*1024)"
能启动系统,出现login提示符,输入用户及密码,显示motd信息后,马上自动退出,返回login提示符.返回login提示前屏幕显示:/libexec/ld-elf.so.1:/lib/libc.so.5:mmap of entire address space faild:Cannot allocate memory
options MAXDSIZ="(2939ULL*1024*1024)"
options DFLDSIZ="(2939ULL*1024*1024)"
进入单用户模式,但不能登录,屏幕显示:/libexec/ld-elf.so.1:/lib/libc.so.5:mmap of entire address space faild:Cannot allocate memory
options MAXDSIZ="(2940ULL*1024*1024)"
options DFLDSIZ="(2940ULL*1024*1024)"
init died (signal 0, exit 1)
panic : Going nowhere without my init
原帖由 gvim 于 2006-3-28 10:15 发表
我昨天在NetBSD上试了malloc(1024),没有出现你说的现象。
原帖由 congli 于 2006-3-28 16:08 发表
继续折腾,不过这次是KVA_PAGES保持系统默认,只修改MAXDISZ及DFLDSIZ,并不断增加,看看其"极限"是多少.
经过不断的折腾,向大家提供一些"有趣"的数据:
下面数据每次都是重新编译内核,重启后的 ...
原帖由 雨丝风片 于 2006-3-28 17:14 发表
辛苦辛苦!
从试验结果来看,的确是随着数据段的逐渐增长,mmap的生存空间被不断压缩,使得基于mmap的各种库陆续出现分配不到空间的情况,最终导致系统启动失败。
另外,在2934M之前,实际mall ...
原帖由 gvim 于 2006-3-28 18:26 发表
恩,过段时间看看NetBSD的UVM和FreeBSD的VM到底有什么不同。
NetBSD修改MAXDSIZ之后,至少可以启动,可以正常运行程序。而且,好像,我后面编译内核时使用的内核就已经将MAXDSIZ调整到3*1024*1024*1024之后的值。(我记得安装之后没有恢复过)
从这个单方面说,难道UVM模型真比FB采用的模型优秀些?
呵呵,有意思
What is ``top down'' memory allocation?
This rearranges mmap(2)'ed memory allocations that don't request a specific address such that they start directly below the stack and work from the top down, instead of from the middle upwards. By doing this, the area of space reserved for heap growth and the area of space reserved for mmap(2)'ed allocations are merged, meaning that the heap can grow larger, or a process can mmap more or larger objects. The kernel still uses the traditional ``bottom up'' scheme for its internal memory management.
原帖由 Alligator27 于 2006-3-28 22:20 发表
malloc 是在用户空间, 不会管理页面. 那是kernel的事.
原帖由 Alligator27 于 2006-3-28 22:20 发表
我试了一下, Linux/AIX的mmap是由下向上的, Solaris/HP-UX与BSDs相似, 由上向下. (BSDs我没有机器试, 以上面贴的Document说.)
在前面的实验中,当数据段上限增大到2934M之后,实际malloc得到的空间急速下降,1531、1195、859、523,非常整齐的等差数列。
原帖由 congli 于 2006-3-29 08:44 发表
估计2932及2933用malloc得到的空间已经开始下降.
原帖由 Alligator27 于 2006-3-29 09:40 发表
我明白你的意思了. 我试的RedHat AS 3 是linux 2.4.21 kernel
不过malloc用作管理的内存是不应该叫页面的. 而且我所知的malloc都不用mmap来获得这部分内存, 起码这样大大减少了用户的default heap空间, 如果mmap不是从顶往下.
Linux RedHat 不是这样的.
前面数据是非常规则的线性关系. 但我觉得不是因为malloc不能mmap到它想要的内存. ...
原帖由 zzbwang 于 2006-3-29 12:01 发表
大家讨论了半天,还是没有告诉BSD进程到底可以使用多大的内存空间啊。如果我在服务器上装了4GB内存,MAXDSIZ最大可以设置成多少不会出问题?可以设置成3800MB吗?
原帖由 雨丝风片 于 2006-3-29 10:08 发表
呵呵,反正就是个名字,叫什么还不都一样,。在没有特别注明的情况下,我所指的都是FreeBSD/NetBSD目前使用的malloc,作者为Poul-Henning Kamp。在这个malloc里,它的“page”定义为4K大小,它就是 ...
原帖由 Alligator27 于 2006-3-29 12:36 发表
PHK malloc 做得不错, 但有几点不好, 让我有点意外.
1 page-directory的大小是根据brk的值确定, 象LZ的测试程序是1MB的内存块, 与同样总内存但是1KB的内存块要分配同样大小的page-directory, 有点浪费.
原帖由 Alligator27 于 2006-3-29 12:36 发表
2 brk() 失败后, 没有用mmap. 这样有不少空间没法给用户.
原帖由 Alligator27 于 2006-3-29 12:36 发表
3 page-directory应当一次性分配, 而不要expand.
B(n) = B(n-1) + 6 (n>=3)
B(2) = 9
推出 B(n) = 9 + (n - 2) * 6
= 6n - 3 (n>=2)
L(n) = B(n) + B(n) + 2 + B(n) + 4
= 18n - 3 (n>=2)
原帖由 congli 于 2006-3-30 15:49 发表
惭愧
全是兄弟的努力,呵~~![]()
29.86 KB, 下载次数: 72
103.65 KB, 下载次数: 76
80.81 KB, 下载次数: 69
原帖由 雨丝风片 于 2006-3-30 15:24 发表
page directory的大小确实是根据brk的内存大小来确定的,不知道你所说的浪费是指什么?page directry是用来管理malloc内部4K大小的page的,因此每个page都会对应一个条目。但page仅仅是malloc和内核的交易单位, ...
原帖由 Alligator27 于 2006-3-30 22:08 发表
1 如果把page directory看成一个array, 它的index是page number, 它的element是该page的管理信息(meta data). 如果用户程序的内存申请size远大于pagesize, 象LZ的测试程序是1MB的内存块, 那么page directory是sparse array. 所以我说有点浪费.
原帖由 Alligator27 于 2006-3-30 22:08 发表
2 malloc不考虑mmap是不行的. 特别象FreeBSD, default heap的顶被mmap area固定了. 当brk到这个顶的时候, 用户不能再得到内存, 但mmap area还有很多空间. 这不是米饭/馒头的选择, 会饿死的. 换句话说, 不管kernel把mmap起始地址放哪儿, malloc都应当分配出~3GB给用户程序.
原帖由 Alligator27 于 2006-3-30 22:08 发表
3 page-directory一次性分配只需要3MB (32bit), 而且只是virtual address. 完全值得. 第一, 只有一个sysem call. 第二, 不会有将来分配不到的可能. 第三, 因为不搬家,实际占用空间可能少一些.
原帖由 雨丝风片 于 2006-3-31 08:54 发表
1、page目录中的条目和malloc管理的page之间有一一对应的关系,这和用户申请内存的大小是无关的。每个页面都要在这儿登个记,因此应该没有“稀疏”的问题。你的意思是不是说如果用户申请的内存是1M,相当于256个 ...
原帖由 Alligator27 于 2006-3-31 10:27 发表
我们是从不同的角度看这个问题.
原帖由 assiss 于 2007-4-21 10:47 发表
2006年3~5月我在外做实验,竟然错过了这么精彩的讨论。
原帖由 assiss 于 2007-4-21 10:47 发表
2006年3~5月我在外做实验,竟然错过了这么精彩的讨论。
原帖由 雨丝风片 于 2007-4-21 11:05 发表
呵呵,那次真的是一次千里之外研发合作的愉快经历,初步测试、大胆猜测、理论分析、设计试验、准备测试代码,实测大量数据、试验数据分析、归纳数学模型、完成理论推导。。。一切就在网络穿梭中水到渠成了,痛 ...
原帖由 assiss 于 2007-4-21 17:52 发表
这是一次很经典的讨论。
我想可以复制其成功经验。
支持GVIM的意见,是不是你们一起出面组织一些讨论?
原帖由 assiss 于 2007-4-21 17:52 发表
这是一次很经典的讨论。
我想可以复制其成功经验。
支持GVIM的意见,是不是你们一起出面组织一些讨论?
原帖由 gvim 于 2007-4-21 18:04 发表
我现在的公司上网不是很方便,家里也还没有开网线, 所以组织论题的事情需要其他几位版主和相关高手筹划.
我觉得要推广BSD一个很关键的问题是驱动, 所以我从春节到现在的闲暇时间一直都在整{Free, Net}BSD的驱 ...
原帖由 雨丝风片 于 2007-4-21 22:33 发表
51之后我们两个面谈一下。。。:em11:
原帖由 雨丝风片 于 2006-3-28 17:14 发表
辛苦辛苦!
从试验结果来看,的确是随着数据段的逐渐增长,mmap的生存空间被不断压缩,使得基于mmap的各种库陆续出现分配不到空间的情况,最终导致系统启动失败。
另外,在2934M之前,实际ma ...
原帖由 panabit 于 2008-10-9 14:13 发表
无所谓mmap空间被压缩这样的概念。
mmap是所有内存分配的根源,无论你是使用malloc,还是其它方法,最终都是通过mmap来实现的。
原帖由 panabit 于 2008-10-9 14:13 发表
无所谓mmap空间被压缩这样的概念。
mmap是所有内存分配的根源,无论你是使用malloc,还是其它方法,最终都是通过mmap来实现的。
所谓的数据段,代码段和堆栈,那只是程序语言系统的概念,OS并不理会这些。
这些段的映射都是通过mmap来实现的。
还是那句话,mmap是OS所提供的,open给应用程序的唯一一个API接口。
在Unix里,mmap是一个非常重要的API,它关联了内存和文件这连个重要的资源。
原帖由 雨丝风片 于 2008-10-17 16:10 发表
当时讨论中使用的“mmap空间”只是对“文件内存映射和匿名内存区域”的一个形象描述,并非技术术语,
这个结合讨论上下文即可理解。
请参考:http://blog.chinaunix.net/u/9831/showart_110254.htm ...
原帖由 雨丝风片 于 2008-10-17 16:10 发表
当时讨论中使用的“mmap空间”只是对“文件内存映射和匿名内存区域”的一个形象描述,并非技术术语,
这个结合讨论上下文即可理解。
请参考:http://blog.chinaunix.net/u/9831/showart_110254.htm ...
原帖由 panabit 于 2008-10-17 18:00 发表
有几个层面的东西需要分开:
1. OS层面
在OS眼里,如果从内存管理角度看,它基本上不意识到某个程序的数据段或堆栈段的区别性。这对它而言都是虚拟内存
空间所占用的不同地址范围。mmap是OS用 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |