卷一 内核源代码分析 第一章 linux内核对cortex A9多核处理器的支持 1.1 CPU的基本管理 图书试读版-请勿转载

Exynos 4412 Cortex-A9嵌入式Linux驱动开发学习笔记-第一期 一、Linux 体系结构 如下图所示,Linux 体系结构,从大的方面可以分为用户空间(User Space)和内核空间 (Kernel Space)。 用户空间中包含了 C 库,用户的应用程序。在某些体系结构图中还包含了 shell,当然 shell脚本也是 Linux 体系中不可缺少的一部分。 内核空间包括硬件平台、平台依赖代码、内核、系统调用接口。 另外,用户空间 阅读详情


作者 crosskernel@gmail.com


1 多核处理器


计算性能是处理器演进的第一动力,然而,尽管各种架构的高性能处理器层出不穷,真正大规模普及开来的似乎只有Intel和ARM体系。我们观察其中的现象不难发现如下规律:
如果处理器性能得到大幅改善,但是无法得到现有主流操作系统的支持,就无法大规模应用。进一步来讲,即使某种处理器得到主流操作系统的支持,但是由于其指令集的不兼容性,导致大量的应用无法运行,这种处理器也是难以普及的,安腾的失败是个很好的例子。
“兼容性”是处理器演进的第一法则。现有的软件体系是计算机世界的主宰,所有不服从现在软件体系的的指令集都只能被边缘化或者被淘汰。所以我们看到Intel和ARM不断扩展寄存器长度、增加发射单元、支持乱序、扩展总线单元等一系列手段来改进处理器架构,就是不敢废弃一条既有指令。
降低计算功耗是处理器演进的第二动力,对于服务器来说功耗就是运营成本,对于移动计算来说功耗就是生命。似乎台式机功耗要求不大,但是台式机与服务器、移动设备不仅在处理器的生产及设计上共享基础设施外,软件体系也有着相同的基础,导致整个软件体系为了照顾移动设备和服务器而收敛了扩张的步伐。这就是人们常说的“计算过剩”,其实计算永远不会过剩,只是庞大的软件体系有所收敛罢了。
频率提升是功耗的大敌,为了提高能耗比,设计频率更低而核心更多的处理器是好的方法,由此,近年来处理器的扩张由单核高频的转变为多核体系。
Linux支持的多核体系的基本特点为,所有处理器拥有完全相同的指令集,所有处理器共享同一内存。如果不符合以上任何一点,操作系统内核都需要做架构级修改才能支持。若满足这两个前提,其他方面的问题,都可以通过内核和系统小规模修改来支持。如Big.little架构下互相搭配的处理器尽管核心内部实现不同,但各核心有着相同的指令集,Linux内核可以将它们当作同样的处理器来分配线程。内核在完全不加改动的情况下,也许会出现一个重量级线程被分配到了一个little的核心上,但是内核本身可以通过处理器负载均衡将其平衡到别的处理器上。当liittle负载较高时big必定会上线运行,但是系统有可能会出现重负载线程独自霸占liittle的情形的极限情况,这时需要将调度算法稍加修改,首先记录每个处理器能力,然后监测little上单线程高负载发生的时长,若超出一定阀值则将高负载线程时间片减为零,从little摘下来,再将其挂到big处理器运行队列即可。
进一步讲,多核心之间只要基本的读写、跳转之类指令相同,其余指令集不同,Linux也可以支持的。内核只需用到基本指令即可,各核心用户空间指令可以不同。内核需做如下修改,每颗核心的调度队列记录下其核心用户态指令集特性,每个线程创建之初申明自身需要的指令集特性,内核在给线程分配核心及做负载均衡时比较两者是否匹配。用户层动态加载器也要做修改,针对当前处理器指令集特性动态加载、跳转到不同版本的动态库中,且在动态库执行过程中标记自身线程不可切换处理器。当然这种复杂情况超出了当前现状,尽管有用户态指令集不同的架构,但是运行指令集差集的线程不需要动态加载库支持,且直接绑定到指定核心上。




1.1 CPU的基本管理


  CPU管理的特点是自我管理,除了在启动、休眠、调频受控于CPU0的工作以外,处理器相关的绝大部分工作都是由处理器自我管理的。处理器是内核的执行
从Android源码修改cpu信息 一直以为这种东西没法改呢,我还是太天真了。/proc/cpuinfo是个文件,只读,想直接写肯定不行的。它的输出逻辑在: kernel/[品牌]/[机型代号]/arch/[架构]/kernel/setup.c,修改static int c_show(struct seq_file *m, void *v)方法,用seq_printf方法,想输出啥都可以。特地下Linux内核源码下来看,不止And... 阅读详情

相关推荐

android手机高精度定时机制--higher timer tick 笔记版 转载请注明出处--- crosskernel@gmail.com

