
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不
cfs调度器的运行时间是0(logN),而以前的调度器的运行时间是O(1),这是不是就是说cfs的效率比O(1)的更差呢?并不是那样,我们知道cfs调度器下的运行队列是基于红黑树组织的,找出下一个进程就是截下左下角的节点,固定时间完成,所谓的O(logN)指的是插入时间,可是红黑树的统计性能是不错的,没有多大概率真的用得了那么多时间,因为红节点和黑节点的特殊排列方式既保证了树的一定程度的平衡,又不
cfs调度器在2.6.23内核中被引入,起初的实现是多么的天真与纯朴,设计出来一个fair_key来代表队列的虚拟时钟,不管怎样总是实现了一个cfs的版本,到了2.6.25以后,cfs变得简单起来,没有了队列虚拟时钟的结构体,其概念直接融入了红黑树中的最左下角的调度实体的vruntime字段,其实就是让每个调度实体(没有组调度的情形下就是进程,以后就说进程了)的vruntime互相追赶,然后在某个
在前面的这篇文章linux内核分析--中断的分类
Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。 Linux内核地址空间划分通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。 Linux内核高端内存
linux内核--中断和中断处理(一)linux内核--中断和中断处理(二)linux内核--中断处理程序linux内核--中断嵌套&ARM中断来源linux内核分析--中断中的下半部linux内核分析--中断和中断处理程序linux内核分析--中断的分类
1.软中断 实际上软中断使用的并不多,反而是后面的tasklet比较多,但tasklet是通过软中断实现的,软中断的代码位于/kernel/softirq.c中。软中断是在编译期间静态分配的,由softirq_action结构表示,它定义在linux/interrupt.h中:1234structsoftirq_action{
在解释完内核中的链表基本知识以后,下面解释链表的重要接口操作:1. 声明和初始化实际上Linux只定义了链表节点,并没有专门定义链表头,那么一个链表结构是如何建立起来的呢?让我们来看看LIST_HEAD()这个宏:#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) struct
#include#include#include "kn_common.h"MODULE_LICENSE("Dual BSD/GPL");struct student{int id;char* name;struct rb_node node;};static int insert_student(struct student*, struct r
红黑树由于节点颜色的特性,保证其是一种自平衡的二叉搜索树。红黑树的一系列规则虽然实现起来比较复杂,但是遵循起来却比较简单,而且红黑树的插入,删除性能也还不错。所以红黑树在内核中的应用非常广泛,掌握好红黑树,即有利于阅读内核源码,也可以在自己的代码中借鉴这种数据结构。红黑树必须满足的规则:所有节点都有颜色,要么红色,要么黑色根节点是黑色,所有叶子节点也是黑色叶子节点中不包含数据非







