Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C进程内存使用的微管理_C_Unix - Fatal编程技术网

C进程内存使用的微管理

C进程内存使用的微管理,c,unix,C,Unix,我想用C实现内存管理功能。情况如下。。物理内存的总大小为256mb 如何将128mb分配给一个进程64mb分配给另一个进程 我想使用自由列表实现最佳匹配算法&需要进行压缩。 有谁能在这方面帮助我,或者推荐一本书来研究它吗?您可以设置进程可以使用的最大内存量(常驻集) 例如,将shell中所有分叉进程的最大驻留集限制为128mb 或在C中通过 #include <sys/time.h> #include <sys/resource.h> int setrlimit(int

我想用C实现内存管理功能。情况如下。。物理内存的总大小为256mb

如何将
128mb
分配给一个进程
64mb
分配给另一个进程

我想使用
自由列表实现最佳匹配算法
&需要进行压缩。

有谁能在这方面帮助我,或者推荐一本书来研究它吗?

您可以设置进程可以使用的最大内存量(常驻集)

例如,将shell中所有分叉进程的最大驻留集限制为128mb

或在C中通过

#include <sys/time.h>
#include <sys/resource.h>
int setrlimit(int resource, const struct rlimit *rlim);
#包括
#包括
int setrlimit(int资源,常量结构rlimit*rlim);
e、 g

struct-rlimit-rlim;
getrlimit(RLIMIT_RSS,&rlim);

rlim.rlim_cur=(128)这可能会有所帮助,但您应该对管理内存的方法进行一些概念性研究,即跟踪可用内存、分配内存以及如何查找新内存块的方案/数据结构。您有什么类型的RAM库?根据大小,您可以通过链接器脚本轻松调度进程。您需要什么样的上下文你想在两个进程中执行吗?注意:如果你想在两个进程中执行,这意味着你是在内核中执行的,但由于虚拟内存(或者你有没有没有没有MMU的嵌入式系统?)的存在,你不需要连续内存。
#include <sys/time.h>
#include <sys/resource.h>
int setrlimit(int resource, const struct rlimit *rlim);
struct rlimit rlim;
getrlimit(RLIMIT_RSS, &rlim);
rlim.rlim_cur = (128 << 20) / sysconf(_SC_PAGESIZE) // 128 MiB
setrlimit(RLIMIT_RSS, &rlim);