⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 120.htm

📁 pcb设计资料初学者难得的入门资料包含工厂制作过程
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://202.112.58.200"><font face="黑体"><big><big>Tsinghua</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">         嵌入式系统                            (BM: turbolinux jacobw)          </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="60.htm">上一层</a>][<a href="121.htm">下一篇</a>]
<hr><p align="left"><small>发信人: doot (ltt), 信区: Embedded <br>

标  题: psos的简单介绍。 <br>

发信站: BBS 水木清华站 (Wed Oct 25 11:42:14 2000) <br>

  <br>

是别人翻译的。xixi <br>

pSOS系统结构 <br>

    pSOS是一个由标准软组件组成的,可剪裁的实时操作系统。其系统结构如图2.1所示 <br>

  <br>

,它分为内核层、系统服务层、用户层。 <br>

1. 内核层 <br>

    pSOS内核负责任务的管理与调度、任务间通信、内存管理、实时时钟管理、中断服 <br>

  <br>

务;可以动态生成或删除任务、内存区、消息队列、信号灯等系统对象;实现了基于优 <br>

  <br>

先级的、选择可抢占的任务调度算法,并提供了可选的时间片轮转调度。pSOS Kernel还 <br>

  <br>

提供了任务建间通信机制及同步、互斥手段,如消息、信号灯、事件、异步信号等。 <br>

    pSOS操作系统在Kernel层中将与具体硬件有关的操作放在一个模块中,对系统服务层 <br>

  <br>

以上屏蔽了具体的硬件特性,从而使得pSOS很方便地从支持Intel 80x86系列转到支持MC <br>

  <br>

68XXX系列,并且在系统服务层上对不同应用系统不同用户提供标准的软组件如PNA+、 <br>

PHILE+等。 <br>

PHILE+等。 <br>

2. 系统服务层 <br>

    pSOS系统服务层包括PNA+、PRPC+、PHILE+等组件。PNA+实现了完整的基于流的TCP <br>

  <br>

/IP协议集,并具有良好的实时性能,网络组件内中断屏蔽时间不大于内核模块中断屏蔽时 <br>

  <br>

间。PRPC+提供了远程调用库,支持用户建立一个分布式应用系统。PHILE+提供了文件系 <br>

  <br>

统管理和对块存储设备的管理。PREPC+提供了标准的C、C++库,支持用户使用C、C++语言 <br>

  <br>

编写应用程序。 <br>

    由于pSOS内核屏蔽了具体的硬件特性,因此,pSOS系统服务层的软组件是标准的、与 <br>

  <br>

硬件无关的。这意味着pSOS各种版本,无论是对80X86系列还是MC68XXX系列,其系统服务 <br>

  <br>

层各组件是标准的、同一的,这减少了软件维护工作,增强了软件可移植性。 <br>

    每个软组件都包含一系列的系统调用。对用户而言,这些系统调用就象一个个可重入 <br>

  <br>

的C函数,然而它们却是用户进入pSOS内核的唯一手段。 <br>

3. 用户层 <br>

    用户指的是用户编写的应用程序,它们是以任务的形式出现的。任务通过发系统调 <br>

  <br>

用而进入pSOS内核,并为pSOS内核所管理和调度。 <br>



    pSOS为用户还提供了一个集成式的开发环境(IDE)。pSOS_IDE可驻留于UNIX或DOS <br>

  <br>

环境下,它包括C和C++优化编译器、CPU和pSOS模拟仿真和DEBUG功能。 <br>

pSOS内核机制 <br>

§3.1  几个基本概念 <br>

3.1.1  任务 <br>

    在实时操作系统中,任务是参与资源竞争(如CPU、Memory、I/O devices等) <br>

的基本单位。pSOS为每个任务构造了一个虚拟的、隔离的环境,从而在概念上,一个任务 <br>

  <br>

与另一个任务之间可以相互并行、独立地执行。任务与任务之间的切换、任务之间的通 <br>

  <br>

信都是通过发系统调用(在有些情况下是通过ISR)进入pSOS Kernel,由pSOS Kernel完 <br>

  <br>

成的。 <br>

    pSOS系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固 <br>

  <br>

定的法则,但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又 <br>

  <br>

