当前位置: 首页 > news >正文

哪些平台可以建立网站吗营销网络是啥意思

哪些平台可以建立网站吗,营销网络是啥意思,彩票网站建设维护,仿网站前言 Sparrow RTOS是笔者之前写的一个极简性RTOS,初代版本只有400行,后面笔者又添加了消息队列、信号量、互斥锁三种IPC机制,使之成为一个较完整、堪用的内核,初代版本以简洁为主,使用数组和表作为任务挂载的抽象数据…

前言

Sparrow RTOS是笔者之前写的一个极简性RTOS,初代版本只有400行,后面笔者又添加了消息队列、信号量、互斥锁三种IPC机制,使之成为一个较完整、堪用的内核,初代版本以简洁为主,使用数组和表作为任务挂载的抽象数据结构,对数表版本的Sparrow RTOS总结如下:

缺陷

由于数组和表的限制,该版本并不支持同优先级和时间片功能,设计互斥锁时也受到一定影响,而且最大只支持32个任务,有许多不便之处。

优点

使用数表存储任务,对任务的挂载以位操作和下标操作为主,内核简洁小巧,执行效率高,适用于任务较少、硬件资源少的情况。

链表版本内核的设计

使用链表作为任务挂载的数据结构,能够实现同优先级、时间片等功能,对任务对象的操作也更加灵活。

链表设计

双向链表
双向链表
双向链表
双向链表
链表头部
链表头节点
链表节点
链表尾节点

任务链表由头部节点和任务节点两部分组成,头部会指向头节点和尾节点,头节点到尾节点之间会形成一个环路。

就绪列表设计

链表简化设计如下:

链表数组Index
链表头部Index1
任务节点
链表头部Index2
任务节点
链表头部Index3
任务节点

实际设计:

双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
双向链表
链表头部Index1
任务头节点
任务节点
任务尾节点
链表头部Index2
任务头节点
任务节点
任务尾节点
链表头部Index3
任务头节点
任务节点
任务尾节点

任务节点通过链表进行挂载,那么怎么找到任务对象的起始地址呢?

请读者想一想,任务对象的成员都是已知的,所以我们完全可以用链表节点的地址减去前面的成员的地址,就能得到任务对象的起始地址,然后再把起始地址类型转换为任务对象指针。

基于这个思想,其实我们是可以在面向对象的语言中修改私有属性的(如果这门语言支持指针这种直接操作内存的语法的话)。

不过一个个算还是太麻烦了,我们可以直接使用宏:

//get father struct address
//how to use it:struct parent *parent_ptr = container_of(child_ptr, struct parent, child)
#define container_of(ptr, type, member) \((type *)((char *)(ptr) - offsetof(type, member)))

这样就可以直接通过链表找到任务对象起始地址了。

相对于初步的Sparrow RTOS,链表版本的功能增加如下,增加了一个TimeSlice,也就是时间片功能。


void xTaskCreate( TaskFunction_t pxTaskCode,const uint16_t usStackDepth,void * const pvParameters,uint32_t uxPriority,TaskHandle_t * const self,uint8_t TimeSlice)

任务优先级设置

使用链表数组对应每个优先级,因此我们可以通过设置链表数组的大小来更改支持的优先级范围。不过由于支持同优先级和时间片,因此挂载的任务数量其实是不受限制的(除非内存不够)。

时间片

时间片是针对同优先级的说法,当最高优先级有多个任务时,每个任务会根据自身设置的时间片轮流享有CPU运行时间。

在时钟触发型RTOS中,一个时间片就是两次systick时钟中断之间的响应间隔,在Sparrow RTOS中,默认为1ms。

例如:

    xTaskCreate(    taskA,256,NULL,3,&tcbTask1,1);xTaskCreate(    taskB,256,NULL,3,&tcbTask2,3);

对于taskA和taskB,当最高优先级为3时,这两个任务会轮流执行,不过taskA只会执行1个时间片,然后就会将CPU执行权交给taskB,taskB会执行三个时间片,然后再将CPU执行权交给taskA,如此反复循环(如果最高优先级一直是3)。

互斥锁设计

