- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《1.4inux用户程序的内存管理90分钟.doc
1.4 Linux用户程序的内存管理
计121晏霄122614
(实验估计时间:90分钟)
背景知识
实验目的
工具/准备工作
实验内容与步骤
背景知识
现代操作系统允许多个程序同时运行,因此,内存中需要同时存放这些程序。操作系统采用的存储管理方案主要有分区式存储管理、分页式存储管理、分段式存储管理和段页式存储管理等。
本实验以一个Linux实例程序说明应用程序如何通过系统调用来管理自己用的空闲内存,目的在于加深读者对操作系统存储管理内容的理解。
本实验实例由my-malloc.h、my-malloc.c和test.c三个文件组成。为阅读程序方便,对其中的主要函数作了说明,读者可结合程序注释理解该程序。
实验目的
1) 了解通过利用操作系统调用实现用户程序分配内存以及回收所用内存的程序过程,加深对操作系统存储管理机制的理解。
2) 通过阅读和分析Linux实验程序,学习Linux程序设计、调试和运行的方法。
工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行Linux操作系统的计算机。
实验内容与步骤
本实验程序主要定义了一个描述自由存储块的结构,每一个自由块都包含块的大小、指向下一块的指针以及块区本身,所有的自由块以地址增加顺序排列,并用链表链接起来。这一链表是本程序维护的一个空闲区域,对于操作系统的当前记录来说是已分出去的区域。因为本程序是运行在用户态的程序。
步骤1:单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入清单5-4程序并保存为my-malloc.h。
清单5-4 my-malloc.h文件
# include stdlib.h
typedef long Align; /* for alignment to long boundary */
union header { /* block header: */
struct {
union header *next; /* next block if on Free list */
unsigned int size; /* size of this block */
} s;
Align x; /* force alignment of blocks */
} ;
typedef union header Header;
# define NALLOC 10 /* minimum #units to request */
static Header * morecore(unsigned int nu) ;
void * Malloc(unsigned int nbytes) ;
void Free(void *ap) ;
步骤2: 单击红帽子,在“GNOME帮助”菜单中单击“附件”-“文本编辑器”命令,在文本编辑中键入清单5-5程序并保存为my-malloc.c。
清单5-5 my-malloc.c文件
# include unistd.h
# include “my_malloc.h”
static Header base; /* empy list to get started */
static Header * free_list = NULL; /* start of free list */
/* Malloc: general-purpose storage allocator */
void * Malloc(unsigned int nbytes)
{
Header *p, *prev;
unsigned int nunits;
nunits = (nbytes + sizeof(Header) -1) / sizeof(Header) + 1;
if ( (prev = free_list) = = NULL) { /* no free list yet */
base.s.next = free_list = prev = base;
base.s.size = 0;
您可能关注的文档
最近下载
- 初步危害源分析(pha)详细解析PPT模板.pptx VIP
- 屏南县各级文物保护单位一览表(2019版).pdf VIP
- 【仁爱版】2025-2026学年七年级英语上册教学计划(及进度表).docx VIP
- 口腔正畸治疗要点Ⅱ.正畸治疗中的支抗与支抗控制.doc VIP
- 水利工程施工编制依据及原则.docx VIP
- 认识五输穴医学知识专题讲座.pptx VIP
- 正畸治疗中的支抗控制 - 南京医科大学PPT参考课件.ppt VIP
- 儿科及儿童保健职称考试习题(一).doc VIP
- 劳动教育课程知识点总结.docx VIP
- 新解读《AQ_T 3034-2022化工过程安全管理导则》必威体育精装版解读.docx VIP
文档评论(0)