本帖最后由 tao560532 于 2011-10-7 22:41 编辑
2011年10月7日星期五
John Lee操作系统讲课
John Lee<j.y.lee@yeah.net> 21:25:10
按设想是还有一个getting started或者users guide的。
John Lee<j.y.lee@yeah.net> 21:26:18
其实rtos都是大同小异的。
John Lee<j.y.lee@yeah.net> 21:26:49
look只是使用的oo的设计手法。
nixianmin(366177832) 21:26:56
再说每个RTOS使用方式还不一样吧
John Lee<j.y.lee@yeah.net> 21:28:16
差不多的。
gdmgb520(479231201) 21:28:43
我觉得要是我已经有了RTOS的基础,学习LOOK应该会容易很多。
John Lee<j.y.lee@yeah.net> 21:28:59
是的,这个肯定的。
gdmgb520(479231201) 21:29:27
而现在的情况相当于是我拿LOOK作为RTOS的入门学习,那这就需要有详细丰富的资料
John Lee<j.y.lee@yeah.net> 21:30:03
倒不一定。
贞明电子(1459557489) 21:30:14
look是什么?
nixianmin(366177832) 21:30:16
我觉得初学者可能不太容易入门
gdmgb520(479231201) 21:30:20
继续听老师讲
John Lee<j.y.lee@yeah.net> 21:30:23
RTOS要学原理。
gdmgb520(479231201) 21:30:43
先吃透《实时概念》?
gdmgb520(479231201) 21:30:48
一个RTOS
John Lee<j.y.lee@yeah.net> 21:30:54
《实时概念》这本书就非常不错。
贞明电子(1459557489) 21:31:14
谁出的这个RTOS?
贞明电子(1459557489) 21:31:25
国产的吗?有介绍不?
gdmgb520(479231201) 21:31:48
就是翻译得有那么一点生硬
John Lee<j.y.lee@yeah.net> 21:31:50
贞明电子(1459557489) 21:31:25
国产的吗?有介绍不?
--------------
https://bbs.21ic.com/icview-231501-1-1.html
贞明电子(1459557489) 21:32:08
学校
贞明电子(1459557489) 21:32:10
谢谢
gdmgb520(479231201) 21:32:21
老师继续
John Lee<j.y.lee@yeah.net> 21:33:07
看书遇到的问题,就拿到这里来讨论。
nixianmin(366177832) 21:33:28
老师,有没RTOS具体编码的书
gdmgb520(479231201) 21:33:33
我看《实时概念》,但是觉得还是无法直接和实际联系起来,可能一方面我的理解还不够,另一方面对LOOK的实践还不够
nixianmin(366177832) 21:33:53
实时概念我看都是理论的一些知识
gdmgb520(479231201) 21:34:03
恩,今天又做笔记
John Lee<j.y.lee@yeah.net> 21:34:10
都是理论
nixianmin(366177832) 21:35:14
感觉理论和具体实现还是有差距的
John Lee<j.y.lee@yeah.net> 21:35:22
gdmgb520(479231201) 21:33:33
我看《实时概念》,但是觉得还是无法直接和实际联系起来,可能一方面我的理解还不够,另一方面对LOOK的实践还不够
gdmgb520(479231201) 21:37:51
1.下划线部分,是以下意思吗?
gdmgb520(479231201) 21:38:39
在RTOS执行时,CPU一定处于一个应用或ISR中断或者内核三者中之一。
贞明电子(1459557489) 21:39:56
能把书发我一下吗?
贞明电子(1459557489) 21:40:07
还有这个RTOS具体有什么优势呢?
51小刚(734545786) 21:40:19
共享里有,自己下
gdmgb520(479231201) 21:40:22
PDF P70 4.4.4 分发器
gdmgb520(479231201) 21:40:51
书 P52
贞明电子(1459557489) 21:41:20
?
John Lee<j.y.lee@yeah.net> 21:41:58
一般简单的RTOS,只有任务状态或中断状态这两个。
51小刚(734545786) 21:42:13
不是
贞明电子(1459557489) 21:42:31
那你说的哪个?
51小刚(734545786) 21:43:20
==
贞明电子(1459557489) 21:43:39
好的
John Lee<j.y.lee@yeah.net> 21:43:52
内核状态,我觉得应该是一些系统线程或者特权线程。
51小刚(734545786) 21:45:49
老师,是这本吧?
涛行**(578645627) 21:46:04
哪本呀?
51小刚(734545786) 21:45:38
gdmgb520(479231201) 21:46:18
不是很懂。这里后面还说到“系统调用”,“一个任务做系统调用、一个ISR做系统调用”,系统调用时什么意思呢
gdmgb520(479231201) 21:46:21
是的
gdmgb520(479231201) 21:46:46
就是这个
51小刚(734545786) 21:47:03
就是大叔团购的书
gdmgb520(479231201) 21:47:52
就是调用一些系统函数?CPU进入内核的代码部分执行?
贞明电子(1459557489) 21:48:13
发我一下好吗?我这看不到
51小刚(734545786) 21:48:28
群共享有
贞明电子(1459557489) 21:48:31
LEE很厉害。
51小刚(734545786) 21:48:34
你搜
贞明电子(1459557489) 21:48:35
我这木有
51小刚(734545786) 21:48:47
就咱这个群
贞明电子(1459557489) 21:48:55
没有看到
John Lee<j.y.lee@yeah.net> 21:49:03
“系统调用”的说法有些笼统,这个说法是从通用OS而来的。
51小刚(734545786) 21:49:10
你在上面输入名字就有了
gdmgb520(479231201) 21:49:58
先不追究
gdmgb520(479231201) 21:50:02
可否?
gdmgb520(479231201) 21:49:51
可否先这样理解?
John Lee<j.y.lee@yeah.net> 21:50:30
在RTOS中,所谓的系统调用,应该是调用一些RTOS提供的同步原语函数。
John Lee<j.y.lee@yeah.net> 21:51:24
这些原语可能导致任务切换。
gdmgb520(479231201) 21:51:35
原语函数——与任务间原语相关的系统函数?
gdmgb520(479231201) 21:52:13
任务切换
等价于
上下文切换?
John Lee<j.y.lee@yeah.net> 21:52:35
可以这么理解。
上官金虹uc_cm0(316767091) 21:52:59
任务切换包含上下文切换
上官金虹uc_cm0(316767091) 21:53:22
任务切换可能还要做其他事
gdmgb520(479231201) 21:54:10
而上下文切换只是装载TCB对吧?
John Lee<j.y.lee@yeah.net> 21:54:30
“一个任务做系统调用、一个ISR做系统调用”,这句话的意思是,由任务,或者ISR调用了可能导致任务切换的原语,
上官金虹uc_cm0(316767091) 21:56:12
状态机怎么写例子?
John Lee<j.y.lee@yeah.net> 21:57:45
“上下文切换”,最小的范畴是,保存当前任务的所有CPU寄存器,然后装载将要换入任务的寄存器到CPU。
gdmgb520(479231201) 21:57:54
gdmgb520(479231201) 21:58:45
上官金虹uc_cm0(316767091) 21:59:03
一般我把上下文切换与任务切换概念分开
John Lee<j.y.lee@yeah.net> 22:00:16
可以参考一下C标准库函数setjmp(), longjmp()。这两个函数也有上下文切换的概念。
gdmgb520(479231201) 22:00:57
此时每个任务有一个运行计数器,为什么是将时钟滴答数增值?不是将运行计数器加一吗?
上官金虹uc_cm0(316767091) 22:01:31
状态机怎么写例子?
gdmgb520(479231201) 22:02:33
这个运行计数器是在任务代码中增值还是在内核代码中增值?
上官金虹uc_cm0(316767091) 22:03:42
时钟节拍吗?
John Lee<j.y.lee@yeah.net> 22:04:27
应该是调度器有一个运行计数器。
gdmgb520(479231201) 22:04:33
这个运行计数器是用来记录某个任务已经获得多长时间运行的吧?
John Lee<j.y.lee@yeah.net> 22:05:15
记录“当前”任务的运行时间。
gdmgb520(479231201) 22:05:20
哦,也就是调度器为每一个使用时间片轮转调度的任务分配一个运行计数器,并且由调度器来维护。
gdmgb520(479231201) 22:05:47
不是每个任务都对应一个运行计数器?
John Lee<j.y.lee@yeah.net> 22:06:42
其实,每个任务并没有一个运行计数器,而只是运行计数器的backup而已。
gdmgb520(479231201) 22:06:47
John Lee<j.y.lee@yeah.net> 22:07:54
呵呵,书上的说法是很“通俗”,但不准确。
上官金虹uc_cm0(316767091) 22:08:41
每种RTOS实现都不一样
上官金虹uc_cm0(316767091) 22:09:12
看书这么多概念,不如实际去分析一个RTOS代码
上官金虹uc_cm0(316767091) 22:09:44
多看几种RTOS内核代码,基本就明白RTOS是怎么回事了
上官金虹uc_cm0(316767091) 22:11:26
休息了
John Lee<j.y.lee@yeah.net> 22:11:48
实际应该是这样的:调度器中有一个计数器,用来记录当前任务的运行时间,而每个任务的TCB中,有一个计数器的backup空间,当任务被ISR 抢占换出时,调度器会把运行计数器的值保存到当前任务的TCB中,然后调入新任务的计数器保存值。
John Lee<j.y.lee@yeah.net> 22:13:43
应该这样理解:运行计数器是CPU一个寄存器,在任务切换时,作为上下文的一部分,一起切换。
gdmgb520(479231201) 22:15:03
哦,
明白些了
John Lee<j.y.lee@yeah.net> 22:16:34
只不过,这个“运行计数器”寄存器,并不是一个CPU物理的寄存器,而是一个由调度器(软件)维护的一个“软”寄存器。
风风(32437089) 22:17:23
宁波有嘛好玩的
影绝(978505262) 22:19:39
凤凰山
gdmgb520(479231201) 22:19:55
笔记ing
风风(32437089) 22:19:55
我在象山
John Lee<j.y.lee@yeah.net> 22:20:34
当systick中断时,调度器将这个运行计数器-1,如果为0,则切换任务,切换时,把计数器的重装值保存到TCB中,那么当下次这个任务重新运行时,重装值就会作为运行计数器的初值被加载。
gdmgb520(479231201) 22:22:28
哦,明白了。
还有一个。
任务创建
John Lee<j.y.lee@yeah.net> 22:24:17
当其它中断发生导致当前任务被抢占,切换时,调度器把运行计数器值(大于0,小于重装值)保存到TCB中,当任务被重新运行时,这个值被加载到运行计数器,效果上就相当于继续“剩下”的时间片。
gdmgb520(479231201) 22:24:09
gdmgb520(479231201) 22:27:23
难道还有用两个内核来创建启动任务的情况?
这里的内核是指什么?系统内核??
John Lee<j.y.lee@yeah.net> 22:30:02
用“一个内核调用”....
不是“一个内核”。
using one kernel call
gdmgb520(479231201) 22:31:29
哦,一个 “内核调用”
John Lee<j.y.lee@yeah.net> 22:32:02
对
gdmgb520(479231201) 22:32:22
意思是在一个
内核调用中就可以搞定创立和启动任务的工作
约等于
一次内核调用
John Lee<j.y.lee@yeah.net> 22:34:17
大部分是一个调用就搞定“创建任务”和“ready任务”。
但有些RTOS是把这两步分开的。
gdmgb520(479231201) 22:35:04
恩,这点我在书上看到了。
暂时就这几个问题,谢谢老师
John Lee<j.y.lee@yeah.net> 22:36:10
任务创建后,并不是ready的,而是suspended的,要用户resume才能运行新任务。
gdmgb520(479231201) 22:36:46
哦
John Lee<j.y.lee@yeah.net> 22:37:40
这种方式很少用,而且实现要比一步完成的方式麻烦些,所以look没有用这种方式。
gdmgb520(479231201) 22:37:43
gdmgb520(479231201) 22:39:52
谢谢老师。
我还是打算先看完这4567章吧
John Lee<j.y.lee@yeah.net> 22:40:50
最好有一个实际的项目
gdmgb520(479231201) 22:42:23
项目暂时是没有,倒是有点打算
John Lee<j.y.lee@yeah.net> 22:42:29
以前是裸奔的,然后改为基于RTOS的,这样在实践中、有针对性的学习,就很快。
|