ucOS学习--基础知识

操作系统经常使用的数据结构

1.数组 2.位图.  3.结构体   4.链表  5.队列   6.堆栈 

数组

1。同一数据类型数据的集合;

2。占用连续内存空间;

3。其中的所有元素名称都相同,但每个元素都有一个编号;

4。元素名去掉编号(下标),得到的是数组名,数组名是个指针。

特点:1。分类存放;2。检索速度快且恒定;3。缺点:占用连续空间大

应用:记录同类事物的表

位图

位图是数组的一种特殊应用

应用:登记表

结构体

1。不同数据类型数据的集合;

2。占用连续内存空间;

应用:通讯录中的一条记录、工具箱、厨房等等

链表

1。同数据类型数据的集合;

2。不占用连续内存空间。

特点:

1。分类存放,但空间上不连续(不需要大量的连续存储空间);

2。检索速度慢,且耗费的时间不固定;

应用:存放大量的较大

的表,类似档案柜

队列

按照先进先出的规则组织的数据结构可以用数组也可以用链表来实现应用:主要用于对象的排队

堆栈:按照先进后出规则组织的数据结构主要用数组来实现应用:主要用于程序模块的嵌套运行

 

 

 

嵌入式系统和嵌入式操作系统

嵌入式系统:智能化控制能力。


创新模式,设计满足嵌入式要求的芯片


 有时间限制

RTOS完成任务多用的时间在应用设计时就可以预知


 ucOS学习--基础知识_第1张图片


嵌入式OS主要提供“微内核”为主,其他窗口系统界面,文件管理等自己设计或外购。

 ucOS学习--基础知识_第2张图片


任务:

  程序是静止的,存在于ROM、硬盘等外部设备。任务是运动的,存在于内存中,有睡眠、就绪、运行、阻塞、挂起等多种状态。

    

ucOS学习--基础知识_第3张图片

 ucOS允许建立63个任务

内核中最最核心的基本服务就是调度的核心——任务切换


 

任务:


内核:

 

函数可重入

       指一个函数可以被多个任务调用,而不需要担心在任务切换的过程中,代码的执行会产生错误的结果。

如果函数被多个任务调用,可能产生错误的结果,就是不可重入函数。

 



共享资源;


互斥条件:

    AB两个任务都要访问计算结果这个共享资源,但是在A写这个资源的同时,B必须等待,而不能在A写到一半的时候结束A而让B来读,这样会产生灾难性的后果。

这样的共享资源称为临界资源(CriticalResource)。

这种访问共享资源的排他性就是互斥。


优先级反转:


信号量:

        在一个时刻,有些共享资源只可以被一个任务所占有,而有些可以被至多N个任务所共享。前一种共享资源就好比有一把钥匙,钥匙发出去了,得到钥匙的任务可以访问共享资源,其他请求该资源的任务必须等得到钥匙的任务把钥匙归还。后者则可以有N把钥匙,如果N把钥匙都发完了,第N+1个请求访问共享资源的任务就必须等待。这些钥匙就可以用信号量(semaphore)来表示。

    信号量标志了共享资源的有效可被访问数量,于是要获得共享资源的访问权,就首先要得到信号量这把钥匙。 

信号量三种操作:

1.建立(create)

建立并初始化信号量,在一个事件块里标志该信号,记录该信号的量值,执行的是给资源配钥匙的操作。该操作的条件是系统中还有空余的事件块。操作系统能处理的事件是有限的,任何的数据结构都不能无限,尤其是在实时系统中。

2.请求(pend)

请求信号,如果还有钥匙(信号量大于0),就去领一把(信号量--),执行下去;如果没有,就要把自己阻塞掉,因为不能执行下去就不需要再占用宝贵的CPU。

3.释放(post)

访问资源的操作完成后就把钥匙交回(信号量++)。这时,如果有等待该钥匙的任务就绪,并比当前任务有更高的优先级,就执行任务调度。否则,原任务在释放信号量之后继续执行。 


    详细内容:http://note.youdao.com/share/?id=0ada5d406ffda4f62be7f4df4b628c2a&type=note

你可能感兴趣的:(OS)