![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
文章平均质量分 64
y33988979
这个作者很懒,什么都没留下…
展开
-
CPU C-state & cpuidle driver
1. 什么是C-states、C-mode?为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intel CPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式”低功耗模式最初是在486DX4处理器中引入的。到目前为止,已经引入了更多的功耗模式,并且对每种模式进行了增强,以使CPU在这些低功耗模式下消耗更少的功率。CPU的每个状态都使用不同的电量,并且对应用程序性能的影响也不同。每当CPU内核处于空闲状态时,内置的节能逻辑就会启动,并尝试将内核从当前原创 2020-07-15 15:14:12 · 20313 阅读 · 0 评论 -
linux锁机制:queued spinlock
queued spinlockticket spinlock巧妙的解决了锁的公平性问题,但它在锁竞争方面还不够完美,linux-4.2内核引入了queued spinlock。queued spinlock由Waiman Long和Perter Zijlstra 发起,补丁集经过了16个版本,并入了主线。https://lkml.org/lkml/2015/4/24/63...原创 2019-10-22 09:55:44 · 3303 阅读 · 3 评论 -
linux锁机制:ticket spinlock
spinlock spinlock即自旋锁,在linux内核中广泛运用的底层同步机制,相对于可睡眠锁,spinlock采用spin的方式获取锁(busy-wait),避免了context_switch的开销,在短暂临界区访问场景下速度明显提升,性能更高,对memory等critical section互斥访问,发挥着重要作用。spinlock对内核的数据安全性和并发性能有很大的...原创 2019-10-16 16:13:42 · 2477 阅读 · 0 评论 -
RCU配置指导说明
Kernel configuration parameters for RCU [Posted January 21, 2019 by jake]This sidebar is part of Paul McKenney's 2019 update to the RCU API.内核配置参数RCU的Kconfig选项和内核引导参数可以被认为是RCU API的一部分。...原创 2019-02-01 15:51:24 · 8384 阅读 · 0 评论 -
内核特性之ZRAM
CONFIG_ZRAM原创 2018-08-24 10:14:03 · 1159 阅读 · 0 评论 -
futex机制介绍
1、概念futex: a sort of fast, user-space mutual exclusion primitive. Futex是一种用户态和内核态混合的同步机制。首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不用...原创 2018-08-31 10:21:04 · 17129 阅读 · 0 评论 -
让linux变为实时操作系统
我们知道,相对比vxworks,linux内核属于非实时操作系统,原因主要是:(1)实时任务抢占时间是不可预期的。(2)为什么抢占是不可预期的呢?这涉及到内核中的抢占点知识,其中spin_lock锁,在unlock时是一个抢占点,但是spinlock本身内部是不可以抢占的,这种api在内核中大量使用,事实上是spin_lock与spin_unlock之间临界区代码片段不可预期的。具体用...原创 2018-08-23 23:54:15 · 26642 阅读 · 2 评论 -
内核ioremap接口报Warning问题
当我们写一些外设驱动,或者内核模块,经常会使用ioremap函数来映射寄存器io地址,来访问io空间,在ioremap函数的实现内部会对传入的参数进行判断,如果地址不属于io空间,则会内核会报Warnig。从函数名字我们也可以看得出来,既然函数叫io remap,那么映射的地址空间必须是io的物理地址,所以如果映射的地址落在了ram地址空间,内核就会报warning!如下面的log内核报w...原创 2018-08-20 15:07:20 · 3673 阅读 · 0 评论 -
内核报非法指令,分析方法(undefined instruction: pc=00000000000c0dbc)
操作系统内部会对中断,异常进行处理等。其中有一类异常叫未定义指令undefined instruction,CPU遇到了不认识的指令,则会进入未定义指令异常处理函数,因为CPU不认识该指令,所以通常CPU遇到非法指令,则无法继续执行,会使内核崩溃panic。但在崩溃前会操作系统会打印一些debug信息,供工程师分析。如下log,内核启动过程中调用用户态modprobe程序,而modprobe执...原创 2018-08-22 16:13:12 · 11247 阅读 · 0 评论 -
arm64/aarch64启动汇编代码-详细解析
/* * Low-level CPU initialisation * Based on arch/arm/kernel/head.S * * Copyright (C) 1994-2002 Russell King * Copyright (C) 2003-2012 ARM Ltd. * Authors: Catalin Marinas <catalin.marinas@ar...原创 2018-08-13 19:25:46 · 5716 阅读 · 1 评论 -
如何将二进制机器码转换成汇编指令
将机器码的指令字,用文本文件保存,将指令字保存成.S文件,如下格式:.inst 0xf9440e11 .inst 0x9120a210 (1) 用对应架构的的汇编器,编译成目标文件。命令:as a.s -o a.out(2)用objdump反汇编,生成汇编语句。命令:objdump -d a.out 实践:[82#yuchen@ubuntu ~]# cat a.s...原创 2018-07-31 23:37:40 · 11635 阅读 · 3 评论 -
top工具全字段解析+实战(三)
-----------接上篇,本文开始介绍进程信息。 9、进程信息依次来看下top展示的进程任务信息: (1)PID:进程号,一个任务的进程号。注意:top默认是显示的进程模式,也就是说一个创建了多个线程的程序不会被展开显示,而这个pid号是整个进程的pid。事实上,线程在内核中也是进程,它也是有唯一pid。因为不管是进程还是线程,在内核中通通都用task_struct表示...原创 2018-08-14 16:33:45 · 2208 阅读 · 8 评论 -
top工具全字段解析+实战(一)
一、top的概念top是linux下一个用户态工具,和windows下任务管理器差不多,就是实时显示linux系统运行状态,进程线程cpu占用,内存使用情况等等。可以实时动态地查看系统的整体运行情况,是一个综合了多方信息检测系统性能和运行信息的实用工具。二、top在哪里获取?(1)如果是发行版的linux,top由procps组件提供,procps是内核proc utils工具集,其中...原创 2018-08-14 16:37:19 · 13420 阅读 · 3 评论