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

2016年(1)

2015年(21)

2014年(100)

发布时间:2014-07-17 08:48:18

信号在如下时机进行处理:
当从中断或异常(包括系统调用)返回用户态时。
?注意:这里是返回“用户态”,也就是说,当当前进程正在内核态执行时,是不能处理信号的,必须等到其返回用户态时才能处理信号。......【阅读全文】

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

发布时间:2014-07-16 20:52:30

Crash工具用于解析Vmcore文件,Vmcore文件为通过kdump等手段收集的操作系统core dump信息,在不采用压缩的情况下,其相当于整个物理内存的镜像,所以其中包括了最全面、最完整的信息,对于分析定位各种疑难问题有极大的帮助。配置kdump后,在内核panic后,会自动进入kump流程,搜集Vmcore。
crash工具即为专门用于分析vmcore文件的工具,其中提供了大量的实用分析命令,极大的提高了vmcore的分析效率。
再分析vmcore的过程中,常常需要解析内核某个流程中的关键变量的值,以便确认故障当时系统的状态,本文主要介绍变量的解析。......【阅读全文】

阅读(11332) | 评论(3) | 转发(1)

发布时间:2014-07-09 17:14:57

pci配置空间中有6个bar,表示mmio或端口在CPU域物理地址空间的分布情况。?
?在写驱动时,通常需要从配置空间中读取相关bar信息,然后使用request_mem_region之类的接口,申请资源,然后使用ioremap将相关的区域映射到内核地址空间中,然后即可使用。
?问题是:pci配置空间中的bar信息,即mmio或io端口的分布,到底是谁决定、谁填写的呢?是硬件自己 or BIOS or OS kernel
?答案:对于x86环境来说(其它硬件环境不确认),pci配置空间中的bar信息最初是由BIOS根据当前环境中的硬件分布信息,进行分配后填入的,32位环境,PCI设备的mmio基本分布于3.5G-4G范围中,基本能保证各设备分配的空间不冲突。在OS kernel启动硬件扫描和初始化时,会读取相应内容,如果有需要,会根据需要进行调整(通常不会)。......【阅读全文】

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

发布时间:2014-07-07 11:44:05

AutoNUMA NUMA hinting fault numa_balancing---
redhat提出的新的机制,用于平衡Numa节点间的内存访问,基本思想是:定期统计各进程的内存访问情况,
并unmapping pages,然后触发NUMA hinting fault,在page fault中重新均衡内存访问,目的是使运行
进程的CPU尽量访问本地节点上的内存,提升性能。......【阅读全文】

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

发布时间:2014-07-03 10:30:08

内存屏障相关,barrier(),mb,smp_mb,乱序,内存一致性......【阅读全文】

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

发布时间:2014-07-02 17:15:46

kernel 3.10内核源码分析--缺页异常(page fault)处理流程......【阅读全文】

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

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

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

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

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

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

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

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

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

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

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

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

阅读(4886) | 评论(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......【阅读全文】

阅读(7305) | 评论(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......【阅读全文】

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

登录 注册