木子剑
生命不熄,学习不止!

以宏内核为代表的有linux,unix,我们手机android系统都是宏内核的,谷歌公司研发的;

 

以微内核为代表有 window 7;  window 10;等等, 微软公司的产品都是微内核;

 

华为发布鸿蒙操作系统,也是微内核,主力方向是物联网操作系统“万物互联”响起了;

 

哪么【宏内核】和【微内核】有什么区别呢?下面仅代表个人理解:

微内核是性能普通级的,但容易开发,适合商用,免去重复造轮子成本;

宏内核是性能良好的,开发难,不友好,安全性差一点;

 

我们学习的CONTIKI NG就是宏内核,在linux下开发的;

想到这里,就写了一个测试代码,加以说明宏内核应用方法。

 1 #include <stdio.h>  //C标准的头文件
 2 #include <stdlib.h>
 3 #include <stdint.h>
 4 
 5 typedef uint16_t rtimer_clock_t;
 6 #define TIMER_CLOCK_DIFF(a, b)    ((int16_t)((a)-(b)))  //相当功能子函数
 7 #define TIMER_CLOCK_LT(a, b)      (TIMER_CLOCK_DIFF((a),(b)) < 0)  //这个函数调用功能子函数
 8 
 9 //在下面的{}中间,做任何想要的功能
10 #define STABLE() do {                                   \
11                         printf("STABLE()  RUNing... \n"); \
12                     } while(0)
13 
14 int main()  //测试linux的宏功能
15 {
16    printf("Hello, World!! \n");
17    STABLE();  //测试
18     
19    if(TIMER_CLOCK_LT(1, 4))  //真假判断,如果值等于0呢?
20    {
21        printf("值小于0");
22    }
23     else
24     {
25         printf("值大于0");
26     }
27    return 0;
28 }

 

从执行来看,好像很正常!!那么这种宏功能的写法,与我们普通C函数的写法有什么区别呢?

首先宏功能写法,不用调用,不用返回,不用申请内存,不用堆栈等等,呀呀,哪不是很牛X吗?所以说它高效嘛。。。。

但它也是有缺点的 ,同一时间只能被使用一次,并且在执行时编译器不会做任何检查,只是简单的替换而已,安全性差一点。

所以android手机有ROOT权限做法, 这样理解应该不会错了。

 

宏内核有个特点,都是以()或do{}while(0)进行封装的,所以我们一看源码就知道了。。。。

posted on 2021-02-03 17:17  木子剑  阅读(195)  评论(0编辑  收藏  举报