会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是 <br>

  <br>

分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功 <br>

  <br>

  <br>

能耦合等几个方面考虑。 <br>

3.1.2 优先级 <br>

    每个任务都有一个优先级。pSOS系统支持0~255级优先级,0级最低,255级最高。0级 <br>

  <br>

专为IDLE任务所有,240~255级为系统所用。在运行时,任务(包括系统任务)的优先级 <br>

  <br>

可以通过t_setpri系统调用改变。 <br>

3.1.3 任务状态 <br>

    pSOS下任务具有三种可能状态并处于这三个状态之一。只有通过任务本身或其他任 <br>

  <br>

务、ISR对pSOS内核所作的系统调用才能改变任务状态。从宏观角度看,一个多任务应用 <br>

  <br>

通过一系列到pSOS的系统调用迫使pSOS内核改变受影响任务而从运行一个任务到运行另 <br>

  <br>

一任务向前发展的。 <br>

    对于pSOS kernel,任务在创建前或被删除后是不存在的。被创建的任务在能够运行 <br>

  <br>

前必须被启动。一旦启动后,一个任务通常处于下面三个状态之一: <br>

①Executing (Ready)就绪 <br>

②Running运行 <br>

③Blocked阻塞 <br>

    就绪任务是未被阻塞可运行的,只等待高优先级任务释放CPU的任务。由于一个任务 <br>



  <br>

只能由正运行的任务通过调用来被启动,而且任何时刻只能有一个正在运行的任务,所 <br>

  <br>

以新任务总是从就绪态开始。 <br>

    运行态任务是正在使用CPU的就绪任务, 系统只能有一个running任务。一般runni <br>

  <br>

ng任务是所有就绪任务中优先级最高的,但也有例外。 <br>

    任务是由自身特定活动而变为阻塞的,通常是系统调用引起调用任务进入等待状态 <br>

  <br>

的。所以任务不可能从ready态到blocked态,因为只有运行任务才能执行系统调用。 <br>

3.1.4 任务控制块 <br>

    任务控制块TCB是pSOS内核建立并维护的一个系统数据结构,它包含了pSOS Kernel调 <br>

  <br>

度与管理任务所需的一切信息,如任务名、优先级、剩余时间片数、当前寄存器状态等。 <br>

  <br>

    在有的RTOS中,任务的状态与任务TCB所处的队列是等同的。pSOS操作系统将二者分 <br>

  <br>

为两个概念,例如任务处于阻塞状态,但它的TCB却处于消息等待队列、信号灯等待队列、 <br>

  <br>

内存等待队列、超时队列之一。 <br>

    pSOS启动时,将根据Configuration Table中的参数kc_ntask建立一个包含kc_ntask <br>

  <br>

  <br>

个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在 <br>

  <br>

撤销一个任务时,该TCB将被收回。 <br>

3.1.5 对象、对象名及ID号 <br>

    pSOS Kernel是一个面向对象的操作系统内核,pSOS系统中对象包括任务、memory <br>

regions、memory partitions、消息队列和信号灯。 <br>

    对象名由用户定义(4位ASCII字符),并且在该对象创建时作为系统调用obj_CREAT <br>

E <br>

的一个人口参数传给pSOS Kernel。pSOS Kernel反过来赋予该对象一个唯一的32位ID号 <br>

  <br>

。除obj_CREATE和obj_IDENT外,所有涉及对象的系统调用都要用到对象ID号。 <br>

    创建对象的任务通过obj_CREATE就已经知道了该对象的ID号,其余任务可通过obj_ <br>

IDENT或通过全局变量(如果已经为该任务的ID号建立了一个全局变量的话)获取该对象 <br>

  <br>

的ID号。对象ID号隐含了该对象控制块(如TCB、QCB)的位置信息,这一位置信息被pSO <br>

S <br>

Kernel用于对该对象的管理和操作,如挂起/解挂一个任务、删除一个消息队列等。 <br>

3.1.6 任务模式字Mode  word. <br>

    每个任务带有一个mode  word,用来改变调度决策或执行环境。主要有以下四个参 <br>

  <br>

