
数据结构与算法
风筝丶
随便看人家资料是不好的......
展开
-
Linux下链表的使用及探究
你好!这里是风筝的博客,欢迎和我一起多多交流。看了下Linux链表的实现,发现真的是把“驱动和设备分离”的思想发挥的淋漓尽致啊! 之前我写链表是这么写的: Linux下链表是这样: 这两者有什么不同呢? 当然,我不是想说双向链表的事,而是指针域与数据域分离的事情。 把链表的底层实现封装起来进行屏蔽,只留出数据域。这样,当链表有改动时,只需修改数据域即可,底层链表实现不需要改动。Linux中原创 2017-09-03 18:27:10 · 1013 阅读 · 0 评论 -
多线程互斥锁访问算法(上)------Peterson算法
你好!这里是风筝的博客,欢迎和我一起交流。 在多线程存在的环境中,除了堆栈中的临时数据之外,所有的数据都是共享的。如果我们需要线程之间正确地运行,那么务必需要保证公共数据的执行和计算是正确的。简单一点说,就是保证数据在执行的时候必须是互斥的。否则,如果两个或者多个线程在同一时刻对数据进行了操作,那么后果是不可想象的。那么,该怎么去实现一个资源(数据)的互斥访问呢? 那就是这章所讲的Peter原创 2017-11-08 13:08:32 · 3420 阅读 · 0 评论 -
多线程互斥锁访问算法(下)------Lamport算法(面包店算法)
你好!这里是风筝的博客,欢迎和我一起交流。Lamport面包店算法是解决多个线程并发访问一个共享的单用户资源的互斥问题的算法。 由Leslie Lamport发明。Lamport把这个并发控制算法可以非常直观地类比为顾客去面包店采购: 已知有n位顾客要进入面包店采购,安排他们按照次序在前台登记一个签到号码。该签到号码逐次加1。 根据签到号码的由小到大的顺序依次入店购货。 完成购买的顾客在前台把原创 2017-11-08 14:16:46 · 4505 阅读 · 1 评论 -
嵌入式Linux驱动笔记(二十九)------内存管理之伙伴算法(Buddy)分析
你好!这里是风筝的博客,欢迎和我一起交流。我们知道,在一个通用操作系统里,频繁申请内存释放内存都会出现一个非常著名的内存管理问题:内存碎片。学过操作系统的都知道,有很多行之有效的方法(比如:记录现存的空闲连续页框块的情况,以尽量避免为满足小块的请求而分割大的空闲块;小内存单独分配,大内存系统自动分配)可以很大程度上避免出现内存碎片,其中伙伴算法被证明是非常行之有效的一套内存管理方法,因此也...原创 2019-09-26 10:24:15 · 1444 阅读 · 0 评论