内核
文章平均质量分 79
460833359
这个作者很懒,什么都没留下…
展开
-
ioremap 与 mmap
内存映射 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间,如下图: 内核空间中,从3G到vmalloc_start这段地址是物理内存映射区域(该区域中包含了内核镜像、物理页框表mem_ma..转载 2022-03-17 10:41:34 · 203 阅读 · 0 评论 -
嵌入式系统中看门狗的使用总结
两年前总结的东西,一时没时间整理,放了很久居然差点忘了,现在重见天日了。但是还不是很完整,先放上来,以后有时间就完善她。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 最近需要在板子上加上一块WatchDog,以确保在系统出错时自动重启,所以看了一些在嵌入式系统中使用看门狗的资料,现在总结如下:一、看门狗原理 在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。 看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后...转载 2022-02-14 12:00:05 · 1955 阅读 · 0 评论 -
linux 内核笔记之watchdog
watchdog简而言之,watchdog是为了保证系统正常运行,或者从死循环,死锁等一场状态退出的一种机制。看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在转载 2022-02-14 11:58:37 · 1717 阅读 · 0 评论 -
linux 内核链表操作头文件list.h
#ifndef _LINUX_LIST_H#define _LINUX_LIST_H#define inline __inline#define LIST_POISON1 (void *) 0x00100100#define LIST_POISON2 (void *) 0x00200200#define prefetch(x) x#define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)#define con...转载 2022-01-05 19:55:21 · 613 阅读 · 0 评论 -
Linux OOM killer 与相关参数详解
目录OOM killer panic_on_oom 调整分数 修改配置 日志 cgroup的OOM killer malloc rlimit 测试代码 结束语 参考一、前言本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的。为了理解OOM参数,第二章简单的描述什么是OOM。如果这个名词对你毫无压力,你可以直接进入第三章,这一章是描述具体的参数的,除了描述具体的参数,我们引用了一些具体的内核代码,本文的代码来自4.0内核转载 2021-12-14 17:15:25 · 883 阅读 · 0 评论 -
OOM killer 是基于虚拟内存还是物理内存?
前言 实验 机器内存: 实验代码 编译运行: 实验结果: OOM killer源码分析 总结:前言偶然在网上看到一个问题: OOM 是按照虚拟内存还是实际内存来打分? 这里“实际内存”表达的意思应该是物理内存,而“打分”想表达的意思应该是 OOM killer 机制里面的badness score. 当内存吃紧时,假如开启了 OOM killer,OOM killer 会计算进程的badness score,badness score越高,就越优先被 OOM kille...转载 2021-12-14 15:17:10 · 502 阅读 · 0 评论 -
Linux中的jiffies介绍
HZ和jiffiesLinux中的软定时器(低分辨率的timer_list定时器)利用CPU时钟中断来感知时间更新,并通过TIMER_SOFTIRQ软中断来运行到期的定时器。时钟中断每秒触发HZ次,HZ的值可在编译时通过CONFIG_HZ选项来配置。较高的HZ可使系统具有更好的交互性和相应速度,适合于桌面系统等交互性强的系统,但HZ增高也会导致内核中处理定时中断以及调用定时器例程更频繁,使系统开销也随之增高。全局变量jiffies_64就和HZ有关,它是一个64位整型变量,记录了系统启动以来时钟中断转载 2021-07-13 16:04:25 · 2076 阅读 · 0 评论 -
linux内核链表的实现和使用和详解
首先,内核链表的头文件,在linux内核的 /include/linux 下的 List.h ,把List.h 复制出来,黏贴到 工程下,就可以直接用内核链表的一些宏和函数。以下介绍内核链表的一些宏和函数,已经他的实现方式和使用方法。(1)什么是内核链表:如图:内核链表一般就是 在一个结构体 有一个结构体成员变量,该结构体成员变量只有 next 和 prev两个指针,分别指向下一个结点和上一个结构,就像一条绳子串起所有的结构体,这样做的好处,就是可以用内核链表来串起各个不同类型的结构体。(2转载 2021-07-12 10:24:52 · 904 阅读 · 0 评论 -
Linux内核链表及list_entry解析
链表是一些包含数据的独立数据结构的集合,链表中的每一个节点通过链或者指针连接在一起。程序通过指针访问链表中的节点。链表一般分为单链表和双链表。1.单链表单链表中,每个节点包含指向下一个节点的指针。链表最有一个节点的指针字段值为NULL,表明链表后面不再有其它节点。下面是一张单链表的图:对应的数据结构为:C代码typedefstructNODE...转载 2021-06-18 16:59:28 · 963 阅读 · 0 评论 -
linux内核态文件操作filp_open/filp_close/vfs_read/vfs_write
Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux系统的文件系统由两层结构构建:第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。VFS就是把各种具体的文件系统的公共部分抽取出来,形成一个抽象层,是系统内核的一部分,它位于用户程序和具体的文件系统之间。它对用户提供了标准的文件系统调用接口,对具体的文件系统(如EXT2、FAT32等),它通过一系列的对...转载 2021-06-18 16:56:34 · 1556 阅读 · 0 评论