目的:
2016年猴年来临,经过过去两年的积累,有了进一步的方向和定位:
依赖大数据(云计算)的云端GOS和分散在各种可移动、可编程、智能终端的ROS两个OS的互联互通。
针对GOS,经过过去几年在Hadoop平台领域的积累,基本能够触类旁通,MR/RDD/Graph/PS/Streaming、实时内存计算都不断的汇集到GOS的计算能力中。
而ROS则更加轻盈,同时又承载着GOS的触角和末端神经,两者相辅相承,共同打造商业的智能OS时代。
Linux作为最适合的OS的原形,从此开始入手最合适不过,也弥补一下这方法的不足。
Linux的基础设施
内存管理
Linux操作系统的内核提供两种内存分配的接口
1.从最底层的内存管理机制入手,提供页式的内存管理
依赖alloc_pages,调用获取的是页面地址,通过page_address来获取内存地址
使用__get_free_pages来直接获取内存地址,该函数封装了上述的alloc_pages和page_address
注意:alloc_pages的分配单元以页为单位,至少为一个页
2.从slab系统分配内存,提供基于对象的内存管理
如果使用slab申请内存,需要创建slab对象
可以使用kmem_cache_create创建slab对象,提供对象的名称、大小、构造函数、析构函数,然后通过kmem_cache_alloc和kmem_cache_free来申请和释放内存
Linux内核中的kmalloc就是使用slab提供的对象管理,
另外关注vmalloc的使用,把物理地址不连续的内存页,映射为连续的内存区间。
进程的任务调度
软中断