Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1242803
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4004
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

发布时间:2014-07-02 10:39:08

初学内核时,经常被“内核页表”和“进程页表”搞晕,不知道这到底是个啥东东,跟我们平时理解的页表有和关系。。
?内核页表:即书上说的主内核页表,在内核中其实就是一段内存,存放在主内核页全局目录init_mm.pgd中,硬件并不直接使用。
?进程页表:每个进程自己的页表,放在进程自身的页目录task_struct.pgd中。......【阅读全文】

阅读(8335) | 评论(0) | 转发(16)

发布时间:2014-07-02 09:39:24

page fault不能发生在内核态么?为什么?
这里有3个问题:
1、为什么会产生page fault?
?2、发生缺页的上下文是否可以位于内核态
3、发生缺页的地址是否可以位于内核态地址空间......【阅读全文】

阅读(5013) | 评论(0) | 转发(5)

发布时间:2014-07-01 17:08:31

原理上,内核态是可以直接访问用户态的虚拟地址空间的,所以如果需要在内核态获取用户态地址空间的数据的话,理论上应该是可以直接访问的,但为什么还需要使用copy_from_user接口呢?......【阅读全文】

阅读(3521) | 评论(0) | 转发(4)

发布时间:2014-06-18 08:43:36

?nohz即通常说的非周期性时钟,或称tickless system,总体思想为:当系统idle的时候,使用非周期性时钟代替原有的每hz触发一次的周期性时钟,避免在系统idle时,不断的被时钟中断打断,主要目的是节能降耗。......【阅读全文】

阅读(4888) | 评论(2) | 转发(0)

发布时间:2014-06-06 10:26:58

kernel 3.10内核源码分析--file write流程
文件写入流程通常从用户态发起,总体分两部分:
1) 从用户态到页缓存
用户态进程先open指定文件,返回fd
用户态进程调用write库函数接口,fd作为入参
read库函数接口最终调用write对应的系统调用接口,sys_write,由此进入内核流程
--------用户态和内核态分界------------------------
内核态调用特定文件系统定义的对应相关操作接口,如ext2对应的write接口为ext2_file_operations->aio_write->generic_file_aio_write,
由于用户对写入速度不敏感,同时磁盘操作较慢,所以写操作通常被延迟,以提升性能,即通常说的“延迟写”。
基本原理为:数据先写入页缓存(page cache)中并设置脏标记,后续由pdflush内核线程周期性或者按需对脏页进行回写。写入操作在数据写入页缓存后即可返回,无需等待数据实际写入磁盘,页缓存(内存)的写入速度显然比磁盘快多了,所以如此能大大提升w......【阅读全文】

阅读(7312) | 评论(0) | 转发(2)

发布时间:2014-06-06 10:24:38

kernel 3.10内核源码分析--file read流程
基本原理
文件读取流程通常从用户态发起,总体流程为:
用户态进程先open指定文件,返回fd
用户态进程调用read库函数接口,fd作为入参
read库函数接口最终调用read对应的系统调用接口,sys_read,由此进入内核流程
--------用户态和内核态分界------------------------
内核态调用特定文件系统定义的对应相关操作接口,如ext2对应的read接口为ext2_file_operations->aio_read,由此进入mapping层(VFS层)
mapping层在进行相应处理后,构造并提交bio,进入通用块层。
--------mapping层和通用块层分界----------------
通用块层构造request,提交到IO调度层
--------通用块层和IO调度层分界----------------
IO调度层对request按特定的IO调度算法进行合并和排序后,将request放入对应块设备的reque......【阅读全文】

阅读(4478) | 评论(0) | 转发(4)

发布时间:2014-06-03 19:59:09

__attribute__((context())属性理解......【阅读全文】

阅读(3553) | 评论(0) | 转发(0)

发布时间:2014-05-24 15:40:16

linux启动代码之detect_memory()函数 ......【阅读全文】

阅读(2231) | 评论(0) | 转发(2)

发布时间:2014-04-22 13:49:13

......【阅读全文】

阅读(2085) | 评论(0) | 转发(0)

发布时间:2014-04-21 09:49:14

Linux内核态抢占机制分析
......【阅读全文】

阅读(2249) | 评论(0) | 转发(1)

发布时间:2014-04-18 16:07:38

softlockup(watchdog)用于检测系统调度是否正常,即软锁的情况,当发生softlockup时,内核不能调度,但还能响应中断,对用户的表现可能为:能ping通,但无法登陆系统,无法进行正常操作。
其基本原理为:为每个CPU启动一个内核线程(watchdog/x),此线程为优先级最高的实时线程,在该线程得到调度时,会更新相应的计数(时间戳),同时会启动定时器,当定时器到期时检查相应的时间戳,如果超过指定时间,都没有更新,则说明这段时间内都没有发生调度(因为此线程优先级最高),则打印相应告警或根据配置可以进入panic流程。......【阅读全文】

阅读(6500) | 评论(3) | 转发(2)

发布时间:2014-04-18 14:20:39

nmi_watchdog原理(用于检测关中断死锁)
nmi_watchdog用于检测内核中关中断死锁(也称硬死锁)的情况,是调测内核死机或死锁问题的一大利器。内核中,如果代码编写不好可能会出现关中断死锁的情况,即进入内核态后,关中断,然后在内核态中死锁,或长时间运行,导致该CPU无法响应中断(因为中断已关),也无法得到调度(对于没有启用内核抢占的内核来说),外在表现可能为系统挂死、无法ping通、没有响应。而nmi_watchdog正是针对这种情况而设计的。
......【阅读全文】

阅读(10754) | 评论(0) | 转发(0)

发布时间:2014-04-11 12:51:51

读书笔记——Linux内核源代码情景分析——2.5 用户堆栈的扩展......【阅读全文】

阅读(2200) | 评论(0) | 转发(1)

发布时间:2014-04-11 12:50:30

linux下进程堆栈下溢出判断及扩展实现 ......【阅读全文】

阅读(7620) | 评论(0) | 转发(2)

发布时间:2014-04-10 12:48:26

KVM基本原理及架构四(内存虚拟化) 影子页表 EPT......【阅读全文】

阅读(7756) | 评论(0) | 转发(5)

发布时间:2014-04-10 12:38:08

KVM基本原理及架构三(CPU虚拟化)......【阅读全文】

阅读(13387) | 评论(0) | 转发(6)

发布时间:2014-04-01 15:19:48

又一次内存分配失败(关于overcommit_memory)......【阅读全文】

阅读(3050) | 评论(0) | 转发(4)

发布时间:2014-03-28 17:21:24

DMA32内存区的作用......【阅读全文】

阅读(4564) | 评论(0) | 转发(1)

发布时间:2014-03-26 08:55:59

内核中为防止用户对敏感数据(比如一些关键指针)的直接引用,通常会采用“掩饰”的方法,即在分配相关数据的时候,就对其进行掩饰,
然后在引用时,又对其进行还原,这样的话,用户就不能直接引用相应数据(会导致非法访问),而必须使用内核提供的标准接口来引用。......【阅读全文】

阅读(1989) | 评论(0) | 转发(0)

发布时间:2014-03-20 16:24:01

page结构和物理内存对应关系......【阅读全文】

阅读(4183) | 评论(0) | 转发(3)
给主人留下些什么吧!~~

啦哆A梦2014-02-21 11:08

回复  |  举报
留言热议
请登录后留言。

登录 注册