标题：pSOS
简介
pSOS是美国系统集成公司(Integrated Systems, Inc. 简称ISI公司)根据几十年从事嵌入式实时系统理论研究与实践活动而设计开发的。该产品推出时间比较早，因此比较成熟，可以支持多种处理器，曾是国际上应用最广泛的产品，主要应用领域是远程通信，航天，信息家电和工业控制。但该公司已经被风河公司（windriver）兼并，从VxWorks5.5开始，已将PSOS的主要特点融入VxWorks中。PSOS是一个由标准软组建组成的，可编辑的实时操作系统。其系统结构可以分为内核层，系统服务层，用户层。
pSOSystem 集成了一整套嵌入式软件模块、工具和服务。作为嵌入式系统微内核设计的先驱者之一，ISI公司将pSOSystem构造成适于嵌入式应用系统开发、在嵌入式实时领域具有领导地位的实时操作系统。pSOSystem从ISI 公司和许多第三厂家得到大量的支持。
pSOSystem 是一个专门为嵌入式微处理器设计和开发的模块化、高效率的实时操作系统。它提供了基于标准化开放系统的完整的多任务环境，例如：对网络文件系统的支持。
pSOSystem 的设计宗旨是为了实现高效、可靠、易于使用的嵌入式实时软件，以支持用户自己设计的或商品化的硬件系统。
pSOSystem 的每一部分都是完全“自包含”的，这种机制允许开发者根据每个应用的特殊要求对操作系统的功能和内存进行裁剪和配制。pSOSystem 的这种设计，使得开发人员对简单的独立设备及复杂的可容错多处理机系统都可以灵活配置。
pSOSystem提供了一套集成化的交叉开发工具以支持应用系统的开发。该集成环境可在PC机或工作站上运行。这些工具可通过多种连接机制与目标机通讯。
组件
pSOS是一个由标准软组件组成的,可剪裁的实时操作系统。它分为内核层、系统服务层、用户层。
1. 内核层
pSOS内核负责任务 的管理与调度、任务间通信、内存管理、实时时钟管理、中断服务；可以动态生成或删除任务、内存区、消息队列、信号灯等系统对象；实现了基于优先级的、选择 可抢占的任务调度算法，并提供了可选的时间片轮转调度。pSOS Kernel还提供了任务建间通信机制及同步、互斥手段，如消息、信号灯、事件、异步信号等。
pSOS操作系统在Kernel层中将与具体硬件有 关的操作放在一个模块中,对系统服务层以上屏蔽了具体的硬件特性,从而使得pSOS很方便地从支持Intel 80x86系列转到支持MC68XXX系列,并且在系统服务层上对不同应用系统不同用户提供标准的软组件如PNA+、PHILE+等。
2. 系统服务层
pSOS系统服务层包括PNA+、PRPC+、PHILE+等组件。PNA+实现了完整的基于流的TCP/IP协议集,并具有良好的实 时性能,网络组件内中断屏蔽时间不大于内核模块中断屏蔽时间。PRPC+提供了远程调用库,支持用户建立一个分布式应用系统。PHILE+提供了文件系统 管理和对块存储设备的管理。PREPC+提供了标准的C、C++库,支持用户使用C、C++语言编写应用程序。由于pSOS内核屏蔽了具体 的硬件特性,因此,pSOS系统服务层的软组件是标准的、与硬件无关的。这意味着pSOS各种版本,无论是对80X86系列还是MC68XXX系列,其系 统服务层各组件是标准的、同一的,这减少了软件维护工作,增强了软件可移植性。每个软组件都包含一系列的系统调用。对用户而言,这些系统调用就象一个个可 重入的C函数,然而它们却是用户进入pSOS内核的唯一手段。
3. 用户层
用户指的是用户编写的应用程序，它们是以任务的形式出现的。任 务通过发系统调用而进入pSOS内核,并为pSOS内核所管理和调度。pSOS为用户还提供了一个集成式的开发环境（IDE）。pSOS_IDE可驻留于 UNIX或DOS环境下,它包括C和C++优化编译器、CPU和pSOS模拟仿真和DEBUG功能。pSOS内核机制。[1]
系统结构
pSOSystem 具有模块化的结构。围绕操作系统内核pSOS+有一系列软件功能模块。软件功能模块是标准的结构块，因此，不同应用可不加修改地使用它们。这些模块采用了黑盒子技术，可以使用户免于维护，并且确保高可靠性。  pSOSystem 系统结构
pSOSystem 系统模块●pSOS+ 实时多任务内核
它是一个经多个应用领域验证的多任务内核。它提供一种及时应答、高效的机制与用户的实时应用系统协调合作。现阶段，全世界范围内有超过二千万的嵌入式设备运行着pSOS+。
●pSOS+m 多处理器多任务内核
扩展了pSOS+ 的一些特性，使得在紧耦合或松耦合的多处理器上的操作可无缝隙实现。
●pNA+ TCP/IP协议栈
是一个完全的TCP/IP协议组，包括：网关路由协议、UDP、ARP和IGMP等等。pNA+ 使用标准的套(Socket)接口，包括流(Stream)、报文(Datagram)、Raw Socket。
●pRPC+远程调用函数库
提供了与SUN 兼容的 RPC 和XDR服务；允许用户用熟悉的远程调用来构造分布式应用。
●pHILE+文件系统管理
可以通过它有效地访问各种不同的存储设备，包括本地盘和网络盘。文件系统支持包括 CD-ROM 设备、MS-DOS 兼容的文件系统，和pSOSystem特有的快速文件系统。
●pREPC+标准ANSI C 函数库
提供可重入(Re-Entrant)版本的、流行的ANSI C函数功能库，例如 printf() 和 malloc()。完全与pSOS+ 和 I/O 设备集成在一起。
●pROBE+
pROBE+是一个驻留在目标机上的调试器，它能够对目标机上运行的程序进行调试监控，并同宿主机进行通讯以提供宿主机上的源语言调试器所需信息。pROBE+本身不依赖于 pSOS+, 可使开发人员在开发BSP 时得到调试支持。
模块化技术提供了硬件抽象层概念。硬件抽象层分为芯片级初始化和设备驱动程序，这些底层的硬件程序独立于pSOSystem模块和用户的应用。这样开发的应用程序不会因为处理器和外围设备的更新而被淘汰。因此，如果更新和升级硬件，用户只需简单地修改一下硬件抽象层的设备驱动程序。  pSOSystem 开发环境
pSOSystem 支持的芯片●Motorola &IBM 的PowerPC家族
●Motorola 的68xxx 家族，包括 CPU32/CPU32+
●Motorola 的Coldfire
●MIPS
●ARM 和StrongARM
●X86，K6, Pentium
●Intel I960 家族,包括 Big/Little Endian
●Super Hitachi(SH)
●Motorola M-CORE的结构
几个基本概念
任务在实时操作系统中，任务是参与资源竞争（如CPU、Memory、I/Odevices等）的基本单位。pSOS为每个任务构造了一个虚拟的、隔离的环境，从而在概念上,一个任务与另一个任务之间可以相互并行、独立地执行。任务与任务之间的切换、任务之间的通信都是通过发系统调用（在有些情况下是通过ISR）进入pSOS Kernel,由pSOS Kernel完成的。
pSOS系统中任务包括系统任务和用户任务两类。关于用户任务的划分并没有一个固定的法则,但很明显,划分太多将导致任务间的切换过于频繁,系统开销太大,划分太少又会导致实时性和并行性下降,从而影响系统的效率。一般说来,功能模块A与功能模块B是分开为两个任务还是合为一个任务可以从是否具有时间相关性、优先性、逻辑特性和功能耦合等几个方面考虑。
优先级每个任务都有一个优先级。pSOS系统支持0～255级优先级,0级最低,255级最高。0级
专为IDLE任务所有,240～255级为系统所用。在运行时,任务（包括系统任务）的优先级可以通过t_setpri系统调用改变。
任务状态pSOS下任务具有三种可能状态并处于这三个状态之一。只有通过任务本身或其他任务、ISR对pSOS内核所作的系统调用才能改变任务状态。从宏观角度看，一个多任务应用通过一系列到pSOS的系统调用迫使pSOS内核改变受影响任务而从运行一个任务到运行另一任务向前发展的。对于pSOSkernel，任务在创建前或被删除后是不存在的。被创建的任务在能够运行前必须被启动。一旦启动后，一个任务通常处于下面三个状态之一：
①Executing (Ready)就绪
②Running运行
③Blocked阻塞
就绪任务是未被阻塞可运行的，只等待高优先级任务释放CPU的任务。由于一个任务只能由正运行的任务通过调用来被启动，而且任何时刻只能有一个正在运行的任务，所以新任务总是从就绪态开始。运行态任务是正在使用CPU的就绪任务，系统只能有一个running任务。一般running任务是所有就绪任务中优先级最高的，但也有例外。
任务是由自身特定活动而变为阻塞的，通常是系统调用引起调用任务进入等待状态的。所以任务不可能从ready态到blocked态，因为只有运行任务才能执行系统调用。
任务控制块任务控制块TCB是pSOS内核建立并维护的一个系统数据结构,它包含了pSOSKernel调度与管理任务所需的一切信息,如任务名、优先级、剩余时间片数、当前寄存器状态等。在有的RTOS中,任务的状态与任务TCB所处的队列是等同的。pSOS操作系统将二者分为两个概念,例如任务处于阻塞状态,但它的TCB却处于消息等待队列、信号灯等待队列、内存等待队列、超时队列之一。
pSOS启动时,将根据Configuration Table中的参数kc_ntask建立一个包含kc_ntask个TCB块的TCB池,它表示最大并行任务数。在创建一个任务时,分配一个TCB给该任务,在撤销一个任务时,该TCB将被收回。