第10章 内存管理与用户操作.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
思考与练习 1.链表是一种常用的线性动态数据存储结构,可以比较容易的进行数据的插入、删除等动态操作。链表由一个一个的节点链接而成。每个节点包括两个部分:第一部分为数据部分,记录了所需要存储的数据信息;第二部分为指针,记录了下一个节点的地址。这样程序只需要保存一个头节点就可以通过节点中的指针了解到整个链表。编写一套链表操作函数,完成链表的数据查找、添加、删除等功能,你还可以添加一些功能,包括链表的数据量统计、链表反转等操作。 2.查阅相关资料,深入了解Linux是如何利用Shadow系统来保障其用户的密码安全的。 3.本章实例中完成的程序实现了Linux中用户信息的浏览,查阅相关资料,了解如何对Linux中的用户信息进行增加、修改、删除。并完善本章实例中的程序代码。 Linux应用与开发典型实例精讲 配套教材: 《Linux应用与开发典型实例精讲》 邱铁、于玉龙、徐子川编著. 清华大学出版社. 2010.5 Email: openlinux21@ 第10章 内存管理与用户操作 学习本章要达到的目标: 1.了解Linux系统进程中内存使用情况和内存分配方法; 2.熟练应用Linux系统内存管理相关函数进行编程; 3.了解Linux系统中用户管理的相关知识; 4.能够应用Linux系统中用户管理的相关函数设计程序,实现对Linux系统的用户操作。 10.1 Linux内存管理 虚拟内存则是用户实际使用计算机时所面对的内存,它并不是实际的内存,而是由内存和外存共同抽象出来的内存 用户在使用Linux系统的时候,所进行的操作都是针对虚拟内存而来的 在Linux中,所有的进程都存在于各自独立的内存地址空间中 对于每个进程所拥有的独立内存空间,依次由以下几个部分所组成:程序代码区、全局数据区(清零区)、堆区、栈区、内核空间 10.2 内存操作相关函数 申请内存空间分配 #include stdlib.h void *malloc(size_t size); 申请内存空间分配 #include stdlib.h void *calloc(size_t nmemb, size_t size); 释放由malloc和calloc函数申请到的空间 #include stdlib.h void raise(void *ptr); 建立内存映射 #include unistd.h #include sys/mman.h void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); prot的取值: PROT_EXEC 可执行; PROT_READ 可读; PROT_WRITE 可写; PROT_NONE 无读写权限。 flags的取值: MAP_FIXED 若start所指地址无法建立影射,则放弃操作。 MAP_SHARED 对映射区域的写操作会反映到文件,且允许其他进程使用之。 MAP_PRIVATE 对映射区域的写操作会反映到一个文件的副本。 MAP_ANONYMOUS 建立的内存映射不针对文件,此时忽略参数fd。 MAP_DENYWRITE 只允许通过映射区域对文件进行写操作,其他方式对文件写操作被拒绝。 取消由mmap映射的内存区域 #include unistd.h #include sys/mman.h int munmap(void *start, size_t length); 获取内存页面大小 #include unistd.h size_t getpagesize(void); 内存拷贝 #include string.h void bcopy(const void *src, void *dest, int n); void memcpy(void *dest, const void *src, size_t n); 内存移动 #include string.h void memmove(void *dest, const void *src, size_t n); 内存拷贝并查找字符 #include string.h void *memccpy(void *dest, const void *src, int c, size_t n); 在指定内存区域内查找字符 #include string.h void *memchr(const void *s, int c, size_t n); 内存比较。按字典顺序逐个字节进行比较 #include string.h int bcmp(const void *s1, const void *s2, int n);

文档评论(0)

wxc6688 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档