数 <br>

    Preemption Enabled/Disabled. <br>



    Roundrobin Enabled/Disabled <br>

    Interupts Enabled/Disabled. <br>

    ASR Enabled/Disabled:  每个任务有一个通过as-catoh建立起来的异步信号服务例 <br>

  <br>

程ASR。异步信号类似于软件中断。当ASR位为1时as-catch所指向的任务将会被改变执行 <br>

  <br>

路径,先执行ASR,再返回原执行点。 <br>

§3.2  任务调度 <br>

3.2.1 影响动态调度效果的两个因素 <br>

    pSOS采用优先级+时间片的调度方式。有两个因素将影响动态调度的效果:一是优先 <br>

  <br>

级可变(通过t_setpri系统调用改变任务的优先级);二是任务模式字中的preemption <br>

  <br>

 bit位和roundrobin bit位。preemption bit位决定不同优先级的任务是否可抢占,并和 <br>

  <br>

roundrobin bit位一起决定任务的时间片轮转是否有效。 <br>

3.2.2 引起任务调度的原因及结果 <br>

    pSOS系统中引起调度的原因有两条: <br>

1. 在轮转方式下时间片到 <br>

2. pSOS系统调用引发任务调度。该系统调用可能是ISR发出的,也可能是某个任务发出的 <br>

。 <br>

    pSOS任务调度的结果有两种: <br>



1. 引起运行任务切换,这指的是 <br>

2. 不引起运行任务切换,这指的是 <br>

    不论任务调度是否引发运行任务切换,都有可能引起一个或多个任务状态变迁。 <br>

3.2.3 运行任务的切换 <br>

一、何时切换 <br>

    下面三种情况将引发运行任务切换: <br>

1. 在时间片轮转方式下(此时任务模式字的roundrobin bit与preemption bit均为 <br>

enable),运行任务Task A的时间片用完,且Ready队列中有相同优先级的其它任务,则 <br>

  <br>

Task A退出运行。 <br>

2. 在运行任务Task A的Mode word的preemption bit位为enable的前提下,若Task A发出 <br>

  <br>

的某条相同调用引发一个优先级高于Task A的任务Task B从Block状态进入Reary状态,则 <br>

  <br>

将Task B投入运行。 <br>

3. ISR使用I_RETURN系统调用,则ISR退出运行,pSOS Kernel选择Ready队列中优先级最高 <br>

  <br>

的任务投入运行(这一任务并不一定是被ISR打断的前运行任务)。 <br>

二、如何切换 <br>

    上述三类运行任务的切换,其具体的pSOS Kernel运作过程并非完全一样,但彼此之间 <br>

  <br>

差别不大。为了简单起见,我们以 <br>



为例对切换过程作一简单叙述。这一过程可细分为4个步骤: <br>

1. 任务A运行信息保存(_t_save  proc far) <br>

        这一过程主要完成修改系统工作标志,保存切换点地址及运行信息、任务A栈调 <br>

整  <br>

栈 <br>

指针保存、栈切换、参数及返址入栈等一系列工作。 <br>

2.任务A入就绪队列(void  t_in_chain) <br>

        这一过程将任务A的TCB块按优先级顺序插入就绪队列。 <br>

3.选择一个高优先级任务B(void  t_choice(  )) <br>

        按一定算法从就绪队列中选出最高优先级任务B的TCB块,并使运行指针指向它。 <br>

  <br>

4.将任务B投入运行(_t_run proc far) <br>

        从系统栈切换到任务B栈,用任务B的TCB块中保存的信息恢复上次运行被打断的 <br>

地  <br>

,恢 <br>

复任务运行环境,于是任务B开始继续运行。 <br>

    图3.1反映了典型任务切换过程中CPU控制权的转移、各堆栈活动生命期、任务活动 <br>

  <br>

生命期等信息。图中 <br>

          t1,t4为切换点   t2,t3为开/关中断 <br>

      Tsch=t4-t1        // Tsch为任务切换时间 <br>

      Tforbid=t3-t2       // Tforbid为中断禁止时间 <br>



它们是实时操作系统最重要的两个性能指标。 <br>

  <br>

-- <br>

  <br>

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.117.114.8] <br>

</small><hr>
<p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="60.htm">上一层</a>][<a href="121.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -