时间:2014年12月13号下午7:00——9:00 地点:兰州大学飞云楼524 参加人数:33 Unix的传奇历史是整个计算机世界文化最具代表性的,今天我们邀请到兰州GDG成员杨虎斌围绕UNIX系统接口的知识讲解该系统中的关于动态内存分配及系统调用。 首先杨虎斌对union结构体的内存占用和分配和特点进行了讲解,特别是不同类型在union结构体中字节对齐。 然后对malloc库函数机制进行了细致讲解,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。原型为extern void *malloc。 接下来,在讲解系统调用的过程中进行了生动的讨论交流,陈玉聪简单的介绍了在操作系统中malloc的具体实现,先是在用户区分配虚拟空间,在对引用进行操作时抛出do_page_fault异常然后分配物理空间。 最后对sbrc系统调用进行了讲解,在<128kB的一般内存分配时,使用kmalloc 在>128kB的内存分配时,使用get_free_pages,获取成片页面,直接返回虚拟地址(<4M)(或alloc_pages + page_address) 如果要求分配高端内存:alloc_pages(_GFP_HIGHMEM)+kmap(仅能映射一个页面) 如果不要求内存连续: 则使用vmalloc进行分配逻辑连续的大块页面.(不建议)/分配速度较慢,访问速率较慢。 活动的最后,他总结了今天的报告并耐心解答了大家的疑问,最后听众和主讲人合影留念。
活动照片:
|