赵婉芳

摘 要:本文主要针对LINUX嵌入式系统的电源管理部分,分析了目前存在的主要的电源管理技术,重点研究了LINUX系统中当系统处于空闲状态时负责电源管理的CPUIDLE模块结构特点以及接口核心编码,对基于LINUX系统的电源管理研究有一定的参考意义。

关键词:LINUX系统;CPUIDLE模块;接口

中图分类号:TP368 文献标识码:A 文章编号:1671-2064(2017)22-0019-01

随着移动互联技术的发展,越来越多的便携式移动终端被链接入网,对于移动终端的待机时长,安全性和稳定性提出了更高的要求,由于便携式终端具有移动性强,体积小的特点,主要选择使用电池供电,因此如何对具有电能消耗的嵌入式系统进行动态电源规划管理,使得电池的寿命延长,最大限度的提升电能的使用率是该领域的研究热点之一。

1 电源管理技术

目前电源管理技术主要分为静态电源管理和动态电源管理两种方式。静态电源管理(SPM)主要使用在PC机端,目前有两个工业标准,分别是高级电源管理APM和高级配置和电源管理接口ACPI,在两个标准中都对静态电源管理的实现进行了详细的状态定义。静态电源管理的基本思想是把系统看作一个有限状态机,其中包括多种工作状态,每种工作状态对应一个参数集合,这个参数集合表示的是该工作状态下的功耗和性能参数等。系统可以根据自身的负载情况在各个工作状态之间进行切换,也可以由用户根据自身需要进行某个工作状态的设置。当系统空闲,零负载或者负载比较小的时候,系统就会控制设备进入低性能状态或者低功耗状态,当系统请求较多,负载较高时,系统就会控制设备进入高性能状态或者高功耗状态。系统主要的四个状态为:正常运行态,待机态,挂起态,深度休眠态。

动态电源管理(DPM)则广泛应用于嵌入式移动终端设备,是一种系统级的功耗控制技术。动态电源管理的基本思想是设想系统由多个部件组成,每个部件可以有多种工作状态,每种工作状态对应着不同的电压和时钟频率,因此有着不同的功率消耗。动态电源管理主要依据系统运行时各部件的具体负载情况,调整设备进入适合的功耗状态,以此来节省功耗。由于动态管理系统随时在繁忙和空闲等工作状态之间进行切换,在进入和退出工作状态时会带来一定的延时,因此,如果状态切换太过频繁,带来的延时会抵消节省功耗带来的益处,降低系统性能。所以在动态电源管理中,最重要的是选择好正确的管理策略,取得功耗和延时及性能之间的最佳平衡点。动态电源管理策略通常分为四种类型:(1)超时策略;(2)贪婪策略;(3)基于随机过程策略;(4)预测策略。

2 CPUIDLE模块

Linux系统中,支持CPU电源管理的模块主要分为CpuIdle和cpufreq两个模块,当系统处于空闲状态时主要由cpuidle framework来负责管理这种空闲状态时的电源功耗,当 CPU活跃时,则由cpufreq模块来负责管理电源的使用。在Linux内核中,cpuidle架构位于“drivers/cpuidle”文件夹中,分别包含三个模块,分别为:cpuidle core:负责实现cpuidle framework的整体框架;cpuidle governors:负责管理方案的选取; cpuidle drivers:定义每一个状态的功耗和延迟分别是多少并负责idle机制的实现,即:如何进入idle状态,什么条件下会退出,等等。以上三个模块再结合位于kernel sched中的cpuidle entry,共同完成cpu的空闲管理,CpuIdle模块的软件结构如图1所示。

在cpuidle架构中最重要的就是cpuidle governor部分,它负责具体电源管理方案的选取,因此电源管理是否有效,关键在于governor的配置使用。在当前的系统内核中CpuIdle模块主要有两个governor部件,分别为ladder governor和menu governor,它们分别使用于不同的系统中。对于现在的大部分系统,由于电源管理的原因以及延迟容忍度的处理,大多系统都是使用menu governor来选择一个合适的空闲状态。在menu governor工作过程中,其综合考虑并计算系统切换不同状态时所花费的功耗以及带来的延迟容忍程度,最终来选择所要进入的空闲状态,因此该部分是cpuidle模块中电源管理的核心部分,如何使用该部分成为系统处于空闲状态是时能否达到最佳节能目的关键。

3 governor接口

Governor的使用是通过接口程序来实现的,cpuidle_ governor结接口程序通过cpuidle core使用struct cpuidle_ governor结构抽象得到,以下是governor的标准接口程序:

struct cpuidle_governor {

char name[CPUIDLE_NAME_LEN];

struct list_head governor_list;

int (*init) (struct cpuidle_device *dev);

void (*exit) (struct cpuidle_device *dev);

void (*scan) (struct cpuidle_device *dev);

int (*select) (struct cpuidle_device *dev);

void (*reflect) (struct cpuidle_device *dev);

struct module *owner;

};

其中,由cpuidle調用init()方法来初始化控制器;

调用exit()方法可以退出控制器;

scan()方法用于重新检测设备所处的状态。这样能保证及时获取到状态的变化;

select() 方法在系统进入空闲状态之前被调用,该方法根据当前系统的运行状况,以及各个idle state的特性,选择一个决策;

cpuidle_register_governor()方法和cpuidle_unregister _governor()方法用于注册或注销一个cpuidle governor;

reflect()是个回调函数,通过该函数告知governor,系统上一次所处的空闲状态是哪一个(即系统从哪一个state回来)。

