![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核
文章平均质量分 84
aigourensheng
这个作者很懒,什么都没留下…
展开
-
进程间通信(IPC)
进程间通信指的是系统中两个进程之间的通信,不同的进程都在各自的地址空间中、相互独立、隔离,所以它们是处在于不同的地址空间中,因此相互通信比较难, Linux内核提供了多种进程间通信的机制。......原创 2022-08-06 23:35:20 · 569 阅读 · 0 评论 -
Linux页错误异常处理
本文总结了Linux内存处理页错误中断一些概念和过程原创 2022-08-06 17:58:27 · 359 阅读 · 0 评论 -
Linux内存管理架构
当vm_area_struct结构的数目较少的时候,所有结构以单链表的形式组织在一起,并且所有vm_area_struct结构按照虚拟地址大小升序排序。目前的Linux系统中经常使用的是Slub分配器,它是Slab分配器的优化版本和Slab分配器相比在复杂性和管理数据造成的内存开销上有很大的优化,对内存对象的管理更为直接。另外,进程堆栈占用的空间也是必备的,也是在建立进程时就预先分配的,并且堆栈空间可以动态扩展。...原创 2021-11-07 21:08:46 · 261 阅读 · 0 评论 -
EAS(能量感知调度)绿色节能调度器
当调度程序决定当前任务应该在哪里运行时(在唤醒期间),EM用来打破了几个好的CPU候选者之间的平等关系,选择一个最佳的候选CPU运行当前任务会产生最少的电量消耗而不牺牲系统的吞吐量的目标。增加了描述能效模型的数据结构structsched_group_energy,MC等级的调度组描述单个CPU的能效模型,DIE等级的调度组描述的cluster的能效模型。2).判断当前的CPU的计算负载是否超过了该CPU最高计算能力的80%,如果是,说明触发overutilized条件了。...原创 2022-07-16 23:32:40 · 1795 阅读 · 0 评论 -
Linux内核源码 ---- el2_setup源码解析
kernel版本:5.10.129进入内核的时候,arm64处理器的异常级别可能是1或者2,函数el2_setup的主要工作如下:1、如果异常级别是1,那么在异常级别1执行内核2、如果异常级别是2, 那么根据处理器是否支持虚拟化宿主扩展(Virtuallization Host Extensions,VHE),决定是否需要降级到异常级别1.具体实现代码如下:该汇编函数,用w0寄存器保存返回值,返回值有两种:BOOT_CPU_MODE_EL1:表示当前CPU跳入内核时处于权限级EL1BOOT_CPU_原创 2022-07-10 15:29:44 · 1087 阅读 · 0 评论 -
Linux源码解析
参考代码:Linux 5.10.129内核初始化分为汇编语言部分和C语言部分(1)汇编语言部分arm64架构的内核的入口标号是_head,直接跳转到标号primary_entry。配置宏 CONFIG_EFI 表示提供UEFI运行时支持,UEFI(Unified Extensible Firmware Interface)是统一的可扩展固件接口,用于取代BIOS。1、调用函数 preserve_boot_args,把引导程序传递的4个参数保存在全局数组boot_args中。2、调用函数 el2_set原创 2022-07-10 11:32:48 · 687 阅读 · 0 评论 -
调度器的配置参数
调度器的配置参数/proc/sys/kernel/sched_min_granularity_ns(4000000ns): sysctl_sched_min_granularity,表示进程最少运行时间,防止频繁的切换,对于交互系统(如桌面),该值可以设置得较小,这样可以保证交互得到更快的响应(见周期调度器的check_preempt_tick过程)/proc/sys/kernel/ sched_latency_ns(20000000ns):sysctl_sched_latency,表示一个运行队列所有进程原创 2022-07-06 09:30:23 · 676 阅读 · 0 评论 -
CFS调度算法的思想与实现
CFS(Complete Fair Schedule)调度算法的思想是为每一个task维护一个虚拟的运行时间vruntime调度程序优先选择vruntime值最小的任务执行,之所以引入vruntime的概念,是为了支持优先级调度。vruntime其实是基于task的实际运行时间及优先级权重计算出来的值,其计算公式如下:vruntime += delta_exec * NICE_0_LOAD / weightvruntime:虚拟运行时间delta_exec: 实际的执行时间NICE_0_LOAD:进程原创 2022-06-26 18:03:41 · 1020 阅读 · 0 评论 -
Linux内核进程与调度实现
进程管理和调度原创 2022-06-25 21:35:20 · 631 阅读 · 0 评论