鸿蒙OS为什么流畅?看完动态空间管理就懂了

作者: 芯片那些事儿分类: 软件应用 发布时间: 2021-06-21 14:32:38 浏览:297643 次

鸿蒙OS为什么流畅?看完动态空间管理就懂了

呢油波衣:
这应该说的是内存分配机制,操作系统是动态给程序分配内存的,由于程序会时常申请以及释放内存,造成内存空间不连续,间隔的小内存空间又不能被一些程序使用(需要连续的大块内存),因此造成内存浪费,鸿蒙按照视频应该是把申请的内存做了拆分,填补了那些碎片空间

【回复】但是这个 其他操作系统 就很迷,我知道的大部分系统都是动态管理内存
【回复】回复 @呢油波衣 :嘴上说说罢了,实际看看杀后台,鸿蒙吊打安卓
【回复】但是数组读取是比这样碎片化读取快很多的,所以我对鸿蒙这个演示方式存疑,我比较倾向于自动内存整理的解释
Kirin-Liz:
我宣布,鸿蒙抄袭安卓,纯纯的安卓套壳[doge][doge]

【回复】一个娘胎(AOSP)生出来的,长得像很正常,但不是长一样[脱单doge]
【回复】回复 @Taiyo灯里 :我宣布你的宣布有效
【回复】22年回来了,没有抄袭。半套壳,一半对一半。过几年就是真正的国产手机系统了
轶澪阖羽:
稍微看点操作系统的书都不至于做出这么离谱的东西…

【回复】也许广告有简化、夸张的部分,但华为研发人员也不至于做出完全离谱的视频,发布会全国直播,不要面子的吗。
【回复】说得好,我就等你做的系统了,啥时候上线?[藏狐][藏狐][藏狐]
【回复】回复 @芯片那些事儿 :建议作者把这层置顶,大家讨论讨论
打牙专家:
我就很好奇这种视频是什么人幻想出来的,内存管理的东西稍微看过点也不会做出这种东西出来

【回复】回复 @啦啦啦了他TV雨 :破案了 鸿蒙的研发人员都是幻想怪[doge]
【回复】这是发布会上的动画。懂了,华为研发人员集体做梦。
【回复】我记得这是发布会上的视频
极速大奔走:
[思考] 这演示的是硬盘文件碎片化管理吧,闪存并不需要寻轨道呀。 这跟卡不卡也沾不上边吧。

【回复】这是操作系统底层的逻辑。 首先你要知道内存分配的数据结构是什么。空闲内存在操作系统中表现为一个个内存块,通过单项链表管理,每个内存块内都有下一个空闲内存块的地址的指针。 比如你在C中用“malloc()”申请一块内存,操作系统首先要遍历空闲内存链表,当找到符合大小的连续内存块后,则执行删除链表元素操作,并将内存块地址返回给程序。 使用“free()”函数释放内存,执行的是插入链表元素操作,但不是一般情况下直接将地址插入链表尾,而是先遍历链表,找到地址增长方向的上一块空闲内存块,并将地址写入上一块内存块,将上一块链表保存的地址写入要释放的内存块。(链表插入操作) 好处是检测内存是否为连续,则只需要检测链表地址是否连续,当检测到地址发生跳变,则为不连续地址。 在这种模式下,如果先申请一个uint8_t(CMSIS命名规范,无符号8位,旧版是u8)的数据,再申请一个uint16_t,这时候释放先前的uint8_t,再申请uint32_t,则最新的uint32_t的地址在uint16_t的后面,原本uint8_t的位置就形成一个空缺。 这些空缺就是内存碎片,而且随着内存碎片的增加内存分配难度也会上升,然后也会影响性能。
【回复】回复 @白色的獅子 :不是吧 页表最小单位一般也是4kbyte了……
【回复】回复 @白色的獅子 :[热词系列_好家伙]
老Zen:
就这?发布会的一个片段剪下来就变你原创了?要脸吗[辣眼睛]

去餐厅自己带饭:
我真没感觉流畅,就是其他手机没区别,流畅还是苹果

【回复】回复 @Pasewalker :SE的销量到底有多惨你也不是不清楚
【回复】苹果确实相对流畅,不过没关系,价格换得,而且之后华为突破制裁,就可以又流畅又便宜,而且还有完整生态
貳拾玖只啊瑤跌落水:
评论里的让人看操作系统书的 是大学生刚上完了门操作系统课、觉得自己对中外新旧所有关于操作系统技术都一清二楚研究透彻了吗[藏狐]

【回复】很多人以为很懂,一部分人以为自己学了点比一般人懂,专业的根本不觉得学了点皮毛的人很懂。但其实华为的那些人拿着高薪干的也不是普通的敲代码的工作。
墨晓竹:
这连基本逻辑都没有啊。内存怎么分开存放?不可能的啊。任何一个变量的内存都是独立连续的,多层引用其地址也和其他变量挨着放。应该是硬盘存储格式吧?其次鸿蒙放第七个的时候是怎么找到前面俩空隙的?而且这个第七块最后的读取方式和其他操作系统有啥区别?么看出来。臆想

【回复】回复 @枫叶98 :虚拟内存地址也不是这样的,再说了,openharmony用的musl libc跟glibc本身大同小异,都是把从内核申请的内存池化,再用边界标记法和链表组织,如果小内存随意使用malloc_trim还给系统,反倒会在内核层面的内存管理器上产生内存碎片
【回复】回复 @Pasewalker :理论上读取的平均速度是一样的。但是碎片过多确实会影响速度,这是事实。因为读取的次数会增加。所以大家都是大块内容优先存放。这里鸿蒙应该会有一个平均机制,比如一个文件最多被拆成3份或者几份的。拆分也会有阀值。按照视频示意鸿蒙这样会提高内存使用率,这样大型程序会卡的概率就很低了。
【回复】回复 @什么时候吃饭呢 :问题就是x86,arm本身都有MMU啊。内存的管理本身的读写寻址都没有变化。如果说鸿蒙通过闲时CPU去做了个内存整理,那么我觉得是OK 的。就是我举例的第七块,这块落下来也要寻址到前面俩碎片,这个时间是始终存在的。只不MMU提前标记的情况下是有提升的。如果MMU能提前标记,那还不如提前挪动呢。不是更好?我是这么认为的。
八沐刀:
鸿蒙这个存储算法,到底是不是产品经理想出来还是开发人员实际做的还得两说。优先填补前面的碎片空间,看起来可以留出比较多的空间可做连续写入,但是前面的存储单元那是会出现因为多次频繁的写入导致存储单元损坏,要知道TLC的标称写入寿命可是只有1000次。

【回复】理论上,动态管理比固定模式更加长寿,动态管理你前面的内存用完1000次,后面的内存用次数是比较少的可以接着用。但是如果是固定模式,完全不知道哪个点会先用完1000次导致内存单元失效,放帧的时候可能前面空隙太小,只能放在失效单元的后面,结果就导致内存中的失效单元越来越多,且分散不规律
童时的我:
动态分布的话内存寿命会降低。[吃瓜]如果能解决寿命问题的话,肯定是优先动态分布。

【回复】内存啊,用个十年八年没什么问题,甚至你用完了还能给你孩子用,还考虑个什么寿命。。。。
菇力怕吖:
挠摊是吧,到时候读个文件全看随机读取,难怪拿上别人都用的ufs3.1速度也没别人快

bili_44006132652:
MIUI也有这种功能,但是肯定不是图里这样实现的,这种方式对闪存有害

华为 手机 鸿蒙 Mate40

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!