前言
本文梳理了Linux进程调度器的框架结构,旨在通过本文阐述Linux进程调度器的基本工作原理。 用一句话概括调度:cpu按照特定的规则(调度器:CFS / RT / DL)在特定的时机(主调度+周期调度)通过特定的数据结构(priority queue / RB-tree)对数据对象(进程描述符task_struct->sched_*_entity)的增删改查,以实现对系统任务(task)的调度管理
Stay Foolish && Stay Hungry
本文梳理了Linux进程调度器的框架结构,旨在通过本文阐述Linux进程调度器的基本工作原理。 用一句话概括调度:cpu按照特定的规则(调度器:CFS / RT / DL)在特定的时机(主调度+周期调度)通过特定的数据结构(priority queue / RB-tree)对数据对象(进程描述符task_struct->sched_*_entity)的增删改查,以实现对系统任务(task)的调度管理
系统是运行在内存中的,硬盘只是系统运行中的存储媒介。当硬盘对应到内存的数据发生改变时,就需要系统将内存的数据同步更新到硬盘进行存储。 异常掉电之所以具备破坏力,是因为异常掉电会不可预知的中断系统将内存数据回写到硬盘的过程,直接导致文件系统数据紊乱。绝大多数带有日志的文件系统(ext3,ext4,xfs等),大多数情况可以依靠文件系统日志自恢复或者依靠fsck命令恢复,问题是并不是所有损坏都可以被修复。 因此,将整个系统设置为只读模式,防止整个回写过程的发生就成了整个方案的出发点。
本系列计划以优化网卡侧UDP高速小包抓取需求为着力点, 从网卡驱动分析、网卡多队列中断均衡优化、网卡侧零拷贝抓取实现三个递进深度详细阐述网卡驱动的工作机制。 作为系列第一作,本文以Intel 82580、Intel 82571/4两款网卡为对象, 详细分析网卡驱动的数据结构管理、多队列/单队列收发包处理、NAPI调用机制等模块,为后续的优化工作打下基础。