1 基本介绍
自适应分区是QNX嵌入式操作系统的一个特色功能,应从两方面理解:自适应和分区。
分区是指操作系统采用“虚拟墙”将共享资源(例如CPU执行时间、内存、存储空间等)以一定的比例划分,以确保每个分区都有一组经过工程设计的资源。每个分区内可以运行一个或多个线程/进程。
自适应是指操作系统内核可以根据各分区的实际资源使用情况,对每个分区的资源进行动态调整,优化CPU资源和共享资源的利用率。
2 作用与优点
自适应分区可以保护一个或一组应用程序不被其他有缺陷的或恶意的应用程序破坏而造成系统崩溃。主要作用有以下几点:提供内存保护,即每个分区是离散的,由内存管理单元控制 ;
提供过载保护,即根据系统设计人员的指定,每个分区都有一段执行时间;
避免单个错误引起整个系统的崩溃(如果没有分区保护,有可能会有一个进程因为某个未知错误而独占所有资源而造成系统死机);
自适应分区的优点:优化系统资源的利用率,提高产品性能;
降低BSP设计的复杂度;
为操作系统提供安全保护,避免被恶意程序攻击;
为调试和添加系统诊断程序提供便利;
3 原理介绍
自适应分区是指分区调度器可以动态的调整每个分区的资源预算,具体以CPU执行举例说明。
假设目前一个QNX操作系统中有三个分区,主分区,分区A和分区B。在系统初始阶段,设置每个分区的CPU资源预算:主分区为70%,分区A为20%,分区B为10%。
例1:当每个分区内的程序使用CPU资源都低于预算值,则分区内的资源使用情况如下所示。
例2:主分区内没有运行任何程序,分区B内的线程优先级大于分区A,则分区内的CPU资源使用情况如下图所示。
例3:主分区内没有运行任何程序,分区B内的线程优先级大于分区A,但是设置按比例分配空闲CPU时间,则分区内的CPU资源使用情况如下图所示。
例4:分区全负荷,分区内的CPU资源使用情况如下图所示。
4 配置方法(以通用的CPU执行时间为例)
1、修改BSP目录中的build文件,如下所示:
[module=aps] PATH=/proc/boot:/调皮的微笑:/usr/调皮的微笑:/opt/调皮的微笑
LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib
procnto-instr
将[module=aps]属性添加到在os映像的构建文件中启动procnto命令
2、重新编译BSP,将生成的镜像烧录到目标设备;
3、创建调度分区,有三种方法:在build文件的scrit段中创建,例如创建一个名称为Pa,CPU资源预算为30%的分区,并使用操作系统推荐的安全选项;
在script段中添加如下命令
sched_apsPa20
apsmodify -s recommended在终端命令行创建,例如创建一个名称为Pb,CPU资源预算为20%的分区,如下所示
aps create -b20 Pb通过程序创建,如下代码段所示
4、在分区中启动一个进程,有三种方法:在build文件的scrit段中,例如在Pa分区内启动ksh进程,如下所示
[+session pri=35 sched_aps=Pa] ksh &在终端命令行中,例如在Pb分区内启动ksh进程,如下所示
on -Xaps=DebugReserve ksh通过程序启动,如下代码段所示
5、查看分区应用视图