亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3415 | 回復(fù): 8
打印 上一主題 下一主題

請教一個(gè)Linux 2.6.22 下面 mmap的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-01-31 23:31 |只看該作者 |倒序?yàn)g覽
今天寫了一個(gè)測試程序,malloc 900多M , mmap 1G 內(nèi)存,發(fā)現(xiàn)mmap總是失敗,報(bào)錯信息顯示 “不能分配內(nèi)存”, free的內(nèi)存有2G多應(yīng)該可以分配的,不知道是哪里有限制導(dǎo)致系統(tǒng)無法申請大內(nèi)存。請大家指點(diǎn)。謝謝。

系統(tǒng)資源如下:

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      143G   33G  103G  24% /
/dev/sda1              99M   16M   78M  17% /boot
tmpfs                 1.8G  8.0K  1.8G   1% /dev/shm

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3541       1397       2144          0         16       1320
-/+ buffers/cache:         59       3481
Swap:         1983          0       1983

[root@localhost ~]# cat /proc/meminfo
MemTotal:      3626092 kB
MemFree:       1377096 kB
Buffers:         18484 kB
Cached:        2152352 kB
SwapCached:          0 kB
Active:         999752 kB
Inactive:      1205352 kB
HighTotal:     2742808 kB
HighFree:       550396 kB
LowTotal:       883284 kB
LowFree:        826700 kB
SwapTotal:     2031608 kB
SwapFree:      2031608 kB
Dirty:           37680 kB
Writeback:       48584 kB
AnonPages:       34260 kB
Mapped:          10104 kB
Slab:            33476 kB
SReclaimable:    19396 kB
SUnreclaim:      14080 kB
PageTables:       1608 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   3844652 kB
Committed_AS:    69200 kB
VmallocTotal:   116728 kB
VmallocUsed:      5212 kB
VmallocChunk:   111060 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB
[root@localhost ~]#



代碼如下:
[root@localhost ~]# cat t.c
#include <stdio.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>

int main()
{
        char *p;
        int fd;
        char *header;

        p = malloc(948135260);

        if(p==NULL)
                return -1;

        memset(p, 0, 948135260);

        fd = shm_open("ttt", O_RDWR | O_CREAT, 0644);
        if (fd == -1)
                perror("shm_open");


         ftruncate(fd, 1062369960);

        header = mmap(NULL, 1062369960, PROT_READ | PROT_WRITE, MAP_SHARED,fd, 0);


        if(header == (void*)-1){
                perror("mmap");
        }else{

                memset(header, 0, 1062369960);
        }

}
編譯:
[root@localhost ~]# gcc t.c -lrt
執(zhí)行:
[root@localhost ~]# ./a.out
mmap: Cannot allocate memory
[root@localhost ~]#

論壇徽章:
1
白羊座
日期:2013-09-18 22:02:26
2 [報(bào)告]
發(fā)表于 2012-02-01 08:38 |只看該作者
ulimit看看

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-02-01 08:44 |只看該作者
先用普通的文件看能不能成功
可能是你的地址空間無法分配也可能是share memory大小有限制。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-02-01 09:43 |只看該作者
[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
max nice                        (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 57192
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
max rt priority                 (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 57192
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@localhost ~]#

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-02-01 11:14 |只看該作者
本帖最后由 sttty 于 2012-02-01 11:15 編輯

回復(fù) 3# oooooxxxxx

share memory 的限制在哪里可以做修改呢?
地址空間無法分配,這個(gè)怎么去判斷呢?

謝謝啦


   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-02-01 11:43 |只看該作者
sttty 發(fā)表于 2012-02-01 11:14
回復(fù) 3# oooooxxxxx

share memory 的限制在哪里可以做修改呢?

如果普通文件也不能分配只能說明你的地址空間沒有那么大的連續(xù)空閑區(qū)域了,
share memory的限制應(yīng)該在/proc下面某個(gè)文件吧,我沒改過posix的share memory限制,但是根據(jù)慣例應(yīng)該是差不多的。

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
7 [報(bào)告]
發(fā)表于 2012-02-01 11:54 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-02-02 11:00 |只看該作者
此話怎講? 回復(fù) 7# Sevk


   

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
9 [報(bào)告]
發(fā)表于 2012-02-02 12:19 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP