以宏内核为代表的有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)进行封装的,所以我们一看源码就知道了。。。。