
kernel
文章平均质量分 87
CQ062364
这个作者很懒,什么都没留下…
展开
-
do_mmap的实现简介
mmap是kernel提供的一个系统调用,m原创 2014-07-27 12:47:49 · 2459 阅读 · 1 评论 -
linux kernel time management
time_init -->late_time_init = x86_late_time_initx86_late_time_init -->x86_init.timers.timer_init(); -->tsc_init(); x86_init.timers.timer_init = hpet_time_inithpet_time_in原创 2014-10-29 17:49:38 · 781 阅读 · 0 评论 -
kthread_work和kthread_worker机制
Kernel中提供的kthread_work和kthread_worker机制和经典的work_struct和workqueue_struct的关系有点类似.通过一个kthread_worker可以处理多个kthread_work,其实就是利用了工人在流水线上工作的形式.先来看看这两个数据结构的定义,它们定义在头文件include/linux/kthread.h(3.1版本)struct原创 2014-09-28 22:20:05 · 6243 阅读 · 0 评论 -
kthread_run创建内核线程的原理
kthread_run是一个宏,用来创建一个进程,并且将其唤醒,其定义在头文件include/linux/kthread.h中.#define kthread_run(threadfn, data, namefmt, ...) \({ \ struct task_struc原创 2014-09-28 20:39:26 · 7212 阅读 · 0 评论 -
非线性映射
mmap是将一个文件中的连续部分映射到虚拟内存中的一块连续的区域,它做的映射是线性映射,如果需要将一个文件中的不同部分以不同的顺序映射到虚拟内存中的连续区域,则需要使用多个mmap映射,从消耗的资源来看这样做代价比较昂贵(因为分配的vm_area_struct多了)。内核提供了一个系统调用叫做remap_file_pages,通过这个函数可以实现非线性映射,同时不需要分配更多的vm_area_st原创 2014-08-11 21:47:37 · 4584 阅读 · 0 评论 -
mount系统调用的实现
mount系统调用在内核中对应的服务函数为do_mount函数.下面就简单总结一下该函数的实现.long do_mount(char *dev_name, char *dir_name, char *type_page, unsigned long flags, void *data_page){ struct path path; int ret原创 2014-08-24 22:26:23 · 2192 阅读 · 0 评论 -
Kernel调度器负载均衡(一)
Kernel中的CPU负载均衡是对调度器的增强,在多处理器上(SMP/NUMA),必须要考虑CPU的负载均衡,包括:1.CPU负荷尽可能公平地在所有处理器上共享。2.内核必须能够将进程从一个CPU迁移到另一个CPU上。在Kernel中调度器进行负载均衡的时机有4个:1.在时钟中断时,周期性调度器scheduler_tick会被调用,它在最后会调用trigger_load_b原创 2014-08-10 19:32:32 · 3165 阅读 · 0 评论 -
一段导致栈耗尽的C代码
前几天我在chinaunix上发现了这么一个贴子原创 2014-08-10 20:46:13 · 1188 阅读 · 0 评论 -
Kernel调度器负载均衡(二)
感觉通过贴代码,写注释的方法,来原创 2014-08-10 20:32:27 · 2576 阅读 · 0 评论 -
netlink demo
最近在学习linux netlink相关内容,发现这是一个用户空间和内核空间通信的好办法,于是写一个demo体验一下,一下代码基于linux kernel 3.19。kernel mode的代码netlink_demo_kmode.c如下:--------------------------------------------------------------------------原创 2015-07-25 17:48:11 · 1395 阅读 · 0 评论