摘要:
轻量化网络已经是一个热点,主要的技术路线如下: 1、压缩已经训练好的大模型:知识蒸馏、剪枝(权重剪枝、通道剪枝)、权值量化、注意力迁移 2、重新设计轻量化模型:SqueezeNet、MobileNet系列、ShuffleNet系列、EfficientNet、EfficientDet等 3、加速卷积运 阅读全文
摘要:
在Linux系统中比页更小的内存对象要怎么分配呢? -- SLAB,学习下SLAB分配器的原理和实现 SLAB 与Cosmos物理页面管理器一样,Linux中的伙伴系统是以页面为最小单位分配到,现实更多要以内核对象为单位分配内存,其实更具体一点说,就是根据内核对象的实例变量大小来申请和释放内存空间, 阅读全文
摘要:
在Linux系统中,用来管理物理内存页面的伙伴系统,以及负责分配比页更小的内存对象的SLAB分配器 本节先讲解Linux是如何管理内存页面的,何为伙伴系统 ###伙伴系统 伙伴系统源于 Sun 公司的 Solaris 操作系统,是 Solaris 操作系统上极为优秀的物理内存页面管理算法。 那 Li 阅读全文
摘要:
上节课,已经建立了虚拟内存的开始流程,本节将来实现虚拟内存的核心功能:写出分配、释放虚拟地址空间的代码,最后实现虚拟地址空间到物理地址空间的映射。 ###虚拟地址的空间的分配与释放 整个虚拟地址空间是由一个个虚拟地址区间组成,那分配一个虚拟地址空间就是在整个虚拟地址空间分割出一个区域,而释放一块虚拟 阅读全文
摘要:
一个应用往往拥有很大的连续地址空间,并且每个应用都是一样的,只有在运行时才能分配到真正的物理内存,在操作系统中这称为虚拟内存。 那操作系统要怎样实现虚拟内存呢?这节课,我们先进行虚拟地址空间的划分,搞定虚拟内存数据结构的设计,下节来实现虚拟内存的核心功能。 ###虚拟地址空间的划分 虚拟地址就是逻辑 阅读全文
摘要:
我们建立了物理内存页面管理器,它既可以分配单个页面,也可以分配多个连续的页面,还能指定在特殊内存地址区域中分配页面。 但物理内存页面管理器一次分配至少一个页面,而对内存分页也是一个页面4K,即4096字节,对于小于一个页面的内存分配请求,它无能为力,那如果要实现小于一个页面的内存分配请求,要怎么办呢 阅读全文
摘要:
本节将依赖前面建好的数据结构,实现内存页面管理算法 ###内存页的分配 如果让实现一次只分配一个页面,那只需要写一个循环代码,在其中遍历出一个空闲的msadsc_t结果,就可以返回了,这个算法就结束了, 但内存管理器要为内核、驱动,还有应用提供服务,它们对请求内存页面的多少、内存页面是不是连续,内存 阅读全文
摘要:
上节确定了使用分页方式管理内存,并且设计了表示内存页、内存区相关的内存管理数据结构,但还没有在内存中建立相应的实体变量 本节将讲解在内存中建立数据结构对应的实例变量,搞定内存页的初始化问题。 ###初始化 在前面的课程中,在hal层初始化中,初始化了从二级引导器中获取的内存布局信息,即e820map 阅读全文
摘要:
本节先解决内存的划分方式和内存页的表示、组织问题,设计好数据结构 ###分段还是分页 从内存管理角度,分析分段和分页的优缺点: 第一点 从表示方式和状态确定角度考虑。 段的长度大小不一,用什么数据结构表示一个段,如何确定一个段已经分配还是空闲呢?而页的大小固定,我们只需用位图就能表示页的分配与释放。 阅读全文
摘要:
本节树立启动的整体流程,重点解读Linux上GRUB是怎样启动,以及内核里的“实权人物”-- vmlinuz内核文件是如何产生和运转的。 ###全局流程 在机器加电后,BIOS会进行自检,然后由BIOS加载引导设备中引导扇区。在安装有Linux操作系统的情况下,在引导扇区里,通常是安装的GRUB的一 阅读全文