如何用c语言实现当某个作业回收时两张表的变化
编号:QA004754
建立日期: 2003年11月8日 最后修改日期:2003年11月8日
所属类别:
Q
佚名:
操作系统:windows 98
编程工具:turboc2(c语言)
问题:我用“结构体”定义两张表:“已分配分区说明表”和“空闲分区说明表”。我的“内存管理”的方法是“动态可变式分区”用“最佳(Best Fit)算法。那两张表是这样定义的
struct yifenpei
{ int xunhao; /*序号*/
int size; /*所占内存空间的大小*/
int adress; /*所占内存的起始地址*/
int zhuangtai;/*状态,为1时表示被占用,为0时表示不可用*/
}yfp[10]; /*表的长度为10*/
另一张“空闲分区说明表”结构和上相同,定义为struct kongxian和kx[10]
我用这两张表来说明内存的分配情况(这里我是模拟的,不是真正对内存进行操作,当然要回答这个问题要有《操作系统》这门课为基础,请有这方面知识的专家来帮我,谢谢!!)
我的问题是:如何用c语言实现当某个作业回收时以上两张表的变化?”空闲分区说明表”中的“zhuangtai”为1时,表示可用,为0时,表示不可用。
谢谢!!!
A回答:
你这种做法有几个问题需要明确:
1. 内存分配通常分成两个层次: 以页为单位的内核分配机制和以块为单位的用户分配机制(通常由内核及库实现).你想实现哪一层不太清楚.
2. 假设你想实现用户分配机制, 你的内存块描述符(即你定义的结构)与用户内存块是分离的,这将导致free(p)操作是复杂度为O(n);
3. 假设你想实现内核分配机制, 已分配分区说明表的作用清楚吗?(内核分配机制一般提供形如 struct page *alloc(int npage); void free(struct page *page, int npage); 的功能).
此问题由cngb回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 其他方面, 。
| |
|
|
| |
|
|