4 结语

随着物联网的发展,对于终端电源的能耗将要求越来越高,电源管理将会成为行业发展的关键点。本文主要分析了目前存在的静态和动态电源管理技术,研究了LINUX系统中当系统处于空闲状态时负责电源管理的CPUIDLE模块结构特点以及接口核心编码,对基于LINUX系统的电源管理方面研究有一定的参考意义。

参考文献

[1]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2001.

[2]许海燕,付炎.嵌入式系统技术和应用[M].北京:机械工业出版社,2002.

linux查看电源模块,基于LINUX的电源管理cpuidle模块研究及应用相关推荐

  1. linux 嵌入式 快照_基于Linux的嵌入式启动优化的研究

    基于Linux的嵌入式启动优化的研究 论文 开题分析 周报 启动 基于Linux嵌入式系统启动加速的研究 一. 所选课题的目的和意义 随着科学技术的蓬勃发展,计算机被更多的人使用,并与人类对额生活结合 ...

  2. linux dhcp 论文,毕业论文—基于linux的dhcp服务器配置.doc

    毕业论文-基于linux的dhcp服务器配置 基于Linux的DHCP服务器配置 摘 要 随着互联网的普及,人们的工作.学习和生活与网络联系越来越紧密,搭建了许多不同的网络,如企业网.校园网和城区网等 ...

  3. linux 查看ko符号表,linux modprobe命令参数及用法详解--linux加载模块命令

    modprobe(module probe) 功能说明:自动处理可载入模块. 语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值] 补充说明:modpr ...

  4. linux安装无线电软件,基于Linux的软件无线电系统软件平台的研究与实现

    摘要: 随着移动通信技术和互联网技术的高速发展,4G.5G等相关新业务.新标准正在频繁的演进和更新.新的协议标准在带来更高速率业务能力的同时,对通信协议算法的研究验证平台提出了更高的要求.同时,高速率 ...

  5. linux看门狗设备,基于Linux构建无人值守系统(看门狗)

    基于Linux构建无人值守系统(看门狗) 在各种嵌入式设备soc中基本都提供了看门狗,在很长一段时间里我对看门狗的理解就是"关掉它,不然它会找麻烦".但是当某种需求存在的时候,它又 ...

  6. linux 车载视频监控,基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文.docx...

    基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文 目录 HYPERLINK \l "_bookmark0" 第一章 绪论1 HYPERLINK \l "_ ...

  7. linux 查看其他磁盘分区,Linux 查看磁盘分区.pdf

    Linux 查看磁盘分区 作者:北南南北 来自:LinuxSir.Org 的,不仅仅是查看磁盘的分区表,而且也能进行磁盘分区的操作:但在本文,我 们只讲磁盘分区的查看,以及分区的使用情况的查看:本文只 ...

  8. linux文件系统的设计,基于Linux的文件系统设计.doc

    PAGE PAGE 33 无敌 操作系统课程设计 说 明 书 ? 学 院.系: 软件学院 专 业: 软件工程 学 生 姓 名: 学 号: 设 计 题 目: 基于Linux的模拟文件系统的设计与实现 起 ...

  9. linux查看电脑硬件信息,Linux下查看电脑硬件配置【转】

    系统 # uname -a # 查看内核/操作系统/CPU信息 uname 命令可用于大多数 UNIX 和类 UNIX 系统以及 Linux. 功能说明:uname用来获取电脑和操作系统的相关信息. ...

最新文章

  1. 那些年,我们一起刷过的计算机视觉比赛
  2. 一行预处理代码,让你的CV模型更强!Google出品
  3. springmvc4 ajax 406,Spring4 MVC 中,jQuery ajax (406 Not Acceptable)
  4. NA-NP-IE系列实验26: 基于链路的OSPF 简单口令认证
  5. PowerDesigner教程系列(三)概念数据模型
  6. 计算机科学与技术的知识要求,0812计算机科学与技术基本要求.doc
  7. cocos2dx 开启控制台
  8. 牛客练习赛74 D CCA的图
  9. Spring: (一) -- 春雨润物之 核心IOC
  10. 2018 ACM/ICPC 沈阳站小结
  11. 从零开始学 Web 之 Ajax(五)同步异步请求,数据格式
  12. 度假村酒店官方网站模板里面包含7个子页面,适合酒店住宿网站模板下载
  13. 雷电模拟器使用adb命令(采坑)
  14. Dito 手指尖的创意
  15. 408最后20天冲刺阶段应该注意的问题
  16. 小程序二维码需要发布正式版后才能获取到_很意外!iOS 14.1正式版已出,修复多处问题...
  17. iphone mysql壁纸,壁纸图片动态
  18. iphone6 和 iphone6 plus 屏幕适配问题
  19. 麻雀要革命 第柒战 惨败!四面楚歌的凄凉绝境 第五节
  20. 创建表空间(Oracle)

热门文章

  1. 第1章-3 输出“人生苦短,我学Python”
  2. JSP--从一个jsp页面通过按钮跳转到另一个jsp页面
  3. 脑电(EEG)情绪识别的一般流程
  4. 【Unity 实用工具篇】✨| Tutorial Master 2 游戏引导教程 快速上手
  5. 自然语言处理学习 nltk----分词
  6. 【BIGO】 算法岗位面试
  7. pooling的作用以及各种不变性
  8. 事务的四个特性以及应用
  9. linux上安装Docker(非常简单的安装方法)
  10. k3s/k3OS-轻量级Kubernetes及操作系统