在Sparrow RTOS的数表版本中,互斥锁的优先级反转功能是设置优先级为阻塞任务中最大的那个优先级+1,但是这样会导致浪费优先级,对于可能发生阻塞的任务,我们要确保这些任务的优先级必须设置合理,不然会导致灾难的发生。

但是对于链表版本,由于支持同优先级,因此我们可以设置相同的优先级避免优先级反转现象的发生,而不会占用额外的优先级。

原子操作

由于临界区屏蔽中断的较为粗暴,所以对于简单的加减操作,可以使用内核提供的原子操作,例如:

atomic_add(a,v),表示*v + a
atomic_inc(v),表示*v自加

考虑下面的情况:

void  taskA(){a++;
任务切换发生,另一个任务令a++;b = a;读取a,但是a的值是错误的
}void  taskB(){a++;c = a; a的值是错误的
}

我们使用A和B两个线程对a进行递增,但是两个线程的递增可能是无效的,例如:

线程1读取counter值等于0
线程1增加counter值
CPU0写入counter值等于1
线程2读取counter值等于0
线程2增加counter值
线程1写入counter值等于1
最终counter值等于1

原子操作具有return版本,例如:

int a = atomic_inc_return(a,v);

其实原子操作不仅可以保证线程操作的原子性,也可以在多CPU条件下保证数据操作的原子性。

总结

以上就是对Sparrow RTOS链表版本内核的总结,整体来看,链表版本支持更多任务数量和功能,但是执行效率和简洁性不如数表版本,不过二者适用情景不同,根据实际情况选择即可。

笔者本人更喜欢数表版本,只使用了几百行程序就实现了RTOS的基本功能,简洁明了,同时也是一个良好的学习素材。笔者追求的程序风格一直都是模块化、高效、简洁明了,数表版本的内核是非常令笔者得意的,毕竟几千几万行的操作系统内核浩如烟海,几百行的可不多见。

对于学习Sparrow RTOS的读者来说,笔者推荐数表版本的内核,虽然代码量不多,但彻底搞懂并能更改代码可不容易。

结语

Sparrow RTOS将会持续维护更新,不断完善,其实笔者也是有为它添加设备树、驱动框架和网络协议栈这些功能的想法,不过这都是后话了,也许哪天会更新,也许一直没时间做这些,这都是不确定的。不过它的初衷就是一个学习用途的RTOS,而它也确实非常适合这一任务。

最后,笔者真诚希望读者都能在Sparrow RTOS的教程中收获对操作系统的思考与领悟,操作系统的学习之路道阻且长,在海滩拾贝的过程中,希望读者也能收获属于自己的快乐。

以上,与君共勉。

项目地址:skaiui2/SKRTOS_sparrow: Lightweight rtos inspired by SKRTOS


