
Linux
snoopyljc
这个作者很懒,什么都没留下…
展开
-
深入Linux内核架构笔记 - 内存管理(NUMA模型中的内存组织)
内存管理的涵盖领域物理内存页的管理分配大块内存的原创 2019-11-01 23:29:16 · 529 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度6: 实时调度类
Overview按照POSIX标准的强制要求,除了"普通进程",Linux还支持两种实时调度类,调度器结构使得实时进程可以平滑地集成到内核中。实时进程的特点是其优先级比普通进程高,rt_task通过检查其优先级来证实给定进程是否是实时进程,而task_has_rt_policy则检测进程是否关联到实时调度策略。性质 实时进程和普通进程有一个根本的不同之处:如果系统中有一个实时进程且可运行...原创 2019-08-16 22:35:48 · 161 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度7: 调度器增强
SMP调度 多处理器系统上,内核必须考虑的几个额外的问题CPU负荷必须尽可能在所用的处理器上共享进程与系统中某些处理器的亲和性必须是可设置的:设置task_struct的cpus_allowed成员内核必须能够将进程从一个CPU迁移到另一个:会严重危害性能,要谨慎使用 数据结构的扩展struct sched_class {#ifdef CONFIG_SMP unsign...原创 2019-08-24 09:14:19 · 213 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度5: 完全公平调度类
核心调度器必须知道的有关公平调度类的所有信息,都包含在fair_sched_class中static const struct sched_class fair_sched_class = { .next = &idle_sched_class, .enqueue_task = enqueue_task_fair, .dequeue_task = dequeue_task_...原创 2019-08-10 09:28:57 · 221 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度4: 调度器实现
Overview 调度器任务分为两个部分: 一个涉及调度策略,一个涉及上下文切换。 Linux的CFS调度器,不需要传统时间片的概念,只考虑进程的等待时间,CPU优先选择对时间需求最严格的进程。 调度器的一般原理:将所能分配的计算能力,公平地提供给系统中的每个进程。 计算机通过轮流运行各个进程来模拟多任务,那么对于当前运行的进程,其待遇明显好于等待调度器选择的进程,即等待的进程收到了不公...原创 2019-07-27 00:26:57 · 197 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度2
进程表示 Linux内核涉及进程的所有算法都围绕一个名为task_struct的结构建立,简化版本定义如下:struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; unsigned lon...原创 2019-07-07 12:16:35 · 138 阅读 · 0 评论 -
深入Linux内核架构笔记 - 进程管理与调度3
进程管理相关的系统调用 fork: 负责进程的复制,系统调用完成后,生成当前进程一个副本 exec: 负责加载新的应用程序进程的复制 传统Unix系统中用于复制进程的系统调用是fork, 但在Linux上它并不是唯一的系统调用fork:使用copy-on-write机制建立了一个进程的副本,然后作为子进程运行。vfork: 用于子进程形成后立即执行exceve加载新程序的情形...原创 2019-07-21 21:53:32 · 249 阅读 · 0 评论 -
深入Linux内核架构笔记-进程管理与调度1
概述进程是可执行程序的一个运行实例,主要包括当前的程序计数器,寄存器和变量等,从概念上讲,每个进程都有自己的虚拟CPU,但实际上,CPU在各个进程上快速切换。对于进程,内核必须解决的几个问题: 应用程序彼此不能互相干扰,除非有明确要求要这么做 CPU时间要在各个应用程序之间尽可能公平的共享其中第二个问题是进程管理与调度要解决的问题,内核必须决定为各个进程分配多长时间,何时切换到下一个进...原创 2019-06-28 23:19:43 · 136 阅读 · 0 评论 -
深入Linux内核架构笔记-动态时钟
Overview为节省系统功耗,只在有些任务需要实际执行时,才激活周期时钟,否则会临时禁用周期时钟,对该技术的支持可以在编译时选择,启用此选项的系统也称无时钟系统。判断原则:当系统调度选择IDLE进程来运行时,动态时钟系统会禁用周期时钟,直到下一个定时器即将到期为止数据结构struct tich_sched { struct hrtimer shed_timer; enum tic...原创 2019-06-02 19:38:22 · 202 阅读 · 0 评论 -
深入Linux内核架构笔记-高分辨率时间
Overview 高分辨率定时器按时间在一颗红黑数上排序 独立于始终周期,采用纳秒时间戳数据结构 高分辨率时钟可以基于两种时钟:CLOCK_MONOTONIC和CLOCK_REALTIME,前一种是单调递增的,后一种可以发生跳变 对于系统中的每个CPU,都提供了一个包含两种时钟基础的数据结构,每个时钟基础都有一个红黑树,来排序所有待处理的高分辨率定时期stuct hrtime...原创 2019-06-02 18:53:32 · 373 阅读 · 0 评论 -
深入Linux内核架构笔记-通用时间子系统
Overview 3种机制时钟源:struct clocksource, 时间管理的基础,提供单调递增的counter,精度取决于底层硬件时钟事件设备 : struct clocl_event_device, 也称时钟事件源,可以设定在未来的某个时刻发生,通过中断通知系统时钟设备 : 扩展了时钟事件源的功能,提供一个时钟事件的连续流,各个时钟事件定时触发,如果使用动态时钟(为节省电源,...原创 2019-05-26 20:24:59 · 236 阅读 · 0 评论 -
深入Linux内核架构笔记-低分辨率定时器
Timer类型- 低分辨率时钟: 基于Linux内核配置的HZ周期性触发,可以通过硬件或者高分辨率时钟实现- 高分辨率始终: 基于时钟硬件,可以根据设定的时间出发,精度取决于硬件 低分辨率时钟-HZ配置多数设置为250较高的HZ是系统有更好的交互型和响应速度,但是开销会随之增大- Timer数据结构12- Timer注册- 处理流程YNinterruptIA32t...原创 2019-05-18 23:12:55 · 223 阅读 · 0 评论 -
Linux static_key简记(Arm64)
Linux static key代码编译static __always_inline bool static_key_false(struct static_key *key){ return arch_static_branch(key, false);}static __always_inline bool arch_static_branch(struct static_key ...原创 2019-04-19 23:05:29 · 1586 阅读 · 1 评论 -
Linux ext4 rm删除文件恢复
根据inode节点恢复查找文件所在inode节点extundelete --inode 2 /dev/sdxxFile name | Inode number | Deleted statusWorkspace 28442625...原创 2019-04-10 23:44:28 · 715 阅读 · 0 评论 -
理解 Memory barrier(内存屏障)
以下文章转载自:http://name5566.com/4535.html========================================================================================参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://转载 2015-10-10 09:15:08 · 564 阅读 · 0 评论