作者   crosskernel@gmail.com android手机内核时钟整体架构分为上下两层,下层理解为物理时钟的操控,即按照上层时钟逻辑的要求产生物理时钟中断、编程产生下一次时钟中断、切换时钟中断产生的模式、初始、关闭物理时钟。而上层时钟的作用是根据内核运行时的要求对下层下发各种命令,并根据下层送上来的时钟事件驱动内核的high resolution timer,schedul

crosskernel的专栏 5443

xilinx-linux内核源码

基于Xilinx平台下的linux内核源代码。 该源码是基于最新的包含设备树的内核版本。v4.xx

简单AMP:在两个Cortex-A9处理器上运行裸机系统

在zynq上双系统搭建的教程,cpu0和cpu1都是跑裸机程序。 循序渐进,先跑裸机程序,再进行cpu0跑linux,cpu1跑裸机程序

多核处理器\OpenMPcodeopenstart多核处理器\OpenMPcodeopenstart

多核处理器\OpenMPcodeopenstart多核处理器\OpenMPcodeopenstart多核处理器\OpenMPcodeopenstart

保姆级教程:用微信小程序+OneNet MQTT API,5分钟搞定温湿度数据实时展示

本文提供了一份详细的教程,教你如何利用微信小程序和OneNet MQTT API在5分钟内实现温湿度数据的实时展示。从OneNet平台配置到小程序数据绑定,手把手指导零基础开发者快速搭建监控系统,涵盖API调用、数据解析和界面设计等关键步骤。

weixin_30298497的博客 370

如何在R语言中使用Logistic回归模型

在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价、身高、GDP、学生成绩等,发现这些被预测的变量都属于连续型变量。然而有些情况下,被预测变量可能是二元变量,即成功或失败、流失或不流失、涨或跌等,对于这类问题,线性回归将束手无策。这个时候就需要另一种回归方法进行预测,即Logistic回归。 在实际应用中,Logistic模型主要有三大用途: 1)寻找危险因素,找到某些影响...

weixin_34056162的博客 9552

从Peer到脉冲地震波:免费Python工具全流程配置教程(PyCharm+Anaconda)

本文详细介绍了如何使用Python工具链(PyCharm+Anaconda)实现从Peer数据库获取地震波数据到生成脉冲地震波的全流程配置。通过开源工具EQTOOL和PySeismicGen,结合Python环境搭建、数据格式转换和脉冲地震动生成技术,为结构抗震分析提供高效、灵活的解决方案。

weixin_29093169的博客 431

NVIDIA GPU任务调度全景:从Block分配到Warp发射

GPU并行计算的核心是任务调度,而CUDA kernel在GPU上的执行并非简单的一次性操作,而是经过从CPU命令队列到硬件前端,再到GigaThread引擎和Warp Scheduler的多层协同。理解这一过程,是性能优化的基础。Warp作为硬件调度的基本单位,其状态切换与延迟隐藏能力直接决定计算单元的利用率;而Occupancy作为衡量SM上活跃Warp池大小的指标,也并非越高越好,需要结合访存模式与资源占用综合判断。对于多任务并发场景,Stream优先级、计算抢占、MIG硬件隔离与MPS软件共享等机制

weixin_32612263的博客 270

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南

本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。

weixin_29103191的博客 223

基于DE2-115红外解码实验

基于DE2-115红外解码实验   一、   功能描述 在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型, 这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。对应于编码芯片通常会有相配对的解码芯片或包含解码模块的应用芯片。在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。只有知道编码方式,我...

乘风的博客 2516

uniapp(vue3)- 详解安装/使用pinia报错reportJSException >>>> exception function:createInstanceContext, excepti

uniapp vue3 pinia报错reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack -> at useStore,H5网页,微信小程序,安卓App,苹果App,nvue,uniapp安装使用pinia出现报错at useStore,uniapp+vue3+ts 使用pinia报

🏆 前端领域优质创作者 4049

【大数据Java基础-Java基础01】环境搭建(一)Sublime Text3搭建Java编译环境(Windows系统)

1. 首先配置好Java环境变量 我的jdk版本是1.8.0_191,存放目录是C:\Program Files\Java,因此添加以下环境变量 (1)系统变量→新建 JAVA_HOME 变量,变量值为: C:\Program Files\Java\jdk1.8.0_191 (2)系统变量→找到 Path 变量→编辑,末尾加入: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 如果Path变量末尾本身有“;”,则上述路径前面则不需要加“;” (3)系统变量→新建 CL

微信搜:import_bigdata,大数据领域硬核原创作者 556

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: android手机高精度定时机制--higher timer tick 笔记版 转载请注明出处--- crosskernel@gmail.com
下一篇: 卷一 内核源代码分析 第一章 linux内核对cortex A9多核处理器的支持 1.2 Percpu内存管理 图书试读版-请勿转载
crosskernel
博客等级 码龄18年 14粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值