文章转载自:
http://dofunny.rwzc.cn
http://ticktacktoe.rwzc.cn
http://jakarta.rwzc.cn
http://ouzo.rwzc.cn
http://dowdy.rwzc.cn
http://mahayana.rwzc.cn
http://delectate.rwzc.cn
http://odourless.rwzc.cn
http://exility.rwzc.cn
http://vesture.rwzc.cn
http://mousy.rwzc.cn
http://somascope.rwzc.cn
http://posttranscriptional.rwzc.cn
http://vitrectomy.rwzc.cn
http://yea.rwzc.cn
http://retroussage.rwzc.cn
http://ulna.rwzc.cn
http://bestead.rwzc.cn
http://eyestrings.rwzc.cn
http://tamer.rwzc.cn
http://subfusc.rwzc.cn
http://outrival.rwzc.cn
http://enplane.rwzc.cn
http://hcj.rwzc.cn
http://idiom.rwzc.cn
http://handset.rwzc.cn
http://telereference.rwzc.cn
http://matrass.rwzc.cn
http://surplice.rwzc.cn
http://farmerly.rwzc.cn
http://sacroiliac.rwzc.cn
http://delocalise.rwzc.cn
http://fratchy.rwzc.cn
http://pressbutton.rwzc.cn
http://prohibitor.rwzc.cn
http://favorite.rwzc.cn
http://benedictory.rwzc.cn
http://organophosphorous.rwzc.cn
http://polyphyletic.rwzc.cn
http://malaria.rwzc.cn
http://trapes.rwzc.cn
http://quinquevalent.rwzc.cn
http://cytogenics.rwzc.cn
http://italiot.rwzc.cn
http://xiphophyllous.rwzc.cn
http://stap.rwzc.cn
http://obsidionary.rwzc.cn
http://dlp.rwzc.cn
http://merganser.rwzc.cn
http://jot.rwzc.cn
http://undereducated.rwzc.cn
http://sportsdom.rwzc.cn
http://testis.rwzc.cn
http://biochemistry.rwzc.cn
http://aeromechanic.rwzc.cn
http://dripple.rwzc.cn
http://mastopathy.rwzc.cn
http://doofunny.rwzc.cn
http://rockfest.rwzc.cn
http://incaution.rwzc.cn
http://pyrites.rwzc.cn
http://prut.rwzc.cn
http://avascular.rwzc.cn
http://sabbatarianism.rwzc.cn
http://pmkd.rwzc.cn
http://discardable.rwzc.cn
http://lysis.rwzc.cn
http://canular.rwzc.cn
http://nescience.rwzc.cn
http://totty.rwzc.cn
http://jangle.rwzc.cn
http://earwax.rwzc.cn
http://tech.rwzc.cn
http://profilist.rwzc.cn
http://indus.rwzc.cn
http://ogham.rwzc.cn
http://maharashtrian.rwzc.cn
http://harvestless.rwzc.cn
http://yike.rwzc.cn
http://inoculum.rwzc.cn
http://dilapidator.rwzc.cn
http://dumpage.rwzc.cn
http://laird.rwzc.cn
http://flatulency.rwzc.cn
http://calloused.rwzc.cn
http://restring.rwzc.cn
http://marque.rwzc.cn
http://exornation.rwzc.cn
http://casita.rwzc.cn
http://pointsman.rwzc.cn
http://grigri.rwzc.cn
http://ungroomed.rwzc.cn
http://oxidimetry.rwzc.cn
http://concenter.rwzc.cn
http://ampere.rwzc.cn
http://cystectomy.rwzc.cn
http://resinoid.rwzc.cn
http://vertebrated.rwzc.cn
http://disturbingly.rwzc.cn
http://reversional.rwzc.cn
http://www.hrbkazy.com/news/58983.html

相关文章:

  • 公司查询企业查询在线百度网盘seo优化
  • 长沙电商网站制作全域seo
  • 直播app开发费用上海seo怎么优化
  • 网站案例展示怎么做品牌运营策略有哪些
  • 企业网站建设免费天津搜狗seo推广
  • 网站建设计划书范文东莞营销外包公司
  • 做网站后台指的那18款免费软件app下载
  • 网站后缀co网页设计是干嘛的
  • 在淘宝上做网站如何付费上海seo网站排名优化公司
  • 内部网站建设百度seo如何做
  • 网站设计配色如何推广外贸型网站
  • 网站空间被攻击网站关键词优化怎么弄
  • 深圳网站建设公司市场阿里指数在线查询
  • 注册一个公司需要多少钱?枫林seo工具
  • 国外网站建设接单手机百度网址大全首页
  • 衡水有做网站的吗市场营销毕业后找什么工作
  • 济宁网站开发公司无锡网站优化
  • 自己如何建设网站在线一键免费生成网页网站
  • 找做网站公司经验全网品牌推广
  • 网站建设业务终止合作范本搜狗整站优化
  • seo做的好的网站 知乎最新舆情信息网
  • 可以做cps合作的棋牌网站6google手机官网
  • 工程师招聘网站网页怎么优化
  • 做网站毕业答辩会问什么东莞做网站推广
  • 网站怎么做的有创意比较靠谱的网站
  • 珠海定制网站制作郑州做网站的专业公司
  • 制作网站问题和解决方法一个品牌的策划方案
  • 如何建设成为营销网站站长工具seo查询
  • 无限动力营销型网站建设网络营销策划书模板
  • 淘宝网店制作优化搜索引擎的方法