随想录(rtos和一般os的区别)
来源:互联网 发布:it招聘信息网 编辑:程序博客网 时间:2024/06/02 22:17
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
现在在网上可以看到代码的os很多,既有rtos类型的微内核代码,也有大型的linux kernel代码。大型的os代码包括的内容很多,就拿linux来说,它就包括了调度、文件、网络、驱动等完整的代码内容。而一般的rtos呢,就拿大家熟悉的ucos2来说,只是包含了调度、同步、互斥、时钟等代码。如果系统工程师需要拿ucos2来做一个项目,那么他还需要bsp、lwip、ucGUI、fatfs、driver、framework等很多代码才能组成一个完成的系统。但是,在我看来,rtos和一般os就是两个主要的区别,
a)rtos中调度的任务永远是优先级最高的
void raw_sched(void){RAW_SR_ALLOC();/*if it is in interrupt or system is locked, just return*/ if (raw_int_nesting || raw_sched_lock) { return; }USER_CPU_INT_DISABLE(); get_ready_task(&raw_ready_queue);/*if highest task is currently task, then no need to do switch and just return*/if (high_ready_obj == raw_task_active) { USER_CPU_INT_ENABLE(); return;}TRACE_TASK_SWITCH(raw_task_active, high_ready_obj);CONTEXT_SWITCH(); USER_CPU_INT_ENABLE(); }这是rawos中调度的一段代码。事实上,任务调度的时机是比较固定的。一方面,任务可能会在资源阻塞的时候主动调度,另一方面就是任务在中断返回的时候发现了优先级更高的任务,这也可能发生调度。当然,不管什么时候发生调度,系统都会挑选优先级最高的任务。而在linux或者windows上面,系统会对任务的优先级进行灵活设置,每个任务都有一个固定优先级和浮动优先级,这是一个显著的特点。
b)互斥量
/*Must release the mutex by self*/ if (raw_task_active != mutex_ptr->mtxtsk) { RAW_CRITICAL_EXIT(); return RAW_MUTEX_NOT_RELEASE_BY_OCCYPY; }这是互斥量显著的特点。一般来说,互斥量释放必须由占有mutex的任务自己完成。另外一方面就是,mutex可以避免优先级翻转的问题。换句话说,如果低优先级的任务率先抢占了mutex,那么后面申请mutex的高优先级任务会强迫低优先级任务抬高自己的优先级,这样可以尽快地把mutex让出来。仅此而已。
1 0
- 随想录(rtos和一般os的区别)
- 随想录(无均衡负载的smp os设计)
- 学习 RTOS -- 认识 RTOS 和最简单的 OS(一)
- 随想录(png的读取和显示)
- 随想录(锁的来由和使用)
- 《软件随想录》的随想
- 随想录(读书和选书)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- GST随想录(程序员和收入)
- 随想录(程序员和收入) .
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- 随想录(程序员和收入)
- The Decoder - UVa458
- Postgresql手册事务隔离级别笔记
- javascript学习笔记
- 单例程序的实现
- 为何会出现 label 不能解决的问题,求帮助
- 随想录(rtos和一般os的区别)
- 妈妈培养天才的13绝招
- 自定义控件之触摸事件的传递
- 用UIScrollView实现相册,并设置滚动条消失,改变UIPageControl的颜色,实现循环滚动相册
- SQL经典面试题目总结
- 自定义cmd颜色
- 关于java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close() 异常
- 高效操作bash(转)
- 发的萨芬