热情软件屋

 

如何用c语言实现当某个作业回收时两张表的变化


编号:QA004754
建立日期: 2003年11月8日 最后修改日期:2003年11月8日
所属类别:

佚名:
    操作系统: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时,表示不可用。
    谢谢!!!

回答:

    你这种做法有几个问题需要明确:
    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, 其他方面,

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio