您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > ucOS-II最详细的解释
FLTCHμC/OS-IIFLTCHμC/OS-IIμC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。μC/OS-II的前身是μC/OS,是专门为计算机的嵌入式应用设计的。FLTCH主要内容1.计算机操作系统的基本概念2.操作系统中常用的数据结构3.并发操作系统的概念4.任务的要素5.uC/OS-II的任务调度6.uC/OS-II的中断和时钟7.uC/OS-II任务的同步与通信8.uC/OS-II的储存管理FLTCH计算机操作系统的基本概念FLTCH计算机操作系统的基本概念什么是计算机操作系统?操作系统是一种为应用程序提供服务的系统软件,是一个完整计算机系统的有机组成部分。从层次来看,操作系统位于计算机硬件之上,应用软件之下。所以也把它叫做应用软件的运行平台。FLTCH计算机操作系统的作用它在计算机应用程序与计算机硬件系统之间,屏蔽了计算机硬件工作的一些细节,并对系统中的资源进行有效的管理。通过提供函数(应用程序接口(API)),从而使应用程序的设计人员得以在一个友好的平台上进行应用程序的设计和开发,大大地提高了应用程序的开发效率。从用户的角度来看,它就是一大堆函数(API和系统函数),用户可以调用(普通调用或系统调用)它们来对系统资源进行操作。计算机硬件用汇编语言编写的硬件抽象层高级语言的接口应用软件操作系统FLTCHAPI什么是API?API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。FLTCH计算机操作系统的功能操作系统任务的管理处理器管理FLTCH操作系统中经常用到的数据结构FLTCH操作系统中经常用到得数据结构(数组)。数组1。同一数据类型数据的集合;2。占用连续内存空间;3。其中的所有元素名称都相同,但每个元素都有一个编号;4。元素名去掉编号(下标),得到的是数组名,数组名是个指针。inta[10]a[0]a[1]a[2]a[3]a[9]……aa+1a+2a+3a+9指针数组FLTCH操作系统中经常用到得数据结构(位图)a[0]a[1]a[2]a[3]a[9]……1/0D7D6D5D4D3D2D1D0a+2aa+1a+3a+9…a[10],可以记录80个事物的状态)位图:是数组的一种特殊应用。FLTCH操作系统中经常用到得数据结构(结构)structStudent{intage;char*name;charsex;};结构:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。FLTCH结构体FLTCH1、概述在实际应用有不少问题中只采用已学的变量和数组作为数据结构显得很不方便例:输入100个学生的学号、姓名和考试成绩,编写程序找出高分者和低分者。用变量和数组作数据结构可编写程序如下:FLTCHmain(){inti,num,maxnum,minnum;charname[20],maxname[20],minname[20];intscore,maxscore,minscore;maxscore=0;minscore=100;for(i=1;i=100;i++){scanf(“%d%s%d”,&num,name,&score);if(scoremaxscore){maxscore=score;maxnum=num;strcpy(maxname,name);}if(scoreminscore){minscore=score;minnum=num;strcpy(minname,name);}}printf(“%d%d”,maxnum,maxscore);printf(“%d%d”,minnum,minscore);}FLTCH明显缺点:①变量过多,同一学生的各个数据无联系,没有整体概念,不便管理。②操作不便(如更新过程)。显然,选用一种能把一个学生的数据构造成一个整体的构造型数据结构更合适,但不能是数组。对于这种情况,可以将一个学生的数据定义为一个结构体类型:FLTCHstructstudent类型名{intnum;charname[20];intscore;};定义了一个结构体类型,它包含三个成员。成员表,这里有三个成员FLTCH2、定义结构体类型变量的方法前面定义的结构体类型只是一种“模型”,还必须定义结构体变量后才能存放数据。定义结构体变量有三种方法:1、先定义结构体类型再定义结构体变量定义了结构体类型后:structstudentst,stmax,stmin;类型符变量名定义了三个结构体变量,每个变量包含三个成员,每个变量可存放一个学生的数据。FLTCH2、在定义结构体类型的同时定义结构体变量structstudent{intnum;charname[20];intscore;}st,stmax,stmin;FLTCH3、直接定义结构体类型变量struct不出现类型名{intnum;charname[20];intscore;}st,stmax,stmin;常用第一种方法FLTCH说明:①类型与变量不同,只对变量分配空间与操作。②对成员可以单独使用,相当于普通变量。③成员也可以是一个结构体变量。structdatestructstudent{intmonth;{intnum;intday;charname[20];intyear;structdatebirthday;};}st1,st2;结构体里成员又是结构体变量④成员名可以与程序中的变量名相同,两者代表不同的对象。FLTCH3、结构体变量的引用■成员引用可以对成员单独引用,形式为:结构体变量名.成员名成员运算符st.num=1001;st.score=90;strcpy(st.name,“Li”);printf(“%d%s%d”,st.num,st.name,st.score);scanf(“%d%s%d”,&st.num,st.name,&st.score);可以引用成员的地址FLTCH如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员,只能对最低级的成员进行存取与运算。structdatestructstudent{intmonth;{intnum;intday;charname[20];intyear;structdatebirthday;};}st1,st2;st1.birthday.year=1960;st1.birthday.month=5;st1.birthday.day=15;FLTCH■整体引用可以对结构体变量进行整体赋值:stmax=st;将st中的所有内容赋值给stmax。对结构体变量的整体操作只限于赋值操作和参数传递,而且要求类型一致。不能对结构体变量进行整体输入输出。FLTCH结构体应用举例:编写程序输入100个学生的学号、姓名和考试成绩,找出高分者和低分者。structstudent{intnum;charname[20];intscore;};FLTCHmain(){inti;structstudentst,stmax,stmin;stmax.score=0;stmin.score=100;for(i=1;i=100;i++){scanf(“%d%s%d”,&st.num,st.name,&st.score);if(st.scorestmax.score)stmax=st;if(st.scorestmin.score)stmin=st;}printf(“\n%5d%15s%5d”,stmax.num,stmax.name,stmax.score);printf(“\n%5d%15s%5d”,stmin.num,stmin.name,stmin.score);}FLTCH4、结构体变量的初始化对结构体变量可以在定义时指定初始值structstudent{intnum;charname[20];intscore;};structstudentst={1001,”wang”,95};FLTCH5、结构体数组可以定义结构体数组来存放批量数据。■结构体数组的定义structstudent{intnum;charname[20];intscore;};structstudenta[100];定义a数组,可以存放100个学生的数据。a数组的每个元素又是一个结构体变量。FLTCH■结构体数组的初始化在定义结构体数组的同时指定初值。structstudent{intnum;charname[20];intscore;};structstudenta[2]={{1001,”LiLi”,85},{1002,”wang”,90}};FLTCH或structstudent{intnum;charname[20];intscore;}a[2]={{1001,”LiLi”,85},{1002,”wang”,90}};FLTCH■结构体数组元素的引用成员引用:a[0].num=1001;strcpy(a[0].name,”wang”);a[0].score=85;整体引用:a[1]=a[0];与普通数组元素的引用相同■结构体数组的应用输入100个学生的学号、姓名和考试成绩,然后按从高分到低分的顺序排列后输出。FLTCHstructstudent{intnum;charname[20];intscore;};main(){inti,j;structstudenta[100],t;for(i=0;i100;i++)scanf(“%d%s%d”,&a[i].num,a[i].name,&a[i].score);FLTCHfor(i=0;i99;i++){for(j=i+1;j100;j++)if(a[i].scorea[j].score){t=a[i];a[i]=a[j];a[j]=t;}整体引用}for(i=0;i100;i++)printf(“\n%5d%15s%5d”,a[i].num,a[i].name,a[i].score);}FLTCH6、指向结构体类型数据的指针■指向结构体类型变量的指针structstudentst,st1;structstudent*p;p=&st;指向st定义指向结构体类型数据的指针变量pFLTCH通过指针变量引用结构体变量:①成员引用(*p).num=1001;或p-num=1001;(*p).score=85;或p-score=85;strcpy((*p).name,“wang”);或strcpy(p-name,“wang”);②整体引用st1=*p;等效于st1=st;FLTCH■指向结构体数组的指针structstudenta[100];structstudent*p;p=a;通过指针变量引用结构体数组元素:①成员引用(*p).num=1001;或p-num=1001;(*p).score=85;或p-score=85;strcpy((*p).name,”wang”);或strcpy(p-name,”wang”);FLTCH一般地:(*(p+i)).num=1001;或(p+i)-num=1001;(*(p+i)).score=85;或(p+i)-score=85;strcpy((*(p+i)).name,”wang”);或strcpy((p+i)-name,”wang”);也可以用下标法:p[i].num=1001;p和a是等价的,就好比a[i].num=1001;②整体引用*(p+1)=*(p+0);或p[1]=p[0];FLTCH■用结构体变量和指向结构体的指针作函数参数用结构体变量作函数参数时,对应的实参应该是同类型的结构体变量(或数组元素),参数传递是“值传递”。用指向结构体的指针作函数参数时,对应的实参应该是同类型的结构体变量的
本文标题:ucOS-II最详细的解释
链接地址:https://www.777doc.com/doc-3354736 .html