【深入实践ucos-ii】开篇
2016-02-09 22:36
225 查看
从开始学ucos-ii到现在已然4个年头过去,从当初对C语言指针都把握不好的大学僧到现在玩转C语言编程(你可能觉得我吹嘘,如果你非要认为能够轻松写出像linux内核那样面向对象的架构才能算是玩转,那么你的确实要求有点高了)到现在从事一些linux内核编程。几年的时光,我对ucos-ii这个嵌入式实时操作系统运用可谓游刃有余。学linux编程已经接近两个年头了,现在再回首讲解ucos-ii,可谓是站在一个全新的高度来看ucos-ii,一是以前学过的知识,再重新拿出来整理整理,这是程序员的一个习惯(渴望学习新知识,偶尔回顾旧知识)。
ucos-ii真个操作系统的代码分布在十几个c文件、一个头文件和几个汇编文件中,相对于linux的3万多个源文件(几百万行代码,还在不断增加)来说简直太小了。但是,麻雀虽小,五脏俱全!越是小,越是便于我们快速理解。有的人一上来就看像linux这样级别内核源码,往往只有一条死路。
usos-ii没有所谓的应用层和内核层,它不需要CPU支持内存保护,当然,程序是和内核在一个级别上运行,如果程序出错,很有可能意味着整个系统都将崩溃,这和linux内核模块的编程有点类似。
ucos-ii整个系统是由绝大部分C语言和少数汇编写成。这需要读者有一定的C语言功底,能看懂指针常用用法就行。
笔者认为:
1. 学好C语言在于精通指针,学好C++在于模板编程。
2. 对内存不熟悉的人,他的C语言好不到哪去!他也根本不会理解操作系统到底是怎么个回事。
一套具有上下文切换的功能(任务调度)的代码就可称之为操作系统了,其他如信号量、互斥锁、消息队列、邮箱、时间管理、内存管理或者文件系统、图形界面等等只能算是操作系统核心上的附属功能,只是因为这些功能比较实用,所以一般操作系统都会选择性的实现以上功能。比如:ucos-ii没有实现文件系统和图形界面、linux没有实现图形界面,windows即实现了文件系统又有图形界面,安卓是在linux内核的基础上包裹了一个图形界面系统。
整个实践过程着重讲解ucos-ii的任务调度,然后实践调度、通信、同步、时钟例子。例子都是在PC上进行实践的VS2010工程demo(VC6.0工程demo也有,不过VC6.0太落后了,希望刚入手的童鞋尽快淘汰掉VC6.0)。
ucos-ii真个操作系统的代码分布在十几个c文件、一个头文件和几个汇编文件中,相对于linux的3万多个源文件(几百万行代码,还在不断增加)来说简直太小了。但是,麻雀虽小,五脏俱全!越是小,越是便于我们快速理解。有的人一上来就看像linux这样级别内核源码,往往只有一条死路。
usos-ii没有所谓的应用层和内核层,它不需要CPU支持内存保护,当然,程序是和内核在一个级别上运行,如果程序出错,很有可能意味着整个系统都将崩溃,这和linux内核模块的编程有点类似。
ucos-ii整个系统是由绝大部分C语言和少数汇编写成。这需要读者有一定的C语言功底,能看懂指针常用用法就行。
笔者认为:
1. 学好C语言在于精通指针,学好C++在于模板编程。
2. 对内存不熟悉的人,他的C语言好不到哪去!他也根本不会理解操作系统到底是怎么个回事。
一套具有上下文切换的功能(任务调度)的代码就可称之为操作系统了,其他如信号量、互斥锁、消息队列、邮箱、时间管理、内存管理或者文件系统、图形界面等等只能算是操作系统核心上的附属功能,只是因为这些功能比较实用,所以一般操作系统都会选择性的实现以上功能。比如:ucos-ii没有实现文件系统和图形界面、linux没有实现图形界面,windows即实现了文件系统又有图形界面,安卓是在linux内核的基础上包裹了一个图形界面系统。
整个实践过程着重讲解ucos-ii的任务调度,然后实践调度、通信、同步、时钟例子。例子都是在PC上进行实践的VS2010工程demo(VC6.0工程demo也有,不过VC6.0太落后了,希望刚入手的童鞋尽快淘汰掉VC6.0)。
相关文章推荐
- MyEclipse通过JDBC连接MySQL数据库基本介绍
- poj2724
- LightOJ 1163 - Bank Robbery (思维方程式求解)
- 判断文件编码
- POJ 2479 (动态规划)
- docker(二):构建镜像
- 阿岳之_程序包管理yum&&编译篇
- HTML+CSS笔记 CSS进阶再续
- poj1466
- 路由器与本地回环地址的区别
- java学习--多线程
- atime ctime mtime
- java特种兵读书笔记(5-4)——并发之JDK
- [问题解决]Deepin环境变量设置无效解决
- HDOJ 1027Ignatius and the Princess II(全排列)
- ZOJ3791 An Easy Game(DP)
- PHP常用的文件操作(二)详细版
- PHP 文件读写操作(一)简易版
- JSP的指令元素:page; include; taglib
- 第十八天