Raw OS

嵌入式操作系统内核原理和开发(等值block内存池设计)

梦想的初衷 提交于 2020-08-13 17:09:21
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 内存池设计是嵌入式系统的一个重要环节,之前我们也讨论过相关的内容。但是,看了rawos的代码之后,我觉得rawos的内存池设计更有特点。整个内存池的设计非常健壮,不但考虑了字节对齐的问题,而且还引入了等待调度机制,这是我所没有想到的。所以,在此我很愿意和大家分享这份优秀的代码。闲话不多说,我们看看rawos的mempool数据结构是什么样的, typedef struct MEM_POOL { RAW_COMMON_BLOCK_OBJECT common_block_obj; /* Define the number of available memory blocks in the pool. */ RAW_U32 raw_block_pool_available; /* Define the head pointer of the available block pool. */ RAW_U8 *raw_block_pool_available_list; } MEM_POOL; 内存池的结构非常简单,主要包括了通用阻塞结构、block数值,block起始指针。内存池下面可以包括若干个block,每个block的大小都是相等的,同时block之间是通过链表串联在一起的

我的编程之旅

对着背影说爱祢 提交于 2020-03-09 11:27:35
新冠疫情让笔者不禁回忆起10多年前甲流流行的那段过往。也就是那时,在封闭的大学宿舍里,笔者开启了自己的编程之旅。 初学汇编 初涉编程时那个C语言展示hello world的黑框并没有激起笔者的任何兴趣。为什么寥寥几句就可在屏幕上展示输出成为萦绕笔者心头的一个疑问。在全校封闭、无法组团dota、百无聊赖的境遇下,笔者开始着手去探索这一谜题。在学校书店入手了王爽编写的<<汇编语言>> 读完并实践之后,揭开了计算机原理的冰山一角,从此一发不可收拾的爱上编程,尤其享受那种努力探索后恍然大悟的快感! 紧接着,开始汇编的第二本书: 使笔者学到了win32汇编的各种知识,意识到汇编的强大和其直接操纵底层的犀利。 再学C语言 在实际编写汇编时,深感其表现力方面的不便,例如一个浮点操作就需要专门的指令。于是又老老实实滚回去修炼C语言,入手了基本经典的书籍进行学习: 这次修炼毫无障碍,对于汇编的学习让笔者不知不觉突破了指针这个大关。当然与C语言配套的必须还有数据结构和算法: 操作系统入门 学完C语言后,也到了大学里教授操作系统课的时候,课上用的教材是<<操作系统-
精髓与设计原理>>,同时笔者自己也搞了本<<现代操作系统>>研读。 学完上述两本后,心中涌起了造轮子的欲望,于是入手了下面这本: 书中事无巨细的讲解让笔者一步一步从保护模式到进程实现再到键盘输入等完成了一个简单的toyos