金溪的博客

好的开始是成功的一半,不要制定太长远的目标,同时不以战术的勤奋掩饰战略的懒惰,复杂思考简易行事,分而治之降低压力,以概率面对生活,时刻保持头脑清醒,防人之心不可无,广交慎择,顺其自然,近贤远佞,源代码...

linux 安装DataGrip

1.通过官方下载linux版本的安装包 2. 将"0.0.0. account.jetbrains.com"添加到/etc/hosts中, 主要是为了避免联网时注册失效. 3. 浏览器打开http://idea.lanyus.com, 点击页面中的"获取注册码&q...

2019-03-19 15:21:08

阅读数 193

评论数 0

linux cgroup_init_early

cgroup 实现进程组,分配或限制进程组使用的资源(这部分主要由各个subsystem完成)。 另一个角度,在研究代码的时候,我们更愿意将cgroup理解为一种控制资源的行为。比如:我想控制进程的CPU使用率为20%,那么我可以创建一个cgroup,这个cgroup的作用就是控制指定进程的c...

2019-03-18 10:40:29

阅读数 29

评论数 0

linux debug_objects_early_init debug_objects_mem_init

函数在文件linux/lib/debugobjects.c中 static struct debug_bucket obj_hash[ODEBUG_HASH_SIZE]; static struct debug_obj obj_static_pool[ODEBUG_POOL_SIZE] _...

2019-03-18 09:25:21

阅读数 26

评论数 0

linux smp_setup_processor_id

smp模型指的是对称多处理模型(Symmetric Multi-Processor),与它对应的是NUMA非一致性存储访问结果(Non-Uniform Memory Access)和MPP海量并行处理结构(Massive Parallel Processing)。它们的区别分别在于,SMP指的是多...

2019-03-18 08:51:07

阅读数 40

评论数 0

linux init_task描述符

内核中init_task变量是进程0使用的进程描述符,也是Linux系统中第一个进程描述符。 smp amp bmp 非对称多处理(Asymmetric multiprocessing) 每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例 对称多处理(Symmetric m...

2019-03-15 14:17:19

阅读数 36

评论数 0

linux EXPORT_SYMBOL

查看linux/export.h文件: struct kernel_symbol //内核符号结构 { unsigned long value; //该符号在内存地址中的地址 const char *name; //该符号的名称 }; 预备知识: 1、#运算符,##运算符 通常在宏...

2019-03-14 09:41:01

阅读数 36

评论数 0

linux内核中的汇编语言

Intel 和AT&T 汇编语言源代码主要采用两种语法:AT&T语法和Intel语法,尽管它们都属于第二代语言,但是二者的语法却存在巨大的差异。AT&T汇编语法以%作为所有寄存器名称的前缀,以$作为文字常量(也叫做立即操作数...

2019-03-13 08:29:18

阅读数 38

评论数 0

Linux内核启动start_kernel之前逻辑分析(汇编)

在bootloader的帮助下,内核被载入到内存中,内核映像被加载到内存并获得控制权之后,内核启动流程开始。通常,内核映像以压缩形式存储,并不是一个可以执行的内核。因此内核的首要工作是自解压内核映像。 内核编译生成vmlinux后,通常会对其进行压缩,得到zImage(小内核,小于512KB)或...

2019-03-12 10:20:04

阅读数 37

评论数 0

linux 内核启动进程分析

在kernel进入c语言阶段后,会开始执行start_kernel函数,它负责进行kernel正式运行前各个功能的初始化:打印一些信息、内核工作城要的模块的初始化被依次调用(譬如内存管理、调试系统、异常处理...),最后末尾调用了一个rest_init函数启动了三个进程(idle、kernel_i...

2019-03-11 13:26:29

阅读数 35

评论数 0

Linux bss段 data段 rodata段 text段

Linux下内存管理是通过段页式管理,内存分配是以页为单位,而页是通过段管理,各个段之间是独立的。 1、BSS段 Block Started by Symbol和简称,是用来存储程序中未初始化的全局变量的一块内存区域,bss段属于静态内存分配。 2、data段 该段用于存储初始化的全局变量...

2019-03-11 09:50:18

阅读数 24

评论数 0

linux 内核熵池

Linux内核采用熵来描述数据的随机性,熵(entropy)是描述系统混乱无序程序的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。在信息学中,熵被用来表征一个符号或系统的不确定性,熵越大,表明系统所含有用信息量越少,不确定度越大。 计算机本身是可预测的系统,因此,用计算机算法...

2019-03-05 08:50:15

阅读数 71

评论数 0

linux preempt_count

/* * low level task data that entry.S needs immediate access to. * __switch_to() assumes cpu_context follows immediately after cpu_domain. */ stru...

2019-03-05 08:23:51

阅读数 56

评论数 0

Linux内核代码中的__setup的用途

在Linux内核代码中经常会看到__setup,如下所示: __setup("nfsroot=", nfs_root_setup); 这是一个宏,它的定义在include/linux/init.h #define __setup(str, fn) _...

2019-03-04 16:28:04

阅读数 57

评论数 0

Linux kallsysm

kallsyms在进行源码调试时具有相当重要的作用。Linux内核在编译的过程中,将内核所有的符号(所有的内核函数以及已经装载的模块)及符号的地址以及符号的类型都保存在了/proc/kallsyms文件中。具体格式: 符号地址 , 符号类型, 符号名 c0100000 T startup_32...

2019-03-04 08:35:29

阅读数 35

评论数 0

Linux ACPI

ACPI-the Advanced Configuration & Power Interface. ACPI是OS、BIOS和硬件之间的抽象层。它允许OS和平台独立的发展,比如新的OS可以控制老的平台,老的OS也可以控制新的平台,而不需要额外的修改。ACPI的基本结构图:...

2019-02-28 08:55:01

阅读数 36

评论数 0

cppc 动态调频

CPPC的全称是Collaborative Processor Performance Control CPC的全称是Per cpu table called,是bios提供的一组acpi表,用于设置cpu的频率。这组acpi表如下: /* * An example CPC table l...

2019-02-27 08:21:45

阅读数 40

评论数 0

修改kernel log level

提高kernel log level有两种方法: 1、是通过bootloader传递参数给kernel,可以传递的参数为debug和quiet。分别对应CONSOLE_LOGLEVEL_DEBUG和CONSOLE_LOGLEVEL_QUIET两种level。 static int __ini...

2019-02-26 08:27:52

阅读数 55

评论数 0

linux中的__init宏

在内核里经常可以看到__init, __devinit这样的语句,这都是在init.h中定义的宏, gcc在编译时会把被修饰的内容放到这些宏所代表的section中。 #define __init __section(.init.text) __cold notrace #def...

2019-02-21 08:23:55

阅读数 33

评论数 0

Linux内核tracepoints

授人以鱼,不如授人以渔. 具体的可以参考kernel文章, 路径: Documentation/trace里面的tracepoints.txt和tracepoint-analysis.txt. 内核的每个tracepoint提供一个钩子来调用probe函数. 一个tracepoint可以打开或关...

2019-02-13 08:37:18

阅读数 61

评论数 0

centos7重启或关机卡死

这个问题其实是systemd219这个版本的问题(查看systemd版本,请使用systemctl --version)。 由于systemd进程的判断比之前更加严格,如果某些进程不响应SIGTERM信号,可能会导致重启是挂死,该问题和业务进程对SIGTERM信号的处理有关。 解决方法: 1...

2018-12-28 16:13:51

阅读数 969

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